Have you considered that the values might be in reverse endian?
For example, you say you're getting 3,000 million textures (3 billion). The maximum value of four bytes is 4,294,967,295 (that is, FF FF FF FF). Not too far from 3 billion. In fact, 3 billion in hex is B2 D0 5E 00. However, if you reverse it (00 5E D0 B2) you get 6,213,810. The reason I point this out is because while 00 00 00 01 is only 1, 01 00 00 00 is 16,777,216.
In short: try reversing your four byte texture count buffer and see what you get. If it works, you'll want to make sure you reverse ALL numerical values.
(Look, guys! I didn't flame or anything! I ran into this problem when hacking ZSNES save states back when I was like... 14. I kept wondering why Ness had 6,144 HP at level 1.)
Writing a Program for loading Maps
Moderator: Moderators
-
- Perl Monk
- Posts: 810
- Joined: 04 Apr 2008, 17:26
- Noob?: No
Re: Writing a Program for loading Maps
cs : ee : realist
-
- Noob
- Posts: 5
- Joined: 11 Jul 2008, 09:08
- Noob?: Yes
Re: Writing a Program for loading Maps
Hm it doesnt seem to be this either...
Look I got some Screens


The first one is when I try to get the texture count.
There you may see that the Size is changing aswell and the Bitmaps aren't correctly displayed anymore
In the second one you see that I removed the texture count and the Size and Bitmaps are correctly displayed again.
The code is here:
Look I got some Screens


The first one is when I try to get the texture count.
There you may see that the Size is changing aswell and the Bitmaps aren't correctly displayed anymore
In the second one you see that I removed the texture count and the Size and Bitmaps are correctly displayed again.
The code is here:
Code: Select all
char* buffer;
unsigned int count;
ifstream File("data\\payon.rsw");
ifstream GND("data\\payon.gnd");
ifstream GAT("data\\payon.gat");
streamoff curpos = 0;
// Header
GND.seekg(0);
buffer=new char[4];
GND.read(buffer,4);
curpos += 4;
cout<<"Header : "<<buffer<<endl;
delete buffer;
// Version
//GND.seekg(curpos);
//buffer=new char[2];
//GND.read(buffer,2);
curpos += 2;
//cout<<"Version : "<<*((char*)buffer)<<endl;
//delete buffer;
// Size X
GND.seekg(curpos);
buffer=new char[4];
GND.read(buffer,4);
curpos += 4;
cout<<"Size X : "<<*((int*)buffer)<<endl;
delete buffer;
// Size Y
GND.seekg(curpos);
buffer=new char[4];
GND.read(buffer,4);
curpos += 4;
cout<<"Size Y : "<<*((int*)buffer)<<endl;
delete buffer;
// Proportion
GND.seekg(curpos);
buffer=new char[4];
GND.read(buffer,4);
curpos += 4;
cout<<"Proportion : "<<*((float*)buffer)<<endl;
delete buffer;
// Count
//GND.seekg(18);
//buffer=new char[4];
//GND.read(buffer,4);
curpos += 4;
//cout<<"Count : "<<*((int*)buffer)<<endl;
//delete buffer;
// Size
GND.seekg(22);
buffer=new char[4];
GND.read(buffer,4);
curpos += 4;
cout<<"Size : "<<*((int*)buffer)<<endl;
delete buffer;
//Textures
for (int i=0;i<26;i++){
GND.seekg(curpos);
buffer=new char[40];
GND.read(buffer,40);
curpos += 80;
cout<<"Bitmap : "<<buffer<<endl;
delete buffer;
}
GND.seekg(2106);
buffer=new char[4];
GND.read(buffer,4);
curpos += 4;
cout<<"Header : "<<*((int*)buffer)<<endl;
delete buffer;
GND.seekg(3236096);
buffer=new char[4];
GND.read(buffer,4);
curpos += 4;
cout<<"Header : "<<*((int*)buffer)<<endl;
delete buffer;
curpos=0;
// Header
File.seekg(0);
buffer=new char[7];
File.read(buffer,7);
curpos += 6;
cout<<"Header : "<<buffer<<endl;
delete buffer;
// Ini
File.seekg(curpos);
buffer=new char[40];
File.read(buffer,40);
curpos += 40;
cout<<"Ini : "<<*((int*)buffer)<<endl;
delete buffer;
// GND
File.seekg(curpos);
buffer=new char[40];
File.read(buffer,40);
curpos += 40;
cout<<"GND : "<<buffer<<endl;
delete buffer;
// GAT
File.seekg(curpos);
buffer=new char[40];
File.read(buffer,40);
curpos += 40;
cout<<"GAT : "<<buffer<<endl;
delete buffer;
// SRC File Alpha only
File.seekg(curpos);
buffer=new char[40];
File.read(buffer,40);
curpos += 40;
cout<<"SRC : "<<buffer<<endl;
delete buffer;
// Height
File.seekg(curpos);
buffer=new char[40];
File.read(buffer,40);
curpos += 4;
cout<<"Height : "<<*((float*)buffer)<<endl;
delete buffer;
// Type
File.seekg(curpos);
buffer=new char[4];
File.read(buffer,4);
curpos += 4;
cout<<"Type : "<<*((int*)buffer)<<endl;
delete buffer;
// Amplitude
File.seekg(curpos);
buffer=new char[4];
File.read(buffer,4);
curpos += 4;
cout<<"Amplitude : "<<*((float*)buffer)<<endl;
delete buffer;
// Phase
File.seekg(curpos);
buffer=new char[4];
File.read(buffer,4);
curpos += 4;
cout<<"Phase : "<<*((float*)buffer)<<endl;
delete buffer;
// Surface Curve Level
File.seekg(curpos);
buffer=new char[40];
File.read(buffer,4);
curpos += 4;
cout<<"Surface Curve Level : "<<*((float*)buffer)<<endl;
delete buffer;
// Texture Ciclyng
File.seekg(curpos);
buffer=new char[4];
File.read(buffer,4);
curpos += 4;
cout<<"Texture Ciclyng : "<<*((float*)buffer)<<endl;
delete buffer;
// Texture Ciclyng
File.seekg(curpos);
buffer=new char[4];
File.read(buffer,4);
curpos += 4;
cout<<"Texture Ciclyng : "<<*((int*)buffer)<<endl;
delete buffer;
// Objects Count
File.seekg(242);
buffer=new char[4];
File.read(buffer,4);
curpos += 4;
count=*((int*)buffer);
cout<<"Objects Count : "<<*((int*)buffer)<<endl;
delete buffer;
...