Gamestudio Links
Zorro Links
Newest Posts
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (AndrewAMD, 1 invisible), 1,369 guests, and 1 spider.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 3 of 3 1 2 3
Re: a few questions about pro [Re: Ch40zzC0d3r] #448046
01/18/15 10:07
01/18/15 10:07
Joined: Mar 2010
Posts: 57
Germany, Niedersachsen
LemmyTheSlayer Offline
Junior Member
LemmyTheSlayer  Offline
Junior Member

Joined: Mar 2010
Posts: 57
Germany, Niedersachsen
You don't actually need pro's resource packer:
http://www.opserver.de/ubb7/ubbthreads.php?ubb=showflat&Number=376045&page=1

And for shader compilation you can use the fxc.exe from the latest Directx 9 SDK
or write your own compiler (call the function D3DCompile from the D3DCompile_**.dll. It's surprisingly easy)


SCHLEIFE SCHLEIFE SCHLEIFE SCHLEIFE SCHLEIFE SCHLEIFE
Re: a few questions about pro [Re: LemmyTheSlayer] #448048
01/18/15 12:27
01/18/15 12:27
Joined: Dec 2011
Posts: 1,823
Netherlands
Reconnoiter Offline OP
Serious User
Reconnoiter  Offline OP
Serious User

Joined: Dec 2011
Posts: 1,823
Netherlands
Hi Lemmy,

Thanks but I get a 'nicht gefunden' /not found error.

Re: a few questions about pro [Re: Reconnoiter] #448050
01/18/15 14:19
01/18/15 14:19
Joined: Mar 2010
Posts: 57
Germany, Niedersachsen
LemmyTheSlayer Offline
Junior Member
LemmyTheSlayer  Offline
Junior Member

Joined: Mar 2010
Posts: 57
Germany, Niedersachsen
I'll see if i can find a copy on my hard drive

Edit:
I found a slightly modified version i made some time ago. It requires a zlib1.dll for compression.
Click to reveal..

Code:
/*
Filepacker script based on the super simple filepacker by Thomas Oppl
Usage:
	Create resource file:
	FILE* <file pointer> = fopen("<file name>", "wb");
	
	Add a file:
	addfile(<resource file pointer>,"<name of file to be added>");
	
	Don't forget to use fclose(<file pointer>) after adding all files!
	
	Load a resource into the engine buffer:
	loadresources("<resource file name>");
	
*/

#include <acknex.h>
#include <stdio.h>

int compress(byte *dest, long *destlen, const byte *source, long sourcelen);
API(compress, zlib1)

int compress2(byte *dest, long *destlen, const byte *source, long sourcelen, int level);
API(compress2, zlib1)

int uncompress(byte *dest, long *destlen, const byte *source, long sourcelen);
API(uncompress, zlib1)

void encipher(unsigned int num_rounds, unsigned long *v, unsigned long *k) // 64-bit block feistel network with a 128-bit key
{
	unsigned long v0 = v[0], v1 = v[1], i;
	unsigned long sum = 0, delta = 0x9E3779B9;
	for(i = 0; i < num_rounds; i++)
	{
		v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
		sum += delta;
		v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum >> 11) & 3]);
	}
	v[0] = v0; v[1] = v1;
}

void decipher(unsigned int num_rounds, unsigned long* v, unsigned long* k) // 64-bit block feistel network with a 128-bit key
{
    unsigned long v0 = v[0], v1 = v[1], i;
    unsigned long delta = 0x9E3779B9, sum = delta * num_rounds;
    for(i = 0; i < num_rounds; i++)
    {
        v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum >> 11) & 3]);
        sum -= delta;
        v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
    }
    
    v[0] = v0; v[1] = v1;
}

void encipherbuffer(char *buffer, long Size)
{
	unsigned long key[4] = {15671, 176, 807912, 235807};
	long offset = 0;
	while(offset < Size - 8)
	{
		encipher(64, (unsigned long*)(buffer + offset), key);
		offset += 8;
	}
}

void decipherbuffer(char *buffer, long Size)
{
	unsigned long key[4] = {15671, 176, 807912, 235807};
	long offset = 0;
	while(offset < Size - 8)
	{
		decipher(64, (unsigned long*)(buffer + offset), key);
		offset += 8;
	}	
}

void addfile(FILE *fp, char *filename)
{
	long Size;
	char *buffer = file_load(filename, NULL, &Size);
	
	long compressedsize = (Size + 12) * 1.1; // must be a bit bigger than the source buffer
	char *compressedbuffer = (char*)sys_malloc(sizeof(char) * compressedsize);
	
	compress2(compressedbuffer, &compressedsize, buffer,Size,9);
	printf("\nname: %s | size: %d | compressedsize: %d", filename,Size, compressedsize);
	
	encipherbuffer(compressedbuffer, compressedsize);
	
	long length = str_len(filename);
	
	fwrite(&length, sizeof(long), 1, fp);
	fwrite(filename, sizeof(char) * length, 1, fp);
	fwrite(&Size, sizeof(long), 1, fp);
	fwrite(&compressedsize, sizeof(long), 1, fp);
	fwrite(compressedbuffer, sizeof(char) * compressedsize, 1, fp);
	
	sys_free(buffer);
	sys_free(compressedbuffer);
}

void loadresources(char *filename)
{
	FILE *fp = fopen(filename, "rb");
	if(!fp) {error("couldn't open file!"); return;}

	long length;
	while(fread(&length, sizeof(long), 1, fp)) // while not eof
	{	
		char *name = (char*)sys_malloc(sizeof(char) * (length + 1));
		fread(name, sizeof(char) * length, 1, fp);
		name[length] = 0; // termination
		
		long Size;
		fread(&Size, sizeof(long), 1, fp);
		long compressedsize;
		fread(&compressedsize, sizeof(long), 1, fp);
		
		char *compressedbuffer = (char*)sys_malloc(sizeof(char) * compressedsize);
		fread(compressedbuffer, sizeof(char) * compressedsize, 1, fp);
		
		//printf("name: %s | size: %d | compressedsize: %d", name, Size, compressedsize);
		
		decipherbuffer(compressedbuffer, compressedsize);
		
		char *buffer = (char*)sys_malloc(sizeof(char) * Size);
		uncompress(buffer, Size, compressedbuffer, compressedsize);
		add_buffer(name, buffer, Size);
		
		sys_free(name);
		sys_free(compressedbuffer);
	}

	fclose(fp);
}

void loadresources_file(char *resourcename, char* filename)
{
	FILE *fp = fopen(resourcename, "rb");
	if(!fp) {error("couldn't open file!"); return;}

	long length;
	while(fread(&length, sizeof(long), 1, fp)) // while not eof
	{	
		char *name = (char*)sys_malloc(sizeof(char) * (length + 1));
		fread(name, sizeof(char) * length, 1, fp);
		name[length] = 0; // termination
		
		if(!str_cmpi(filename,name))
		{
		   sys_free(name);
		   continue;
		}
		
		long Size;
		fread(&Size, sizeof(long), 1, fp);
		long compressedsize;
		fread(&compressedsize, sizeof(long), 1, fp);
		
		char *compressedbuffer = (char*)sys_malloc(sizeof(char) * compressedsize);
		fread(compressedbuffer, sizeof(char) * compressedsize, 1, fp);
		
		//printf("name: %s | size: %d | compressedsize: %d", name, Size, compressedsize);
		
		decipherbuffer(compressedbuffer, compressedsize);
		
		char *buffer = (char*)sys_malloc(sizeof(char) * Size);
		uncompress(buffer, Size, compressedbuffer, compressedsize);
		add_buffer(name, buffer, Size);
		
		sys_free(name);
		sys_free(compressedbuffer);
		fclose(fp);
		return;
	}

	fclose(fp);
}




This should work out of the box. If not, it will at least give you a basic idea on how to do it.

Last edited by LemmyTheSlayer; 01/18/15 14:50.

SCHLEIFE SCHLEIFE SCHLEIFE SCHLEIFE SCHLEIFE SCHLEIFE
Re: a few questions about pro [Re: LemmyTheSlayer] #448051
01/18/15 15:54
01/18/15 15:54
Joined: Dec 2011
Posts: 1,823
Netherlands
Reconnoiter Offline OP
Serious User
Reconnoiter  Offline OP
Serious User

Joined: Dec 2011
Posts: 1,823
Netherlands
Thanks, thats very kind of you laugh

Page 3 of 3 1 2 3

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1