My static website generator using poole https://www.xythobuz.de
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

TRAOD_Formats.html 27KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <!-- saved from url=(0034)/web/20071204181458/http://www.trsearch.org/AODDoc.htm -->
  3. <HTML><HEAD>
  4. <script type="text/javascript" src="/static/js/analytics.js" ></script>
  5. <link type="text/css" rel="stylesheet" href="/static/css/banner-styles.css"/>
  6. <TITLE>TRAOD Formats</TITLE>
  7. <META http-equiv=Content-Language content=nl>
  8. <META http-equiv=Content-Type content="text/html; charset=windows-1252">
  9. <META content="MSHTML 6.00.2800.1476" name=GENERATOR>
  10. <META content=FrontPage.Editor.Document name=ProgId></HEAD>
  11. <BODY>
  12. <!-- BEGIN WAYBACK TOOLBAR INSERT -->
  13. <script> if (window.archive_analytics) { window.archive_analytics.values['server_name']="wwwb-app1.us.archive.org";}; </script>
  14. <script type="text/javascript" src="/static/js/disclaim-element.js" ></script>
  15. <script type="text/javascript" src="/static/js/graph-calc.js" ></script>
  16. <script type="text/javascript" src="/static/jflot/jquery.min.js" ></script>
  17. <script type="text/javascript">
  18. //<![CDATA[
  19. var firstDate = 820454400000;
  20. var lastDate = 1420070399999;
  21. var wbPrefix = "/web/";
  22. var wbCurrentUrl = "http:\/\/www.trlcsoft.com\/TRTOOLS\/FILEFORMATS\/TRAODFormats.htm";
  23. var curYear = -1;
  24. var curMonth = -1;
  25. var yearCount = 18;
  26. var firstYear = 1996;
  27. var imgWidth = 475;
  28. var yearImgWidth = 25;
  29. var monthImgWidth = 2;
  30. var trackerVal = "none";
  31. var displayDay = "4";
  32. var displayMonth = "Dec";
  33. var displayYear = "2007";
  34. var prettyMonths = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
  35. function showTrackers(val) {
  36. if(val == trackerVal) {
  37. return;
  38. }
  39. if(val == "inline") {
  40. document.getElementById("displayYearEl").style.color = "#ec008c";
  41. document.getElementById("displayMonthEl").style.color = "#ec008c";
  42. document.getElementById("displayDayEl").style.color = "#ec008c";
  43. } else {
  44. document.getElementById("displayYearEl").innerHTML = displayYear;
  45. document.getElementById("displayYearEl").style.color = "#ff0";
  46. document.getElementById("displayMonthEl").innerHTML = displayMonth;
  47. document.getElementById("displayMonthEl").style.color = "#ff0";
  48. document.getElementById("displayDayEl").innerHTML = displayDay;
  49. document.getElementById("displayDayEl").style.color = "#ff0";
  50. }
  51. document.getElementById("wbMouseTrackYearImg").style.display = val;
  52. document.getElementById("wbMouseTrackMonthImg").style.display = val;
  53. trackerVal = val;
  54. }
  55. function getElementX2(obj) {
  56. var thing = jQuery(obj);
  57. if((thing == undefined)
  58. || (typeof thing == "undefined")
  59. || (typeof thing.offset == "undefined")) {
  60. return getElementX(obj);
  61. }
  62. return Math.round(thing.offset().left);
  63. }
  64. function trackMouseMove(event,element) {
  65. var eventX = getEventX(event);
  66. var elementX = getElementX2(element);
  67. var xOff = eventX - elementX;
  68. if(xOff < 0) {
  69. xOff = 0;
  70. } else if(xOff > imgWidth) {
  71. xOff = imgWidth;
  72. }
  73. var monthOff = xOff % yearImgWidth;
  74. var year = Math.floor(xOff / yearImgWidth);
  75. var yearStart = year * yearImgWidth;
  76. var monthOfYear = Math.floor(monthOff / monthImgWidth);
  77. if(monthOfYear > 11) {
  78. monthOfYear = 11;
  79. }
  80. // 1 extra border pixel at the left edge of the year:
  81. var month = (year * 12) + monthOfYear;
  82. var day = 1;
  83. if(monthOff % 2 == 1) {
  84. day = 15;
  85. }
  86. var dateString =
  87. zeroPad(year + firstYear) +
  88. zeroPad(monthOfYear+1,2) +
  89. zeroPad(day,2) + "000000";
  90. var monthString = prettyMonths[monthOfYear];
  91. document.getElementById("displayYearEl").innerHTML = year + 1996;
  92. document.getElementById("displayMonthEl").innerHTML = monthString;
  93. // looks too jarring when it changes..
  94. //document.getElementById("displayDayEl").innerHTML = zeroPad(day,2);
  95. var url = wbPrefix + dateString + '/' + wbCurrentUrl;
  96. document.getElementById('wm-graph-anchor').href = url;
  97. //document.getElementById("wmtbURL").value="evX("+eventX+") elX("+elementX+") xO("+xOff+") y("+year+") m("+month+") monthOff("+monthOff+") DS("+dateString+") Moy("+monthOfYear+") ms("+monthString+")";
  98. if(curYear != year) {
  99. var yrOff = year * yearImgWidth;
  100. document.getElementById("wbMouseTrackYearImg").style.left = yrOff + "px";
  101. curYear = year;
  102. }
  103. if(curMonth != month) {
  104. var mtOff = year + (month * monthImgWidth) + 1;
  105. document.getElementById("wbMouseTrackMonthImg").style.left = mtOff + "px";
  106. curMonth = month;
  107. }
  108. }
  109. //]]>
  110. </script>
  111. <style type="text/css">body{margin-top:0!important;padding-top:0!important;min-width:800px!important;}#wm-ipp a:hover{text-decoration:underline!important;}</style>
  112. <div id="wm-ipp" lang="en" class="__wb_banner_div" style="display:none; position:relative;padding:0 5px;min-height:70px;min-width:800px">
  113. <div id="wm-ipp-inside" class="__wb_banner_div" style="position:fixed;padding:0!important;margin:0!important;width:97%;min-width:780px;border:5px solid #000;border-top:none;background-image:url(/static/images/toolbar/wm_tb_bk_trns.png);text-align:center;-moz-box-shadow:1px 1px 3px #333;-webkit-box-shadow:1px 1px 3px #333;box-shadow:1px 1px 3px #333;font-size:11px!important;font-family:'Lucida Grande','Arial',sans-serif!important;">
  114. <table style="border-collapse:collapse;margin:0;padding:0;width:100%;"><tbody><tr>
  115. <td style="padding:10px;vertical-align:top;min-width:110px;">
  116. <a href="/web/" title="Wayback Machine home page" style="background-color:transparent;border:none;"><img src="/static/images/toolbar/wayback-toolbar-logo.png" alt="Wayback Machine" width="110" height="39" border="0"/></a>
  117. </td>
  118. <td style="padding:0!important;text-align:center;vertical-align:top;width:100%;">
  119. <table style="border-collapse:collapse;margin:0 auto;padding:0;width:570px;"><tbody><tr>
  120. <td style="padding:3px 0;" colspan="2">
  121. <form target="_top" method="get" action="/web/form-submit.jsp" name="wmtb" id="wmtb" style="margin:0!important;padding:0!important;"><input type="text" name="url" id="wmtbURL" value="http://www.trlcsoft.com/TRTOOLS/FILEFORMATS/TRAODFormats.htm" style="width:400px;font-size:11px;font-family:'Lucida Grande','Arial',sans-serif;" onfocus="javascript:this.focus();this.select();" /><input type="hidden" name="type" value="replay" /><input type="hidden" name="date" value="20071204181458" /><input type="submit" value="Go" style="font-size:11px;font-family:'Lucida Grande','Arial',sans-serif;margin-left:5px;width: inherit !important" /><span id="wm_tb_options" style="display:block;"></span></form>
  122. </td>
  123. <td style="vertical-align:bottom;padding:5px 0 0 0!important;" rowspan="2">
  124. <table style="border-collapse:collapse;width:110px;color:#99a;font-family:'Helvetica','Lucida Grande','Arial',sans-serif;"><tbody>
  125. <!-- NEXT/PREV MONTH NAV AND MONTH INDICATOR -->
  126. <tr style="width:110px;height:16px;font-size:10px!important;">
  127. <td style="padding-right:9px;font-size:11px!important;font-weight:bold;text-transform:uppercase;text-align:right;white-space:nowrap;overflow:visible;" nowrap="nowrap">
  128. <a href="/web/20071010092614/http://www.trlcsoft.com/TRTOOLS/FILEFORMATS/TRAODFormats.htm" style="text-decoration:none;color:#33f;font-weight:bold;background-color:transparent;border:none;" title="10 Oct 2007"><strong>OCT</strong></a>
  129. </td>
  130. <td id="displayMonthEl" style="background:#000;color:#ff0;font-size:11px!important;font-weight:bold;text-transform:uppercase;width:34px;height:15px;padding-top:1px;text-align:center;" title="You are here: 18:14:58 Dec 4, 2007">DEC</td>
  131. <td style="padding-left:9px;font-size:11px!important;font-weight:bold;text-transform:uppercase;white-space:nowrap;overflow:visible;" nowrap="nowrap">
  132. Jan
  133. </td>
  134. </tr>
  135. <!-- NEXT/PREV CAPTURE NAV AND DAY OF MONTH INDICATOR -->
  136. <tr>
  137. <td style="padding-right:9px;white-space:nowrap;overflow:visible;text-align:right!important;vertical-align:middle!important;" nowrap="nowrap">
  138. <a href="/web/20071010092614/http://www.trlcsoft.com/TRTOOLS/FILEFORMATS/TRAODFormats.htm" title="9:26:14 Oct 10, 2007" style="background-color:transparent;border:none;"><img src="/static/images/toolbar/wm_tb_prv_on.png" alt="Previous capture" width="14" height="16" border="0" /></a>
  139. </td>
  140. <td id="displayDayEl" style="background:#000;color:#ff0;width:34px;height:24px;padding:2px 0 0 0;text-align:center;font-size:24px;font-weight: bold;" title="You are here: 18:14:58 Dec 4, 2007">4</td>
  141. <td style="padding-left:9px;white-space:nowrap;overflow:visible;text-align:left!important;vertical-align:middle!important;" nowrap="nowrap">
  142. <img src="/static/images/toolbar/wm_tb_nxt_off.png" alt="Next capture" width="14" height="16" border="0"/>
  143. </td>
  144. </tr>
  145. <!-- NEXT/PREV YEAR NAV AND YEAR INDICATOR -->
  146. <tr style="width:110px;height:13px;font-size:9px!important;">
  147. <td style="padding-right:9px;font-size:11px!important;font-weight: bold;text-align:right;white-space:nowrap;overflow:visible;" nowrap="nowrap">
  148. 2006
  149. </td>
  150. <td id="displayYearEl" style="background:#000;color:#ff0;font-size:11px!important;font-weight: bold;padding-top:1px;width:34px;height:13px;text-align:center;" title="You are here: 18:14:58 Dec 4, 2007">2007</td>
  151. <td style="padding-left:9px;font-size:11px!important;font-weight: bold;white-space:nowrap;overflow:visible;" nowrap="nowrap">
  152. 2008
  153. </td>
  154. </tr>
  155. </tbody></table>
  156. </td>
  157. </tr>
  158. <tr>
  159. <td style="vertical-align:middle;padding:0!important;">
  160. <a href="/web/20071204181458*/http://www.trlcsoft.com/TRTOOLS/FILEFORMATS/TRAODFormats.htm" style="color:#33f;font-size:11px;font-weight:bold;background-color:transparent;border:none;" title="See a list of every capture for this URL"><strong>2 captures</strong></a>
  161. <div class="__wb_banner_div" style="margin:0!important;padding:0!important;color:#666;font-size:9px;padding-top:2px!important;white-space:nowrap;" title="Timespan for captures of this URL">10 Oct 07 - 4 Dec 07</div>
  162. </td>
  163. <td style="padding:0!important;">
  164. <a style="position:relative; white-space:nowrap; width:475px;height:27px;" href="" id="wm-graph-anchor">
  165. <div class="__wb_banner_div" id="wm-ipp-sparkline" style="position:relative; white-space:nowrap; width:475px;height:27px;background-color:#fff;cursor:pointer;border-right:1px solid #ccc;" title="Explore captures for this URL">
  166. <img id="sparklineImgId" style="position:absolute; z-index:9012; top:0px; left:0px;"
  167. onmouseover="showTrackers('inline');"
  168. onmouseout="showTrackers('none');"
  169. onmousemove="trackMouseMove(event,this)"
  170. alt="sparklines"
  171. width="475"
  172. height="27"
  173. border="0"
  174. src="/web/jsp/graph.jsp?graphdata=475_27_1996:-1:000000000000_1997:-1:000000000000_1998:-1:000000000000_1999:-1:000000000000_2000:-1:000000000000_2001:-1:000000000000_2002:-1:000000000000_2003:-1:000000000000_2004:-1:000000000000_2005:-1:000000000000_2006:-1:000000000000_2007:11:000000000101_2008:-1:000000000000_2009:-1:000000000000_2010:-1:000000000000_2011:-1:000000000000_2012:-1:000000000000_2013:-1:000000000000_2014:-1:000000000000"></img>
  175. <img id="wbMouseTrackYearImg"
  176. style="display:none; position:absolute; z-index:9010;"
  177. width="25"
  178. height="27"
  179. border="0"
  180. src="/static/images/toolbar/transp-yellow-pixel.png"></img>
  181. <img id="wbMouseTrackMonthImg"
  182. style="display:none; position:absolute; z-index:9011; "
  183. width="2"
  184. height="27"
  185. border="0"
  186. src="/static/images/toolbar/transp-red-pixel.png"></img>
  187. </div>
  188. </a>
  189. </td>
  190. </tr></tbody></table>
  191. </td>
  192. <td style="text-align:right;padding:5px;width:65px;font-size:11px!important;">
  193. <a href="javascript:;" onclick="document.getElementById('wm-ipp').style.display='none';" style="display:block;padding-right:18px;background:url(/static/images/toolbar/wm_tb_close.png) no-repeat 100% 0;color:#33f;font-family:'Lucida Grande','Arial',sans-serif;margin-bottom:23px;background-color:transparent;border:none;" title="Close the toolbar">Close</a>
  194. <a href="http://faq.web.archive.org/" style="display:block;padding-right:18px;background:url(/static/images/toolbar/wm_tb_help.png) no-repeat 100% 0;color:#33f;font-family:'Lucida Grande','Arial',sans-serif;background-color:transparent;border:none;" title="Get some help using the Wayback Machine">Help</a>
  195. </td>
  196. </tr></tbody></table>
  197. </div>
  198. </div>
  199. <script type="text/javascript">
  200. var wmDisclaimBanner = document.getElementById("wm-ipp");
  201. if(wmDisclaimBanner != null) {
  202. disclaimElement(wmDisclaimBanner);
  203. }
  204. </script>
  205. <!-- END WAYBACK TOOLBAR INSERT -->
  206. <H1 align=center>TRAOD Formats</H1>
  207. <P align=left>Tomb Raider: angel of darkness features a brand new game engine.
  208. That means new file formats had to be made. While the first engine had files
  209. with 1 big structure, with the new game engine the level files are split up into
  210. smaller parts. This means there are a lot of pointers inside the files. This way
  211. just a part where you are playing can be loaded, which means less memory is
  212. needed and a level loads faster. However, a single level is shorter this way
  213. which causes the game to load a new (part of a) level more often.</P>
  214. <P align=left>&nbsp;</P>
  215. <P align=left>&nbsp;</P>
  216. <DIV align=center>
  217. <CENTER>
  218. <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  219. <TBODY>
  220. <TR>
  221. <TD width="100%">
  222. <H2 align=center>1. GMX Files</H2>
  223. <CENTER></CENTER>
  224. <P align=left>The .gmx files are big files containing a full level. They
  225. include all textures, animations, meshes and the rooms. But these are
  226. seperated from each other. The gmx files contains some smaller files for
  227. animations, characters and rooms.</P></TD></TR>
  228. <CENTER>
  229. <TR>
  230. <TD width="100%"><FONT face=Courier size=2><FONT color=#0000ff>struct
  231. </FONT>GMXFile_Pointer<BR>{<BR>&nbsp; <FONT color=#0000ff>long
  232. </FONT>ID;<FONT color=#0000ff><BR>&nbsp; long </FONT>Pointer;<FONT
  233. color=#0000ff><BR>&nbsp; long </FONT>Size;<FONT
  234. color=#0000ff><BR></FONT>};<FONT color=#0000ff><BR><BR>struct</FONT>
  235. GMXFile<BR>{<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  236. Version;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  237. <FONT color=#008080>// 0x40666666</FONT><BR>&nbsp; <FONT
  238. color=#0000ff>int</FONT> NumPointers;<BR>&nbsp; <FONT
  239. color=#0000ff>int</FONT> Unknown1;<BR>&nbsp; GMXFile_Pointer
  240. *Pointers;<BR>};</FONT></TD></TR>
  241. <TR>
  242. <TD width="100%">Each pointer in the GMXFile_Pointer gives you another
  243. file. They appear to be in random order. The ID field is unknown. It seems
  244. to be a unique ID for each filename.</TD></TR>
  245. <TR>
  246. <TD width="100%">
  247. <H3><BR>1.1 Character files</H3>
  248. <P>One of the files that you can find are characters files
  249. (.chr).</P></TD></TR>
  250. <TR>
  251. <TD width="100%"><FONT size=2><FONT face=Courier><FONT
  252. color=#0000ff>struct </FONT>CHRFile_TextData<BR>{<BR>&nbsp; <FONT
  253. color=#0000ff>char</FONT>
  254. Format[4];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  255. <FONT color=#008080>// 'DXT1', 'DXT3' or 0x00000015
  256. (B8G8R8A8).<BR></FONT>&nbsp; <FONT color=#0000ff>long</FONT>
  257. Unknown1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  258. <FONT color=#008080>// Mostly set to 2 or 4<BR></FONT>&nbsp; <FONT
  259. color=#0000ff>long</FONT>
  260. Unknown2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  261. <FONT color=#008080>// Always 1?<BR></FONT>&nbsp; <FONT
  262. color=#0000ff>long</FONT> Levels;<BR>&nbsp; <FONT
  263. color=#0000ff>long</FONT> XSize;<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  264. YSize;<BR>&nbsp; <FONT color=#0000ff>long</FONT> DataSize;<BR>&nbsp; <FONT
  265. color=#0000ff>char</FONT> *Data;<BR>};&nbsp;<FONT
  266. color=#0000ff><BR><BR>struct </FONT>CHRFile_TextInfo<BR>{<BR>&nbsp; <FONT
  267. color=#0000ff>long</FONT> Unknown1;<BR>&nbsp; <FONT
  268. color=#0000ff>long</FONT> Unknown2;<BR>&nbsp; <FONT
  269. color=#0000ff>long</FONT> Unknown3;<FONT color=#0000ff><BR></FONT>&nbsp;
  270. <FONT color=#0000ff>long</FONT> Unknown4;<FONT
  271. color=#0000ff><BR></FONT>&nbsp; <FONT color=#0000ff>long</FONT>
  272. Unknown5;<FONT color=#0000ff><BR></FONT>&nbsp; <FONT
  273. color=#0000ff>long</FONT> Unknown6;<BR>};<FONT
  274. color=#0000ff><BR><BR>struct </FONT>CHRFile_Textures<FONT
  275. color=#0000ff><BR></FONT>{<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  276. NumTextInfo;<BR>&nbsp; <FONT color=#0000ff>long</FONT> Unknown1;<BR>&nbsp;
  277. CHRFile_TextInfo *TextInfo;<BR>&nbsp; CHRFile_TextData
  278. *TextData;<BR>};<FONT color=#0000ff><BR><BR>struct
  279. </FONT>CHRFile_Mesh<BR>{<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  280. Unknown1;<BR>&nbsp; <FONT color=#0000ff>char</FONT> Name[64];<BR>&nbsp;
  281. <FONT color=#0000ff>char</FONT>
  282. Unknown2[380];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  283. <FONT color=#008080>// Lots unknown data<BR></FONT>};<FONT
  284. color=#0000ff><BR><BR></FONT></FONT><FONT face="Courier New"><FONT
  285. color=#0000ff>struct</FONT> CHRFile_MeshData_Unk2 {<BR>&nbsp;&nbsp; <FONT
  286. color=#0000ff>unsigned</FONT> <FONT color=#0000ff>short</FONT>
  287. Unknown1;<BR>&nbsp;&nbsp; <FONT color=#0000ff>unsigned short</FONT>
  288. Unknown2;<BR><FONT color=#0000ff>&nbsp;&nbsp; unsigned long</FONT>
  289. Unknown3;<BR><FONT color=#0000ff>&nbsp;&nbsp; unsigned long</FONT>
  290. Unknown4;<BR>};</FONT></FONT>
  291. <P><FONT face="Courier New" size=2><FONT color=#0000ff>struct</FONT>
  292. CHRFile_MeshData_Vertex {<BR>&nbsp;&nbsp;&nbsp; <FONT
  293. color=#0000ff>char</FONT>
  294. Unknown[19];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  295. <FONT color=#008080>// (first </FONT></FONT><FONT face=Courier><FONT
  296. color=#008080>CHRFile_MeshData</FONT> </FONT><FONT face="Courier New"
  297. color=#008080 size=2>structure has 38 bytes per Vertex</FONT><FONT
  298. face="Courier New" size=2><FONT color=#008080>)<BR></FONT>};</FONT></P>
  299. <P><FONT size=2><FONT face="Courier New"><FONT color=#0000ff>struct</FONT>
  300. </FONT><FONT face=Courier>CHRFile_MeshData </FONT><FONT
  301. face="Courier New">{<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  302. Unknown1[3];<BR><BR>&nbsp; <FONT color=#0000ff>long</FONT>
  303. NumVertices;<BR>&nbsp; CHR_MeshData_Vertex *Vertices;<BR>&nbsp; <BR>&nbsp;
  304. <FONT color=#0000ff>long</FONT> NumIndex;<BR>&nbsp; <FONT
  305. color=#0000ff>short</FONT> *Index;<BR><BR>&nbsp; <FONT
  306. color=#0000ff>long</FONT> NumUnknown2;<BR>&nbsp; CHR_MeshData_Unk2
  307. *Unknown2;<BR><BR>&nbsp; <FONT color=#0000ff>long</FONT> Unknown3;
  308. <BR>&nbsp; <FONT color=#0000ff>long</FONT>
  309. Unknown4;<BR>};<BR></FONT></FONT><FONT face=Courier size=2><FONT
  310. color=#0000ff><BR>struct</FONT> CHRFile<BR>{<BR>&nbsp; <FONT
  311. color=#0000ff>long</FONT>
  312. Unknown1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  313. <FONT color=#008080>// Seems to be always 0<BR></FONT>&nbsp; <FONT
  314. color=#0000ff>long</FONT>
  315. TexturePointer;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  316. <FONT color=#008080>// Pointer to the textures<BR></FONT>&nbsp; <FONT
  317. color=#0000ff>long</FONT>
  318. MeshPointer;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  319. <FONT color=#008080>// Pointer to the beginning of the first
  320. CHRFile_Mesh</FONT> <FONT color=#008080>structure</FONT><BR>&nbsp; <FONT
  321. color=#0000ff>long</FONT>
  322. Unknown1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  323. <FONT color=#008080>// Pointer to the something<BR></FONT>&nbsp; <FONT
  324. color=#0000ff>long</FONT>
  325. MeshDataPointer;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT
  326. color=#008080>// A pointer to first CHRFile_MeshData
  327. structure<BR></FONT>&nbsp; <FONT color=#0000ff>long</FONT>
  328. NumMeshes;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  329. <FONT color=#008080>// Number of CHRFile_Mesh you must read at the</FONT>
  330. <FONT color=#008080>MeshPointer offset</FONT><BR>};</FONT></P></TD></TR>
  331. <TR>
  332. <TD width="100%">&nbsp;
  333. <H3>1.2 Map files</H3>
  334. <P>Map files contain (part of) a level. Big levels are split in multiple
  335. maps. At some placed the screen goes black and a new map is loaded. This
  336. is done to reduce the size of textures and vertex/index buffers.</P></TD></TR>
  337. <TR>
  338. <TD width="100%"><FONT face=Courier size=2><FONT color=#008080>// First
  339. structure looks like some room definition, not sure however</FONT><FONT
  340. color=#0000ff><BR><BR>struct</FONT> MAP_Rooms<BR>{<BR>&nbsp; <FONT
  341. color=#0000ff>long</FONT> NumRooms;<BR>&nbsp; MAP_RoomPointer
  342. *Rooms;<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
  343. MAP_RoomPointer<BR>{<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  344. Unknown1;<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  345. Pointer;<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
  346. MAP_Room<BR>{<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  347. Unknown1;<BR>&nbsp; <FONT color=#0000ff>long</FONT> Unknown2;<BR>&nbsp;
  348. <FONT color=#0000ff>long</FONT> Pointer1;<BR>&nbsp; <FONT
  349. color=#0000ff>long</FONT> Pointer2;<BR>};<BR><BR><FONT color=#008080>//
  350. Textures in Direct3D Format. Can be simply loaded to a surface, included
  351. mipmaps.</FONT><BR><BR><FONT color=#0000ff>struct</FONT>
  352. MAP_Textures<BR>{<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  353. NumTextInfo;<BR>&nbsp; <FONT color=#0000ff>long</FONT> Unknown1;<BR>&nbsp;
  354. <FONT color=#0000ff>long</FONT> NumTextData;<BR>&nbsp; <FONT
  355. color=#0000ff>long</FONT> Unknown2;<BR>&nbsp; MAP_TextInfo
  356. *TextInfo;<BR>&nbsp; MAP_TextDataHeader *TextDataHeader;<BR>&nbsp;
  357. MAP_TextData *TextData;<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
  358. MAP_TextInfo<BR>{<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  359. Unknown1;<BR>&nbsp; <FONT color=#0000ff>long</FONT> Unknown2;<BR>&nbsp;
  360. <FONT color=#0000ff>long</FONT> Unknown3;<BR>&nbsp; <FONT
  361. color=#0000ff>long</FONT> Unknown4;<BR>&nbsp; <FONT
  362. color=#0000ff>long</FONT> Unknown5;<BR>&nbsp; <FONT
  363. color=#0000ff>long</FONT> Unknown6;<BR>};<BR><BR><FONT
  364. color=#0000ff>struct</FONT> MAP_TextDataHeader<BR>{<BR>&nbsp; <FONT
  365. color=#0000ff>char</FONT> Format[4]; // 'DXT1', 'DXT3' or 0x15000000. Last
  366. one is uncompressed A8R8G8B8 format.<BR>&nbsp; <FONT
  367. color=#0000ff>long</FONT> Unknown1;&nbsp; // 2 or 4<BR>&nbsp; <FONT
  368. color=#0000ff>long</FONT> Unknown2;&nbsp; // Always 1<BR>&nbsp; <FONT
  369. color=#0000ff>long</FONT> Unknown3;&nbsp; // Always 30<BR>&nbsp; <FONT
  370. color=#0000ff>long</FONT> Levels;&nbsp;&nbsp;&nbsp; // Number of levels in
  371. this texture. 7 for 256x256 textures, 2 for 8x8 textures.<BR>&nbsp; <FONT
  372. color=#0000ff>long</FONT> XSize;<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  373. YSize;<BR>&nbsp; <FONT color=#0000ff>long</FONT> DataSize;&nbsp; // Size
  374. of this texture.<BR>&nbsp; <FONT color=#0000ff>long</FONT> Unknown4;&nbsp;
  375. // Always 0?<BR>&nbsp; <FONT color=#0000ff>long</FONT> Unknown5;&nbsp; //
  376. Always 0?<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
  377. MAP_TextData<BR>{<BR>&nbsp; <FONT color=#0000ff>char</FONT>
  378. *Data;<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
  379. MAPFile<BR>{<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  380. RoomPointer;<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  381. TexturePointer;<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  382. UnknownPointer1;<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  383. UnknownPointer2;<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  384. UnknownPointer3;<BR>};</FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
  385. <P align=center>&nbsp;</P>
  386. <DIV align=center>
  387. <CENTER>
  388. <TABLE height=413 cellSpacing=0 cellPadding=0 width="100%" border=0>
  389. <TBODY>
  390. <TR>
  391. <TD width="100%" height=104>
  392. <H2 align=center>2. DB Files</H2>
  393. <CENTER></CENTER>
  394. <P align=left>The data folder from aod contains 3 .db files and have all
  395. their own format. These files contain important data for the game. The
  396. actor.db file contains a lot of information about all friends and enemies
  397. in the game. The function of the other 2 files, weapon.db and invent.db,
  398. is not known yet. But the weapon.db must have something to do with the
  399. guns and ammo and invent seems to be about pickups.</P></TD></TR>
  400. <CENTER>
  401. <TR>
  402. <TD width="100%" height=62>
  403. <H3><BR>2.1 Actor.db</H3>
  404. <P>As said before, actor.db is all about the NPCs (Non Player Characters).
  405. It's a easy format, which can be explained with just 2
  406. structures:</P></TD></TR>
  407. <TR>
  408. <TD width="100%" height=226><FONT face=Courier size=2><FONT
  409. color=#0000ff>struct</FONT> ActorDB<BR>{<BR>&nbsp; <FONT
  410. color=#0000ff>long</FONT> NumActors;<BR>&nbsp; ActorDB_Item
  411. *Actors;<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
  412. ActorDB_Item<BR>{<BR>&nbsp; <FONT color=#0000ff>long</FONT>
  413. ActorID;<BR>&nbsp; <FONT color=#0000ff>long</FONT> HitPoints;<BR>&nbsp;
  414. <FONT color=#0000ff>long</FONT> Type;<BR>&nbsp; <FONT
  415. color=#0000ff>long</FONT> BaseID;<BR>&nbsp; <FONT
  416. color=#0000ff>long</FONT> Flags;<BR>};</FONT></TD></TR>
  417. <TR>
  418. <TD width="100%" height=21>The ActorID is an unique number for each actor.
  419. You cannot have 2 actors with the same id. Some actors can have shared
  420. animations. An enemy takes the animations from the base actor. This is set
  421. by the BaseID. If an enemy has it's own animations, BaseID must be set to
  422. it's own id. Else it points to the actor where the animations are used
  423. from.<BR>Different from the other TR games, the main actor data is no
  424. longer hardcoded. The hit points of an enemy can be set using the
  425. HitPoints field. It's not clear to say how much time you must shoot an
  426. enemy to kill based on the hit points. It depends on the type of gun you
  427. use and the distance to the enemy. For example, a rat far away can take
  428. more shots then a guard right in front of you.<BR>The Type value can be
  429. set to 4 values. If an character is playable, it has a type of 1. Friendly
  430. characters that cannot be shot have the type set to 2. Enemies which can
  431. be fired at have type 3. Finally there is a type 4 which seems to be used
  432. for animating objects.<BR>The last value, Flags, can be set to 0, 1 and 3.
  433. The meaning of it is still unknown, but proberly it has something to do
  434. with the type of
  435. actor.</TD></TR></TBODY></TABLE></CENTER></DIV></CENTER></CENTER></BODY></HTML>
  436. <!--
  437. FILE ARCHIVED ON 18:14:58 Dec 4, 2007 AND RETRIEVED FROM THE
  438. INTERNET ARCHIVE ON 12:44:24 Aug 1, 2014.
  439. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
  440. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
  441. SECTION 108(a)(3)).
  442. -->