i will compare the deck - lines !
i will compare the deck - lines !
OK, I suppose I will work on collision now.
sorry, by now i am unable to compare the deck lines.
my problem is the orientation , at the eflines-lines all is clear, i can see at which place a line begins and ends,by clicking on the " e " from " efline._0_.0.1 . then i see where it begins,and when i click on the " e " from
efline._0_.0.2 , i can see where the first line ends and the next line begins.
and this efline-names i see under the Tab " Dump " .
but about the decks,i can see under " Dump " only the first line,named " d.e.c.k.0.1._.m.a.i.n. "
this allows me to see where the first line begins.
but below of the name there are only a senseless combination of characters and points.nothing something like " piece id 1 , 2, 3 etc. "
so i dont know where the first line ends and the next begins...........
If you compare wit bow_kubaya logic.xml, you can see that deck are composed of several pieces.
For example, deck01_main is composed of 66 pieces, each using the same "pattern" :
This is what you have to find in models_naval tables.Code:<piece id="1"> <corner x="-0.491" y="4.113" z="2.799" type="clear"/> <corner x="-1.497" y="5.619" z="2.799" type="clear"/> <corner x="0.0" y="5.619" z="2.799" type="clear"/> </piece>
So, all the "trick" is to find similar sequences or pattern in the amount of data.
Looking at .xml, types are :
- clear
- hard
Then, each piece is compose of 3 similar sequences : X, Y, Z, TYPE
This is something we should find as a pattern.
Each group of 3 sequences probably begin with a "MARKER" to distinguish it form the others.
It is highly probable that an "ID" follow the MARKER.
Probably something like <MARKER>00<ID>000000
Where both MARKER and ID could be code on 16 bits (XX)
Here is what I've found :
comparing with :Code:0B 00 64 00 65 00 63 00 6B 00 30 00 31 00 5F 00 6D 00 61 00 69 00 6E 00 01 00 00 00 42 00 00 00 MARKER_DECK d e c k 0 1 _ m a i n FIRST_PIECE LAST_PIECE ID MARKER_PIECE X1 Z1 Y1 TYPE1 X2 Z2 Y2 TYPE2 X3 Z3 Y3 TYPE3 01 00 00 00 03 00 00 00 5A 64 FB BE D1 22 33 40 B2 9D 83 40 00 B2 9D BF BF D1 22 33 40 D9 CE B3 40 00 00 00 00 00 D1 22 33 40 D9 CE B3 40 00 00 00 00 00 00 00 80 3F 00 00 00 00 D1 22 33 C0 02 00 00 00 03 00 00 00 00 00 00 00 A2 45 D6 3F 81 95 93 C0 00 98 6E 1A C0 66 66 D6 3F E3 A5 93 C0 00 00 00 00 00 12 83 C0 3F F0 A7 3E C0 00 DF 19 AB 39 BD 9F 7E 3F 8B 0E D4 3D B1 FE 97 BF 03 00 00 00 03 00 00 00 DD 24 06 BF A0 1A 9F 3F B4 C8 46 40 00 5E BA 11 C0 A0 1A 9F 3F 50 8D 47 40 00 DB F9 FE BE D7 A3 A0 3F BE 9F 7A 40 01 3B 9C D4 B8 D1 F8 7F 3F 33 A5 72 BC 97 34 99 BF 04 00 00 00 03 00 00 00 60 E5 20 C0 12 83 C0 3F F0 A7 3E C0 00 00 00 00 00 9C C4 B0 3F A4 70 AD BF 00 00 00 00 00 12 83 C0 3F F0 A7 3E C0 00 00 00 00 00 D7 44 7F 3F 92 AB 9A 3D 20 2A A3 BF 05 00 00 00 03 00 00 00 00 00 00 00 D1 22 33 40 00 00 E4 40 01 DD 24 A6 3F D1 22 33 40 00 00 E4 40 00 00 00 00 00 D1 22 33 40 D9 CE B3 40 00 00 00 00 00 00 00 80 3F 00 00 00 00 D1 22 33 C0 ... 42 00 00 00 03 00 00 00 5A 64 7B BF B4 C8 A6 3F 5E BA 89 3E 00 37 89 21 C0 B4 C8 A6 3F 5E BA 89 3E 00 8D 97 0E BF 29 5C 9F 3F 6D E7 BB 3F 00 00 00 00 00 75 B3 7F 3F 2B E8 45 3D BB 40 A8 BF
So, we have still unknown fields at the end of each piece sequence.Code:<piece id="1"> <corner x="-0.491" y="4.113" z="2.799" type="clear"/> <corner x="-1.497" y="5.619" z="2.799" type="clear"/> <corner x="0.0" y="5.619" z="2.799" type="clear"/> </piece> <piece id="2"> <corner x="0.0" y="-4.612" z="1.674" type="clear"/> <corner x="-2.413" y="-4.614" z="1.675" type="clear"/> <corner x="0.0" y="-2.979" z="1.504" type="clear"/> </piece> <piece id="3"> <corner x="-0.524" y="3.106" z="1.243" type="clear"/> <corner x="-2.277" y="3.118" z="1.243" type="clear"/> <corner x="-0.498" y="3.916" z="1.255" type="hard"/> </piece> <piece id="4"> <corner x="-2.514" y="-2.979" z="1.504" type="clear"/> <corner x="0.0" y="-1.355" z="1.381" type="clear"/> <corner x="0.0" y="-2.979" z="1.504" type="clear"/> </piece>
Hi ,
this was a very good explanation.the only problem left is that i cannot find in the models_naval table something like " MARKER DECK " or " MARKER PIECE " .
i have uploaded 3 Screenshots that should showing this.i thought maybe is the problem the Notepad++ Hex-Editor,so i tried it with wxHexEditor,but then there no longer
senseless characters and points,but heart-symbols and something like that.
at the image " MODELSNAVALTABLE " you can see the eflines.here are names like eflines001 or 002 .
at the image " MODELSNAVALTABLE2 " there is only deck01main,and below of that just characters and points.
i hope all the questions not bothers you.
Last edited by manolops3; November 19, 2013 at 09:53 AM.
MARKER_DECK and MARKER_PIECE didn't exist in tables, it's the name I've given to these fields ^^
wxHexEditor is very useful because it give you the different possible values of the field if it is consider as float, single, double, etc.
Hi ,
i still dont understand it.
i use wxHexeditor now,and i have found the Code now:
01 00 00 00 03 00 00 00
5A 64 FB BE D1 22 33 40 B2 9D 83 40 00
B2 9D BF BF D1 22 33 40 D9 CE B3 40 00
00 00 00 00 D1 22 33 40 D9 CE B3 40 00
00 00 00 00 00 00 80 3F 00 00 00 00 D1 22 33 C0
and i understand that i can know that it begins with 01 00 00 00 , because of it is directly after the last numbers of deck01main.
but at the code :
0B 00 64 00 65 00 63 00 6B 00 30 00 31 00 5F 00 6D 00 61 00 69 00 6E 00 01 00 00 00 42 00 00 00
i dont understand how i can know,that it begins at 0B , and not at 64 or 65 or 63 .
the code have a length of 32x 2-number-combo ( 00 or 67 for example ) . but is every code in the tables 32x 2numbers long ?
i dont know what let me know where a code begins,and where it ends,so the next code begins.
It's all the problem when you are searching for a pattern : where fields begin and where they end
This is the reason why the .xml file is so helpful.
The idea is to compare several similar data, for example, several EFline.
You can initially suppose that EFline field begin with efline.
But when you look at data, you can see the very same code before efline : 0B 00 for all eflinexx and 08 00 for all efline_o_xx.
It's the very same for deck01_main. Marker is place at the beginning of the field. It separate two different data.
And deck01_main is preceded by 0B00.
It's the reason why I consider it as a "marker".
About the size of data, it depend of its type.
- Char and Unsigned Char are coded on 1 octet
example : a = 61,- Short Int and Unsigned Short int are coded on 2 octets
- Int and Unsigned Int are coded on 4 octets (32 bits processors)
- Long Int , Unsigned Long Int and Float are coded on 4 octets
- Double are coded on 8 octets
- Long Double are coded on 10 octets
ah , so every efline have the same code ? just the code before the eflines ( 08 00 ) ,or the numbers after that too ?
i have considered the efline-codes,and it seems that every efline have the very same code:
08 00 45 00 46 00 4C 00 69 00 6E 00 65 00 34 00 37 00 0C 00 00 00 A6 9B A4 3F E5 D0 32 40 AA F1 8A 40 AA F1 72 3F AC 1C 32 40 AA F1 DA 40 38 C6 7D 3F FD 52 AC 3B D7 A0 06 3E 08 00 45 00 46 00 4C 00 69 00 6E 00 65 00 34 00 36 00 04 00 00 00 31 08 9C BF D1 22 33 40 AA F1 BE 40 F0 A7 A6 3F D1 22 33 40 AA F1 BE 40 00 00 00 00 00 00 00 00 00 00 80 3F
and then it starts again with 08 00 45 ............etc .
and you have figure out,that the 1 in 01 00 00 00 is in logic.xml the 1 in " piece id = 1 "
so the 02 00 00 00 is in logic.xml " piece id = 2 "
is that right ?
Yep, when you look at eflineXX, they are all preceded by 0B 00.
On the other hand, efline_0_XX are preceded by 08 00.
This "marker" is followed by efline name (efline01, efline02, etc.).
About pieces, when you compare field, you can see that this field is incremented by 1.
Moreover, comparing X, Y, Z coordinate, you can be sure that 01 00 00 00 correspond to piece 01, 02 00 00 00 correspond to piece 02, etc.
It's all about comparative analogy
Problem with pieces is that I have a bunch of unknown data at the end of the field.
Hi ,
what could we do to figure out what these unknown data do ?
and what is the next step we should do ?
I don't know yet about these data.
The first step is to define data structure using characteristics defined in .xml file (look at post #18)
The second step will be to try to figure what remaining unknown data are.
We have worked on :
- EFline
- deck (some extra-data compare to .xml file are unknown)
And we have to work on :
- buoyancy
- pipe
- damage_model
- collision
- custom positions
Hi ,
the pipes only have 1 pattern/Code in logic.xml .
this evening i will try ( i hope i am able to do now ) to compare the pipes and buoyancy .
Hi ,
about the deck pieces in logic.xml the last piece id is piece id 66. but in the models_naval table it ends with piece id 42.
42 00 00 00 03 00 00 00 5A 64 7B BF B4 C8 A6 3F 5E BA 89 3E 00 37 89 21 C0 B4 C8 A6 3F 5E BA 89 3E 00 8D 97 0E BF 29 5C 9F 3F 6D E7 BB 3F 00 00 00 00 00 75 B3 7F 3F 2B E8 45 3D BB 40 A8 BF
this is the last code in models_naval.
you said the unknown data is : 01 00 00 00 42 00 00 00
maybe this is this the start and ending,from the first piece through to the last piece of all pieces . from 01 00 00 00 ( piece ID 1 )
until 42 00 00 00 ( piece ID 42 )
it seems that then begins the pipes.
Be careful, it's hexadecimal numbers, not decimal ones.
Moreover, the unknown part of the field is at the end of the sequence :Code:Hexadecimal -> Decimal 00 -> 00 01 -> 01 02 -> 02 03 -> 03 04 -> 04 05 -> 05 06 -> 06 07 -> 07 08 -> 08 09 -> 09 0A -> 10 0B -> 11 0C -> 12 0D -> 13 0E -> 14 0F -> 15 10 -> 16 11 -> 17 12 -> 18 ... 1F -> 31 20 -> 16 ... 42 -> 66As these numbers are coded on 32 bits, they are written 0F 00 00 00 and not only 0F.
This is something that doesn't appear pieces data from logic.xml file.Code:0B 00 64 00 65 00 63 00 6B 00 30 00 31 00 5F 00 6D 00 61 00 69 00 6E 00 01 00 00 00 42 00 00 00 MARKER_DECK d e c k 0 1 _ m a i n ? ? ID MARKER_PIECE X1 Z1 Y1 TYPE1 X2 Z2 Y2 TYPE2 X3 Z3 Y3 TYPE3 01 00 00 00 03 00 00 00 5A 64 FB BE D1 22 33 40 B2 9D 83 40 00 B2 9D BF BF D1 22 33 40 D9 CE B3 40 00 00 00 00 00 D1 22 33 40 D9 CE B3 40 00 00 00 00 00 00 00 80 3F 00 00 00 00 D1 22 33 C0 02 00 00 00 03 00 00 00 00 00 00 00 A2 45 D6 3F 81 95 93 C0 00 98 6E 1A C0 66 66 D6 3F E3 A5 93 C0 00 00 00 00 00 12 83 C0 3F F0 A7 3E C0 00 DF 19 AB 39 BD 9F 7E 3F 8B 0E D4 3D B1 FE 97 BF 03 00 00 00 03 00 00 00 DD 24 06 BF A0 1A 9F 3F B4 C8 46 40 00 5E BA 11 C0 A0 1A 9F 3F 50 8D 47 40 00 DB F9 FE BE D7 A3 A0 3F BE 9F 7A 40 01 3B 9C D4 B8 D1 F8 7F 3F 33 A5 72 BC 97 34 99 BF 04 00 00 00 03 00 00 00 60 E5 20 C0 12 83 C0 3F F0 A7 3E C0 00 00 00 00 00 9C C4 B0 3F A4 70 AD BF 00 00 00 00 00 12 83 C0 3F F0 A7 3E C0 00 00 00 00 00 D7 44 7F 3F 92 AB 9A 3D 20 2A A3 BF 05 00 00 00 03 00 00 00 00 00 00 00 D1 22 33 40 00 00 E4 40 01 DD 24 A6 3F D1 22 33 40 00 00 E4 40 00 00 00 00 00 D1 22 33 40 D9 CE B3 40 00 00 00 00 00 00 00 80 3F 00 00 00 00 D1 22 33 C0
the pipe begins with
01 00 00 00 02 00 00 00 . this could be the pipe id and the marker_piece if here is a marker_piece .
but then :
01 00 00 00 01 00 00 00 2B 00 00 00 00 00 00 00 D1 22 33 40 2D B2 7D 40 14 00 00 00 00 00 00 00 64 3B 9F 3F F2 D2 0D 40 00 00 00 00 04 00 00 00 21 00
??? the only " pattern " i see here is :
D1 22 33 40
2D B2 7D 40
these two lines have 4x 2-number combo and the end is 40 by both of them.
now to the buoyancy.
ah, i see.
hexadecimal is not the same as decimal.this is new for me too.
so i take another try to the pipes with this new knowledge.
so by the decks 42 00 00 00 03 00 00 00 is the begin of piece id 66 , the last piece from the decks.
though this , pipes begins at 01 00 00 00 02 00 00 00 .
i see a pattern :
after 01 00 00 00 01 00 00 00 , there is 2B , and then 7x a 00 , then D1 22 33 40 2D B2 7D 40 ( 8x 2 numbers )
then 14 , and then again 7x a 00 , and then 64 3B 9F 3F F2 D2 0D 40 ( 8x 2 numbers )
in logic.xml at the pipes the x ( X 1 and X 2 ) are both 0.0 , so maybe :
D1 22 33 40 = the y-value at deck segment piece 43
2D B2 7D 40 = the z-value at deck segment piece 43
64 3B 9F 3F = the y-value at deck segment piece 20
F2 D2 0D 40 = the z-value at deck segment piece 20
maybe there is no need for a x-value in models_naval because it is 0.0 in logic.xml ?
COLLISION
logic.xml entries look like :
models_naval entries for collision look like :Code:<collision> <face name="logic_collision3d" index="1"> <vertex x="0.0" y="8.029" z="-1.379"/> <vertex x="-0.994" y="10.225" z="-0.713"/> <vertex x="0.0" y="10.225" z="-0.713"/> </face> ... <collision>
Code:MARKER l o g i c _ c o l l i s i o n 3 d INDEX X1 Z1 Y1 X2 Z2 Y2 X3 Z3 Y3 11 00 6C 00 6F 00 67 00 69 00 63 00 5F 00 63 00 6F 00 6C 00 6C 00 69 00 73 00 69 00 6F 00 6E 00 33 00 64 00 01 00 00 00 00 00 00 00 12 83 B0 BF C9 76 00 41 C9 76 7E BF 2B 87 36 BF 9A 99 23 41 00 00 00 00 2B 87 36 BF 9A 99 23 41 11 00 6C 00 6F 00 67 00 69 00 63 00 5F 00 63 00 6F 00 6C 00 6C 00 69 00 73 00 69 00 6F 00 6E 00 33 00 64 00 02 00 00 00 98 6E D2 BE 12 83 B0 BF C9 76 00 41 00 00 00 00 12 83 B0 BF C9 76 00 41 C9 76 7E BF 2B 87 36 BF 9A 99 23 41 11 00 6C 00 6F 00 67 00 69 00 63 00 5F 00 63 00 6F 00 6C 00 6C 00 69 00 73 00 69 00 6F 00 6E 00 33 00 64 00 03 00 00 00 2B 87 D6 BE 14 AE 57 40 AE 47 75 41 B6 F3 BD BE 68 91 81 40 81 95 73 41 00 00 00 00 14 AE 57 40 AE 47 75 41 11 00 6C 00 6F 00 67 00 69 00 63 00 5F 00 63 00 6F 00 6C 00 6C 00 69 00 73 00 69 00 6F 00 6E 00 33 00 64 00 04 00 00 00 B6 F3 BD BE 68 91 81 40 81 95 73 41 00 00 00 00 68 91 81 40 81 95 73 41 00 00 00 00 14 AE 57 40 AE 47 75 41
i know.
what you mean ?