Noesis script: http://db.tt/TZ3xVIru
Someone sent some samples today so I looked at it.
Based on the initial parsing I've done, it's a chunk-based format with non-obvious tags (well, it's the stuff that appears before the chunk size, but they seem kind of random...)
I find myself skipping 3 bytes and 9 bytes again and again, so that might say something about the structure of each chunk.
Anyways I've put together a parser for some weapons (the ones with "LivingArtifact" in the name). It doesn't load any of the other ones I got (the vertex format is not the same).
The materials are a little farther past the faces, but I probably won't get to them until the general parsing format is figured out. If someone can figure out how the chunks and chunk sizes should be parsed and manages to skip over all of the structs, that would make it a lot easier. I then just have to identify which chunks I need to read and which I can skip.
Someone should upload some models with the corresponding textures (the texture path is given in each material struct, and the struct itself is pretty simple)
Important information: this site is currently scheduled to go offline indefinitely by end of the year.
Heroes of Might and Magic 6
Re: Heroes of Might and Magic 6
Here's the wolf .gobj files with it's corresponding textures. Is this what you needed finale00?
-
- M-M-M-Monster veteran
- Posts: 2382
- Joined: Sat Apr 09, 2011 1:22 am
- Has thanked: 170 times
- Been thanked: 307 times
-
- veteran
- Posts: 82
- Joined: Thu Jan 14, 2010 4:38 pm
- Has thanked: 1 time
- Been thanked: 4 times
Re: Heroes of Might and Magic 6
Will try to add some gobj and textures.
here's sarah and xana inclusive textures
http://dl.dropbox.com/u/6252145/asw/Data.zip
here's sarah and xana inclusive textures
http://dl.dropbox.com/u/6252145/asw/Data.zip
-
- mega-veteran
- Posts: 241
- Joined: Fri Aug 05, 2011 9:31 pm
- Location: Antwerp
- Has thanked: 13 times
- Been thanked: 41 times
Re: Heroes of Might and Magic 6
http://dl.dropbox.com/u/61765035/HoMM6/ ... m6_gobj.py
This script loads all the models finale00 posted. I'll look for UV data.
I also saw something that resembled bone and texture names so i'll have a look at that as well.
This script loads all the models finale00 posted. I'll look for UV data.
I also saw something that resembled bone and texture names so i'll have a look at that as well.
-
- M-M-M-Monster veteran
- Posts: 2382
- Joined: Sat Apr 09, 2011 1:22 am
- Has thanked: 170 times
- Been thanked: 307 times
Re: Heroes of Might and Magic 6
There are a lot of odd bytes scattered throughout the format.
It's definitely chunk-based, but it's littered with seemingly random 0x35 and 0x02 everywhere.
For example, if you go to offset 32, you will read an integer, followed by 0x35.
Now if you look at the size of the file, and you subtract 37 from it, that is the integer you just read.
And not surprisingly, you are 37 bytes into the file.
Perhaps it is like open-brace vs close-brace? Everytime you read 0x35, it's the start of a chunk.
Now let's assume that's how it works.
Let's look for some tags. At offset 37, you see an short followed by an int.
Now if you seek that many bytes of data, you'll find yourself just after another 0x35, followed by another chunk.
The chunk parser:
It actually looks like there are specific patterns for that random byte I listed in the chunk struct.
If it's a 0x35, then it's followed by another chunk.
If it's 0x00, then you read a word (0x01 0x40), followed by an int, followed by data.
If it's 0x04, ...
and ya, I think it should be closer to how we should be parsing the file.
It's definitely chunk-based, but it's littered with seemingly random 0x35 and 0x02 everywhere.
For example, if you go to offset 32, you will read an integer, followed by 0x35.
Now if you look at the size of the file, and you subtract 37 from it, that is the integer you just read.
And not surprisingly, you are 37 bytes into the file.
Perhaps it is like open-brace vs close-brace? Everytime you read 0x35, it's the start of a chunk.
Now let's assume that's how it works.
Let's look for some tags. At offset 37, you see an short followed by an int.
Code: Select all
word tag
dword chunkSize
byte ? #indicates what kind of data follows
The chunk parser:
Code: Select all
def parse_file(self):
'''Main parser method'''
idstring = self.inFile.readBytes(4)
self.inFile.readUInt()
self.inFile.readBytes(4)
self.inFile.seek(18, 1)
while not self.inFile.checkEOF():
tag = self.inFile.readUShort()
size = self.inFile.readUInt()
self.inFile.readByte()
if tag == 0x2031:
print("start")
else:
self.inFile.seek(size, 1)
print(tag, size, self.inFile.tell())
If it's a 0x35, then it's followed by another chunk.
If it's 0x00, then you read a word (0x01 0x40), followed by an int, followed by data.
If it's 0x04, ...
and ya, I think it should be closer to how we should be parsing the file.
-
- M-M-M-Monster veteran
- Posts: 2382
- Joined: Sat Apr 09, 2011 1:22 am
- Has thanked: 170 times
- Been thanked: 307 times
Re: Heroes of Might and Magic 6
I've updated the script at the top.
Right now the main chunk parser is very ugly. I haven't figured out a nice way to go from chunk to chunk. You see things like flag and tag2 which is kind of weird. But I think this is a better approach because right after the index buffer, you start getting into a whole lot of chunks...and hard-coding it might be difficult.
The flag should be important though...
Also, for the vertex and face sections, right after reading the section size, you also found that you had to read a byte to check if it's 16 or 32. If it's 16, then it's followed by 3 bytes. If 32, then it's followed by 4 bytes. Those bytes are the size of the data, but without the padded 0's.......o.O
Kind of interesting.
Also, there might be some sort of byte-alignment. I am not sure, but each chunk might be padded with 0x2's just to make the chunk size a multiple of 4 or 16.
Anyways here's Sarah. The UV's should be stored with the vertices, but they might have done something like ...reading a half-float x, and then let u = 1 - x, v = x. Simply trying out different offsets didn't work lol
Right now the main chunk parser is very ugly. I haven't figured out a nice way to go from chunk to chunk. You see things like flag and tag2 which is kind of weird. But I think this is a better approach because right after the index buffer, you start getting into a whole lot of chunks...and hard-coding it might be difficult.
The flag should be important though...
Also, for the vertex and face sections, right after reading the section size, you also found that you had to read a byte to check if it's 16 or 32. If it's 16, then it's followed by 3 bytes. If 32, then it's followed by 4 bytes. Those bytes are the size of the data, but without the padded 0's.......o.O
Kind of interesting.
Also, there might be some sort of byte-alignment. I am not sure, but each chunk might be padded with 0x2's just to make the chunk size a multiple of 4 or 16.
Anyways here's Sarah. The UV's should be stored with the vertices, but they might have done something like ...reading a half-float x, and then let u = 1 - x, v = x. Simply trying out different offsets didn't work lol
-
- veteran
- Posts: 82
- Joined: Thu Jan 14, 2010 4:38 pm
- Has thanked: 1 time
- Been thanked: 4 times
Re: Heroes of Might and Magic 6
I've taken a look at at the converted sarah model, and noticed the whole mesh is duplicated - even parts of the mesh which definitely aren't two sided. So it's possible you already are reading something else in the format as well.finale00 wrote:I've updated the script at the top.
Right now the main chunk parser is very ugly. I haven't figured out a nice way to go from chunk to chunk. You see things like flag and tag2 which is kind of weird. But I think this is a better approach because right after the index buffer, you start getting into a whole lot of chunks...and hard-coding it might be difficult.
The flag should be important though...
Also, for the vertex and face sections, right after reading the section size, you also found that you had to read a byte to check if it's 16 or 32. If it's 16, then it's followed by 3 bytes. If 32, then it's followed by 4 bytes. Those bytes are the size of the data, but without the padded 0's.......o.O
Kind of interesting.
Also, there might be some sort of byte-alignment. I am not sure, but each chunk might be padded with 0x2's just to make the chunk size a multiple of 4 or 16.
Anyways here's Sarah. The UV's should be stored with the vertices, but they might have done something like ...reading a half-float x, and then let u = 1 - x, v = x. Simply trying out different offsets didn't work lol
possible the UVW's even.
-
- mega-veteran
- Posts: 241
- Joined: Fri Aug 05, 2011 9:31 pm
- Location: Antwerp
- Has thanked: 13 times
- Been thanked: 41 times
Re: Heroes of Might and Magic 6
I'm probably doing something wrong, but I made python loop through the vertexdata calculating half-floats. moving 1 byte to the right each loop, starting at offset 6 (after XYZ).
Then made it print out the data for the first 64 vertices (skipping each offset that had a NaN in it's array).
I don't really see anything that could resemble UV data, unless I'm not supposed to skip lists with NaN in it.
Then made it print out the data for the first 64 vertices (skipping each offset that had a NaN in it's array).
Code: Select all
pos_off 0
1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
pos_off 4
0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015
0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015
0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015
0.000015 0.000015 0.000008 0.000008 0.000015 0.000015 0.000008 0.000008 0.000015 0.000015 0.000008 0.000008 0.000014 0.000015 0.000015 0.000014
pos_off 10
132.875000 61.218750 445.750000 31.234375 1.006836 8.867188 0.107849 78.937500 2.591797 0.027939 51.468750 1.881836 0.028427 0.009514 0.024643 0.050018
2.388672 0.084900 51.968750 2.435547 27.609375 17.234375 2.310547 52.718750 14.242188 1.999023 11.679688 1.889648 0.036102 1.756836 23.609375 17.109375
1.709961 0.092224 22.109375 41.468750 20.984375 1.850586 35.718750 29.234375 2.513672 56.218750 42.718750 3.451172 103.937500 68.937500 6.121094 203.875000
153.875000 10.554688 531.500000 199.875000 177.875000 19.109375 471.750000 172.875000 229.875000 29.859375 487.750000 253.875000 244.875000 36.218750 44.718750 395.750000
pos_off 13
0.000007 0.000007 0.000008 0.000007 0.000007 0.000007 0.000007 0.000007 0.000007 0.000006 0.000006 0.000006 0.000006 0.000006 0.000006 0.000006
0.000006 0.000006 0.000006 0.000006 0.000006 0.000006 0.000006 0.000005 0.000005 0.000005 0.000005 0.000005 0.000005 0.000005 0.000005 0.000005
0.000005 0.000006 0.000005 0.000005 0.000005 0.000005 0.000005 0.000005 0.000005 0.000005 0.000005 0.000005 0.000005 0.000005 0.000004 0.000004
0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004
pos_off 14
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 15
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 16
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 21
0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015
0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015
0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015
0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015
pos_off 22
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 23
-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000
pos_off 24
1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000
1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000
1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000
1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000 1.875000
pos_off 25
0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004
0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004
0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004
0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004 0.000004
pos_off 26
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 27
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 28
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 29
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 30
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 31
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 32
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 33
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 34
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 35
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 36
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 37
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 41
0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015
0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015
0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015
0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015
pos_off 42
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 43
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 44
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 45
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 46
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 47
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 48
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 49
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 50
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 51
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 52
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 53
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 54
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
pos_off 55
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
-
- mega-veteran
- Posts: 241
- Joined: Fri Aug 05, 2011 9:31 pm
- Location: Antwerp
- Has thanked: 13 times
- Been thanked: 41 times
Re: Heroes of Might and Magic 6
Tried creating a 010 template for the format but it made my head explode.
Chunks start with 0x35 and end with 0x02.
After the 0x35 come 2 bytes which I called "flag". They seem to increase in numbers for example: 1010->2010->3010 and elsewhere it's 1010->1020(->2020->3020->4020)->1030 etc.
So a lot of chunks in chunks and sometimes you have chunks 0x3102 which aren't preceded by 0x35 but they do end with 0x02. These are the most annoying, I can't put a fixed format on them and started naming them x3102, x3102_2010 etc.
Chunks start with 0x35 and end with 0x02.
After the 0x35 come 2 bytes which I called "flag". They seem to increase in numbers for example: 1010->2010->3010 and elsewhere it's 1010->1020(->2020->3020->4020)->1030 etc.
So a lot of chunks in chunks and sometimes you have chunks 0x3102 which aren't preceded by 0x35 but they do end with 0x02. These are the most annoying, I can't put a fixed format on them and started naming them x3102, x3102_2010 etc.
You do not have the required permissions to view the files attached to this post.
Last edited by Demonsangel on Wed Mar 28, 2012 12:24 am, edited 1 time in total.
-
- M-M-M-Monster veteran
- Posts: 2382
- Joined: Sat Apr 09, 2011 1:22 am
- Has thanked: 170 times
- Been thanked: 307 times
Re: Heroes of Might and Magic 6
I think the 2-byte "flag" is just the chunk-type. The Ogre 3D and Lightwave formats both use those kinds of numbers for their chunks where the high-order bits represent the general type of chunk (eg: mesh, material, etc) whereas the low-order bits represent a subtype within that chunk type (eg: vertices, normals, specific material attributes, etc)
I was thinking along the same lines where 0x35 is the start of a chunk and 0x02 is the end, but the very first chunk size was throwing me off.
It is probably just one of those parenthesis-matching things
Regarding 0x31 0x02, it might be saying like, I treat it like any other chunk. It doesn't seem to be that much different from reading an 0x35.
I was thinking along the same lines where 0x35 is the start of a chunk and 0x02 is the end, but the very first chunk size was throwing me off.
It is probably just one of those parenthesis-matching things
Regarding 0x31 0x02, it might be saying like, I treat it like any other chunk. It doesn't seem to be that much different from reading an 0x35.
-
- mega-veteran
- Posts: 241
- Joined: Fri Aug 05, 2011 9:31 pm
- Location: Antwerp
- Has thanked: 13 times
- Been thanked: 41 times
Re: Heroes of Might and Magic 6
Can you find anything that even resembles UV data?
There's no extra chunks that could contain these.
There's no extra chunks that could contain these.