Difference between revisions of "User:Viader"

From VCMI Project Wiki
Jump to: navigation, search
Line 1: Line 1:
 
Najpierw pozbierajmy informacje znalezione w internecie :)
 
Najpierw pozbierajmy informacje znalezione w internecie :)
  
 +
<pre>
 
<b>Text formats<b>
 
<b>Text formats<b>
  
Line 9: Line 10:
 
Describe soon...
 
Describe soon...
  
<b>Image formats<b>
+
<b>Image formats</b>
  
 
<b>Format BMP</b>
 
<b>Format BMP</b>
Line 25: Line 26:
 
<b> Format PCX </b>
 
<b> Format PCX </b>
  
<pre>
+
 
 
struct h3pcx_color_indexed {
 
struct h3pcx_color_indexed {
 
uint8_t r;
 
uint8_t r;
Line 52: Line 53:
 
h3pcx_color_bgr bitmap[width*height];
 
h3pcx_color_bgr bitmap[width*height];
 
};
 
};
</pre>
+
 
  
 
Source:
 
Source:
Line 59: Line 60:
 
<b>Format DEF</b>
 
<b>Format DEF</b>
  
<pre>
 
 
struct h3def_color_indexed {
 
struct h3def_color_indexed {
 
uint8_t r;
 
uint8_t r;
Line 93: Line 93:
 
         uint32_t y;
 
         uint32_t y;
 
};
 
};
</pre>
 
  
 
Source:
 
Source:
Line 138: Line 137:
 
<b> Format LOD </b>
 
<b> Format LOD </b>
  
<pre>struct h3lod {
+
struct h3lod {
 
uint32_t magic; // always 0x00444f4c, that is, a null-terminated "LOD" string
 
uint32_t magic; // always 0x00444f4c, that is, a null-terminated "LOD" string
 
uint32_t type; // 200 for base archives, 500 for expansion pack archives, probably completely arbitrary numbers
 
uint32_t type; // 200 for base archives, 500 for expansion pack archives, probably completely arbitrary numbers
Line 152: Line 151:
 
uint32_t type; // what's in the file - probably not used by the game directly, more on that below
 
uint32_t type; // what's in the file - probably not used by the game directly, more on that below
 
uint32_t size_compressed; // how many bytes to read, starting from offset - can be zero for stored files, use size_original in such case  
 
uint32_t size_compressed; // how many bytes to read, starting from offset - can be zero for stored files, use size_original in such case  
}</pre>
+
}
  
  
Line 161: Line 160:
 
Source:
 
Source:
 
http://corexii.com/h3m_description.english.txt
 
http://corexii.com/h3m_description.english.txt
 +
</pre>

Revision as of 11:39, 22 July 2013

Najpierw pozbierajmy informacje znalezione w internecie :)

<b>Text formats<b>

<b>Format TXT</b>
http://en.wikipedia.org/wiki/Text_file //NOTE: check encoding - probably ASCII

<b>Format JSON</b>
Describe soon...

<b>Image formats</b>

<b>Format BMP</b>
http://en.wikipedia.org/wiki/BMP_file_format

<b>Format JPG</b>
https://en.wikipedia.org/wiki/JPEG

<b>Format PNG</b>
http://en.wikipedia.org/wiki/Portable_Network_Graphics

<b>Format TGA</b>
https://en.wikipedia.org/wiki/Truevision_TGA

<b> Format PCX </b>


struct h3pcx_color_indexed {
	uint8_t r;
	uint8_t g;
	uint8_t b;
};
 
struct h3pcx_indexed {
	uint32_t bitmap_size; // equals to width*height - 1 byte per pixel
	uint32_t width;
	uint32_t height;
	uint8_t bitmap[width*height];
	h3pcx_color_indexed palette[256];
};
 
struct h3pcx_color_bgr {
	uint8_t b;
	uint8_t g;
	uint8_t r;
};
 
struct h3pcx_bgr {
	uint32_t bitmap_size; // equals to 3*width*height - 3 bytes per pixel
	uint32_t width;
	uint32_t height;
	h3pcx_color_bgr bitmap[width*height];
};


Source:
http://wiki.enleth.com/homm:homm3-pcx-graphics

<b>Format DEF</b>

struct h3def_color_indexed {
	uint8_t r;
	uint8_t g;
	uint8_t b;
};
 
struct h3def_header {
	uint32_t type;
	uint32_t width;
	uint32_t height;
	uint32_t sequences_count;
	h3def_color_indexed palette[256];
};

struct h3def_sequence {
        uint32_t type;
        uint32_t length;
        uint32_t unknown1;
        uint32_t unknown2;
        char *names[length];
        uint32_t offsets[length];
};

struct h3def_frame_header {
        uint32_t data_size;
        uint32_t type;
        uint32_t width;
        uint32_t height;
        uint32_t img_width;
        uint32_t img_height;
        uint32_t x;
        uint32_t y;
};

Source:
http://wiki.enleth.com/homm:homm3-def-animations

<b>Music formats<b>

<b>Format MP3</b>
http://en.wikipedia.org/wiki/MP3

<b>Format OGG</b>
https://en.wikipedia.org/wiki/Ogg

<b>Format 82M</b>
Renamed WAVE format
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/



<b>Video formats<b>

<b>Format AVI</b>
http://en.wikipedia.org/wiki/Audio_Video_Interleave

<b>Format SMK</b>
http://en.wikipedia.org/wiki/Smacker_video

<b>Format BIK</b>
http://en.wikipedia.org/wiki/Bink_Video

<b>Format MJPG</b> //better link needed
http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml#notes

<b>Format MPQ</b> rather not Blizzard format...


<b>Palette formats<b>

<b>FORMAT PAL</b>
http://worms2d.info/Palette_file

<b>Palette formats<b>

<b> Format LOD </b>

struct h3lod {
	uint32_t magic; // always 0x00444f4c, that is, a null-terminated "LOD" string
	uint32_t type; // 200 for base archives, 500 for expansion pack archives, probably completely arbitrary numbers
	uint32_t files_count; // obvious
	uint8_t unknown[80]; // 80 bytes of hell knows what - in most cases that's all zeros, but in H3sprite.lod there's a bunch of seemingly irrelevant numbers here, any information is welcome
	struct h3lod_file[10000]; // file list
}
 
struct h3lod_file {
	char name[16]; // null-terminated, sometimes null-padded too, sometimes padded with, well, something after the null
	uint32_t offset; // includes the header size, no preprocessing required
	uint32_t size_original; // before compression, that is
	uint32_t type; // what's in the file - probably not used by the game directly, more on that below
	uint32_t size_compressed; // how many bytes to read, starting from offset - can be zero for stored files, use size_original in such case 
}


<b>Map formats<b>

<b>Format H3M</b>

Source:
http://corexii.com/h3m_description.english.txt