123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483 |
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <!-- saved from url=(0034)/web/20071204181458/http://www.trsearch.org/AODDoc.htm -->
- <HTML><HEAD>
-
- <script type="text/javascript" src="/static/js/analytics.js" ></script>
- <link type="text/css" rel="stylesheet" href="/static/css/banner-styles.css"/>
-
-
-
- <TITLE>TRAOD Formats</TITLE>
- <META http-equiv=Content-Language content=nl>
- <META http-equiv=Content-Type content="text/html; charset=windows-1252">
- <META content="MSHTML 6.00.2800.1476" name=GENERATOR>
- <META content=FrontPage.Editor.Document name=ProgId></HEAD>
- <BODY>
- <!-- BEGIN WAYBACK TOOLBAR INSERT -->
- <script> if (window.archive_analytics) { window.archive_analytics.values['server_name']="wwwb-app1.us.archive.org";}; </script>
-
- <script type="text/javascript" src="/static/js/disclaim-element.js" ></script>
- <script type="text/javascript" src="/static/js/graph-calc.js" ></script>
- <script type="text/javascript" src="/static/jflot/jquery.min.js" ></script>
- <script type="text/javascript">
- //<![CDATA[
- var firstDate = 820454400000;
- var lastDate = 1420070399999;
- var wbPrefix = "/web/";
- var wbCurrentUrl = "http:\/\/www.trlcsoft.com\/TRTOOLS\/FILEFORMATS\/TRAODFormats.htm";
-
- var curYear = -1;
- var curMonth = -1;
- var yearCount = 18;
- var firstYear = 1996;
- var imgWidth = 475;
- var yearImgWidth = 25;
- var monthImgWidth = 2;
- var trackerVal = "none";
- var displayDay = "4";
- var displayMonth = "Dec";
- var displayYear = "2007";
- var prettyMonths = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
-
- function showTrackers(val) {
- if(val == trackerVal) {
- return;
- }
- if(val == "inline") {
- document.getElementById("displayYearEl").style.color = "#ec008c";
- document.getElementById("displayMonthEl").style.color = "#ec008c";
- document.getElementById("displayDayEl").style.color = "#ec008c";
- } else {
- document.getElementById("displayYearEl").innerHTML = displayYear;
- document.getElementById("displayYearEl").style.color = "#ff0";
- document.getElementById("displayMonthEl").innerHTML = displayMonth;
- document.getElementById("displayMonthEl").style.color = "#ff0";
- document.getElementById("displayDayEl").innerHTML = displayDay;
- document.getElementById("displayDayEl").style.color = "#ff0";
- }
- document.getElementById("wbMouseTrackYearImg").style.display = val;
- document.getElementById("wbMouseTrackMonthImg").style.display = val;
- trackerVal = val;
- }
- function getElementX2(obj) {
- var thing = jQuery(obj);
- if((thing == undefined)
- || (typeof thing == "undefined")
- || (typeof thing.offset == "undefined")) {
- return getElementX(obj);
- }
- return Math.round(thing.offset().left);
- }
- function trackMouseMove(event,element) {
-
- var eventX = getEventX(event);
- var elementX = getElementX2(element);
- var xOff = eventX - elementX;
- if(xOff < 0) {
- xOff = 0;
- } else if(xOff > imgWidth) {
- xOff = imgWidth;
- }
- var monthOff = xOff % yearImgWidth;
-
- var year = Math.floor(xOff / yearImgWidth);
- var yearStart = year * yearImgWidth;
- var monthOfYear = Math.floor(monthOff / monthImgWidth);
- if(monthOfYear > 11) {
- monthOfYear = 11;
- }
- // 1 extra border pixel at the left edge of the year:
- var month = (year * 12) + monthOfYear;
- var day = 1;
- if(monthOff % 2 == 1) {
- day = 15;
- }
- var dateString =
- zeroPad(year + firstYear) +
- zeroPad(monthOfYear+1,2) +
- zeroPad(day,2) + "000000";
-
- var monthString = prettyMonths[monthOfYear];
- document.getElementById("displayYearEl").innerHTML = year + 1996;
- document.getElementById("displayMonthEl").innerHTML = monthString;
- // looks too jarring when it changes..
- //document.getElementById("displayDayEl").innerHTML = zeroPad(day,2);
-
- var url = wbPrefix + dateString + '/' + wbCurrentUrl;
- document.getElementById('wm-graph-anchor').href = url;
-
- //document.getElementById("wmtbURL").value="evX("+eventX+") elX("+elementX+") xO("+xOff+") y("+year+") m("+month+") monthOff("+monthOff+") DS("+dateString+") Moy("+monthOfYear+") ms("+monthString+")";
- if(curYear != year) {
- var yrOff = year * yearImgWidth;
- document.getElementById("wbMouseTrackYearImg").style.left = yrOff + "px";
- curYear = year;
- }
- if(curMonth != month) {
- var mtOff = year + (month * monthImgWidth) + 1;
- document.getElementById("wbMouseTrackMonthImg").style.left = mtOff + "px";
- curMonth = month;
- }
- }
- //]]>
- </script>
-
- <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>
- <div id="wm-ipp" lang="en" class="__wb_banner_div" style="display:none; position:relative;padding:0 5px;min-height:70px;min-width:800px">
-
-
- <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;">
- <table style="border-collapse:collapse;margin:0;padding:0;width:100%;"><tbody><tr>
- <td style="padding:10px;vertical-align:top;min-width:110px;">
- <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>
- </td>
- <td style="padding:0!important;text-align:center;vertical-align:top;width:100%;">
-
- <table style="border-collapse:collapse;margin:0 auto;padding:0;width:570px;"><tbody><tr>
- <td style="padding:3px 0;" colspan="2">
- <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>
- </td>
- <td style="vertical-align:bottom;padding:5px 0 0 0!important;" rowspan="2">
- <table style="border-collapse:collapse;width:110px;color:#99a;font-family:'Helvetica','Lucida Grande','Arial',sans-serif;"><tbody>
-
- <!-- NEXT/PREV MONTH NAV AND MONTH INDICATOR -->
- <tr style="width:110px;height:16px;font-size:10px!important;">
- <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">
-
- <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>
-
- </td>
- <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>
- <td style="padding-left:9px;font-size:11px!important;font-weight:bold;text-transform:uppercase;white-space:nowrap;overflow:visible;" nowrap="nowrap">
-
- Jan
-
- </td>
- </tr>
-
- <!-- NEXT/PREV CAPTURE NAV AND DAY OF MONTH INDICATOR -->
- <tr>
- <td style="padding-right:9px;white-space:nowrap;overflow:visible;text-align:right!important;vertical-align:middle!important;" nowrap="nowrap">
-
- <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>
-
- </td>
- <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>
- <td style="padding-left:9px;white-space:nowrap;overflow:visible;text-align:left!important;vertical-align:middle!important;" nowrap="nowrap">
-
- <img src="/static/images/toolbar/wm_tb_nxt_off.png" alt="Next capture" width="14" height="16" border="0"/>
-
- </td>
- </tr>
-
- <!-- NEXT/PREV YEAR NAV AND YEAR INDICATOR -->
- <tr style="width:110px;height:13px;font-size:9px!important;">
- <td style="padding-right:9px;font-size:11px!important;font-weight: bold;text-align:right;white-space:nowrap;overflow:visible;" nowrap="nowrap">
-
- 2006
-
- </td>
- <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>
- <td style="padding-left:9px;font-size:11px!important;font-weight: bold;white-space:nowrap;overflow:visible;" nowrap="nowrap">
-
- 2008
-
- </td>
- </tr>
- </tbody></table>
- </td>
-
- </tr>
- <tr>
- <td style="vertical-align:middle;padding:0!important;">
- <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>
- <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>
- </td>
- <td style="padding:0!important;">
- <a style="position:relative; white-space:nowrap; width:475px;height:27px;" href="" id="wm-graph-anchor">
- <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">
- <img id="sparklineImgId" style="position:absolute; z-index:9012; top:0px; left:0px;"
- onmouseover="showTrackers('inline');"
- onmouseout="showTrackers('none');"
- onmousemove="trackMouseMove(event,this)"
- alt="sparklines"
- width="475"
- height="27"
- border="0"
- 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>
- <img id="wbMouseTrackYearImg"
- style="display:none; position:absolute; z-index:9010;"
- width="25"
- height="27"
- border="0"
- src="/static/images/toolbar/transp-yellow-pixel.png"></img>
- <img id="wbMouseTrackMonthImg"
- style="display:none; position:absolute; z-index:9011; "
- width="2"
- height="27"
- border="0"
- src="/static/images/toolbar/transp-red-pixel.png"></img>
- </div>
- </a>
-
- </td>
- </tr></tbody></table>
- </td>
- <td style="text-align:right;padding:5px;width:65px;font-size:11px!important;">
- <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>
- <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>
- </td>
- </tr></tbody></table>
-
- </div>
- </div>
- <script type="text/javascript">
- var wmDisclaimBanner = document.getElementById("wm-ipp");
- if(wmDisclaimBanner != null) {
- disclaimElement(wmDisclaimBanner);
- }
- </script>
- <!-- END WAYBACK TOOLBAR INSERT -->
-
- <H1 align=center>TRAOD Formats</H1>
- <P align=left>Tomb Raider: angel of darkness features a brand new game engine.
- That means new file formats had to be made. While the first engine had files
- with 1 big structure, with the new game engine the level files are split up into
- smaller parts. This means there are a lot of pointers inside the files. This way
- just a part where you are playing can be loaded, which means less memory is
- needed and a level loads faster. However, a single level is shorter this way
- which causes the game to load a new (part of a) level more often.</P>
- <P align=left> </P>
- <P align=left> </P>
- <DIV align=center>
- <CENTER>
- <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
- <TBODY>
- <TR>
- <TD width="100%">
- <H2 align=center>1. GMX Files</H2>
- <CENTER></CENTER>
- <P align=left>The .gmx files are big files containing a full level. They
- include all textures, animations, meshes and the rooms. But these are
- seperated from each other. The gmx files contains some smaller files for
- animations, characters and rooms.</P></TD></TR>
- <CENTER>
- <TR>
- <TD width="100%"><FONT face=Courier size=2><FONT color=#0000ff>struct
- </FONT>GMXFile_Pointer<BR>{<BR> <FONT color=#0000ff>long
- </FONT>ID;<FONT color=#0000ff><BR> long </FONT>Pointer;<FONT
- color=#0000ff><BR> long </FONT>Size;<FONT
- color=#0000ff><BR></FONT>};<FONT color=#0000ff><BR><BR>struct</FONT>
- GMXFile<BR>{<BR> <FONT color=#0000ff>long</FONT>
- Version;
- <FONT color=#008080>// 0x40666666</FONT><BR> <FONT
- color=#0000ff>int</FONT> NumPointers;<BR> <FONT
- color=#0000ff>int</FONT> Unknown1;<BR> GMXFile_Pointer
- *Pointers;<BR>};</FONT></TD></TR>
- <TR>
- <TD width="100%">Each pointer in the GMXFile_Pointer gives you another
- file. They appear to be in random order. The ID field is unknown. It seems
- to be a unique ID for each filename.</TD></TR>
- <TR>
- <TD width="100%">
- <H3><BR>1.1 Character files</H3>
- <P>One of the files that you can find are characters files
- (.chr).</P></TD></TR>
- <TR>
- <TD width="100%"><FONT size=2><FONT face=Courier><FONT
- color=#0000ff>struct </FONT>CHRFile_TextData<BR>{<BR> <FONT
- color=#0000ff>char</FONT>
- Format[4];
- <FONT color=#008080>// 'DXT1', 'DXT3' or 0x00000015
- (B8G8R8A8).<BR></FONT> <FONT color=#0000ff>long</FONT>
- Unknown1;
- <FONT color=#008080>// Mostly set to 2 or 4<BR></FONT> <FONT
- color=#0000ff>long</FONT>
- Unknown2;
- <FONT color=#008080>// Always 1?<BR></FONT> <FONT
- color=#0000ff>long</FONT> Levels;<BR> <FONT
- color=#0000ff>long</FONT> XSize;<BR> <FONT color=#0000ff>long</FONT>
- YSize;<BR> <FONT color=#0000ff>long</FONT> DataSize;<BR> <FONT
- color=#0000ff>char</FONT> *Data;<BR>}; <FONT
- color=#0000ff><BR><BR>struct </FONT>CHRFile_TextInfo<BR>{<BR> <FONT
- color=#0000ff>long</FONT> Unknown1;<BR> <FONT
- color=#0000ff>long</FONT> Unknown2;<BR> <FONT
- color=#0000ff>long</FONT> Unknown3;<FONT color=#0000ff><BR></FONT>
- <FONT color=#0000ff>long</FONT> Unknown4;<FONT
- color=#0000ff><BR></FONT> <FONT color=#0000ff>long</FONT>
- Unknown5;<FONT color=#0000ff><BR></FONT> <FONT
- color=#0000ff>long</FONT> Unknown6;<BR>};<FONT
- color=#0000ff><BR><BR>struct </FONT>CHRFile_Textures<FONT
- color=#0000ff><BR></FONT>{<BR> <FONT color=#0000ff>long</FONT>
- NumTextInfo;<BR> <FONT color=#0000ff>long</FONT> Unknown1;<BR>
- CHRFile_TextInfo *TextInfo;<BR> CHRFile_TextData
- *TextData;<BR>};<FONT color=#0000ff><BR><BR>struct
- </FONT>CHRFile_Mesh<BR>{<BR> <FONT color=#0000ff>long</FONT>
- Unknown1;<BR> <FONT color=#0000ff>char</FONT> Name[64];<BR>
- <FONT color=#0000ff>char</FONT>
- Unknown2[380];
- <FONT color=#008080>// Lots unknown data<BR></FONT>};<FONT
- color=#0000ff><BR><BR></FONT></FONT><FONT face="Courier New"><FONT
- color=#0000ff>struct</FONT> CHRFile_MeshData_Unk2 {<BR> <FONT
- color=#0000ff>unsigned</FONT> <FONT color=#0000ff>short</FONT>
- Unknown1;<BR> <FONT color=#0000ff>unsigned short</FONT>
- Unknown2;<BR><FONT color=#0000ff> unsigned long</FONT>
- Unknown3;<BR><FONT color=#0000ff> unsigned long</FONT>
- Unknown4;<BR>};</FONT></FONT>
- <P><FONT face="Courier New" size=2><FONT color=#0000ff>struct</FONT>
- CHRFile_MeshData_Vertex {<BR> <FONT
- color=#0000ff>char</FONT>
- Unknown[19];
- <FONT color=#008080>// (first </FONT></FONT><FONT face=Courier><FONT
- color=#008080>CHRFile_MeshData</FONT> </FONT><FONT face="Courier New"
- color=#008080 size=2>structure has 38 bytes per Vertex</FONT><FONT
- face="Courier New" size=2><FONT color=#008080>)<BR></FONT>};</FONT></P>
- <P><FONT size=2><FONT face="Courier New"><FONT color=#0000ff>struct</FONT>
- </FONT><FONT face=Courier>CHRFile_MeshData </FONT><FONT
- face="Courier New">{<BR> <FONT color=#0000ff>long</FONT>
- Unknown1[3];<BR><BR> <FONT color=#0000ff>long</FONT>
- NumVertices;<BR> CHR_MeshData_Vertex *Vertices;<BR> <BR>
- <FONT color=#0000ff>long</FONT> NumIndex;<BR> <FONT
- color=#0000ff>short</FONT> *Index;<BR><BR> <FONT
- color=#0000ff>long</FONT> NumUnknown2;<BR> CHR_MeshData_Unk2
- *Unknown2;<BR><BR> <FONT color=#0000ff>long</FONT> Unknown3;
- <BR> <FONT color=#0000ff>long</FONT>
- Unknown4;<BR>};<BR></FONT></FONT><FONT face=Courier size=2><FONT
- color=#0000ff><BR>struct</FONT> CHRFile<BR>{<BR> <FONT
- color=#0000ff>long</FONT>
- Unknown1;
- <FONT color=#008080>// Seems to be always 0<BR></FONT> <FONT
- color=#0000ff>long</FONT>
- TexturePointer;
- <FONT color=#008080>// Pointer to the textures<BR></FONT> <FONT
- color=#0000ff>long</FONT>
- MeshPointer;
- <FONT color=#008080>// Pointer to the beginning of the first
- CHRFile_Mesh</FONT> <FONT color=#008080>structure</FONT><BR> <FONT
- color=#0000ff>long</FONT>
- Unknown1;
- <FONT color=#008080>// Pointer to the something<BR></FONT> <FONT
- color=#0000ff>long</FONT>
- MeshDataPointer; <FONT
- color=#008080>// A pointer to first CHRFile_MeshData
- structure<BR></FONT> <FONT color=#0000ff>long</FONT>
- NumMeshes;
- <FONT color=#008080>// Number of CHRFile_Mesh you must read at the</FONT>
- <FONT color=#008080>MeshPointer offset</FONT><BR>};</FONT></P></TD></TR>
- <TR>
- <TD width="100%">
- <H3>1.2 Map files</H3>
- <P>Map files contain (part of) a level. Big levels are split in multiple
- maps. At some placed the screen goes black and a new map is loaded. This
- is done to reduce the size of textures and vertex/index buffers.</P></TD></TR>
- <TR>
- <TD width="100%"><FONT face=Courier size=2><FONT color=#008080>// First
- structure looks like some room definition, not sure however</FONT><FONT
- color=#0000ff><BR><BR>struct</FONT> MAP_Rooms<BR>{<BR> <FONT
- color=#0000ff>long</FONT> NumRooms;<BR> MAP_RoomPointer
- *Rooms;<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
- MAP_RoomPointer<BR>{<BR> <FONT color=#0000ff>long</FONT>
- Unknown1;<BR> <FONT color=#0000ff>long</FONT>
- Pointer;<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
- MAP_Room<BR>{<BR> <FONT color=#0000ff>long</FONT>
- Unknown1;<BR> <FONT color=#0000ff>long</FONT> Unknown2;<BR>
- <FONT color=#0000ff>long</FONT> Pointer1;<BR> <FONT
- color=#0000ff>long</FONT> Pointer2;<BR>};<BR><BR><FONT color=#008080>//
- Textures in Direct3D Format. Can be simply loaded to a surface, included
- mipmaps.</FONT><BR><BR><FONT color=#0000ff>struct</FONT>
- MAP_Textures<BR>{<BR> <FONT color=#0000ff>long</FONT>
- NumTextInfo;<BR> <FONT color=#0000ff>long</FONT> Unknown1;<BR>
- <FONT color=#0000ff>long</FONT> NumTextData;<BR> <FONT
- color=#0000ff>long</FONT> Unknown2;<BR> MAP_TextInfo
- *TextInfo;<BR> MAP_TextDataHeader *TextDataHeader;<BR>
- MAP_TextData *TextData;<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
- MAP_TextInfo<BR>{<BR> <FONT color=#0000ff>long</FONT>
- Unknown1;<BR> <FONT color=#0000ff>long</FONT> Unknown2;<BR>
- <FONT color=#0000ff>long</FONT> Unknown3;<BR> <FONT
- color=#0000ff>long</FONT> Unknown4;<BR> <FONT
- color=#0000ff>long</FONT> Unknown5;<BR> <FONT
- color=#0000ff>long</FONT> Unknown6;<BR>};<BR><BR><FONT
- color=#0000ff>struct</FONT> MAP_TextDataHeader<BR>{<BR> <FONT
- color=#0000ff>char</FONT> Format[4]; // 'DXT1', 'DXT3' or 0x15000000. Last
- one is uncompressed A8R8G8B8 format.<BR> <FONT
- color=#0000ff>long</FONT> Unknown1; // 2 or 4<BR> <FONT
- color=#0000ff>long</FONT> Unknown2; // Always 1<BR> <FONT
- color=#0000ff>long</FONT> Unknown3; // Always 30<BR> <FONT
- color=#0000ff>long</FONT> Levels; // Number of levels in
- this texture. 7 for 256x256 textures, 2 for 8x8 textures.<BR> <FONT
- color=#0000ff>long</FONT> XSize;<BR> <FONT color=#0000ff>long</FONT>
- YSize;<BR> <FONT color=#0000ff>long</FONT> DataSize; // Size
- of this texture.<BR> <FONT color=#0000ff>long</FONT> Unknown4;
- // Always 0?<BR> <FONT color=#0000ff>long</FONT> Unknown5; //
- Always 0?<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
- MAP_TextData<BR>{<BR> <FONT color=#0000ff>char</FONT>
- *Data;<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
- MAPFile<BR>{<BR> <FONT color=#0000ff>long</FONT>
- RoomPointer;<BR> <FONT color=#0000ff>long</FONT>
- TexturePointer;<BR> <FONT color=#0000ff>long</FONT>
- UnknownPointer1;<BR> <FONT color=#0000ff>long</FONT>
- UnknownPointer2;<BR> <FONT color=#0000ff>long</FONT>
- UnknownPointer3;<BR>};</FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
- <P align=center> </P>
- <DIV align=center>
- <CENTER>
- <TABLE height=413 cellSpacing=0 cellPadding=0 width="100%" border=0>
- <TBODY>
- <TR>
- <TD width="100%" height=104>
- <H2 align=center>2. DB Files</H2>
- <CENTER></CENTER>
- <P align=left>The data folder from aod contains 3 .db files and have all
- their own format. These files contain important data for the game. The
- actor.db file contains a lot of information about all friends and enemies
- in the game. The function of the other 2 files, weapon.db and invent.db,
- is not known yet. But the weapon.db must have something to do with the
- guns and ammo and invent seems to be about pickups.</P></TD></TR>
- <CENTER>
- <TR>
- <TD width="100%" height=62>
- <H3><BR>2.1 Actor.db</H3>
- <P>As said before, actor.db is all about the NPCs (Non Player Characters).
- It's a easy format, which can be explained with just 2
- structures:</P></TD></TR>
- <TR>
- <TD width="100%" height=226><FONT face=Courier size=2><FONT
- color=#0000ff>struct</FONT> ActorDB<BR>{<BR> <FONT
- color=#0000ff>long</FONT> NumActors;<BR> ActorDB_Item
- *Actors;<BR>};<BR><BR><FONT color=#0000ff>struct</FONT>
- ActorDB_Item<BR>{<BR> <FONT color=#0000ff>long</FONT>
- ActorID;<BR> <FONT color=#0000ff>long</FONT> HitPoints;<BR>
- <FONT color=#0000ff>long</FONT> Type;<BR> <FONT
- color=#0000ff>long</FONT> BaseID;<BR> <FONT
- color=#0000ff>long</FONT> Flags;<BR>};</FONT></TD></TR>
- <TR>
- <TD width="100%" height=21>The ActorID is an unique number for each actor.
- You cannot have 2 actors with the same id. Some actors can have shared
- animations. An enemy takes the animations from the base actor. This is set
- by the BaseID. If an enemy has it's own animations, BaseID must be set to
- it's own id. Else it points to the actor where the animations are used
- from.<BR>Different from the other TR games, the main actor data is no
- longer hardcoded. The hit points of an enemy can be set using the
- HitPoints field. It's not clear to say how much time you must shoot an
- enemy to kill based on the hit points. It depends on the type of gun you
- use and the distance to the enemy. For example, a rat far away can take
- more shots then a guard right in front of you.<BR>The Type value can be
- set to 4 values. If an character is playable, it has a type of 1. Friendly
- characters that cannot be shot have the type set to 2. Enemies which can
- be fired at have type 3. Finally there is a type 4 which seems to be used
- for animating objects.<BR>The last value, Flags, can be set to 0, 1 and 3.
- The meaning of it is still unknown, but proberly it has something to do
- with the type of
- actor.</TD></TR></TBODY></TABLE></CENTER></DIV></CENTER></CENTER></BODY></HTML>
-
-
-
-
-
- <!--
- FILE ARCHIVED ON 18:14:58 Dec 4, 2007 AND RETRIEVED FROM THE
- INTERNET ARCHIVE ON 12:44:24 Aug 1, 2014.
- JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
-
- ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
- SECTION 108(a)(3)).
- -->
|