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 :)
  
<b> Format .LOD </b>
+
<b> Format LOD </b>
  
 
<pre>struct h3lod {
 
<pre>struct h3lod {
Line 23: Line 23:
 
http://wiki.enleth.com/homm:homm3-lod-archives
 
http://wiki.enleth.com/homm:homm3-lod-archives
  
<b> Format .PCX </b>
+
<b> Format PCX </b>
  
 
<pre>
 
<pre>
Line 57: Line 57:
 
http://wiki.enleth.com/homm:homm3-pcx-graphics
 
http://wiki.enleth.com/homm:homm3-pcx-graphics
  
<b>Format .DEF </b>
+
<b>Format DEF</b>
  
 
<pre>
 
<pre>
Line 97: Line 97:
 
Source:
 
Source:
 
http://wiki.enleth.com/homm:homm3-def-animations
 
http://wiki.enleth.com/homm:homm3-def-animations
 +
 +
<b>FORMAT 82M</b>
 +
 +
<pre>
 +
struct __attribute__((packed)){
 +
  unsigned int riff; // "RIFF"
 +
  unsigned int size; // size_d + 0x22
 +
  unsigned int wave; // "WAVE"
 +
  unsigned int fmt; // "FMT"
 +
  unsigned int size_t; // 0x10
 +
  unsigned short int format; // 0x01 pcm
 +
  unsigned short int channels; // 0x01 mono
 +
  unsigned int samples; // 22050
 +
  unsigned int byteper; // 22050 = channels * samples * bitsper / 8
 +
  unsigned short int align; // 1    = channels * bitsper / 8
 +
  unsigned short int bitsper; // 8
 +
  unsigned int data; // "DATA"
 +
  unsigned int size_d; //
 +
} wavetable;
 +
</pre>
 +
 +
Source:
 +
http://rewiki.regengedanken.de/wiki/.82M_%28Heroes_of_Might_and_Magic%29
 +
 +
<b>FORMAT PAL</b>
 +
 +
256x
 +
<pre>
 +
uint8 r;
 +
uint8 g;
 +
uint8 b;
 +
</pre>
 +
 +
Source:
 +
http://rewiki.regengedanken.de/wiki/.PAL_%28Heroes_of_Might_and_Magic%29

Revision as of 12:27, 21 July 2013

Najpierw pozbierajmy informacje znalezione w internecie :)

Format LOD

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 
}


Source: http://wiki.enleth.com/homm:homm3-lod-archives

Format PCX

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

Format DEF

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

FORMAT 82M

struct __attribute__((packed)){
   unsigned int riff;		// "RIFF"
   unsigned int size;		// size_d + 0x22
   unsigned int wave;		// "WAVE"
   unsigned int fmt;		// "FMT"
   unsigned int size_t;		// 0x10
   unsigned short int format;	// 0x01 pcm
   unsigned short int channels;	// 0x01 mono
   unsigned int samples;	// 22050
   unsigned int byteper;	// 22050 = channels * samples * bitsper / 8
   unsigned short int align;	// 1     = channels * bitsper / 8
   unsigned short int bitsper;	// 8
   unsigned int data;		// "DATA"
   unsigned int size_d;		//
} wavetable;

Source: http://rewiki.regengedanken.de/wiki/.82M_%28Heroes_of_Might_and_Magic%29

FORMAT PAL

256x

uint8 r;
uint8 g;
uint8 b;

Source: http://rewiki.regengedanken.de/wiki/.PAL_%28Heroes_of_Might_and_Magic%29