SUBSIM: The Web's #1 resource for all submarine & naval simulations since 1997 |
10-22-11, 02:20 PM | #166 |
Black Magic
|
v1.0.234.0 released. See post #1.
I can now read the correct extended data for anything. Problem is I can't read the strings associated with that data yet. Still working on it This version adds the extended data (if the item has any). If the extended data references other strings or has pointers to something else I can't support those yet either. |
10-22-11, 07:39 PM | #167 |
Black Magic
|
I can read the strings for extended data now. It's not entirely correct (about 85% correct). There are pointers 3-5 levels deep and it makes it hard to decipher Not to mention that the GR2 file has a wacked out way of keeping track of it's embedded strings It utterly hates to have duplicates of anything in it so it's got this totally elaborate scheme that only partly makes sense currently.
|
10-22-11, 10:43 PM | #168 |
Black Magic
|
figured out the granny system of how it stores/uses embedded strings Now I can read any embedded string that I need.
v1.0.256.0 released. This verison will now read the embedded strings for all items that have extended data correctly. The extended data items that have pointers to something else (max properties, dx something, etc) or reference another string has not been coded yet. Moving along nicely now |
10-23-11, 01:30 PM | #169 |
Black Magic
|
v1.0.276.0 released. See post #1
This version reads more of the extended data associated with an item. It also tells you where it reads each item of this extended data so you can find it in the file easier. The extended data's values are now read also. The reading of the max properties is perfect but it currently doesn't read this value for every item's extended data. Trying to figure out why still. If an item's extended data has a pointer to another 'extended data' (i.e. max properties, directx something, etc.) I've not coded all of those. I have a majority of them done though The way the granny system uses/finds embedded strings is pretty slick. It was just a bear to figure out initially |
10-24-11, 12:54 AM | #170 |
Black Magic
|
v1.0.284.0 released. See post #1
All extended data for any item is now read correctly (it's totally dynamic - nothing hard coded here. The file [pointers] tells you everything you need to know!). Since I have all the extended data, items visibility is set accoding to it's max properties:hide value. Fixed some formatting issues with the debug output. Added missing offet and position in file (0x_) information to those missing it. Have to redo the map enables/map values so that they spit out their file offset and file position info on values read. That will be in next version |
10-24-11, 02:08 AM | #171 |
Silent Hunter
Join Date: Aug 2006
Posts: 3,528
Downloads: 117
Uploads: 0
|
Fantastic work TDW!
|
10-24-11, 04:00 AM | #172 |
Seasoned Skipper
Join Date: Aug 2010
Location: 49°44´N 129°40´E
Posts: 665
Downloads: 124
Uploads: 7
|
Hi TheDarkWraith!
With the new version, like the previous one, does not appear IIA I see that the program swears by the encoding, whether it be due to the Russian version of windows? Other models successfully opened (in folders sea and submarine) Code:
00000000 0.00000000 [2080] Silent Hunter 5 GR2 Editor / Viewer v1.0.284.0 by TheDarkWraith 00000001 0.00000000 [2080] 00000002 0.03525316 [2080] D: \ GAMES \ U-Boats \ GR2EditorViewer \ GR2EditorViewer.cfg exists = True 00000003 0.03525316 [2080] 00000004 0.03532156 [2080] Reading in cfg file ... 00000005 0.03532156 [2080] 00000006 0.03921311 [2080] Entry found: SH5InstallPath = D: \ GAMES \ U-Boats 00000007 0.03921311 [2080] 00000008 0.03926704 [2080] Entry found: ShowWorldOrigin = False 00000009 0.03926704 [2080] 00000010 0.03933873 [2080] Entry found: WorldOriginSize = 5 00000011 0.03933873 [2080] 00000012 0.03937852 [2080] Entry found: WorldOriginOpacity = 122 00000013 0.03937852 [2080] 00000014 0.03943607 [2080] Entry found: WorldOriginColor =- 16,711,681 00000015 0.03943607 [2080] 00000016 0.03948112 [2080] Entry found: ShowWorldOriginLabel = False 00000017 0.03948112 [2080] 00000018 0.03954525 [2080] Entry found: WorldOriginLabelSize = 7,5 00000019 0.03954525 [2080] 00000020 0.03958569 [2080] Entry found: WorldOriginLabelOpacity = 122 00000021 0.03958569 [2080] 00000022 0.03964587 [2080] Entry found: WorldOriginLabelColor =- 16,711,681 00000023 0.03964587 [2080] 00000024 0.03970934 [2080] Entry found: ShowWorldOriginAxis = True 00000025 0.03970934 [2080] 00000026 0.03974880 [2080] Entry found: WorldOriginAxisOpacity = 122 00000027 0.03974880 [2080] 00000028 0.03981424 [2080] Entry found: ShowBoneOrigin = True 00000029 0.03981424 [2080] 00000030 0.03985272 [2080] Entry found: BoneOriginSize = 5 00000031 0.03985272 [2080] 00000032 0.03990829 [2080] Entry found: BoneOriginOpacity = 185 00000033 0.03990829 [2080] 00000034 0.03997899 [2080] Entry found: BoneOriginColor =- 10,185,235 00000035 0.03997899 [2080] 00000036 0.04001878 [2080] Entry found: ShowBoneOriginLabel = True 00000037 0.04001878 [2080] 00000038 0.04008061 [2080] Entry found: BoneOriginLabelSize = 9,0 00000039 0.04008061 [2080] 00000040 0.04012270 [2080] Entry found: BoneOriginLabelOpacity = 185 00000041 0.04012270 [2080] 00000042 0.04018748 [2080] Entry found: BoneOriginLabelColor =- 10,185,235 00000043 0.04018748 [2080] 00000044 0.04022464 [2080] Entry found: ShowBoneOriginAxis = True 00000045 0.04022464 [2080] 00000046 0.04028087 [2080] Entry found: BoneOriginAxisOpacity = 122 00000047 0.04028087 [2080] 00000048 0.04038643 [2080] Entry found: ShowBones = False 00000049 0.04038643 [2080] 00000050 0.04044891 [2080] Entry found: ShowBoneInterconnects = True 00000051 0.04044891 [2080] 00000052 0.04059361 [2080] Entry found: CullMode = CounterClockwise 00000053 0.04059361 [2080] 00000054 0.04068963 [2080] Entry found: FillMode = solid 00000055 0.04068963 [2080] 00000056 0.04073238 [2080] Entry found: ShadeMode = Gouraud 00000057 0.04073238 [2080] 00000058 0.04079584 [2080] Entry found: PointsSize = 3.5 00000059 0.04079584 [2080] 00000060 0.04083563 [2080] Entry found: PointsColor =- 65 281 00000061 0.04083563 [2080] 00000062 0.04089746 [2080] Entry found: PointsOpacity = 50 00000063 0.04089746 [2080] 00000064 0.04093560 [2080] Entry found: WireframeColor =- 128 00000065 0.04093560 [2080] 00000066 0.04098921 [2080] Entry found: WireframeOpacity = 50 00000067 0.04098921 [2080] 00000068 0.04104643 [2080] Entry found: SolidColor =- 3673639 00000069 0.04104643 [2080] 00000070 0.04108950 [2080] Entry found: SolidOpacity = 255 00000071 0.04108950 [2080] 00000072 0.04114870 [2080] Entry found: SolidIsTexture = True 00000073 0.04114870 [2080] 00000074 0.11984655 [2080] DirectX initialized 00000075 0.11984655 [2080] 00000076 0.14842251 [2080] SH5 install path set to D: \ GAMES \ U-Boats 00000077 0.14842251 [2080] 00000078 7.85648155 [2080] GR2 file path is D: \ GAMES \ U-Boats \ data \ Submarine \ NSS_Uboat2a \ NSS_Uboat2a.GR2 00000079 7.85648155 [2080] 00000080 7.88121939 [2080] Current position in file is 0x0 00000081 7.88261795 [2080] 00000082 7.88261795 [2080] Reading file header data starting at 0x0 00000083 7.88288260 [2080] Magic string =)? LA? ¤ S +% o ·? Ofai 0x10 00000084 7.88289118 [2080] Start of file data file offset (from file beginning) = 0x1C8 0x14 where the file list header starts 00000085 7.88291550 [2080] Unknown1 = 0x0 0x18 00000086 7.88293982 [2080] Unknown2 = 0x0 0x1C 00000087 7.88296556 [2080] Unknown3 = 0x0 0x20 00000088 7.88298893 [2080] Current position in file is 0x20 00000089 7.88462019 [2080] 00000090 7.88462019 [2080] Reading info header data starting at 0x20 00000091 7.88464642 [2080] File format revision = 0x7 0x24 00000092 7.88468218 [2080] File size in bytes = 9277620 0x28 00000093 7.88470554 [2080] CRC value = 0xEBF60FF2 0x2C 00000094 7.88473082 [2080] Bytes from offset to start of sections = 0x48 0x30 bytes from start of this to first section 00000095 7.88475418 [2080] Number of sections = 8 0x34 00000096 7.88477850 [2080] Root object type (?) = 0x6 0x38 00000097 7.88480377 [2080] Root object offset (?) = 0x4DE0 0x3C 00000098 7.88482809 [2080] Unknown1 = 0x0 0x40 00000099 7.88485146 [2080] Unknown2 = 0x0 0x44 00000100 7.88488197 [2080] Tag = 0x80000032 0x48 00000101 7.88491631 [2080] Current position in file is 0x68 00000102 7.88739300 [2080] 00000103 7.88739300 [2080] Reading section 0 (arttoolinfo) data starting at 0x68 00000104 7.88742304 [2080] Unknown = 0x0 0x6C always 0x0 00000105 7.88744879 [2080] Section file offset = 0x1C8 0x70 where this section starts in the file 00000106 7.88747454 [2080] Compressed size = 70 384 0x74 compressed size and uncompressed sizes should equal for SH5 GR2s 00000107 7.88749933 [2080] Uncompressed size = 70 384 0x78 compressed size and uncompressed sizes should equal for SH5 GR2s 00000108 7.88752460 [2080] Alignment = 0x4 0x7C what the alignment boundary is in the file 00000109 7.88754940 [2080] Start of data fileoffset = 0xB478 0x80 start of data 00000110 7.88757324 [2080] Start of data fileoffset2 = 0xBD48 0x84 start of data 00000111 7.88759804 [2080] Pointers file offset = 0x8CF4DC 0x88 where the pointers for this section are located 00000112 7.88762426 [2080] Number of pointers = 0x8C 2257 00000113 7.88764954 [2080] End of pointers file offset = 0x8D84C4 0x90 where the pointers for the file end 00000114 7.88767385 [2080] Unknown2 = 0xBF 0x94 00000115 7.88770485 [2080] ********* Two pointers to section data that should have same value are different in section 0. Please report to TheDarkWraith@Subsim.com ********* 00000116 7.88770485 [2080] 00000117 7.89070749 [2080] This GR2 file has section 0's endofpointersfileoffset! = Filesizeinbytes. This is normally the case. 00000118 7.89070749 [2080] 00000119 7.89376354 [2080] ********* Unknown pointer 2 found to be non-zero in section header 0. It is usually 0x0 ********* 00000120 7.89376354 [2080] 00000121 7.89700842 [2080] Current position in file is 0x94 00000122 7.89813089 [2080] 00000123 7.89813089 [2080] Reading section 1 (vertex_data) data starting at 0x94 00000124 7.89827967 [2080] Unknown = 0x0 0x98 always 0x0 00000125 7.89846277 [2080] Section file offset = 0x114B8 0x9C where this section starts in the file 00000126 7.89861059 [2080] Compressed size = 7939076 0xA0 compressed size and uncompressed sizes should equal for SH5 GR2s 00000127 7.89884520 [2080] Uncompressed size = 7939076 0xA4 compressed size and uncompressed sizes should equal for SH5 GR2s 00000128 7.89888000 [2080] Alignment = 0x4 0xA8 what the alignment boundary is in the file 00000129 7.89890528 [2080] Start of data fileoffset = 0x792404 0xAC start of data 00000130 7.89893007 [2080] Start of data fileoffset2 = 0x792404 0xB0 start of data 00000131 7.89895535 [2080] Pointers file offset = 0x8D5EA8 0xB4 where the pointers for this section are located 00000132 7.89899445 [2080] Number of pointers = 0 0xB8 00000133 7.89902115 [2080] End of pointers file offset = 0x8D90B4 0xBC where the pointers for the file end 00000134 7.89904451 [2080] Unknown2 = 0x0 0xC0 00000135 7.89906979 [2080] Current position in file is 0xC0 00000136 7.89916039 [2080] 00000137 7.89916039 [2080] Reading section 2 (indicies) data starting at 0xC0 00000138 7.89918518 [2080] Unknown = 0x0 0xC4 always 0x0 00000139 7.89921045 [2080] Section file offset = 0x7A38BC 0xC8 where this section starts in the file 00000140 7.89923811 [2080] Compressed size = 1202304 0xCC compressed size and uncompressed sizes should equal for SH5 GR2s 00000141 7.89926291 [2080] Uncompressed size = 1202304 0xD0 compressed size and uncompressed sizes should equal for SH5 GR2s 00000142 7.89928818 [2080] Alignment = 0x4 0xD4 what the alignment boundary is in the file 00000143 7.89931250 [2080] Start of data fileoffset = 0x125880 0xD8 start of data 00000144 7.89933681 [2080] Start of data fileoffset2 = 0x125880 0xDC start of data 00000145 7.89936161 [2080] Pointers file offset = 0x8D5EA8 0xE0 where the pointers for this section are located 00000146 7.89938545 [2080] Number of pointers = 0 0xE4 00000147 7.89940977 [2080] End of pointers file offset = 0x8D90B4 0xE8 where the pointers for the file end 00000148 7.89943409 [2080] Unknown2 = 0x0 0xEC 00000149 7.89945698 [2080] Current position in file is 0xEC 00000150 7.89948606 [2080] 00000151 7.89948606 [2080] Reading section 3 (unknown3) data starting at 0xEC 00000152 7.89951134 [2080] Unknown = 0x0 0xF0 always 0x0 00000153 7.89953661 [2080] Section file offset = 0x8C913C 0xF4 where this section starts in the file 00000154 7.89956141 [2080] Compressed size = 0 0xF8 compressed size and uncompressed sizes should equal for SH5 GR2s 00000155 7.89958525 [2080] Uncompressed size = 0 0xFC compressed size and uncompressed sizes should equal for SH5 GR2s 00000156 7.89961004 [2080] Alignment = 0x4 0x100 what the alignment boundary is in the file 00000157 7.89963436 [2080] Start of data fileoffset = 0x0 0x104 start of data 00000158 7.89966011 [2080] Start of data fileoffset2 = 0x0 0x108 start of data 00000159 7.89968538 [2080] Pointers file offset = 0x8D5EA8 0x10C where the pointers for this section are located 00000160 7.89970875 [2080] Number of pointers = 0 0x110 00000161 7.89973402 [2080] End of pointers file offset = 0x8D90B4 0x114 where the pointers for the file end 00000162 7.89975739 [2080] Unknown2 = 0x0 0x118 00000163 7.89978123 [2080] Current position in file is 0x118 00000164 7.89981031 [2080] 00000165 7.89981031 [2080] Reading section 4 (unknown4) data starting at 0x118 00000166 7.89983368 [2080] Unknown = 0x0 0x11C always 0x0 00000167 7.89985895 [2080] Section file offset = 0x8C913C 0x120 where this section starts in the file 00000168 7.89988375 [2080] Compressed size = 0 0x124 compressed size and uncompressed sizes should equal for SH5 GR2s 00000169 7.89990807 [2080] Uncompressed size = 0 0x128 compressed size and uncompressed sizes should equal for SH5 GR2s 00000170 7.89993334 [2080] Alignment = 0x4 0x12C what the alignment boundary is in the file 00000171 7.89995766 [2080] Start of data fileoffset = 0x0 0x130 start of data 00000172 7.90002871 [2080] Start of data fileoffset2 = 0x0 0x134 start of data 00000173 7.90005350 [2080] Pointers file offset = 0x8D5EA8 0x138 where the pointers for this section are located 00000174 7.90007734 [2080] Number of pointers = 0 0x13C 00000175 7.90010214 [2080] End of pointers file offset = 0x8D90B4 0x140 where the pointers for the file end 00000176 7.90012598 [2080] Unknown2 = 0x0 0x144 00000177 7.90015030 [2080] Current position in file is 0x144 00000178 7.90018177 [2080] 00000179 7.90018177 [2080] Reading section 5 (unknown5) data starting at 0x144 00000180 7.90020609 [2080] Unknown = 0x0 0x148 always 0x0 00000181 7.90023088 [2080] Section file offset = 0x8C913C 0x14C where this section starts in the file 00000182 7.90025616 [2080] Compressed size = 0 0x150 compressed size and uncompressed sizes should equal for SH5 GR2s 00000183 7.90028095 [2080] Uncompressed size = 0 0x154 compressed size and uncompressed sizes should equal for SH5 GR2s 00000184 7.90030479 [2080] Alignment = 0x4 0x158 what the alignment boundary is in the file 00000185 7.90032911 [2080] Start of data fileoffset = 0x0 0x15C start of data 00000186 7.90035343 [2080] Start of data fileoffset2 = 0x0 0x160 start of data 00000187 7.90037823 [2080] Pointers file offset = 0x8D5EA8 0x164 where the pointers for this section are located 00000188 7.90040207 [2080] Number of pointers = 0 0x168 00000189 7.90042686 [2080] End of pointers file offset = 0x8D90B4 0x16C where the pointers for the file end 00000190 7.90045071 [2080] Unknown2 = 0x0 0x170 00000191 7.90047455 [2080] Current position in file is 0x170 00000192 7.90050316 [2080] 00000193 7.90050316 [2080] Reading section 6 (handles_embedded_strings) data starting at 0x170 00000194 7.90052700 [2080] Unknown = 0x0 0x174 always 0x0 00000195 7.90055180 [2080] Section file offset = 0x8C913C 0x178 where this section starts in the file 00000196 7.90057707 [2080] Compressed size = 25 504 0x17C compressed size and uncompressed sizes should equal for SH5 GR2s 00000197 7.90060329 [2080] Uncompressed size = 25 504 0x180 compressed size and uncompressed sizes should equal for SH5 GR2s 00000198 7.90062714 [2080] Alignment = 0x4 0x184 what the alignment boundary is in the file 00000199 7.90065193 [2080] Start of data fileoffset = 0x63A0 0x188 start of data 00000200 7.90067625 [2080] Start of data fileoffset2 = 0x63A0 0x18C start of data 00000201 7.90070057 [2080] Pointers file offset = 0x8D5EA8 0x190 where the pointers for this section are located 00000202 7.90072441 [2080] Number of pointers = 813 0x194 00000203 7.90074921 [2080] End of pointers file offset = 0x8D90B4 0x198 where the pointers for the file end 00000204 7.90077305 [2080] Unknown2 = 0x0 0x19C 00000205 7.90079689 [2080] Current position in file is 0x19C 00000206 7.90082502 [2080] 00000207 7.90082502 [2080] Reading section 7 (unknown7) data starting at 0x19C 00000208 7.90084934 [2080] Unknown = 0x0 0x1A0 always 0x0 00000209 7.90087414 [2080] Section file offset = 0x8CF4DC 0x1A4 where this section starts in the file 00000210 7.90089798 [2080] Compressed size = 0 0x1A8 compressed size and uncompressed sizes should equal for SH5 GR2s 00000211 7.90092278 [2080] Uncompressed size = 0 0x1AC compressed size and uncompressed sizes should equal for SH5 GR2s 00000212 7.90094709 [2080] Alignment = 0x4 0x1B0 what the alignment boundary is in the file 00000213 7.90097284 [2080] Start of data fileoffset = 0x0 0x1B4 start of data 00000214 7.90099812 [2080] Start of data fileoffset2 = 0x0 0x1B8 start of data 00000215 7.90102434 [2080] Pointers file offset = 0x8D84C4 0x1BC where the pointers for this section are located 00000216 7.90104771 [2080] Number of pointers = 0 0x1C0 00000217 7.90107298 [2080] End of pointers file offset = 0x8D90B4 0x1C4 where the pointers for the file end 00000218 7.90109682 [2080] Unknown2 = 0x0 0x1C8 00000219 7.90112019 [2080] Current position in file is 0x1C8 00000220 7.90136480 [2080] Section 7 pointersfileoffset + numberofpointers! = File length. This is usually the case 00000221 7.90136480 [2080] 00000222 7.91347837 [2080] 00000223 7.91347837 [2080] File info offset at 0x8 (0x1D0) 00000224 7.91352558 [2080] Number of textures = 8 0xC (0x1D4) 00000225 7.91421366 [2080] Start of textures pointer found at 0x14 (0x1DC) 00000226 7.91423941 [2080] Start of textures pointer points to 0x3AC (0x574) 00000227 7.91426468 [2080] Number of materials = 20 0x14 (0x1DC) 00000228 7.91433716 [2080] Start of materials pointer found at 0x1C (0x1E4) 00000229 7.91436100 [2080] Start of materials pointer points to 0x62C (0x7F4) 00000230 7.91438580 [2080] Number of skeletons = 1 0x1C (0x1E4) 00000231 7.91449499 [2080] Start of skeletons pointer found at 0x24 (0x1EC) 00000232 7.91451883 [2080] Start of skeletons pointer points to 0x1A1C (0x1BE4) 00000233 7.91454363 [2080] Number of vertex datas = 20 0x24 (0x1EC) 00000234 7.91473389 [2080] Start of vertex datas pointer found at 0x2C (0x1F4) 00000235 7.91475821 [2080] Start of vertex datas pointer points to 0x7358 (0x7520) 00000236 7.91478300 [2080] Number of tritopologies = 20 0x2C (0x1F4) 00000237 7.91501188 [2080] Start of tritopologies pointer found at 0x34 (0x1FC) 00000238 7.91503716 [2080] Start of tritopologies pointer points to 0x7800 (0x79C8) 00000239 7.91506195 [2080] Number of meshes = 20 0x34 (0x1FC) 00000240 7.91529751 [2080] Start of meshes pointer found at 0x3C (0x204) 00000241 7.91532516 [2080] Start of meshes pointer points to 0x7EEC (0x80B4) 00000242 7.91534996 [2080] Number of models = 1 0x3C (0x204) 00000243 7.91563559 [2080] Start of models pointer found at 0x44 (0x20C) 00000244 7.91566038 [2080] Start of models pointer points to 0xA60C (0xA7D4) 00000245 7.91568565 [2080] Number of trackgroups = 1 0x44 (0x20C) 00000246 7.91599464 [2080] Start of trackgroups pointer found at 0x4C (0x214) 00000247 7.91601849 [2080] Start of trackgroups pointer points to 0xA6BC (0xA884) 00000248 7.91604328 [2080] Number of animations = 1 0x4C (0x214) 00000249 7.91679955 [2080] Start of animations pointer found at 0x54 (0x21C) 00000250 7.91682339 [2080] Start of animations pointer points to 0xB458 (0xB620) 00000251 7.91687727 [2080] Number of unknown = 0 0x54 (0x21C) 00000252 7.91727591 [2080] Start of unknown not found in file pointers 00000253 7.91730213 [2080] Current position in file is 0x224 00000254 7.91732693 [2080] 00000255 7.91732693 [2080] Reading all the pointers for section 0 00000256 7.98605824 [2080] ********* Exception occured. Exception is System.ArgumentException: The buffer output symbols is not sufficient to store the encoded characters, the encoding "Unicode (UTF-8)" reserve "System.Text.DecoderReplacementFallback". 00000257 7.98605824 [2080] Parameter name: chars 00000258 7.98605824 [2080] in System.Text.Encoding.ThrowCharsOverflow () 00000259 7.98605824 [2080] in System.Text.Encoding.ThrowCharsOverflow (DecoderNLS decoder, Boolean nothingDecoded) 00000260 7.98605824 [2080] in System.Text.UTF8Encoding.GetChars (Byte * bytes, Int32 byteCount, Char * chars, Int32 charCount, DecoderNLS baseDecoder) 00000261 7.98605824 [2080] in System.Text.DecoderNLS.GetChars (Byte * bytes, Int32 byteCount, Char * chars, Int32 charCount, Boolean flush) 00000262 7.98605824 [2080] in System.Text.DecoderNLS.GetChars (Byte [] bytes, Int32 byteIndex, Int32 byteCount, Char [] chars, Int32 charIndex, Boolean flush) 00000263 7.98605824 [2080] in System.Text.DecoderNLS.GetChars (Byte [] bytes, Int32 byteIndex, Int32 byteCount, Char [] chars, Int32 charIndex) 00000264 7.98605824 [2080] in System.IO.BinaryReader.InternalReadOneChar () 00000265 7.98605824 [2080] in System.IO.BinaryReader.Read () 00000266 7.98605824 [2080] in System.IO.BinaryReader.PeekChar () 00000267 7.98605824 [2080] in TheDarkWraith.SilentHunter5.GR2PointerData.ReadNullTerminatedString (GR2EditorViewer & gr2ev, BinaryReader & br, Int32 & alignment, Int32 & bytesread, Boolean ignorealignment) 00000268 7.98605824 [2080] in TheDarkWraith.SilentHunter5.GR2BasePointers.ReadPointerData (GR2EditorViewer & gr2ev, BinaryReader & br, List `1 & sections, Int32 sectionindex, Int32 numberofpointerstoread, Int32 pointerstartindex, Boolean skippointer, List` 1 & stringsread) 00000269 7.98605824 [2080] in TheDarkWraith.SilentHunter5.GR2File.ReadData (Device & device) 00000270 7.98605824 [2080] in TheDarkWraith.SilentHunter5.GR2File.ReadAndParseGR2File (Device & device) 00000271 7.98605824 [2080] in TheDarkWraith.SilentHunter5.GR2EditorViewer.tsmiFileOpen_Click (Object sender, EventArgs e) ********* 00000272 7.98605824 [2080] 00000273 10.07775497 [2080] D: \ GAMES \ U-Boats \ data \ Submarine \ NSS_Uboat2a \ NSS_Uboat2a.GR2 closed 00000274 10.07775497 [2080] 00000275 11.59106064 [2080] D: \ GAMES \ U-Boats \ GR2EditorViewer \ GR2EditorViewer.cfg updated 00000276 11.59106064 [2080]
__________________
Speed squadron is the speed of the slowest ship ... but only so long as on the trail of the squadron did not sit submarines ... |
10-24-11, 07:25 AM | #173 |
Silent Hunter
Join Date: Jan 2006
Location: UK
Posts: 3,750
Downloads: 11
Uploads: 0
|
@TDW,
Privateer may have got the ball rolling, but I can see when someone is pouring their heart and soul in to something and I can see that you have been working tremendously hard on this, the amount of ground you have already covered is remarkable. I take my hat off to you sir. |
10-24-11, 08:04 AM | #174 |
Admiral
Join Date: Mar 2007
Posts: 2,200
Downloads: 172
Uploads: 0
|
Me Too Amazing , well done TDW
__________________
What we do in life echoes in Eternity |
10-24-11, 08:53 AM | #175 |
Black Magic
|
The Type IIA and undersea do not open because my importer still has some problems. The problems stem from how I define the pointers. Since I can read the extended data properly and I know how granny uses/defines embedded strings then I should be able to figure out where the embedded strings end in the file. Once I know this end point then I can adjust the pointer definitions appropriately. I'm working on fixing this today
|
10-24-11, 10:13 AM | #176 |
Seasoned Skipper
Join Date: Aug 2010
Location: 49°44´N 129°40´E
Posts: 665
Downloads: 124
Uploads: 7
|
I don't doubt your success!
__________________
Speed squadron is the speed of the slowest ship ... but only so long as on the trail of the squadron did not sit submarines ... |
10-24-11, 11:26 AM | #177 |
Black Magic
|
I have the app now reading all the embedded strings referenced in the file at the very beginning (the file itself tells me all this info). It spits them all out to debug output so it can be captured with DbgView. It also spits out where the embedded strings start and where they end. Where they end is key as I needed this so my pointer definitions can be correct
Tried opening IIA and Undersea and they still failed. They didn't fail because of the pointers this time - they failed because there is additional data in the file. I don't know what this additional data is but I have to find out now (or at least account for it so I can 'read' over it) @Obelix - the error you pointed out a few posts above is due to my error checker class that I coded in. Based on what the file tells me (and what I currently know about the GR2 file) it has a set of knowns that it looks for. If it doesn't find all these knowns then it throws an exception to tell me (or you) that there's something different in this file. Very handy. |
10-24-11, 12:14 PM | #178 |
Black Magic
|
I've had a couple of people ask how they can start working on the algorithms for the pointers. This is great I can't give you any info yet until I get my importer working correctly. This is because I want to ensure I can read the file correctly and I'm reading/interpreting everything correctly before giving this info
|
10-24-11, 11:08 PM | #179 |
Black Magic
|
v1.0.294.0 released. See post #1
This version now reads all the embedded strings used by the file and then spits them out to debug output along with offset in file and actual position. The order of these is how they are read from the pointers. Kind of interesting. I needed this info to adjust my pointer definitions so that pointers referencing items after the end of the embedded strings would be defined correctly. Redid the reading of the ArtToolInfo section to remove some hard coded items and because I learned more about it and where I thought things were were not. Still not happy with it (still contains a few hard coded items) so I'm still working on it. Fixed items that we displaying incorrect offset in section and actual file position (mainly was the ArtToolInfo:ExtendedDataocumentContents:Elements items) Added more error checking since I now know where the embedded strings start and end in the file. Error checking also added for start of ExporterInfo section (it's calculated based on the end of the ArtToolInfo:ExtendedDataocumentContents:Elements or I forget what the other one was - whether this is a special GR2 file matters also in this calculation) Now tells you whether this is a 'special' GR2 file (that is if pointers come before data) in the debug output Items that have subitems now use idention to make the reading of them easier in the debug output The outputting of the ArtToolInfo:ExtendedData contents to the debug output has changed. Much easier to read and better information given Still can't read the VIIA or Undersea GR2 files due to additional unknown data found in them. Still working on it. Map enables/Map amounts now show the number of them in []s and also each entry shows it's offset in section and actual file position in the debug output Corrected formatting errors in the debug output (some items had negative values - i.e. 0xFFFF___) There are a few other things but can't think of them currently |
10-26-11, 08:57 AM | #180 |
Black Magic
|
Much of the beginning information the app spits out is 'hard-coded' items. I asked myself how does Granny know what it knows? From the multitude of GR2 files out there one simply couldn't hard-code for everything. There must be some kind of 'trigger' or something that Granny reads to figure out how to display/read everything. That is what I'm working on currently.
Much of this has to do once again with the pointers. Some of the pointers form a linked-list of sorts. You read one pointer and as it's decoded it points you to another pointer which then points you to another and so on and so forth. This is recursion at its best So far I've followed the pointer trail to how the Granny Viewer knows how to display the ArtToolInfo and it's submenus. Now I just have to code in something that can read these 'linked-lists' and be totally autonomous. |
|
|