All pastes #427763 Raw Edit

qsrbdec

public cpp v1 · immutable
·published 2007-04-07 00:11 UTC
rendered paste body
// GRAPHICS EXTRACTION PROGRAM FOR TRICKY QUIKY GAMES 2#include <cstdio>#include <string>#include <Windows.h>#include <iostream>using namespace std;int main(){	WIN32_FIND_DATA wfd;	HANDLE fHandle = FindFirstFile("*.SRB",&wfd);	const unsigned char bmpheader1 [18] = {0x42, 0x4D, 0x2E, 0x07, 0x00, 0x00,		0x00, 0x00, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00};	const unsigned char bmpheader2 [1052] = {0x01, 0x00, 0x08, 0x00, 0x00, 0x00,		0x00, 0x00, 0xF8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,		0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,		0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80,		0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xDC, 0xC0, 0x00, 0xF0, 0xCA,		0xA6, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x20, 0x60, 0x00, 0x00, 0x20,		0x80, 0x00, 0x00, 0x20, 0xA0, 0x00, 0x00, 0x20, 0xC0, 0x00, 0x00, 0x20,		0xE0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x40,		0x40, 0x00, 0x00, 0x40, 0x60, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x40,		0xA0, 0x00, 0x00, 0x40, 0xC0, 0x00, 0x00, 0x40, 0xE0, 0x00, 0x00, 0x60,		0x00, 0x00, 0x00, 0x60, 0x20, 0x00, 0x00, 0x60, 0x40, 0x00, 0x00, 0x60,		0x60, 0x00, 0x00, 0x60, 0x80, 0x00, 0x00, 0x60, 0xA0, 0x00, 0x00, 0x60,		0xC0, 0x00, 0x00, 0x60, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,		0x20, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x80, 0x60, 0x00, 0x00, 0x80,		0x80, 0x00, 0x00, 0x80, 0xA0, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x80,		0xE0, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xA0, 0x20, 0x00, 0x00, 0xA0,		0x40, 0x00, 0x00, 0xA0, 0x60, 0x00, 0x00, 0xA0, 0x80, 0x00, 0x00, 0xA0,		0xA0, 0x00, 0x00, 0xA0, 0xC0, 0x00, 0x00, 0xA0, 0xE0, 0x00, 0x00, 0xC0,		0x00, 0x00, 0x00, 0xC0, 0x20, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0xC0,		0x60, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0xC0,		0xC0, 0x00, 0x00, 0xC0, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xE0,		0x20, 0x00, 0x00, 0xE0, 0x40, 0x00, 0x00, 0xE0, 0x60, 0x00, 0x00, 0xE0,		0x80, 0x00, 0x00, 0xE0, 0xA0, 0x00, 0x00, 0xE0, 0xC0, 0x00, 0x00, 0xE0,		0xE0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x40, 0x00,		0x40, 0x00, 0x40, 0x00, 0x60, 0x00, 0x40, 0x00, 0x80, 0x00, 0x40, 0x00,		0xA0, 0x00, 0x40, 0x00, 0xC0, 0x00, 0x40, 0x00, 0xE0, 0x00, 0x40, 0x20,		0x00, 0x00, 0x40, 0x20, 0x20, 0x00, 0x40, 0x20, 0x40, 0x00, 0x40, 0x20,		0x60, 0x00, 0x40, 0x20, 0x80, 0x00, 0x40, 0x20, 0xA0, 0x00, 0x40, 0x20,		0xC0, 0x00, 0x40, 0x20, 0xE0, 0x00, 0x40, 0x40, 0x00, 0x00, 0x40, 0x40,		0x20, 0x00, 0x40, 0x40, 0x40, 0x00, 0x40, 0x40, 0x60, 0x00, 0x40, 0x40,		0x80, 0x00, 0x40, 0x40, 0xA0, 0x00, 0x40, 0x40, 0xC0, 0x00, 0x40, 0x40,		0xE0, 0x00, 0x40, 0x60, 0x00, 0x00, 0x40, 0x60, 0x20, 0x00, 0x40, 0x60,		0x40, 0x00, 0x40, 0x60, 0x60, 0x00, 0x40, 0x60, 0x80, 0x00, 0x40, 0x60,		0xA0, 0x00, 0x40, 0x60, 0xC0, 0x00, 0x40, 0x60, 0xE0, 0x00, 0x40, 0x80,		0x00, 0x00, 0x40, 0x80, 0x20, 0x00, 0x40, 0x80, 0x40, 0x00, 0x40, 0x80,		0x60, 0x00, 0x40, 0x80, 0x80, 0x00, 0x40, 0x80, 0xA0, 0x00, 0x40, 0x80,		0xC0, 0x00, 0x40, 0x80, 0xE0, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x40, 0xA0,		0x20, 0x00, 0x40, 0xA0, 0x40, 0x00, 0x40, 0xA0, 0x60, 0x00, 0x40, 0xA0,		0x80, 0x00, 0x40, 0xA0, 0xA0, 0x00, 0x40, 0xA0, 0xC0, 0x00, 0x40, 0xA0,		0xE0, 0x00, 0x40, 0xC0, 0x00, 0x00, 0x40, 0xC0, 0x20, 0x00, 0x40, 0xC0,		0x40, 0x00, 0x40, 0xC0, 0x60, 0x00, 0x40, 0xC0, 0x80, 0x00, 0x40, 0xC0,		0xA0, 0x00, 0x40, 0xC0, 0xC0, 0x00, 0x40, 0xC0, 0xE0, 0x00, 0x40, 0xE0,		0x00, 0x00, 0x40, 0xE0, 0x20, 0x00, 0x40, 0xE0, 0x40, 0x00, 0x40, 0xE0,		0x60, 0x00, 0x40, 0xE0, 0x80, 0x00, 0x40, 0xE0, 0xA0, 0x00, 0x40, 0xE0,		0xC0, 0x00, 0x40, 0xE0, 0xE0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00,		0x20, 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x60, 0x00, 0x80, 0x00,		0x80, 0x00, 0x80, 0x00, 0xA0, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x80, 0x00,		0xE0, 0x00, 0x80, 0x20, 0x00, 0x00, 0x80, 0x20, 0x20, 0x00, 0x80, 0x20,		0x40, 0x00, 0x80, 0x20, 0x60, 0x00, 0x80, 0x20, 0x80, 0x00, 0x80, 0x20, 		0xA0, 0x00, 0x80, 0x20, 0xC0, 0x00, 0x80, 0x20, 0xE0, 0x00, 0x80, 0x40,		0x00, 0x00, 0x80, 0x40, 0x20, 0x00, 0x80, 0x40, 0x40, 0x00, 0x80, 0x40,		0x60, 0x00, 0x80, 0x40, 0x80, 0x00, 0x80, 0x40, 0xA0, 0x00, 0x80, 0x40,		0xC0, 0x00, 0x80, 0x40, 0xE0, 0x00, 0x80, 0x60, 0x00, 0x00, 0x80, 0x60,		0x20, 0x00, 0x80, 0x60, 0x40, 0x00, 0x80, 0x60, 0x60, 0x00, 0x80, 0x60,		0x80, 0x00, 0x80, 0x60, 0xA0, 0x00, 0x80, 0x60, 0xC0, 0x00, 0x80, 0x60,		0xE0, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x20, 0x00, 0x80, 0x80,		0x40, 0x00, 0x80, 0x80, 0x60, 0x00, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80,		0xA0, 0x00, 0x80, 0x80, 0xC0, 0x00, 0x80, 0x80, 0xE0, 0x00, 0x80, 0xA0,		0x00, 0x00, 0x80, 0xA0, 0x20, 0x00, 0x80, 0xA0, 0x40, 0x00, 0x80, 0xA0,		0x60, 0x00, 0x80, 0xA0, 0x80, 0x00, 0x80, 0xA0, 0xA0, 0x00, 0x80, 0xA0,		0xC0, 0x00, 0x80, 0xA0, 0xE0, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x80, 0xC0,		0x20, 0x00, 0x80, 0xC0, 0x40, 0x00, 0x80, 0xC0, 0x60, 0x00, 0x80, 0xC0,		0x80, 0x00, 0x80, 0xC0, 0xA0, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0x80, 0xC0,		0xE0, 0x00, 0x80, 0xE0, 0x00, 0x00, 0x80, 0xE0, 0x20, 0x00, 0x80, 0xE0,		0x40, 0x00, 0x80, 0xE0, 0x60, 0x00, 0x80, 0xE0, 0x80, 0x00, 0x80, 0xE0,		0xA0, 0x00, 0x80, 0xE0, 0xC0, 0x00, 0x80, 0xE0, 0xE0, 0x00, 0xC0, 0x00,		0x00, 0x00, 0xC0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x40, 0x00, 0xC0, 0x00,		0x60, 0x00, 0xC0, 0x00, 0x80, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0xC0, 0x00,		0xC0, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0xC0, 0x20, 0x00, 0x00, 0xC0, 0x20,		0x20, 0x00, 0xC0, 0x20, 0x40, 0x00, 0xC0, 0x20, 0x60, 0x00, 0xC0, 0x20,		0x80, 0x00, 0xC0, 0x20, 0xA0, 0x00, 0xC0, 0x20, 0xC0, 0x00, 0xC0, 0x20,		0xE0, 0x00, 0xC0, 0x40, 0x00, 0x00, 0xC0, 0x40, 0x20, 0x00, 0xC0, 0x40,		0x40, 0x00, 0xC0, 0x40, 0x60, 0x00, 0xC0, 0x40, 0x80, 0x00, 0xC0, 0x40,		0xA0, 0x00, 0xC0, 0x40, 0xC0, 0x00, 0xC0, 0x40, 0xE0, 0x00, 0xC0, 0x60,		0x00, 0x00, 0xC0, 0x60, 0x20, 0x00, 0xC0, 0x60, 0x40, 0x00, 0xC0, 0x60,		0x60, 0x00, 0xC0, 0x60, 0x80, 0x00, 0xC0, 0x60, 0xA0, 0x00, 0xC0, 0x60,		0xC0, 0x00, 0xC0, 0x60, 0xE0, 0x00, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0x80,		0x20, 0x00, 0xC0, 0x80, 0x40, 0x00, 0xC0, 0x80, 0x60, 0x00, 0xC0, 0x80,		0x80, 0x00, 0xC0, 0x80, 0xA0, 0x00, 0xC0, 0x80, 0xC0, 0x00, 0xC0, 0x80,		0xE0, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0xC0, 0xA0, 0x20, 0x00, 0xC0, 0xA0,		0x40, 0x00, 0xC0, 0xA0, 0x60, 0x00, 0xC0, 0xA0, 0x80, 0x00, 0xC0, 0xA0,		0xA0, 0x00, 0xC0, 0xA0, 0xC0, 0x00, 0xC0, 0xA0, 0xE0, 0x00, 0xC0, 0xC0,		0x00, 0x00, 0xC0, 0xC0, 0x20, 0x00, 0xC0, 0xC0, 0x40, 0x00, 0xC0, 0xC0,		0x60, 0x00, 0xC0, 0xC0, 0x80, 0x00, 0xC0, 0xC0, 0xA0, 0x00, 0xF0, 0xFB,		0xFF, 0x00, 0xA4, 0xA0, 0xA0, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,		0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00,		0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF,		0xFF, 0x00};	int num_of_files = 0;	short width, height;	char buffer [640*400]; // maximum possible sprite size	do	{		FILE * fsrb = fopen(wfd.cFileName, "rb");		fseek(fsrb, 258, SEEK_SET); // skip file header		char number [3] = {0,0,0};		int i = 0;		while (!feof(fsrb))		{			cout << "File: " << string(wfd.cFileName) << " Sprite: " << i << "\n";			fseek(fsrb, 6, SEEK_CUR);	// go to first width/height info			fread(&width, 1, 2, fsrb);	// read sprite width			fread(&height, 1, 2, fsrb); // read sprite height			fseek(fsrb, 3, SEEK_CUR);	// go to sprite bitmap			fread(buffer, 1, width * height, fsrb); // read sprite bitmap						itoa(i, number, 10);			FILE * fout = fopen((string(wfd.cFileName) + "." + string(number) + ".bmp").c_str(), "wb");			fwrite(&bmpheader1, 1, 18, fout);			long lwidth = width;			long lheight = height;			fwrite(&lwidth, 1, 4, fout);			fwrite(&lheight, 1, 4, fout);			fwrite(&bmpheader2, 1, 1052, fout);			for (int j = (height-1) * width; j >= 0; j -= width)				fwrite(&buffer[j], 1, width, fout); // write sprite (vertically reversed)			fclose(fout);			++i;		}		fclose(fsrb);	}	while (FindNextFile(fHandle, &wfd));		FindClose(fHandle);	return 0;}