<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.swganh.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lloydyboy</id>
		<title>SWGANH Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.swganh.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lloydyboy"/>
		<link rel="alternate" type="text/html" href="http://wiki.swganh.org/index.php/Special:Contributions/Lloydyboy"/>
		<updated>2026-06-03T23:10:57Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>http://wiki.swganh.org/index.php?title=Tangible_Object_Use_-_State_Checking&amp;diff=69518</id>
		<title>Tangible Object Use - State Checking</title>
		<link rel="alternate" type="text/html" href="http://wiki.swganh.org/index.php?title=Tangible_Object_Use_-_State_Checking&amp;diff=69518"/>
				<updated>2010-02-26T15:35:54Z</updated>
		
		<summary type="html">&lt;p&gt;Lloydyboy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
There are times when using objects in game (such a banking terminal) is inappropriate like when the player is in combat or dead.&lt;br /&gt;
&lt;br /&gt;
Currently when a player uses an object, the callback handler has to check against every possible state where we want to cancel the command such as:&lt;br /&gt;
&lt;br /&gt;
if(playerObject == NULL || !playerObject-&amp;gt;isConnected() || playerObject-&amp;gt;getSamplingState() || playerObject-&amp;gt;isIncapacitated() || playerObject-&amp;gt;isDead()|| playerObject-&amp;gt;checkState(CreatureState_Combat))&lt;br /&gt;
{&lt;br /&gt;
return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
In contrast, the combat system handles this in a different manner. The DB contains a list of combat skills such as UnarmedHit1 along with what states they may be used (eg. not whilst prone). These are loaded into the zone on startup.&lt;br /&gt;
&lt;br /&gt;
When a player uses a combat skill the combat handler/queue checks the player against these states and decides whether to call the skill handler or not.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
&lt;br /&gt;
Whilst the current method works, moving to a similar system to the combat system has advantages:&lt;br /&gt;
*We would no longer need to check for every individual use separately (which creates a lot of copy and paste code as well as quirky bugs where some objects aren't correctly checked but others are).&lt;br /&gt;
*Allows changes to be made in the DB without code alterations/knowledge.&lt;/div&gt;</summary>
		<author><name>Lloydyboy</name></author>	</entry>

	<entry>
		<id>http://wiki.swganh.org/index.php?title=Tangible_Object_Use_-_State_Checking&amp;diff=69517</id>
		<title>Tangible Object Use - State Checking</title>
		<link rel="alternate" type="text/html" href="http://wiki.swganh.org/index.php?title=Tangible_Object_Use_-_State_Checking&amp;diff=69517"/>
				<updated>2010-02-26T15:35:14Z</updated>
		
		<summary type="html">&lt;p&gt;Lloydyboy: New page: == Background ==  There are times when using objects in game such a banking terminal are inappropriate such as when in combat or dead.  Currently when a player uses an object, the callback...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
There are times when using objects in game such a banking terminal are inappropriate such as when in combat or dead.&lt;br /&gt;
&lt;br /&gt;
Currently when a player uses an object, the callback handler has to check against every possible state where we want to cancel the command such as:&lt;br /&gt;
&lt;br /&gt;
if(playerObject == NULL || !playerObject-&amp;gt;isConnected() || playerObject-&amp;gt;getSamplingState() || playerObject-&amp;gt;isIncapacitated() || playerObject-&amp;gt;isDead()|| playerObject-&amp;gt;checkState(CreatureState_Combat))&lt;br /&gt;
{&lt;br /&gt;
return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
In contrast, the combat system handles this in a different manner. The DB contains a list of combat skills such as UnarmedHit1 along with what states they may be used (eg. not whilst prone). These are loaded into the zone on startup.&lt;br /&gt;
&lt;br /&gt;
When a player uses a combat skill the combat handler/queue checks the player against these states and decides whether to call the skill handler or not.&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes ==&lt;br /&gt;
&lt;br /&gt;
Whilst the current method works, moving to a similar system to the combat system has advantages:&lt;br /&gt;
*We would no longer need to check for every individual use separately (which creates a lot of copy and paste code as well as quirky bugs where some objects aren't correctly checked but others are).&lt;br /&gt;
*Allows changes to be made in the DB without code alterations/knowledge.&lt;/div&gt;</summary>
		<author><name>Lloydyboy</name></author>	</entry>

	<entry>
		<id>http://wiki.swganh.org/index.php?title=Portal:Suggested_Server_Design_Enhancement/Todos&amp;diff=69516</id>
		<title>Portal:Suggested Server Design Enhancement/Todos</title>
		<link rel="alternate" type="text/html" href="http://wiki.swganh.org/index.php?title=Portal:Suggested_Server_Design_Enhancement/Todos&amp;diff=69516"/>
				<updated>2010-02-26T15:14:29Z</updated>
		
		<summary type="html">&lt;p&gt;Lloydyboy: New page: {{PageHeader|Suggested Server Design Enhancement/Todos|Main Page}} * '''Tangible Object Use - State Checking'''&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageHeader|Suggested Server Design Enhancement/Todos|Main Page}}&lt;br /&gt;
* '''[[Tangible Object Use - State Checking|Tangible Object Use - State Checking]]'''&lt;/div&gt;</summary>
		<author><name>Lloydyboy</name></author>	</entry>

	<entry>
		<id>http://wiki.swganh.org/index.php?title=Main_Page&amp;diff=69515</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.swganh.org/index.php?title=Main_Page&amp;diff=69515"/>
				<updated>2010-02-26T15:11:54Z</updated>
		
		<summary type="html">&lt;p&gt;Lloydyboy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border:0; margin: 0.2em 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#cf7606; font-size:200%;&amp;quot;&amp;gt;'''Welcome to'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#005288; font-size:200%;&amp;quot;&amp;gt;'''wiki.swganh.org'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&amp;quot;&amp;gt;&lt;br /&gt;
'''SWGANH Wiki''' is a repository of Star Wars Galaxies Developer information. This site is only meant to be used by SWGANH Developer team.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| style=&amp;quot;zborder-top:1px solid #aaaaaa;&amp;quot; width=&amp;quot;100% border-collapse: collapse;&amp;quot; cellpadding=0 cellspacing=0&lt;br /&gt;
|- align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| style=&amp;quot;padding: 0.2em;&amp;quot; width=&amp;quot;25%&amp;quot; | '''[[Help:Contents|Help &amp;amp; Support]]''' | '''[[Help:Page Templates|Page Templates]]''' | '''[[ANH Wiki Statistics]]'''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border:0; margin: 0;&amp;quot; width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;10&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&amp;quot;&amp;gt;'''Game Documentation'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 0; margin: 0;&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | {{Click | image=Crystal_Clear_app_display.png | link=Game Documentation Hub | width=80px | height=80px}}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
* [[Professions|SWG Professions]]&lt;br /&gt;
* [[Game Mechanics|SWG Game Mechanics]]&lt;br /&gt;
* [[PublishList|SWG Official Publish List]]&lt;br /&gt;
* [[SWGWebLinks|SWG Web Links]]&lt;br /&gt;
* [[Star Wars Galaxies Zoology]]&lt;br /&gt;
* [[Star Wars Galaxies Water Maps]]&lt;br /&gt;
* [[:Category:City|Cities]] / [[:Category:Planetary Map|Planets]]&lt;br /&gt;
* [[Exceptional Items Reference Lists]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&amp;quot;&amp;gt;'''General'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em;&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 0; margin: 0;&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | {{Click | image=Crystal_Clear_app_terminal.png | link=Sysadmin hub | width=80px | height=80px}}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
* [[ANHBuildHistory|ANH Build History]]&lt;br /&gt;
* [[SWGANH Progress Screenshots|SWGANH Screenshot Archive]]&lt;br /&gt;
* [[SWGANH Configuration settings|Configuring SWGANH]]&lt;br /&gt;
* [http://bugtracker.swganh.org ANH BugTracker]&lt;br /&gt;
* [[SWGANH ClientErrors|Client Errors]]&lt;br /&gt;
* [[SWGANH Logo Archive|SWGANH Logos]]&lt;br /&gt;
* [[SWGANH Contribution Credits|SWGANH Contribution Credits]]&lt;br /&gt;
* [[SWGANH Client Setup Guide|Client Setup Guide (QA)]]&lt;br /&gt;
* [[SWG - SOE Funnies]] | [[SWG - SOE Official Promos]]&lt;br /&gt;
* [[SWG - Player Screenshot Archive (Funnies)]]&lt;br /&gt;
* [[SOE - Game Related Pages Archive]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:0; border:1px solid #aaaaaa; margin-bottom:5px;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 105%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa; text-align: center;&amp;quot;&amp;gt;'''Developer Resources'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#ffffff; padding:0.2em 0.4em;&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: 0; margin: 0;&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | {{Click | image=Crystal_Clear_app_tutorials.png | link=Developer hub | width=80px | height=80px}}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |  &lt;br /&gt;
* [[Portal:SWGANH_Architecture|System Architecture]]&lt;br /&gt;
* [[Portal:SWGANH_Internal_Documentation|Internal Documentation]]&lt;br /&gt;
* [[Portal:SWGANH_Database_Documentation|Database Documentation]]&lt;br /&gt;
* [[Portal:SWGANH_Tools|Tools &amp;amp; Utilities]]&lt;br /&gt;
* [[SWGANH Game Workflows|SWGANH Game Workflows]]&lt;br /&gt;
* [[Portal:SWG Client Documentation|SWG Client Documentation]]&lt;br /&gt;
* [[Portal:Suggested Server Design Enhancement/Todos|Suggested Server Design Enhancement/Todos]]&lt;br /&gt;
|}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{| style=&amp;quot;border:0; margin: 0;&amp;quot; width=&amp;quot;100%&amp;quot; cellspacing=&amp;quot;10&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:0px; border:1px solid #aaaaaa; margin-bottom:15px;&amp;quot; |&amp;lt;div style=&amp;quot;font-size:105%; line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Exquisite-khelpcenter.png|right|20px|Info icon]]'''Community News'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#ffffff; padding:0.2em 0.4em 0.2em 0.4em; font-size:95%;&amp;quot;&amp;gt;&lt;br /&gt;
{{Community News}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;width: 17em; margin-bottom:5px; padding: 0; border:1px solid #aaaaaa;&amp;quot;|&amp;lt;div style=&amp;quot;font-size:105%; line-height:120%; padding: 0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Crystal 128 down.png|right|18px]] '''Packet Drive'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:0.4em; font-size: 95%;&amp;quot;&amp;gt;&lt;br /&gt;
==Current==&lt;br /&gt;
{| align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||&lt;br /&gt;
{{PacketDrive}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
{{PacketDriveHistory}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:SWGANH Introduction/en]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lloydyboy</name></author>	</entry>

	<entry>
		<id>http://wiki.swganh.org/index.php?title=SWGANH_Contribution_Credits&amp;diff=44594</id>
		<title>SWGANH Contribution Credits</title>
		<link rel="alternate" type="text/html" href="http://wiki.swganh.org/index.php?title=SWGANH_Contribution_Credits&amp;diff=44594"/>
				<updated>2008-09-01T09:56:46Z</updated>
		
		<summary type="html">&lt;p&gt;Lloydyboy: /* SWGANH Core Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageHeader|SWGANH|Contributors List}}&lt;br /&gt;
&lt;br /&gt;
=SWGANH Core Team=&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|width=&amp;quot;100px&amp;quot;|'''Name / Nick'''||width=&amp;quot;500px&amp;quot;|'''---'''||width=&amp;quot;400px&amp;quot;|'''Description'''&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||DarthVadR||bot||The infamous bot that sees it all!&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:KetuSringa|KetuSringa]]||Scripter||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:Mugly|Mugly]]||Tool Developer||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:Rouse|Rouse]]||Database||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:HTX|htx]]||Developer||Quack!&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:Jack|jack]]||Developer||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:Starko|Starko]]||Wiki Administrator||'''&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;This is SPARTA!&amp;lt;/font&amp;gt;'''&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:ready|ready]]||Information Guru||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:tmr|tmr]]||||'''=)'''&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:schmunzel|schmunzel]]||Developer||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:wyz|wyz]]||Tool Developer||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:Cieto|Cieto]]||Web Administrator||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:Jay|Jay]]||Web Administrator||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:spety|spety]]||Reverser||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:snow|snow]]||Database||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:Ramakin|Ramakin]]||Tools/Launcher||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:Lordcorm|Lordcorm]]||Core||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:meanmon13|meanmon13]]||Core/Reverser||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:Nelk|Nelk]]||Tools/Reverser||--&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||[[User:Lloydyboy|Lloydyboy]]||Tool/Core Developer||--&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=General Contributions=&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|width=&amp;quot;100px&amp;quot;|'''Name / Nick'''||width=&amp;quot;500px&amp;quot;|'''Link (if applicable)'''||width=&amp;quot;400px&amp;quot;|'''Description'''&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||acid||--||SOE packet decryption&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||Xenozephyr||--||Overall Work&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||Banky Edwards||http://truegalaxies.com/forums/member.php?u=3471||Pilot Trainer Locations&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||FrostRyan||http://truegalaxies.com/forums/member.php?u=9290||SWG Beta ISO Upload&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||Okram||--||Armorsmith Information&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||DaveG||--||Ranger Information&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||Aobo||http://www.swgmods.org/index.php?name=Your_Account&amp;amp;profile=209||Taanab Sky fix&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||FredSkinner||--||Ranger and Lair Spawn Data&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||Calvin||--||Resources: Meat, Hide &amp;amp; Bone vs. Creature Lists&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||Meanmon13||--||Character Stat Migration&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||Thrin||--||QA Client Setup Guide&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||Nogard||--||Initial Chat packet breakdown&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
||Ramsey||--||JTL Baselines&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;font color=pink&amp;gt;'''Hall of Shame'''&amp;lt;/font&amp;gt;=&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|width=&amp;quot;100px&amp;quot;|'''Name / Nick'''||width=&amp;quot;500px&amp;quot;|'''Link (if applicable'''||width=&amp;quot;400px&amp;quot;|'''Description'''&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|| Ultyma||http://www.ultymasucks.com ||For being a fag&lt;br /&gt;
|- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||[[Image:Ramsey-pasteboard.png|thumb|Ramsey - comment]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=QA Testers=&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=&amp;quot;90%&amp;quot; cellpadding=6&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkorange&amp;quot;&amp;gt;'''EuroChimaera'''&amp;lt;/font&amp;gt;&lt;br /&gt;
! width=&amp;quot;200px&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Name'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Forums'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''BugTracker'''&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Starko'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''deltus'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''derec'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''firo'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''marc'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''ioiny'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''lsky'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''gohma'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''deepsea'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''malai'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''imbaatu'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''moal'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''redavv'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''lloydyboy'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''hinch'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Agi'nor'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''DrZadokk'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''dalif'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''diezen'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''kyho'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''leadballon'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''ernie'''||X|| &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''anderson'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''taras'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''podge'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''qula'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''cieto'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''kiithwarrior'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Wirewraith'''||X||X&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|valign=top|&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkorange&amp;quot;&amp;gt;'''swgemuFR'''&amp;lt;/font&amp;gt;&lt;br /&gt;
! width=&amp;quot;200px&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Name'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Forums'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''BugTracker'''&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Azkal'''||X|| &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''ysn38'''||X|| &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''solina'''||X|| &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''terminatrixxx'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''ilidan'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''ostro'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''aicou'''||X|| &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Varen'''||X|| &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Valkan'''||X|| &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''antitrust'''||X|| &lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|valign=top|&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkorange&amp;quot;&amp;gt;'''TrueGalaxies'''&amp;lt;/font&amp;gt;&lt;br /&gt;
! width=&amp;quot;200px&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Name'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Forums'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''BugTracker'''&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Avoli'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Netrex'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''whoiga'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''wenulab'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''ghozer'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''haloisi'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''schizophrenix'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''clone'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''mysteryman'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''dalakG'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''galatic'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''jimbob'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''lowerbane'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''stale2000'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''quidnixis'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''shade'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''aislinn'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''vonmazda'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''wisehe'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''kawiz'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''nomanor'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''austy'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''thunder'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''valkyra'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''taswavo'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''FEDS-91'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Darxun'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''pife'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''venc'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''BankyEdwards'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Sousuke'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Jaidden'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Praxi'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Omap'''|| || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+---------------+&lt;br /&gt;
| username      |&lt;br /&gt;
+---------------+&lt;br /&gt;
| avoli         |&lt;br /&gt;
| netrex        |&lt;br /&gt;
| whoiga        |&lt;br /&gt;
| wenulab       |&lt;br /&gt;
| ghozer        |&lt;br /&gt;
| haloisi       |&lt;br /&gt;
| schizophrenix |&lt;br /&gt;
| clone         |&lt;br /&gt;
| mysteryman    |&lt;br /&gt;
| dalakg        |&lt;br /&gt;
| galactic      |&lt;br /&gt;
| jimbob        |&lt;br /&gt;
| lowerbane     |&lt;br /&gt;
| stale2000     |&lt;br /&gt;
| quidnixis     |&lt;br /&gt;
| shade         |&lt;br /&gt;
| aislinn       |&lt;br /&gt;
| vonmazda      |&lt;br /&gt;
| wisehe        |&lt;br /&gt;
| kawiz         |&lt;br /&gt;
| nomanor       |&lt;br /&gt;
| austy         |&lt;br /&gt;
| thunder       |&lt;br /&gt;
| valkyra       |&lt;br /&gt;
| taswavo       |&lt;br /&gt;
| Darxun        |&lt;br /&gt;
| pife          |&lt;br /&gt;
| venc          |&lt;br /&gt;
| BankyEdwards  |&lt;br /&gt;
| ArmonKuree    |&lt;br /&gt;
| EustaceOShea  |&lt;br /&gt;
| evetsceldon   |&lt;br /&gt;
| hal           |&lt;br /&gt;
| jaidden       |&lt;br /&gt;
| mag           |&lt;br /&gt;
| magellan      |&lt;br /&gt;
| mirasa        |&lt;br /&gt;
| rosaria       |&lt;br /&gt;
| vladlen       |&lt;br /&gt;
| zekie         |&lt;br /&gt;
| bester        |&lt;br /&gt;
| praxi         |&lt;br /&gt;
| omap          |&lt;br /&gt;
+---------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|valign=top|&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkorange&amp;quot;&amp;gt;'''ShadowFire Exiled'''&amp;lt;/font&amp;gt;&lt;br /&gt;
! width=&amp;quot;200px&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Name'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Forums'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''BugTracker'''&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Keys'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Tjar'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Santaro'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Faaip'''||X||X&lt;br /&gt;
|- &lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
||&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=&amp;quot;90%&amp;quot; cellpadding=6&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkorange&amp;quot;&amp;gt;'''Europe-Nexus'''&amp;lt;/font&amp;gt;&lt;br /&gt;
! width=&amp;quot;200px&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Name'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Forums'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''BugTracker'''&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''agestee'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''apophiz'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''atermis'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''badnick'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''cijj'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''crazycarlton'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''joekiffer'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''karyfars'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''nec'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''nismo'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Rickee'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Troka'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''eXot'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Sheelane Endeeva'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Zorkhea'''||X||X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|valign=top|&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkorange&amp;quot;&amp;gt;'''Galaxies Reborn'''&amp;lt;/font&amp;gt;&lt;br /&gt;
! width=&amp;quot;200px&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Name'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Forums'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''BugTracker'''&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Kortel'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''BigO'''|| || &lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Khargash'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''ChixDigit'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''senlusan'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''Sonako'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''countnitsuj'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''vader974'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''skylighter'''||X||X&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||'''riverins'''||X||X&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|valign=top|&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkorange&amp;quot;&amp;gt;'''Community Name'''&amp;lt;/font&amp;gt;&lt;br /&gt;
! width=&amp;quot;200px&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Name'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Forums'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''BugTracker'''&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||''' '''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|valign=top|&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkorange&amp;quot;&amp;gt;'''Community Name'''&amp;lt;/font&amp;gt;&lt;br /&gt;
! width=&amp;quot;200px&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot; style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Name'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''Forums'''||style=&amp;quot;background-color:#ffffcc;&amp;quot;|'''BugTracker'''&lt;br /&gt;
|-  align=&amp;quot;center&amp;quot;&lt;br /&gt;
||''' '''&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lloydyboy</name></author>	</entry>

	<entry>
		<id>http://wiki.swganh.org/index.php?title=User:Lloydyboy&amp;diff=44593</id>
		<title>User:Lloydyboy</title>
		<link rel="alternate" type="text/html" href="http://wiki.swganh.org/index.php?title=User:Lloydyboy&amp;diff=44593"/>
				<updated>2008-09-01T09:54:00Z</updated>
		
		<summary type="html">&lt;p&gt;Lloydyboy: New page: {{PageHeader|User Page|Lloydyboy}} ==Info== {| callpadding&amp;quot;5&amp;quot; cellspacing&amp;quot;2&amp;quot; |- |Name: || Lloyd Pickering |- |IGN: || Lloydyboy |- |Server: || Chimaera |- |Location: || UK |- |Occupation: ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageHeader|User Page|Lloydyboy}}&lt;br /&gt;
==Info==&lt;br /&gt;
{| callpadding&amp;quot;5&amp;quot; cellspacing&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Name: || Lloyd Pickering&lt;br /&gt;
|-&lt;br /&gt;
|IGN: || Lloydyboy&lt;br /&gt;
|-&lt;br /&gt;
|Server: || Chimaera&lt;br /&gt;
|-&lt;br /&gt;
|Location: || UK&lt;br /&gt;
|-&lt;br /&gt;
|Occupation: || IT Manager / Software Engineer (&amp;amp; PT MBA Student)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Tasks==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
* Add any other info/requests/etc into the [[User talk:Lloydyboy|talk]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category: User Page]]&lt;br /&gt;
[[Category: Non-Emu Page]]&lt;/div&gt;</summary>
		<author><name>Lloydyboy</name></author>	</entry>

	<entry>
		<id>http://wiki.swganh.org/index.php?title=Binary_%26_Hex&amp;diff=44447</id>
		<title>Binary &amp; Hex</title>
		<link rel="alternate" type="text/html" href="http://wiki.swganh.org/index.php?title=Binary_%26_Hex&amp;diff=44447"/>
				<updated>2008-08-28T15:18:43Z</updated>
		
		<summary type="html">&lt;p&gt;Lloydyboy: /* The data types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
This guide will help you to understand both packet and file analysis. This understanding is an essential tool to be a successful analyzer.&lt;br /&gt;
&lt;br /&gt;
=The Binary Language=&lt;br /&gt;
A computer is made up of millions of transistors. Each one of them can either be '''on''' or '''off''' depending if the electricity flows through or not. These status are represented by 2 numbers: 0 (off) and 1 (on). This is called the binary language and it's the only thing your computer understands. This language is said to be '''base 2''' because it has only 2 possible digits: 0 and 1. Here a little example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 1 0...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In binary language a digit is called a '''bit'''. Binary language being a bit too hard to read for humans, we decided to group them in packets of 8 bits and to call this packet a '''byte'''. The 8 bits of a byte a used and read the same way we do in decimal system. Here are the different values a byte can have:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 byte = 8 bits  -&amp;gt; corresponding decimal value&lt;br /&gt;
0 0 0 0 0 0 0 0               0&lt;br /&gt;
0 0 0 0 0 0 0 1               1&lt;br /&gt;
0 0 0 0 0 0 1 0               2&lt;br /&gt;
0 0 0 0 0 0 1 1               3&lt;br /&gt;
0 0 0 0 0 1 0 0               4&lt;br /&gt;
...&lt;br /&gt;
1 1 1 1 1 1 1 1             255&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To calculate an integer number in decimal (the base 10 we commonly use), we add 1 bit to each as a representation of the power of 2. The following powers are used as 2^N, where N is the place holder.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
_  _  _  _  _  _  _  _&lt;br /&gt;
7  6  5  4  3  2  1  0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Example: 0 0 0 0 1 1 0 1 = 2^3 + 2^2 + 2^0 = 13&lt;br /&gt;
&lt;br /&gt;
To more easily add it up, you can precalculate each 2^N value:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 _  _  _  _  _ _ _ _&lt;br /&gt;
128 64 32 16 8 4 2 1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And just add the numbers when the bit is 1, so..&lt;br /&gt;
&lt;br /&gt;
Example: 0 1 0 1 0 1 1 1 = 64 + 16 + 4 + 2 + 1 = 87&lt;br /&gt;
&lt;br /&gt;
=The Hexadecimal Language=&lt;br /&gt;
The hexadecimal language is a base 16 system. It means each digit has 16 possible value: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F (0 to 15 in decimal). Because 2^4=16 it makes binary reading far more easier. An hexadecimal digit consist of 4 consecutive bits. It means you can write any byte value using 2 hexadecimal digits as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 original bits  -&amp;gt; 4 bits groups -&amp;gt; hexadecimal&lt;br /&gt;
0 1 0 1 0 1 1 1      0101 0111         0x57&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
As you see we added a &amp;quot;0x&amp;quot; prefix to our hexadecimal number. This is the standard used to let readers know that the following digits are hexadecimal digits. 57 is decimal, 0x57 is hexadecimal (87 in decimal).&lt;br /&gt;
&lt;br /&gt;
Another example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 1 0 0 1 0 1 1  = 128 + 64 + 8 + 2 + 1 = 203&lt;br /&gt;
&lt;br /&gt;
1100 1011 binary&lt;br /&gt;
 12   11  decimal&lt;br /&gt;
  C    B  hexadecimal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
So 203 = 0xCB in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
'''TIP''': &amp;lt;font color=orange&amp;gt;''You can use windows calculator to do these convesions quickly. Just change its mode to scientific.''&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For simplicity of this article, signed (positive and negative) are not covered, as well as floating point numbers. More info here:&lt;br /&gt;
*{{en}} [http://en.wikipedia.org/wiki/Two's_complement Signed numbers : Two's complement]&lt;br /&gt;
*{{en}} [http://en.wikipedia.org/wiki/IEEE_754 Floats : IEEE Floating Point]&lt;br /&gt;
&lt;br /&gt;
=The data types=&lt;br /&gt;
The programmation languages provides various pre defined data types. This array shows what type can be expected from input data:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!bytes amount&lt;br /&gt;
!type&lt;br /&gt;
!sign&lt;br /&gt;
!values&lt;br /&gt;
!C++ corresponding types&lt;br /&gt;
!C# corresponding types&lt;br /&gt;
!SWGANH Alias&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|integer&lt;br /&gt;
|&lt;br /&gt;
|0=false, else=true&lt;br /&gt;
|bool&lt;br /&gt;
|bool&lt;br /&gt;
|{{bool}}&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|integer&lt;br /&gt;
|signed&lt;br /&gt;
| -128 to +127 (ascii characters)&lt;br /&gt;
|char&lt;br /&gt;
|sbyte (NB:Not CLS Compliant)&lt;br /&gt;
|{{sbyte}}&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|integer&lt;br /&gt;
|unsigned&lt;br /&gt;
|0 to +255 (ansi characters)&lt;br /&gt;
|unsigned char&lt;br /&gt;
|byte&lt;br /&gt;
|{{byte}}&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|integer&lt;br /&gt;
|signed&lt;br /&gt;
| -32768 to +32767&lt;br /&gt;
|short&lt;br /&gt;
|short&lt;br /&gt;
|{{short}}&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|integer&lt;br /&gt;
|unsigned&lt;br /&gt;
|0 to +65535&lt;br /&gt;
|unsigned short&lt;br /&gt;
|ushort&lt;br /&gt;
|{{ushort}}&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|char&lt;br /&gt;
|&lt;br /&gt;
|unicode character&lt;br /&gt;
|wchar_t&lt;br /&gt;
|char&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|integer&lt;br /&gt;
|signed&lt;br /&gt;
| -2147483648 to +2147483647&lt;br /&gt;
|int, long&lt;br /&gt;
|int&lt;br /&gt;
|{{int}}&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|integer&lt;br /&gt;
|unsigned&lt;br /&gt;
|0 to +4294967295&lt;br /&gt;
|unsigned int, unsigned long, void*&lt;br /&gt;
|uint&lt;br /&gt;
|{{uint}}&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|real&lt;br /&gt;
|signed&lt;br /&gt;
| -3.4*10^-38 to +3.4*10^38 (7 digits)&lt;br /&gt;
|float&lt;br /&gt;
|float&lt;br /&gt;
|{{float}}&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|integer&lt;br /&gt;
|signed&lt;br /&gt;
| -9223372036854775808 to +9223372036854775807&lt;br /&gt;
|long long&lt;br /&gt;
|long&lt;br /&gt;
|{{long}}&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|integer&lt;br /&gt;
|unsigned&lt;br /&gt;
|0 to +18446744073709551615&lt;br /&gt;
|unsigned long long&lt;br /&gt;
|ulong&lt;br /&gt;
|{{ulong}}&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|real&lt;br /&gt;
|signed&lt;br /&gt;
| -1.7*10^-308 to +1.7*10^308 (15 digits)&lt;br /&gt;
|double&lt;br /&gt;
|double&lt;br /&gt;
|{{double}}&lt;br /&gt;
|-&lt;br /&gt;
|n&lt;br /&gt;
|char&lt;br /&gt;
|&lt;br /&gt;
|ansi/ascii characters&lt;br /&gt;
|string, char[]&lt;br /&gt;
|&lt;br /&gt;
|{{a_string}}&lt;br /&gt;
|-&lt;br /&gt;
|2n&lt;br /&gt;
|char&lt;br /&gt;
|&lt;br /&gt;
|unicode characters&lt;br /&gt;
|wstring, wchar_t[]&lt;br /&gt;
|string&lt;br /&gt;
|{{u_string}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
'''NOTE''': &amp;lt;font color=red&amp;gt;''In C++, the long types have a size that varies upon operating system and processor. It has the size of all pointers (void*, int*, ...). If an environment has a 32bits RAM indexation (4GB max) then the longs will be 4 bytes. If the environment has a 64 bits RAM indexation, the longs will be 8 bytes.&amp;lt;/font&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
=Big Endian vs Little Endian (byte orders)=&lt;br /&gt;
The little story: The term &amp;quot;endian&amp;quot; can be traced to Jonathan Swift's novel &amp;quot;Gulliver's Travels.&amp;quot; In one of Gulliver's adventures, he encounters an island whose inhabitants bitterly argue over the correct way to open soft-boiled eggs - the little end or the big end. Little endians and big endians are each convinced that their method is the only correct method for opening an egg.&lt;br /&gt;
==Big Endian==&lt;br /&gt;
The BIG ENDIAN byte order is the natural read order: highest weigth digits on the left, and lowest weigth digits on the right.&lt;br /&gt;
&lt;br /&gt;
Example: let's write 16909060 in hexadecimal (0x?? = 1byte = 8bits):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x01 0x02 0x03 0x04 (bytes sequence in memory)&lt;br /&gt;
0x01020304          (reconstitued associated hexadecimal value)&lt;br /&gt;
16909060            (corresponding decimal value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: also known as NETWORK BYTE ORDER, it's the standard used for IP communications as defined by the OSI model link layer. Though it does not mean all protocols respect the standard! It's used by: Sun Solaris (SPARC), HP-UX, (Motorola 68000), IBM System/370, ...&lt;br /&gt;
&lt;br /&gt;
==Little Endian==&lt;br /&gt;
The LITTLE ENDIAN byte order is BIG ENDIAN opposite: lowest weigth digits on the left, and highest weigth digits on the right.&lt;br /&gt;
&lt;br /&gt;
Example: let's write again 16909060 in hexadecimal (0x?? = 1byte = 8bits):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x04 0x03 0x02 0x01 (bytes sequence in memory)&lt;br /&gt;
0x01020304          (reconstitued associated hexadecimal value)&lt;br /&gt;
16909060            (corresponding decimal value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Why does LITTLE ENDIAN exists?&lt;br /&gt;
&lt;br /&gt;
Let's see an example, we have an INT value of 8. Let's store it in LITTLE ENDIAN and look at each byte memory address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   0    1    2    3 (memory address)&lt;br /&gt;
0x08 0x00 0x00 0x00 (bytes sequence in memory)&lt;br /&gt;
0x00000008          (reconstitued associated hexadecimal value)&lt;br /&gt;
8                   (corresponding decimal value)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Imagine now we want to convert this int variable into a short or a byte. Because it's stored reversly we don't need to change the starting address of our variable (it means conversions are faster in LITTLE ENDIAN):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   0    1    2    3 (memory address)&lt;br /&gt;
0x08 0x00 0x00 0x00 (int)&lt;br /&gt;
0x08 0x00           (short)&lt;br /&gt;
0x08                (byte)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The little endian was used in the first place as you can guess for compatibility reasons when we went from 8bits, to 16bits, to 32bits, to 64bits systems...&lt;br /&gt;
&lt;br /&gt;
Note: also known as HOST BYTE ORDER. It's used by: SCO Unix, DEC Unix (Digital), Microsoft Windows, ...&lt;br /&gt;
&lt;br /&gt;
==SWG and bytes orders==&lt;br /&gt;
*Most (if not all) files of SWG use the LITTLE ENDIAN format to store values.&lt;br /&gt;
*Network transmissions also use the LITTLE ENDIAN for most of it.&lt;br /&gt;
&lt;br /&gt;
It will be specified which order is used in the packet breakdown documentations. &lt;br /&gt;
&lt;br /&gt;
This is just a summary of the common information that is assumed to be understood throughout the rest of our documentation. &lt;br /&gt;
If you have any specific questions, ask someone, or use you're best friend Google (or his friend Wikipedia).&lt;/div&gt;</summary>
		<author><name>Lloydyboy</name></author>	</entry>

	<entry>
		<id>http://wiki.swganh.org/index.php?title=TRE:TRE_Breakdown&amp;diff=44446</id>
		<title>TRE:TRE Breakdown</title>
		<link rel="alternate" type="text/html" href="http://wiki.swganh.org/index.php?title=TRE:TRE_Breakdown&amp;diff=44446"/>
				<updated>2008-08-28T15:12:12Z</updated>
		
		<summary type="html">&lt;p&gt;Lloydyboy: /* IFF - '''Interchange Format File''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border:0; margin: 0.2em 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#cf7606; font-size:200%;&amp;quot;&amp;gt;'''Welcome to'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#005288; font-size:200%;&amp;quot;&amp;gt;'''SWGANH Tre Sub-Files Documentation'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| style=&amp;quot;zborder-top:1px solid #aaaaaa;&amp;quot; width=&amp;quot;100% border-collapse: collapse;&amp;quot; cellpadding=0 cellspacing=0&lt;br /&gt;
|- align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| style=&amp;quot;padding: 0.2em;&amp;quot; width=&amp;quot;25%&amp;quot; | '''[[TreFiles History]]''' '''[[TreFile Template]]'''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==ANS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|ANS ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==APT - '''Appearance File'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|APT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==ASH==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|ASH ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CDF - '''Client Data File'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CDF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CEF - '''Client Effect file'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CEF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CFG - '''Configuration file'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CFG ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CMP - '''Component File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CMP ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==[[TRE_DDSFileType|DDS - '''DirectDraw Surface File (Texture)''']]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|DDS ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DirectDraw Surface File (texture)&lt;br /&gt;
&lt;br /&gt;
Download plugin for photoshop here: &lt;br /&gt;
http://download.nvidia.com/developer/NVTextureSuite/Photoshop_Plugins_7.83.0629.1500.exe&lt;br /&gt;
&lt;br /&gt;
MSDN article on file format here: &lt;br /&gt;
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/dx9_graphics_reference_dds_file.asp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==EFT - '''Effect'''==&lt;br /&gt;
[[Image:Eft.jpg]]&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|EFT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 - The first DATA record contains 2-bytes.  The first byte is an unsigned char that represents&lt;br /&gt;
the number of IMPL Forms in the file.  The 2nd byte is currently unknown.&lt;br /&gt;
&lt;br /&gt;
 - The PVSH form contains a record of 0000 which contains the full path of an HLSL vertex shader&lt;br /&gt;
program.&lt;br /&gt;
&lt;br /&gt;
 - The PPSH form contain a 0001 form which contains 1 DATA record and a variable number of PTXM&lt;br /&gt;
forms.  The DATA record is made up of 1 unsigned char (which indicates the number of PTXM records)&lt;br /&gt;
followed by the full path of an HLSL pixel shader program.&lt;br /&gt;
&lt;br /&gt;
 - Each PTXM form contains one 0002 record.  The first byte of which is an unsigned char followed&lt;br /&gt;
by a 4 char texture tag name.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==FFE - '''Force Feedback File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|FFE ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==FLR==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|FLR ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==IFF - '''Interchange Format File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|IFF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.szonye.com/bradd/iff.html - Overview of File Format&lt;br /&gt;
http://www.ibm.com/developerworks/power/library/pa-spec16/ - alternative Overview&lt;br /&gt;
&lt;br /&gt;
IFF Files are made up of Chunk(s). Each Chunk follows the format:&lt;br /&gt;
&lt;br /&gt;
Type (4 x Char)&lt;br /&gt;
Size (32 Bit Int Big-Endian)&lt;br /&gt;
Data (Length determined by Size)&lt;br /&gt;
&lt;br /&gt;
(NOTE: Data lengths which are odd numbers are padded by a '0' which is not included in the Size (for 2 byte alignment) &lt;br /&gt;
however, SOE *seems* to have ignored this requirement)&lt;br /&gt;
&lt;br /&gt;
Chunks can contain other (child) Chunks, or even complete .IFF Files.&lt;br /&gt;
&lt;br /&gt;
IFF Files must start with types of either: 'FORM' (0x464F524D), 'LIST' (0x4C495354) or 'CAT ' (0x43415420).&lt;br /&gt;
&lt;br /&gt;
Strictly speaking, IFF Files must have a single Root Chunk in the file to keep to the Standard,&lt;br /&gt;
however it is expected that Top Level Chunk may potentially co-exist in SOEs IFFs.&lt;br /&gt;
&lt;br /&gt;
It is currently believed that all SOE IFFs start with FORM (LIST and CAT not required).&lt;br /&gt;
&lt;br /&gt;
FORM Types are basically storage (Record) for other proprietary Chunks.&lt;br /&gt;
&lt;br /&gt;
Every SOE FORM has an additional 32bit Sub Type taking up offsets 8-11 ie:&lt;br /&gt;
Type (4 x Char)&lt;br /&gt;
Size (32 Bit Int Big-Endian)&lt;br /&gt;
Sub-Type (4x Char)&lt;br /&gt;
Data (Length determined by Size)&lt;br /&gt;
&lt;br /&gt;
This means, for SOE FORMs, the data starts at offset 12, and is Size-4 long.&lt;br /&gt;
&lt;br /&gt;
~ Known SOE Proprietary Chunks ~&lt;br /&gt;
CRCT - List of 32bit SOE CRCs, no delimeter&lt;br /&gt;
STNG - List of Strings, delimited by 0x00&lt;br /&gt;
DATA - Some sort of Value. In Lists it appears to be an item count&lt;br /&gt;
STRT - Hash Table IDs, 32bit, no delimeter&lt;br /&gt;
EMAP - List of 3 No. Strings, delimited by 0x00. Appear to be Event Related. &amp;quot;EventSource\0EventDestination\0ClientEffect&amp;quot;&lt;br /&gt;
0000 - List of Strings (generally Filenames), delimited by 0x00&lt;br /&gt;
&lt;br /&gt;
~ Example ~&lt;br /&gt;
An Example SOE .IFF (Misc\planet_crc_string_table.iff)&lt;br /&gt;
FORM (Length 524, Subtype CSTB [0x43535442])&lt;br /&gt;
*FORM (Length 512, Subtype 0000 [0x30303030])&lt;br /&gt;
**DATA (Length, 4)&lt;br /&gt;
**CRCT (Length 100)&lt;br /&gt;
**STRT (Length 100)&lt;br /&gt;
**STNG (Length 272)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==ILF - '''Interior Layout File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|ILF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==INC - '''Include File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|INC ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LAT==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LAT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
possible relation to MAYA Lattices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LAY - '''Layout File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LAY ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LMG==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LMG ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FORM]   &lt;br /&gt;
[uint32]           //formsize&lt;br /&gt;
[MLOD]&lt;br /&gt;
&lt;br /&gt;
[FORM]&lt;br /&gt;
[uint32]           //formsize&lt;br /&gt;
[0000]&lt;br /&gt;
&lt;br /&gt;
[INFO]&lt;br /&gt;
[uint32]           //infosize(2)&lt;br /&gt;
[uint16]           //name elements count&lt;br /&gt;
&lt;br /&gt;
[NAME]&lt;br /&gt;
[uint32]           //namesize&lt;br /&gt;
[namestring]       //0 terminated &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LOD - '''level of detail'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LOD ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LSB==&lt;br /&gt;
&lt;br /&gt;
LSB? File&lt;br /&gt;
&lt;br /&gt;
==LTN==&lt;br /&gt;
&lt;br /&gt;
LTN? File Something to do with lighting&lt;br /&gt;
&lt;br /&gt;
==MGN==&lt;br /&gt;
&lt;br /&gt;
MGN? File 3d model information&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|MGN ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rollout SWG_roll &amp;quot;Model importer&amp;quot; (&lt;br /&gt;
fn readInvLong f = (&lt;br /&gt;
  t1 = readbyte f #unsigned&lt;br /&gt;
  t2 = readbyte f #unsigned&lt;br /&gt;
  t3 = readbyte f #unsigned&lt;br /&gt;
  t4 = readbyte f #unsigned&lt;br /&gt;
  return (t4+t3*0x100+t2*0x10000+t1*0x1000000)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readFORM f = (&lt;br /&gt;
  ofsForm = readInvLong f&lt;br /&gt;
  hdr = readlong f&lt;br /&gt;
  return hdr&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPoint3 f sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT3Ary = #()&lt;br /&gt;
  testbyte = readlong f&lt;br /&gt;
  fseek f -4 #seek_cur&lt;br /&gt;
  if (testbyte&amp;lt;65536)AND(testbyte&amp;gt;=0) then (&lt;br /&gt;
   for i = 1 to (datasize/16) do (&lt;br /&gt;
    idx = 1 + (readlong f)&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    PT3Ary[idx] = [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
   for i = 1 to PT3Ary.count do&lt;br /&gt;
    if PT3Ary[i] == undefined then PT3Ary[i] = [0,0,0]&lt;br /&gt;
  ) else (&lt;br /&gt;
   for i = 1 to (datasize/12) do (&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    append PT3Ary [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
  )&lt;br /&gt;
  return PT3Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readTCSD f = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT2Ary = #()&lt;br /&gt;
  for i = 1 to (datasize/8) do (&lt;br /&gt;
   vx = readfloat f&lt;br /&gt;
   vy = 1- (readfloat f)&lt;br /&gt;
   append PT2Ary [vx,vy,0]   &lt;br /&gt;
  )&lt;br /&gt;
  return PT2Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  for i = 1 to numIndex do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readNIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  for i = 1 to (datasize/4) do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readOITL f = (&lt;br /&gt;
  IdxAry = #()&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   append IdxAry (1+(readshort f))&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(IdxAry,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readITL f = (&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(undefined,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn buildmesh VTary FCary NLary UVary PIDXary NIDXary = (&lt;br /&gt;
  for i = 1 to PIDXary.count do PIDXary[i] = VTary[(PIDXary[i])]&lt;br /&gt;
  for i = 1 to NIDXary.count do NIDXary[i] = NLary[(NIDXary[i])]&lt;br /&gt;
  if FCary[1] == undefined then  msh = mesh vertices:PIDXary faces:FCary[2]&lt;br /&gt;
  else msh = mesh vertices:PIDXary faces:FCary[2] materialIDs:FCary[1]&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary[2].count do setTVFace msh j FCary[2][j]&lt;br /&gt;
  for j = 1 to NIDXary.count do setNormal msh j NIDXary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
  ----------------------------------------------------------------------------&lt;br /&gt;
fn readDATA f numData sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  if datasize &amp;lt; 8 then (&lt;br /&gt;
   fseek f datasize #seek_cur&lt;br /&gt;
   return undefined&lt;br /&gt;
  )&lt;br /&gt;
  VTary = #()&lt;br /&gt;
  NLary = #()&lt;br /&gt;
  UVary = #()&lt;br /&gt;
  sizeElement = datasize/numData&lt;br /&gt;
  --format &amp;quot;V:% @[%]\n&amp;quot; sizeElement (ftell f)&lt;br /&gt;
  for i = 1 to numData do (&lt;br /&gt;
   vx = (readfloat f)*sc;    vy = (readfloat f)*sc;    vz = (readfloat f)*sc&lt;br /&gt;
   nx = readfloat f;    ny = readfloat f;    nz = readfloat f&lt;br /&gt;
   --&lt;br /&gt;
   byteRead = 32&lt;br /&gt;
   case sizeElement of (&lt;br /&gt;
    36: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    52: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    56: ( fseek f 16 #seek_cur ; byteRead = 48 )&lt;br /&gt;
    default: byteRead = 32&lt;br /&gt;
   )&lt;br /&gt;
   vu = readfloat f;    vv = 1-(readfloat f)&lt;br /&gt;
   fseek f (sizeElement-byteRead) #seek_cur&lt;br /&gt;
   --&lt;br /&gt;
   append VTary [vx,-vz,vy]&lt;br /&gt;
   append NLary [nx,-nz,ny]&lt;br /&gt;
   append UVary [vu,vv,0]&lt;br /&gt;
  )&lt;br /&gt;
  return #(VTary,NLary,UVary)&lt;br /&gt;
)&lt;br /&gt;
fn readINDX f = (&lt;br /&gt;
  FCary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  sizeElement = datasize / numIndex&lt;br /&gt;
  for i = 1 to (numIndex/3) do (&lt;br /&gt;
   if sizeElement == 2 then (&lt;br /&gt;
    f1 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f2 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f3 = 1 + (readshort f #unsigned)&lt;br /&gt;
   ) else if sizeElement == 4 then (&lt;br /&gt;
    f1 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f2 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f3 = 1 + (readlong f #unsigned)&lt;br /&gt;
   ) else messagebox &amp;quot;error in face index&amp;quot;&lt;br /&gt;
   append FCary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return FCary&lt;br /&gt;
)&lt;br /&gt;
fn buildmesh2 VTary FCary NLary UVary = (&lt;br /&gt;
  msh = mesh vertices:VTary faces:FCary&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary.count do setTVFace msh j FCary[j]&lt;br /&gt;
  for j = 1 to NLary.count do setNormal msh j NLary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
--GUI--&lt;br /&gt;
spinner fscale &amp;quot;Scale : &amp;quot; fieldwidth:60 range:[0.001, 1000, 1]&lt;br /&gt;
button impMGN &amp;quot;Import   MGN / MSH&amp;quot; width:150 Height:25 align:#center&lt;br /&gt;
label lbl1 &amp;quot;&amp;quot;&lt;br /&gt;
label lbl2 &amp;quot;by Fatduck&amp;quot; align:#right&lt;br /&gt;
&lt;br /&gt;
on impMGN pressed do (&lt;br /&gt;
  fname = getOpenFileName caption:&amp;quot;Select Star Wars Galaxies Model file&amp;quot; types:&amp;quot;MGN File (*.mgn)|*.mgn|MSH File (*.msh)|*.msh|All Files (*.*)|*.*|&amp;quot;&lt;br /&gt;
  if fname != undefined then (&lt;br /&gt;
   f = fopen fname &amp;quot;rb&amp;quot;&lt;br /&gt;
   fseek f 0 #seek_end&lt;br /&gt;
   ofsEOF = ftell f&lt;br /&gt;
   fseek f 0 #seek_set&lt;br /&gt;
   VTary = #()&lt;br /&gt;
   UVary = #()&lt;br /&gt;
   NLary = #()&lt;br /&gt;
   FCary = #()&lt;br /&gt;
   PIDXary = #()&lt;br /&gt;
   NIDXary = #()&lt;br /&gt;
   meshFlag = undefined&lt;br /&gt;
   infoFlag = undefined&lt;br /&gt;
   mshVert = 0&lt;br /&gt;
   do (&lt;br /&gt;
    header = readlong f&lt;br /&gt;
    case header of (&lt;br /&gt;
     0x58444E49:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readINDX f&lt;br /&gt;
        msh = buildmesh2 VTary FCary NLary UVary&lt;br /&gt;
       )&lt;br /&gt;
     0x41544144:&lt;br /&gt;
       (&lt;br /&gt;
        rslt = readDATA f mshVert fscale.value&lt;br /&gt;
        if rslt != undefined then (&lt;br /&gt;
         VTary = rslt[1]&lt;br /&gt;
         NLary = rslt[2]&lt;br /&gt;
         UVary = rslt[3]&lt;br /&gt;
        )&lt;br /&gt;
        infoFlag = false&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F46:&lt;br /&gt;
       (&lt;br /&gt;
        flg = readFORM f&lt;br /&gt;
        if flg == 0x474D4B53 then meshFlag = true --SKMG&lt;br /&gt;
        else if flg == 0x20544C42 then meshFlag = false --BLT&lt;br /&gt;
        if flg == 0x41585456 then infoFlag = true --VTXA&lt;br /&gt;
       )   &lt;br /&gt;
     0x4F464E49:&lt;br /&gt;
       (&lt;br /&gt;
        if infoFlag == true then (&lt;br /&gt;
         fseek f 8 #seek_cur&lt;br /&gt;
         mshVert = readlong f&lt;br /&gt;
        ) else fseek f (readInvLong f) #seek_cur&lt;br /&gt;
       ) &lt;br /&gt;
     0x4E534F50:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then VTary = readPoint3 f fscale.value&lt;br /&gt;
        else readPoint3 f fscale.value&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F4E:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then NLary = readPoint3 f 1&lt;br /&gt;
        else readPoint3 f 1&lt;br /&gt;
       )&lt;br /&gt;
     0x58444950: PIDXary = readPIDX f&lt;br /&gt;
     0x5844494E: NIDXary = readNIDX f&lt;br /&gt;
     0x44534354: UVary = readTCSD f&lt;br /&gt;
     0x4C54494F:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readOITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     0x204C5449:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     default:&lt;br /&gt;
       (&lt;br /&gt;
        datasize = readInvLong f&lt;br /&gt;
        fseek f datasize #seek_cur&lt;br /&gt;
       )&lt;br /&gt;
    )--end case&lt;br /&gt;
   ) while (ftell f) != ofsEOF&lt;br /&gt;
   fclose f&lt;br /&gt;
  )--end if fname&lt;br /&gt;
)--end on impMGN&lt;br /&gt;
&lt;br /&gt;
)--end rollout SWG_roll&lt;br /&gt;
&lt;br /&gt;
if Fatduck_SWG != undefined then closeRolloutFloater Fatduck_SWG&lt;br /&gt;
Fatduck_SWG = newRolloutFloater &amp;quot;Star Wars Galaxies&amp;quot; 200 175 10 70&lt;br /&gt;
addRollout SWG_roll Fatduck_SWG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==MKR==&lt;br /&gt;
&lt;br /&gt;
Marker File&lt;br /&gt;
&lt;br /&gt;
==MP3==&lt;br /&gt;
&lt;br /&gt;
MP3 Audio File&lt;br /&gt;
&lt;br /&gt;
==MSH - '''mesh'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|MSH ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rollout SWG_roll &amp;quot;Model importer&amp;quot; (&lt;br /&gt;
fn readInvLong f = (&lt;br /&gt;
  t1 = readbyte f #unsigned&lt;br /&gt;
  t2 = readbyte f #unsigned&lt;br /&gt;
  t3 = readbyte f #unsigned&lt;br /&gt;
  t4 = readbyte f #unsigned&lt;br /&gt;
  return (t4+t3*0x100+t2*0x10000+t1*0x1000000)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readFORM f = (&lt;br /&gt;
  ofsForm = readInvLong f&lt;br /&gt;
  hdr = readlong f&lt;br /&gt;
  return hdr&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPoint3 f sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT3Ary = #()&lt;br /&gt;
  testbyte = readlong f&lt;br /&gt;
  fseek f -4 #seek_cur&lt;br /&gt;
  if (testbyte&amp;lt;65536)AND(testbyte&amp;gt;=0) then (&lt;br /&gt;
   for i = 1 to (datasize/16) do (&lt;br /&gt;
    idx = 1 + (readlong f)&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    PT3Ary[idx] = [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
   for i = 1 to PT3Ary.count do&lt;br /&gt;
    if PT3Ary[i] == undefined then PT3Ary[i] = [0,0,0]&lt;br /&gt;
  ) else (&lt;br /&gt;
   for i = 1 to (datasize/12) do (&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    append PT3Ary [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
  )&lt;br /&gt;
  return PT3Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readTCSD f = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT2Ary = #()&lt;br /&gt;
  for i = 1 to (datasize/8) do (&lt;br /&gt;
   vx = readfloat f&lt;br /&gt;
   vy = 1- (readfloat f)&lt;br /&gt;
   append PT2Ary [vx,vy,0]   &lt;br /&gt;
  )&lt;br /&gt;
  return PT2Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  for i = 1 to numIndex do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readNIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  for i = 1 to (datasize/4) do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readOITL f = (&lt;br /&gt;
  IdxAry = #()&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   append IdxAry (1+(readshort f))&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(IdxAry,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readITL f = (&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(undefined,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn buildmesh VTary FCary NLary UVary PIDXary NIDXary = (&lt;br /&gt;
  for i = 1 to PIDXary.count do PIDXary[i] = VTary[(PIDXary[i])]&lt;br /&gt;
  for i = 1 to NIDXary.count do NIDXary[i] = NLary[(NIDXary[i])]&lt;br /&gt;
  if FCary[1] == undefined then  msh = mesh vertices:PIDXary faces:FCary[2]&lt;br /&gt;
  else msh = mesh vertices:PIDXary faces:FCary[2] materialIDs:FCary[1]&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary[2].count do setTVFace msh j FCary[2][j]&lt;br /&gt;
  for j = 1 to NIDXary.count do setNormal msh j NIDXary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
  ----------------------------------------------------------------------------&lt;br /&gt;
fn readDATA f numData sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  if datasize &amp;lt; 8 then (&lt;br /&gt;
   fseek f datasize #seek_cur&lt;br /&gt;
   return undefined&lt;br /&gt;
  )&lt;br /&gt;
  VTary = #()&lt;br /&gt;
  NLary = #()&lt;br /&gt;
  UVary = #()&lt;br /&gt;
  sizeElement = datasize/numData&lt;br /&gt;
  --format &amp;quot;V:% @[%]\n&amp;quot; sizeElement (ftell f)&lt;br /&gt;
  for i = 1 to numData do (&lt;br /&gt;
   vx = (readfloat f)*sc;    vy = (readfloat f)*sc;    vz = (readfloat f)*sc&lt;br /&gt;
   nx = readfloat f;    ny = readfloat f;    nz = readfloat f&lt;br /&gt;
   --&lt;br /&gt;
   byteRead = 32&lt;br /&gt;
   case sizeElement of (&lt;br /&gt;
    36: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    52: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    56: ( fseek f 16 #seek_cur ; byteRead = 48 )&lt;br /&gt;
    default: byteRead = 32&lt;br /&gt;
   )&lt;br /&gt;
   vu = readfloat f;    vv = 1-(readfloat f)&lt;br /&gt;
   fseek f (sizeElement-byteRead) #seek_cur&lt;br /&gt;
   --&lt;br /&gt;
   append VTary [vx,-vz,vy]&lt;br /&gt;
   append NLary [nx,-nz,ny]&lt;br /&gt;
   append UVary [vu,vv,0]&lt;br /&gt;
  )&lt;br /&gt;
  return #(VTary,NLary,UVary)&lt;br /&gt;
)&lt;br /&gt;
fn readINDX f = (&lt;br /&gt;
  FCary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  sizeElement = datasize / numIndex&lt;br /&gt;
  for i = 1 to (numIndex/3) do (&lt;br /&gt;
   if sizeElement == 2 then (&lt;br /&gt;
    f1 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f2 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f3 = 1 + (readshort f #unsigned)&lt;br /&gt;
   ) else if sizeElement == 4 then (&lt;br /&gt;
    f1 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f2 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f3 = 1 + (readlong f #unsigned)&lt;br /&gt;
   ) else messagebox &amp;quot;error in face index&amp;quot;&lt;br /&gt;
   append FCary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return FCary&lt;br /&gt;
)&lt;br /&gt;
fn buildmesh2 VTary FCary NLary UVary = (&lt;br /&gt;
  msh = mesh vertices:VTary faces:FCary&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary.count do setTVFace msh j FCary[j]&lt;br /&gt;
  for j = 1 to NLary.count do setNormal msh j NLary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
--GUI--&lt;br /&gt;
spinner fscale &amp;quot;Scale : &amp;quot; fieldwidth:60 range:[0.001, 1000, 1]&lt;br /&gt;
button impMGN &amp;quot;Import   MGN / MSH&amp;quot; width:150 Height:25 align:#center&lt;br /&gt;
label lbl1 &amp;quot;&amp;quot;&lt;br /&gt;
label lbl2 &amp;quot;by Fatduck&amp;quot; align:#right&lt;br /&gt;
&lt;br /&gt;
on impMGN pressed do (&lt;br /&gt;
  fname = getOpenFileName caption:&amp;quot;Select Star Wars Galaxies Model file&amp;quot; types:&amp;quot;MGN File (*.mgn)|*.mgn|MSH File (*.msh)|*.msh|All Files (*.*)|*.*|&amp;quot;&lt;br /&gt;
  if fname != undefined then (&lt;br /&gt;
   f = fopen fname &amp;quot;rb&amp;quot;&lt;br /&gt;
   fseek f 0 #seek_end&lt;br /&gt;
   ofsEOF = ftell f&lt;br /&gt;
   fseek f 0 #seek_set&lt;br /&gt;
   VTary = #()&lt;br /&gt;
   UVary = #()&lt;br /&gt;
   NLary = #()&lt;br /&gt;
   FCary = #()&lt;br /&gt;
   PIDXary = #()&lt;br /&gt;
   NIDXary = #()&lt;br /&gt;
   meshFlag = undefined&lt;br /&gt;
   infoFlag = undefined&lt;br /&gt;
   mshVert = 0&lt;br /&gt;
   do (&lt;br /&gt;
    header = readlong f&lt;br /&gt;
    case header of (&lt;br /&gt;
     0x58444E49:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readINDX f&lt;br /&gt;
        msh = buildmesh2 VTary FCary NLary UVary&lt;br /&gt;
       )&lt;br /&gt;
     0x41544144:&lt;br /&gt;
       (&lt;br /&gt;
        rslt = readDATA f mshVert fscale.value&lt;br /&gt;
        if rslt != undefined then (&lt;br /&gt;
         VTary = rslt[1]&lt;br /&gt;
         NLary = rslt[2]&lt;br /&gt;
         UVary = rslt[3]&lt;br /&gt;
        )&lt;br /&gt;
        infoFlag = false&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F46:&lt;br /&gt;
       (&lt;br /&gt;
        flg = readFORM f&lt;br /&gt;
        if flg == 0x474D4B53 then meshFlag = true --SKMG&lt;br /&gt;
        else if flg == 0x20544C42 then meshFlag = false --BLT&lt;br /&gt;
        if flg == 0x41585456 then infoFlag = true --VTXA&lt;br /&gt;
       )   &lt;br /&gt;
     0x4F464E49:&lt;br /&gt;
       (&lt;br /&gt;
        if infoFlag == true then (&lt;br /&gt;
         fseek f 8 #seek_cur&lt;br /&gt;
         mshVert = readlong f&lt;br /&gt;
        ) else fseek f (readInvLong f) #seek_cur&lt;br /&gt;
       ) &lt;br /&gt;
     0x4E534F50:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then VTary = readPoint3 f fscale.value&lt;br /&gt;
        else readPoint3 f fscale.value&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F4E:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then NLary = readPoint3 f 1&lt;br /&gt;
        else readPoint3 f 1&lt;br /&gt;
       )&lt;br /&gt;
     0x58444950: PIDXary = readPIDX f&lt;br /&gt;
     0x5844494E: NIDXary = readNIDX f&lt;br /&gt;
     0x44534354: UVary = readTCSD f&lt;br /&gt;
     0x4C54494F:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readOITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     0x204C5449:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     default:&lt;br /&gt;
       (&lt;br /&gt;
        datasize = readInvLong f&lt;br /&gt;
        fseek f datasize #seek_cur&lt;br /&gt;
       )&lt;br /&gt;
    )--end case&lt;br /&gt;
   ) while (ftell f) != ofsEOF&lt;br /&gt;
   fclose f&lt;br /&gt;
  )--end if fname&lt;br /&gt;
)--end on impMGN&lt;br /&gt;
&lt;br /&gt;
)--end rollout SWG_roll&lt;br /&gt;
&lt;br /&gt;
if Fatduck_SWG != undefined then closeRolloutFloater Fatduck_SWG&lt;br /&gt;
Fatduck_SWG = newRolloutFloater &amp;quot;Star Wars Galaxies&amp;quot; 200 175 10 70&lt;br /&gt;
addRollout SWG_roll Fatduck_SWG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==PAL - '''palette'''==&lt;br /&gt;
&lt;br /&gt;
Palette File&lt;br /&gt;
&lt;br /&gt;
PAL Editor can be downloaded here -&amp;gt; http://mods.mandalorians.de/system/infusions/pro_download_panel/download.php?did=16&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|PAL ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
52 49 46 46  // RIFF&lt;br /&gt;
&lt;br /&gt;
10 01 00 00  // size (int 32)&lt;br /&gt;
&lt;br /&gt;
50 40 4c 20  // Pal&lt;br /&gt;
&lt;br /&gt;
64 61 74 61  // Data&lt;br /&gt;
&lt;br /&gt;
40 00 00 00  // size (int 32)&lt;br /&gt;
&lt;br /&gt;
// Here starts the color pallate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
00 03  // uint16 version&lt;br /&gt;
&lt;br /&gt;
40 00  // uint16 pallette colors count(64)&lt;br /&gt;
&lt;br /&gt;
// This is were the swg pallet editor start's showing were the colors are&lt;br /&gt;
&lt;br /&gt;
cc cc cc 00   // uint32 (RGBA)&lt;br /&gt;
&lt;br /&gt;
b7 b7 b7 00 //&lt;br /&gt;
&lt;br /&gt;
a3 a3 a3 00  //&lt;br /&gt;
&lt;br /&gt;
8e 8e 8e 00  //&lt;br /&gt;
&lt;br /&gt;
92 23 23 00  //&lt;br /&gt;
&lt;br /&gt;
84 1f 1f 00  //&lt;br /&gt;
&lt;br /&gt;
77 1b 1b 00 //&lt;br /&gt;
&lt;br /&gt;
69 17 17 00 //&lt;br /&gt;
&lt;br /&gt;
65 61 82 00 //&lt;br /&gt;
&lt;br /&gt;
54 50 85 00 //&lt;br /&gt;
&lt;br /&gt;
44 3e 89 00 //&lt;br /&gt;
&lt;br /&gt;
33 2d 8c 00  //&lt;br /&gt;
&lt;br /&gt;
d4 d6 47 00 //&lt;br /&gt;
&lt;br /&gt;
b8 ba 36 00  //&lt;br /&gt;
&lt;br /&gt;
9d 9f 26 00  //&lt;br /&gt;
&lt;br /&gt;
81 83 15 00  //&lt;br /&gt;
&lt;br /&gt;
58 a5 64 00  //&lt;br /&gt;
&lt;br /&gt;
45 91 51 00  //&lt;br /&gt;
&lt;br /&gt;
31 7c 3d 00  //&lt;br /&gt;
&lt;br /&gt;
df b4 3e 00 //&lt;br /&gt;
&lt;br /&gt;
b9 94 2f 00  //&lt;br /&gt;
&lt;br /&gt;
92 73 1f 00 //&lt;br /&gt;
&lt;br /&gt;
6c 53 10 00  //&lt;br /&gt;
&lt;br /&gt;
71 a5 a5 00  //&lt;br /&gt;
&lt;br /&gt;
5b 95 95 00  //&lt;br /&gt;
&lt;br /&gt;
44 86 86 00  //&lt;br /&gt;
&lt;br /&gt;
2e 76 76 00  //&lt;br /&gt;
&lt;br /&gt;
75 61 76 00  //&lt;br /&gt;
&lt;br /&gt;
72 4d 78 00 //&lt;br /&gt;
&lt;br /&gt;
6e 38 7b 00  //&lt;br /&gt;
&lt;br /&gt;
6b 24 7d 00 //&lt;br /&gt;
&lt;br /&gt;
7d b0 c0 00 //&lt;br /&gt;
&lt;br /&gt;
69 95 a3 00 //&lt;br /&gt;
&lt;br /&gt;
54 7b 87 00 //&lt;br /&gt;
&lt;br /&gt;
40 60 6a 00 //&lt;br /&gt;
&lt;br /&gt;
cd 7a 37 00  //&lt;br /&gt;
&lt;br /&gt;
a9 64 2c 00 //&lt;br /&gt;
&lt;br /&gt;
84 4d 21 00  //&lt;br /&gt;
&lt;br /&gt;
60 37 16 00  //&lt;br /&gt;
&lt;br /&gt;
d4 83 83 00 //&lt;br /&gt;
&lt;br /&gt;
a5 5e 5e 00  //&lt;br /&gt;
&lt;br /&gt;
87 42 42 00  //&lt;br /&gt;
&lt;br /&gt;
5f 2d 2d 00  //&lt;br /&gt;
&lt;br /&gt;
93 73 1b 00 //&lt;br /&gt;
&lt;br /&gt;
7c 60 18 00  //&lt;br /&gt;
&lt;br /&gt;
5a 45 0e 00  //&lt;br /&gt;
&lt;br /&gt;
dd d8 c0 00 //&lt;br /&gt;
&lt;br /&gt;
bd b9 a4 00  //&lt;br /&gt;
&lt;br /&gt;
9e 9a 88 00  //&lt;br /&gt;
&lt;br /&gt;
7e 7b 6c 00  //&lt;br /&gt;
&lt;br /&gt;
91 6d 6d 00  //&lt;br /&gt;
&lt;br /&gt;
76 59 59 00  //&lt;br /&gt;
&lt;br /&gt;
5c 44 44 00 //&lt;br /&gt;
&lt;br /&gt;
41 30 30 00  //&lt;br /&gt;
&lt;br /&gt;
75 61 76 00  //&lt;br /&gt;
&lt;br /&gt;
6b 4d 6c 00  //&lt;br /&gt;
&lt;br /&gt;
60 39 62 00  //&lt;br /&gt;
&lt;br /&gt;
56 25 58 00 //&lt;br /&gt;
&lt;br /&gt;
a6 c1 71 00  //&lt;br /&gt;
&lt;br /&gt;
8e a6 61 00  //&lt;br /&gt;
&lt;br /&gt;
77 8a 50 00  //&lt;br /&gt;
&lt;br /&gt;
5f 6f 40 00  //&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==PLN==&lt;br /&gt;
&lt;br /&gt;
Planet File&lt;br /&gt;
&lt;br /&gt;
==POB==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46 4f 52 4d             // FORM&lt;br /&gt;
00 00 02 d3             // 723 Form Count&lt;br /&gt;
43 45 4c 4c 46 4f 52 4d // CELLFORM&lt;br /&gt;
00 00 02 c7             // 711 count to end of form&lt;br /&gt;
30 30 30 35 44 41 54 41 // 0005DATA&lt;br /&gt;
00 00 00 a9 &lt;br /&gt;
04 00 00 00 &lt;br /&gt;
00 &lt;br /&gt;
6d 61 69 6e 68 61 6e 67 61 72 // mainhangar&lt;br /&gt;
00&lt;br /&gt;
61 70 70 65 61 72 61 6e 63 65 2f 6d 65 73 68 2f  // appearance/mesh/&lt;br /&gt;
74 68 6d 5f 73 70 63 5f 73 74 61 72 5f 64 65 73  // thm_spc_star_des&lt;br /&gt;
74 72 6f 79 65 72 5f 73 30 31 5f 72 31 5f 6d 61  // troyer_s01_r1_ma&lt;br /&gt;
69 6e 68 61 6e 67 61 72 5f 6d 65 73 68 5f 72 31  // inhangar_mesh_r1&lt;br /&gt;
2e 6d 73 68                                      // .msh&lt;br /&gt;
00 01 &lt;br /&gt;
61 70 70 65 61 72 61 6e 63 65                    // appearance&lt;br /&gt;
2f 63 6f 6c 6c 69 73 69 6f 6e 2f 74 68 6d 5f 73  // /collision/thm_s&lt;br /&gt;
70 63 5f 73 74 61 72 5f 64 65 73 74 72 6f 79 65  // pc_star_destroye&lt;br /&gt;
72 5f 73 30 31 5f 72 31 5f 6d 61 69 6e 68 61 6e  // r_s01_r1_mainhan&lt;br /&gt;
67 61 72 5f 63 6f 6c 6c 69 73 69 6f 6e 5f 66 6c  // gar_collision_fl&lt;br /&gt;
6f 6f 72 30 2e 66 6c 72                          // oor0.flr&lt;br /&gt;
00 &lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 04 &lt;br /&gt;
4e 55 4c 4c 46 4f 52 4d    // NULLFORM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 02 00 00 &lt;br /&gt;
00 01 0c 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
46 4f 52 4d // FROM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 03 00 00 &lt;br /&gt;
00 01 0a 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 04 00 00 &lt;br /&gt;
00 01 09 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 05 00 00 &lt;br /&gt;
00 01 02 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
4c 47 48 54               // LGHT&lt;br /&gt;
00 00 00 be  // 190&lt;br /&gt;
02 00 00 00 &lt;br /&gt;
01 00 00 00 &lt;br /&gt;
00 &lt;br /&gt;
01 45 b3 3f   // 1.40   R Lighting Color Like sun light but only shows on toon&lt;br /&gt;
0a d7 b3 3f   // 1.40   B Lighting Color&lt;br /&gt;
fe cf a5 3f   // 1.30   G Lighting Color&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
01 45 b3 3f   // 1.40   R Lighting Color&lt;br /&gt;
0a d7 b3 3f   // 1.40   B Lighting Color&lt;br /&gt;
fe cf a5 3f   // 1.30   G Lighting Color&lt;br /&gt;
00 00 80 3f   // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 80 &lt;br /&gt;
00 00 00 80 &lt;br /&gt;
00 f6 f3 be  // -0.48&lt;br /&gt;
11 12 61 3f  //  0.88&lt;br /&gt;
78 a0 51 43  //  209.63&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
11 12 61 bf  //  0.88&lt;br /&gt;
00 f6 f3 be  // -0.48&lt;br /&gt;
67 08 a8 c2  // -84.02&lt;br /&gt;
00 00 80 3f  //  1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
01 00 00 00 &lt;br /&gt;
00 &lt;br /&gt;
d5 3e 97 3f  // 1.18   R Lighting Color Like sun light but only shows on toon&lt;br /&gt;
9e fb ad 3f  // 1.36   B Lighting Color&lt;br /&gt;
0a d7 b3 3f  // 1.40   G Lighting Color&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
d5 3e 97 3f  // 1.18   R Lighting Color&lt;br /&gt;
9e fb ad 3f  // 1.36   B Lighting Color&lt;br /&gt;
0a d7 b3 3f  // 1.40   G Lighting Color&lt;br /&gt;
00 00 80 3f  // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 80 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
c2 19 f4 3e  // 0.48&lt;br /&gt;
60 08 61 3f  // 0.88&lt;br /&gt;
78 a0 51 43  // 209.63&lt;br /&gt;
00 00 00 00&lt;br /&gt;
60 08 61 bf  // -0.88&lt;br /&gt;
c2 19 f4 3e  //  0.48&lt;br /&gt;
67 43 a3 c2  // -81.63&lt;br /&gt;
00 00 80 3f  // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PRT==&lt;br /&gt;
&lt;br /&gt;
Particle File&lt;br /&gt;
&lt;br /&gt;
==PSH==&lt;br /&gt;
&lt;br /&gt;
Pixel Shader? File&lt;br /&gt;
&lt;br /&gt;
==PST==&lt;br /&gt;
&lt;br /&gt;
Playback File&lt;br /&gt;
&lt;br /&gt;
==[[TRE_QSTFileType|QST - '''QueST files''']]==&lt;br /&gt;
QueST files are XML files describing journal quests. [[TRE_QSTFileType|Let's examine them here.]]&lt;br /&gt;
&lt;br /&gt;
==SAT==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SAT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'WSNP' FORM (ws file)&lt;br /&gt;
&lt;br /&gt;
- FORM&lt;br /&gt;
- NODS&lt;br /&gt;
- size&lt;br /&gt;
- offset to stringtable&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 E4     //formsize&lt;br /&gt;
&lt;br /&gt;
53 4D 41 54     //SMAT&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 D8     //formsize &lt;br /&gt;
 &lt;br /&gt;
30 30 30 30     //0000&lt;br /&gt;
&lt;br /&gt;
44 41 54 41     //DATA&lt;br /&gt;
&lt;br /&gt;
00 00 00 34     //datasize&lt;br /&gt;
&lt;br /&gt;
01 A7 15 00     //id&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //parentid&lt;br /&gt;
&lt;br /&gt;
70 00 00 00     //strtable index&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //ox&lt;br /&gt;
&lt;br /&gt;
D4 15 1E BE     //oY&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //oz&lt;br /&gt;
&lt;br /&gt;
51 EE 7C 3F     //ow&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //scale??&lt;br /&gt;
&lt;br /&gt;
38 CA A0 45     //x&lt;br /&gt;
&lt;br /&gt;
00 00 AF 43     //y&lt;br /&gt;
&lt;br /&gt;
EE DE B2 C4     //z&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
00 00 00 44     //type?&lt;br /&gt;
&lt;br /&gt;
7B D6 12 E7     //?? &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==SFK==&lt;br /&gt;
&lt;br /&gt;
SFK? File&lt;br /&gt;
&lt;br /&gt;
==SFP==&lt;br /&gt;
&lt;br /&gt;
This file contains the info on building Footprints&lt;br /&gt;
the below breakdown is from shared_player_house_tatooine_small_style_01.sfp a &lt;br /&gt;
Small Tatooine style 1 house.  Still needs further breakdown!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 48 &lt;br /&gt;
46 4f 4f 54 46 4f 52 4d // FOOTFORM&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
30 30 30 30 &lt;br /&gt;
49 4e 46 4f // INFO&lt;br /&gt;
00 00 00 18&lt;br /&gt;
03 00 00 00 &lt;br /&gt;
04 00 00 00 &lt;br /&gt;
01 00 00 00 &lt;br /&gt;
01 00 00 00&lt;br /&gt;
00 00 00 41 &lt;br /&gt;
00 00 00 41 &lt;br /&gt;
50 52 4e 54 // PRNT&lt;br /&gt;
00 00 00 10 &lt;br /&gt;
48 48 48 00 &lt;br /&gt;
46 46 46 00 &lt;br /&gt;
46 46 46 00 &lt;br /&gt;
46 46 46 00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SHT - '''shader'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SHT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==SKT==&lt;br /&gt;
&lt;br /&gt;
Skeleton File&lt;br /&gt;
&lt;br /&gt;
==SND==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SND ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
46 4f 52 4d              // FORM (Element)&lt;br /&gt;
&lt;br /&gt;
00 00 00 a7              // Length Of Data that Follows (Count starts after this byte) (a7 = 167)&lt;br /&gt;
&lt;br /&gt;
53 44 32 44              // SD2D (Element)&lt;br /&gt;
&lt;br /&gt;
30 30 30 33              // 0003 (Version ?)&lt;br /&gt;
&lt;br /&gt;
00 00 00 9b              // string length&lt;br /&gt;
&lt;br /&gt;
73 61 6d 70&lt;br /&gt;
6c 65 2f 61&lt;br /&gt;
6d 62 5f 63&lt;br /&gt;
6c 6f 6e 69&lt;br /&gt;
6e 67 5f 66&lt;br /&gt;
61 63 69 6c&lt;br /&gt;
69 74 79 5f&lt;br /&gt;
69 6e 74 5f&lt;br /&gt;
6c 70 2e 77&lt;br /&gt;
61 76 00 00              // sample/amb_cloning_facility_int_lp.wav&lt;br /&gt;
&lt;br /&gt;
00 00 00 00              // ?&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 &lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
00 00 &lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192) (Again?)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
FF FF FF FF&lt;br /&gt;
FF FF FF FF              // ?&lt;br /&gt;
&lt;br /&gt;
00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00&lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192) (Again?)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
00 00&lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192) (Again?)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 01&lt;br /&gt;
00 00 00 01&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 80 3F 00&lt;br /&gt;
00 80 3F 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 02&lt;br /&gt;
00 00 00 CD&lt;br /&gt;
CC CC 3D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==SPR==&lt;br /&gt;
&lt;br /&gt;
Sprite File&lt;br /&gt;
&lt;br /&gt;
==SSA==&lt;br /&gt;
&lt;br /&gt;
SSA? File&lt;br /&gt;
&lt;br /&gt;
==[[TRE_STFFileType|STF - '''Strings Table File (Language)''']]==&lt;br /&gt;
{{Box_TREformats|STF ''format''|&lt;br /&gt;
It contains all the game's strings. During network communications the strings are identificated with: filename without extension + code + ansi string id.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Header:&lt;br /&gt;
[int]      // STF file type header id (sequence: 0xCD 0xAB 0x00 0x00, value: 0x0000ABCD = 43981)&lt;br /&gt;
[byte]     // useless? flag (might be a boolean, seen so far: 0x01 and 0x00)&lt;br /&gt;
[int]      // next free index in file to add an item, always &amp;gt; items count (useless for us)&lt;br /&gt;
[int]      // items count&lt;br /&gt;
&lt;br /&gt;
Then items list, for each:&lt;br /&gt;
[int]      // item index in the file (eg: 1, 2, 9, 3, 7, ...) &lt;br /&gt;
[int]      // code (gesture?)&lt;br /&gt;
[int]      // unicode digits count of the sentence (eg: 11)&lt;br /&gt;
[u_string] // 2 bytes per char (eg: &amp;quot;hello world&amp;quot; is 11 digits long, 22 bytes total)&lt;br /&gt;
&lt;br /&gt;
Then item's string ids, for each:&lt;br /&gt;
[int]      // item index in the file matching one in previous list (eg: 1, 2, 9, 3, 7, ...)&lt;br /&gt;
[int]      // ascii digits count of the string id (eg: 12)&lt;br /&gt;
[a_string] // 1 byte per char (eg: &amp;quot;basic_answer&amp;quot; is 12 digits long, 12 bytes total)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}Understood at 80%.&lt;br /&gt;
&lt;br /&gt;
==SWH==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SWH''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==TGA - '''Targa Texture'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TGA ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Terrain files Are divided in 2 main sections. The terrain generator and the maps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[TRN (FileFormat)|TRN - '''Terrain File''']]==&lt;br /&gt;
[[Image:Trn layers.jpg]]&lt;br /&gt;
{{Box_TREformats|TRN ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==TRT - '''Texture Renderer File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TRT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==TRT - '''Texture Renderer File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TRT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==TXT - '''Text File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TXT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==UI - '''User Interface File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|UI ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==VSH - '''Vertex Shader Script'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|VSH ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Shader City - Possible App to open the Vertex Shader Scripts)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==WAV - '''WAV Audio File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|WAV ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==WS - '''world structures'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|WS ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
'WSNP' FORM (ws file)&lt;br /&gt;
&lt;br /&gt;
- FORM&lt;br /&gt;
- NODS&lt;br /&gt;
- size&lt;br /&gt;
- offset to stringtable&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 E4     //formsize&lt;br /&gt;
&lt;br /&gt;
4E 4F 44 45     //NODE&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 D8     //formsize &lt;br /&gt;
 &lt;br /&gt;
30 30 30 30     //0000&lt;br /&gt;
&lt;br /&gt;
44 41 54 41     //DATA&lt;br /&gt;
&lt;br /&gt;
00 00 00 34     //datasize&lt;br /&gt;
&lt;br /&gt;
01 A7 15 00     //id&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //parentid&lt;br /&gt;
&lt;br /&gt;
70 00 00 00     //strtable index&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //ox&lt;br /&gt;
&lt;br /&gt;
D4 15 1E BE     //oY&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //oz&lt;br /&gt;
&lt;br /&gt;
51 EE 7C 3F     //ow&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //scale??&lt;br /&gt;
&lt;br /&gt;
38 CA A0 45     //x&lt;br /&gt;
&lt;br /&gt;
00 00 AF 43     //y&lt;br /&gt;
&lt;br /&gt;
EE DE B2 C4     //z&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
00 00 00 44     //type?&lt;br /&gt;
&lt;br /&gt;
7B D6 12 E7     //?? &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
World Structures&lt;br /&gt;
&lt;br /&gt;
There is one .ws file per planet (none for space that I have found yet although it would seem applicable), containing a list of items found outdoors on each planets.  This includes buildings, terminals, streetlights, fog/special effects, ruins, and so forth.  Trees/plants/rocks are not included unless they are somehow unique or special.&lt;/div&gt;</summary>
		<author><name>Lloydyboy</name></author>	</entry>

	<entry>
		<id>http://wiki.swganh.org/index.php?title=TRE:TRE_Breakdown&amp;diff=44442</id>
		<title>TRE:TRE Breakdown</title>
		<link rel="alternate" type="text/html" href="http://wiki.swganh.org/index.php?title=TRE:TRE_Breakdown&amp;diff=44442"/>
				<updated>2008-08-28T14:59:51Z</updated>
		
		<summary type="html">&lt;p&gt;Lloydyboy: /* IFF - '''Interchange Format File''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border:0; margin: 0.2em 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#cf7606; font-size:200%;&amp;quot;&amp;gt;'''Welcome to'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#005288; font-size:200%;&amp;quot;&amp;gt;'''SWGANH Tre Sub-Files Documentation'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| style=&amp;quot;zborder-top:1px solid #aaaaaa;&amp;quot; width=&amp;quot;100% border-collapse: collapse;&amp;quot; cellpadding=0 cellspacing=0&lt;br /&gt;
|- align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| style=&amp;quot;padding: 0.2em;&amp;quot; width=&amp;quot;25%&amp;quot; | '''[[TreFiles History]]''' '''[[TreFile Template]]'''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==ANS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|ANS ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==APT - '''Appearance File'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|APT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==ASH==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|ASH ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CDF - '''Client Data File'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CDF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CEF - '''Client Effect file'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CEF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CFG - '''Configuration file'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CFG ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CMP - '''Component File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CMP ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==[[TRE_DDSFileType|DDS - '''DirectDraw Surface File (Texture)''']]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|DDS ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DirectDraw Surface File (texture)&lt;br /&gt;
&lt;br /&gt;
Download plugin for photoshop here: &lt;br /&gt;
http://download.nvidia.com/developer/NVTextureSuite/Photoshop_Plugins_7.83.0629.1500.exe&lt;br /&gt;
&lt;br /&gt;
MSDN article on file format here: &lt;br /&gt;
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/dx9_graphics_reference_dds_file.asp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==EFT - '''Effect'''==&lt;br /&gt;
[[Image:Eft.jpg]]&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|EFT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 - The first DATA record contains 2-bytes.  The first byte is an unsigned char that represents&lt;br /&gt;
the number of IMPL Forms in the file.  The 2nd byte is currently unknown.&lt;br /&gt;
&lt;br /&gt;
 - The PVSH form contains a record of 0000 which contains the full path of an HLSL vertex shader&lt;br /&gt;
program.&lt;br /&gt;
&lt;br /&gt;
 - The PPSH form contain a 0001 form which contains 1 DATA record and a variable number of PTXM&lt;br /&gt;
forms.  The DATA record is made up of 1 unsigned char (which indicates the number of PTXM records)&lt;br /&gt;
followed by the full path of an HLSL pixel shader program.&lt;br /&gt;
&lt;br /&gt;
 - Each PTXM form contains one 0002 record.  The first byte of which is an unsigned char followed&lt;br /&gt;
by a 4 char texture tag name.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==FFE - '''Force Feedback File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|FFE ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==FLR==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|FLR ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==IFF - '''Interchange Format File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|IFF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.szonye.com/bradd/iff.html - Overview of File Format&lt;br /&gt;
http://www.ibm.com/developerworks/power/library/pa-spec16/ - alternative Overview&lt;br /&gt;
&lt;br /&gt;
IFF Files are made up of Chunk(s). Each Chunk follows the format:&lt;br /&gt;
&lt;br /&gt;
Type (4 x Char)&lt;br /&gt;
Size (32 Bit Int Big-Endian)&lt;br /&gt;
Data (Length determined by Size)&lt;br /&gt;
&lt;br /&gt;
(NOTE: Data lengths which are odd numbers are padded by a '0' which is not included in the Size (for 2 byte alignment) however, SOE *seems* to have ignored this requirement)&lt;br /&gt;
&lt;br /&gt;
Chunks can contain other (child) Chunks, or even complete .IFF Files.&lt;br /&gt;
&lt;br /&gt;
IFF Files must start with types of either: 'FORM' (0x464F524D), 'LIST' (0x4C495354) or 'CAT ' (0x43415420).&lt;br /&gt;
&lt;br /&gt;
Strictly speaking, IFF Files must have a single Root Chunk in the file to keep to the Standard,&lt;br /&gt;
however it is expected that Top Level Chunk may potentially co-exist in SOEs IFFs.&lt;br /&gt;
&lt;br /&gt;
It is currently believed that all SOE IFFs start with FORM (LIST and CAT not required).&lt;br /&gt;
&lt;br /&gt;
FORM Types are basically storage (Record) for other proprietary Chunks.&lt;br /&gt;
&lt;br /&gt;
Every SOE FORM has an additional 32bit Sub Type taking up offsets 8-11 ie:&lt;br /&gt;
Type (4 x Char)&lt;br /&gt;
Size (32 Bit Int Big-Endian)&lt;br /&gt;
Sub-Type (4x Char)&lt;br /&gt;
Data (Length determined by Size)&lt;br /&gt;
&lt;br /&gt;
This means, for SOE FORMs, the data starts at offset 12, and is Size-4 long.&lt;br /&gt;
&lt;br /&gt;
~ Known SOE Proprietary Chunks ~&lt;br /&gt;
CRCT - List of 32bit SOE CRCs, no delimeter&lt;br /&gt;
STNG - List of Strings, delimited by 0x00&lt;br /&gt;
DATA - Some sort of Value. In Lists it appears to be an item count&lt;br /&gt;
STRT - Hash Table IDs, 32bit, no delimeter&lt;br /&gt;
EMAP - List of 3 No. Strings, delimited by 0x00. Appear to be Event Related. &amp;quot;EventSource\0EventDestination\0ClientEffect&amp;quot;&lt;br /&gt;
0000 - List of Strings (generally Filenames), delimited by 0x00&lt;br /&gt;
&lt;br /&gt;
~ Example ~&lt;br /&gt;
An Example SOE .IFF (Misc\planet_crc_string_table.iff)&lt;br /&gt;
FORM (Length 524, Subtype CSTB [0x43535442])&lt;br /&gt;
*FORM (Length 512, Subtype 0000 [0x30303030])&lt;br /&gt;
**DATA (Length, 4)&lt;br /&gt;
**CRCT (Length 100)&lt;br /&gt;
**STRT (Length 100)&lt;br /&gt;
**STNG (Length 272)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==ILF - '''Interior Layout File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|ILF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==INC - '''Include File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|INC ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LAT==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LAT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
possible relation to MAYA Lattices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LAY - '''Layout File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LAY ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LMG==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LMG ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FORM]   &lt;br /&gt;
[uint32]           //formsize&lt;br /&gt;
[MLOD]&lt;br /&gt;
&lt;br /&gt;
[FORM]&lt;br /&gt;
[uint32]           //formsize&lt;br /&gt;
[0000]&lt;br /&gt;
&lt;br /&gt;
[INFO]&lt;br /&gt;
[uint32]           //infosize(2)&lt;br /&gt;
[uint16]           //name elements count&lt;br /&gt;
&lt;br /&gt;
[NAME]&lt;br /&gt;
[uint32]           //namesize&lt;br /&gt;
[namestring]       //0 terminated &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LOD - '''level of detail'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LOD ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LSB==&lt;br /&gt;
&lt;br /&gt;
LSB? File&lt;br /&gt;
&lt;br /&gt;
==LTN==&lt;br /&gt;
&lt;br /&gt;
LTN? File Something to do with lighting&lt;br /&gt;
&lt;br /&gt;
==MGN==&lt;br /&gt;
&lt;br /&gt;
MGN? File 3d model information&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|MGN ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rollout SWG_roll &amp;quot;Model importer&amp;quot; (&lt;br /&gt;
fn readInvLong f = (&lt;br /&gt;
  t1 = readbyte f #unsigned&lt;br /&gt;
  t2 = readbyte f #unsigned&lt;br /&gt;
  t3 = readbyte f #unsigned&lt;br /&gt;
  t4 = readbyte f #unsigned&lt;br /&gt;
  return (t4+t3*0x100+t2*0x10000+t1*0x1000000)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readFORM f = (&lt;br /&gt;
  ofsForm = readInvLong f&lt;br /&gt;
  hdr = readlong f&lt;br /&gt;
  return hdr&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPoint3 f sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT3Ary = #()&lt;br /&gt;
  testbyte = readlong f&lt;br /&gt;
  fseek f -4 #seek_cur&lt;br /&gt;
  if (testbyte&amp;lt;65536)AND(testbyte&amp;gt;=0) then (&lt;br /&gt;
   for i = 1 to (datasize/16) do (&lt;br /&gt;
    idx = 1 + (readlong f)&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    PT3Ary[idx] = [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
   for i = 1 to PT3Ary.count do&lt;br /&gt;
    if PT3Ary[i] == undefined then PT3Ary[i] = [0,0,0]&lt;br /&gt;
  ) else (&lt;br /&gt;
   for i = 1 to (datasize/12) do (&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    append PT3Ary [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
  )&lt;br /&gt;
  return PT3Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readTCSD f = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT2Ary = #()&lt;br /&gt;
  for i = 1 to (datasize/8) do (&lt;br /&gt;
   vx = readfloat f&lt;br /&gt;
   vy = 1- (readfloat f)&lt;br /&gt;
   append PT2Ary [vx,vy,0]   &lt;br /&gt;
  )&lt;br /&gt;
  return PT2Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  for i = 1 to numIndex do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readNIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  for i = 1 to (datasize/4) do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readOITL f = (&lt;br /&gt;
  IdxAry = #()&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   append IdxAry (1+(readshort f))&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(IdxAry,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readITL f = (&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(undefined,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn buildmesh VTary FCary NLary UVary PIDXary NIDXary = (&lt;br /&gt;
  for i = 1 to PIDXary.count do PIDXary[i] = VTary[(PIDXary[i])]&lt;br /&gt;
  for i = 1 to NIDXary.count do NIDXary[i] = NLary[(NIDXary[i])]&lt;br /&gt;
  if FCary[1] == undefined then  msh = mesh vertices:PIDXary faces:FCary[2]&lt;br /&gt;
  else msh = mesh vertices:PIDXary faces:FCary[2] materialIDs:FCary[1]&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary[2].count do setTVFace msh j FCary[2][j]&lt;br /&gt;
  for j = 1 to NIDXary.count do setNormal msh j NIDXary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
  ----------------------------------------------------------------------------&lt;br /&gt;
fn readDATA f numData sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  if datasize &amp;lt; 8 then (&lt;br /&gt;
   fseek f datasize #seek_cur&lt;br /&gt;
   return undefined&lt;br /&gt;
  )&lt;br /&gt;
  VTary = #()&lt;br /&gt;
  NLary = #()&lt;br /&gt;
  UVary = #()&lt;br /&gt;
  sizeElement = datasize/numData&lt;br /&gt;
  --format &amp;quot;V:% @[%]\n&amp;quot; sizeElement (ftell f)&lt;br /&gt;
  for i = 1 to numData do (&lt;br /&gt;
   vx = (readfloat f)*sc;    vy = (readfloat f)*sc;    vz = (readfloat f)*sc&lt;br /&gt;
   nx = readfloat f;    ny = readfloat f;    nz = readfloat f&lt;br /&gt;
   --&lt;br /&gt;
   byteRead = 32&lt;br /&gt;
   case sizeElement of (&lt;br /&gt;
    36: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    52: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    56: ( fseek f 16 #seek_cur ; byteRead = 48 )&lt;br /&gt;
    default: byteRead = 32&lt;br /&gt;
   )&lt;br /&gt;
   vu = readfloat f;    vv = 1-(readfloat f)&lt;br /&gt;
   fseek f (sizeElement-byteRead) #seek_cur&lt;br /&gt;
   --&lt;br /&gt;
   append VTary [vx,-vz,vy]&lt;br /&gt;
   append NLary [nx,-nz,ny]&lt;br /&gt;
   append UVary [vu,vv,0]&lt;br /&gt;
  )&lt;br /&gt;
  return #(VTary,NLary,UVary)&lt;br /&gt;
)&lt;br /&gt;
fn readINDX f = (&lt;br /&gt;
  FCary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  sizeElement = datasize / numIndex&lt;br /&gt;
  for i = 1 to (numIndex/3) do (&lt;br /&gt;
   if sizeElement == 2 then (&lt;br /&gt;
    f1 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f2 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f3 = 1 + (readshort f #unsigned)&lt;br /&gt;
   ) else if sizeElement == 4 then (&lt;br /&gt;
    f1 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f2 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f3 = 1 + (readlong f #unsigned)&lt;br /&gt;
   ) else messagebox &amp;quot;error in face index&amp;quot;&lt;br /&gt;
   append FCary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return FCary&lt;br /&gt;
)&lt;br /&gt;
fn buildmesh2 VTary FCary NLary UVary = (&lt;br /&gt;
  msh = mesh vertices:VTary faces:FCary&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary.count do setTVFace msh j FCary[j]&lt;br /&gt;
  for j = 1 to NLary.count do setNormal msh j NLary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
--GUI--&lt;br /&gt;
spinner fscale &amp;quot;Scale : &amp;quot; fieldwidth:60 range:[0.001, 1000, 1]&lt;br /&gt;
button impMGN &amp;quot;Import   MGN / MSH&amp;quot; width:150 Height:25 align:#center&lt;br /&gt;
label lbl1 &amp;quot;&amp;quot;&lt;br /&gt;
label lbl2 &amp;quot;by Fatduck&amp;quot; align:#right&lt;br /&gt;
&lt;br /&gt;
on impMGN pressed do (&lt;br /&gt;
  fname = getOpenFileName caption:&amp;quot;Select Star Wars Galaxies Model file&amp;quot; types:&amp;quot;MGN File (*.mgn)|*.mgn|MSH File (*.msh)|*.msh|All Files (*.*)|*.*|&amp;quot;&lt;br /&gt;
  if fname != undefined then (&lt;br /&gt;
   f = fopen fname &amp;quot;rb&amp;quot;&lt;br /&gt;
   fseek f 0 #seek_end&lt;br /&gt;
   ofsEOF = ftell f&lt;br /&gt;
   fseek f 0 #seek_set&lt;br /&gt;
   VTary = #()&lt;br /&gt;
   UVary = #()&lt;br /&gt;
   NLary = #()&lt;br /&gt;
   FCary = #()&lt;br /&gt;
   PIDXary = #()&lt;br /&gt;
   NIDXary = #()&lt;br /&gt;
   meshFlag = undefined&lt;br /&gt;
   infoFlag = undefined&lt;br /&gt;
   mshVert = 0&lt;br /&gt;
   do (&lt;br /&gt;
    header = readlong f&lt;br /&gt;
    case header of (&lt;br /&gt;
     0x58444E49:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readINDX f&lt;br /&gt;
        msh = buildmesh2 VTary FCary NLary UVary&lt;br /&gt;
       )&lt;br /&gt;
     0x41544144:&lt;br /&gt;
       (&lt;br /&gt;
        rslt = readDATA f mshVert fscale.value&lt;br /&gt;
        if rslt != undefined then (&lt;br /&gt;
         VTary = rslt[1]&lt;br /&gt;
         NLary = rslt[2]&lt;br /&gt;
         UVary = rslt[3]&lt;br /&gt;
        )&lt;br /&gt;
        infoFlag = false&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F46:&lt;br /&gt;
       (&lt;br /&gt;
        flg = readFORM f&lt;br /&gt;
        if flg == 0x474D4B53 then meshFlag = true --SKMG&lt;br /&gt;
        else if flg == 0x20544C42 then meshFlag = false --BLT&lt;br /&gt;
        if flg == 0x41585456 then infoFlag = true --VTXA&lt;br /&gt;
       )   &lt;br /&gt;
     0x4F464E49:&lt;br /&gt;
       (&lt;br /&gt;
        if infoFlag == true then (&lt;br /&gt;
         fseek f 8 #seek_cur&lt;br /&gt;
         mshVert = readlong f&lt;br /&gt;
        ) else fseek f (readInvLong f) #seek_cur&lt;br /&gt;
       ) &lt;br /&gt;
     0x4E534F50:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then VTary = readPoint3 f fscale.value&lt;br /&gt;
        else readPoint3 f fscale.value&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F4E:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then NLary = readPoint3 f 1&lt;br /&gt;
        else readPoint3 f 1&lt;br /&gt;
       )&lt;br /&gt;
     0x58444950: PIDXary = readPIDX f&lt;br /&gt;
     0x5844494E: NIDXary = readNIDX f&lt;br /&gt;
     0x44534354: UVary = readTCSD f&lt;br /&gt;
     0x4C54494F:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readOITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     0x204C5449:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     default:&lt;br /&gt;
       (&lt;br /&gt;
        datasize = readInvLong f&lt;br /&gt;
        fseek f datasize #seek_cur&lt;br /&gt;
       )&lt;br /&gt;
    )--end case&lt;br /&gt;
   ) while (ftell f) != ofsEOF&lt;br /&gt;
   fclose f&lt;br /&gt;
  )--end if fname&lt;br /&gt;
)--end on impMGN&lt;br /&gt;
&lt;br /&gt;
)--end rollout SWG_roll&lt;br /&gt;
&lt;br /&gt;
if Fatduck_SWG != undefined then closeRolloutFloater Fatduck_SWG&lt;br /&gt;
Fatduck_SWG = newRolloutFloater &amp;quot;Star Wars Galaxies&amp;quot; 200 175 10 70&lt;br /&gt;
addRollout SWG_roll Fatduck_SWG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==MKR==&lt;br /&gt;
&lt;br /&gt;
Marker File&lt;br /&gt;
&lt;br /&gt;
==MP3==&lt;br /&gt;
&lt;br /&gt;
MP3 Audio File&lt;br /&gt;
&lt;br /&gt;
==MSH - '''mesh'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|MSH ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rollout SWG_roll &amp;quot;Model importer&amp;quot; (&lt;br /&gt;
fn readInvLong f = (&lt;br /&gt;
  t1 = readbyte f #unsigned&lt;br /&gt;
  t2 = readbyte f #unsigned&lt;br /&gt;
  t3 = readbyte f #unsigned&lt;br /&gt;
  t4 = readbyte f #unsigned&lt;br /&gt;
  return (t4+t3*0x100+t2*0x10000+t1*0x1000000)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readFORM f = (&lt;br /&gt;
  ofsForm = readInvLong f&lt;br /&gt;
  hdr = readlong f&lt;br /&gt;
  return hdr&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPoint3 f sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT3Ary = #()&lt;br /&gt;
  testbyte = readlong f&lt;br /&gt;
  fseek f -4 #seek_cur&lt;br /&gt;
  if (testbyte&amp;lt;65536)AND(testbyte&amp;gt;=0) then (&lt;br /&gt;
   for i = 1 to (datasize/16) do (&lt;br /&gt;
    idx = 1 + (readlong f)&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    PT3Ary[idx] = [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
   for i = 1 to PT3Ary.count do&lt;br /&gt;
    if PT3Ary[i] == undefined then PT3Ary[i] = [0,0,0]&lt;br /&gt;
  ) else (&lt;br /&gt;
   for i = 1 to (datasize/12) do (&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    append PT3Ary [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
  )&lt;br /&gt;
  return PT3Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readTCSD f = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT2Ary = #()&lt;br /&gt;
  for i = 1 to (datasize/8) do (&lt;br /&gt;
   vx = readfloat f&lt;br /&gt;
   vy = 1- (readfloat f)&lt;br /&gt;
   append PT2Ary [vx,vy,0]   &lt;br /&gt;
  )&lt;br /&gt;
  return PT2Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  for i = 1 to numIndex do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readNIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  for i = 1 to (datasize/4) do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readOITL f = (&lt;br /&gt;
  IdxAry = #()&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   append IdxAry (1+(readshort f))&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(IdxAry,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readITL f = (&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(undefined,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn buildmesh VTary FCary NLary UVary PIDXary NIDXary = (&lt;br /&gt;
  for i = 1 to PIDXary.count do PIDXary[i] = VTary[(PIDXary[i])]&lt;br /&gt;
  for i = 1 to NIDXary.count do NIDXary[i] = NLary[(NIDXary[i])]&lt;br /&gt;
  if FCary[1] == undefined then  msh = mesh vertices:PIDXary faces:FCary[2]&lt;br /&gt;
  else msh = mesh vertices:PIDXary faces:FCary[2] materialIDs:FCary[1]&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary[2].count do setTVFace msh j FCary[2][j]&lt;br /&gt;
  for j = 1 to NIDXary.count do setNormal msh j NIDXary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
  ----------------------------------------------------------------------------&lt;br /&gt;
fn readDATA f numData sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  if datasize &amp;lt; 8 then (&lt;br /&gt;
   fseek f datasize #seek_cur&lt;br /&gt;
   return undefined&lt;br /&gt;
  )&lt;br /&gt;
  VTary = #()&lt;br /&gt;
  NLary = #()&lt;br /&gt;
  UVary = #()&lt;br /&gt;
  sizeElement = datasize/numData&lt;br /&gt;
  --format &amp;quot;V:% @[%]\n&amp;quot; sizeElement (ftell f)&lt;br /&gt;
  for i = 1 to numData do (&lt;br /&gt;
   vx = (readfloat f)*sc;    vy = (readfloat f)*sc;    vz = (readfloat f)*sc&lt;br /&gt;
   nx = readfloat f;    ny = readfloat f;    nz = readfloat f&lt;br /&gt;
   --&lt;br /&gt;
   byteRead = 32&lt;br /&gt;
   case sizeElement of (&lt;br /&gt;
    36: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    52: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    56: ( fseek f 16 #seek_cur ; byteRead = 48 )&lt;br /&gt;
    default: byteRead = 32&lt;br /&gt;
   )&lt;br /&gt;
   vu = readfloat f;    vv = 1-(readfloat f)&lt;br /&gt;
   fseek f (sizeElement-byteRead) #seek_cur&lt;br /&gt;
   --&lt;br /&gt;
   append VTary [vx,-vz,vy]&lt;br /&gt;
   append NLary [nx,-nz,ny]&lt;br /&gt;
   append UVary [vu,vv,0]&lt;br /&gt;
  )&lt;br /&gt;
  return #(VTary,NLary,UVary)&lt;br /&gt;
)&lt;br /&gt;
fn readINDX f = (&lt;br /&gt;
  FCary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  sizeElement = datasize / numIndex&lt;br /&gt;
  for i = 1 to (numIndex/3) do (&lt;br /&gt;
   if sizeElement == 2 then (&lt;br /&gt;
    f1 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f2 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f3 = 1 + (readshort f #unsigned)&lt;br /&gt;
   ) else if sizeElement == 4 then (&lt;br /&gt;
    f1 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f2 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f3 = 1 + (readlong f #unsigned)&lt;br /&gt;
   ) else messagebox &amp;quot;error in face index&amp;quot;&lt;br /&gt;
   append FCary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return FCary&lt;br /&gt;
)&lt;br /&gt;
fn buildmesh2 VTary FCary NLary UVary = (&lt;br /&gt;
  msh = mesh vertices:VTary faces:FCary&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary.count do setTVFace msh j FCary[j]&lt;br /&gt;
  for j = 1 to NLary.count do setNormal msh j NLary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
--GUI--&lt;br /&gt;
spinner fscale &amp;quot;Scale : &amp;quot; fieldwidth:60 range:[0.001, 1000, 1]&lt;br /&gt;
button impMGN &amp;quot;Import   MGN / MSH&amp;quot; width:150 Height:25 align:#center&lt;br /&gt;
label lbl1 &amp;quot;&amp;quot;&lt;br /&gt;
label lbl2 &amp;quot;by Fatduck&amp;quot; align:#right&lt;br /&gt;
&lt;br /&gt;
on impMGN pressed do (&lt;br /&gt;
  fname = getOpenFileName caption:&amp;quot;Select Star Wars Galaxies Model file&amp;quot; types:&amp;quot;MGN File (*.mgn)|*.mgn|MSH File (*.msh)|*.msh|All Files (*.*)|*.*|&amp;quot;&lt;br /&gt;
  if fname != undefined then (&lt;br /&gt;
   f = fopen fname &amp;quot;rb&amp;quot;&lt;br /&gt;
   fseek f 0 #seek_end&lt;br /&gt;
   ofsEOF = ftell f&lt;br /&gt;
   fseek f 0 #seek_set&lt;br /&gt;
   VTary = #()&lt;br /&gt;
   UVary = #()&lt;br /&gt;
   NLary = #()&lt;br /&gt;
   FCary = #()&lt;br /&gt;
   PIDXary = #()&lt;br /&gt;
   NIDXary = #()&lt;br /&gt;
   meshFlag = undefined&lt;br /&gt;
   infoFlag = undefined&lt;br /&gt;
   mshVert = 0&lt;br /&gt;
   do (&lt;br /&gt;
    header = readlong f&lt;br /&gt;
    case header of (&lt;br /&gt;
     0x58444E49:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readINDX f&lt;br /&gt;
        msh = buildmesh2 VTary FCary NLary UVary&lt;br /&gt;
       )&lt;br /&gt;
     0x41544144:&lt;br /&gt;
       (&lt;br /&gt;
        rslt = readDATA f mshVert fscale.value&lt;br /&gt;
        if rslt != undefined then (&lt;br /&gt;
         VTary = rslt[1]&lt;br /&gt;
         NLary = rslt[2]&lt;br /&gt;
         UVary = rslt[3]&lt;br /&gt;
        )&lt;br /&gt;
        infoFlag = false&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F46:&lt;br /&gt;
       (&lt;br /&gt;
        flg = readFORM f&lt;br /&gt;
        if flg == 0x474D4B53 then meshFlag = true --SKMG&lt;br /&gt;
        else if flg == 0x20544C42 then meshFlag = false --BLT&lt;br /&gt;
        if flg == 0x41585456 then infoFlag = true --VTXA&lt;br /&gt;
       )   &lt;br /&gt;
     0x4F464E49:&lt;br /&gt;
       (&lt;br /&gt;
        if infoFlag == true then (&lt;br /&gt;
         fseek f 8 #seek_cur&lt;br /&gt;
         mshVert = readlong f&lt;br /&gt;
        ) else fseek f (readInvLong f) #seek_cur&lt;br /&gt;
       ) &lt;br /&gt;
     0x4E534F50:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then VTary = readPoint3 f fscale.value&lt;br /&gt;
        else readPoint3 f fscale.value&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F4E:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then NLary = readPoint3 f 1&lt;br /&gt;
        else readPoint3 f 1&lt;br /&gt;
       )&lt;br /&gt;
     0x58444950: PIDXary = readPIDX f&lt;br /&gt;
     0x5844494E: NIDXary = readNIDX f&lt;br /&gt;
     0x44534354: UVary = readTCSD f&lt;br /&gt;
     0x4C54494F:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readOITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     0x204C5449:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     default:&lt;br /&gt;
       (&lt;br /&gt;
        datasize = readInvLong f&lt;br /&gt;
        fseek f datasize #seek_cur&lt;br /&gt;
       )&lt;br /&gt;
    )--end case&lt;br /&gt;
   ) while (ftell f) != ofsEOF&lt;br /&gt;
   fclose f&lt;br /&gt;
  )--end if fname&lt;br /&gt;
)--end on impMGN&lt;br /&gt;
&lt;br /&gt;
)--end rollout SWG_roll&lt;br /&gt;
&lt;br /&gt;
if Fatduck_SWG != undefined then closeRolloutFloater Fatduck_SWG&lt;br /&gt;
Fatduck_SWG = newRolloutFloater &amp;quot;Star Wars Galaxies&amp;quot; 200 175 10 70&lt;br /&gt;
addRollout SWG_roll Fatduck_SWG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==PAL - '''palette'''==&lt;br /&gt;
&lt;br /&gt;
Palette File&lt;br /&gt;
&lt;br /&gt;
PAL Editor can be downloaded here -&amp;gt; http://mods.mandalorians.de/system/infusions/pro_download_panel/download.php?did=16&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|PAL ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
52 49 46 46  // RIFF&lt;br /&gt;
&lt;br /&gt;
10 01 00 00  // size (int 32)&lt;br /&gt;
&lt;br /&gt;
50 40 4c 20  // Pal&lt;br /&gt;
&lt;br /&gt;
64 61 74 61  // Data&lt;br /&gt;
&lt;br /&gt;
40 00 00 00  // size (int 32)&lt;br /&gt;
&lt;br /&gt;
// Here starts the color pallate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
00 03  // uint16 version&lt;br /&gt;
&lt;br /&gt;
40 00  // uint16 pallette colors count(64)&lt;br /&gt;
&lt;br /&gt;
// This is were the swg pallet editor start's showing were the colors are&lt;br /&gt;
&lt;br /&gt;
cc cc cc 00   // uint32 (RGBA)&lt;br /&gt;
&lt;br /&gt;
b7 b7 b7 00 //&lt;br /&gt;
&lt;br /&gt;
a3 a3 a3 00  //&lt;br /&gt;
&lt;br /&gt;
8e 8e 8e 00  //&lt;br /&gt;
&lt;br /&gt;
92 23 23 00  //&lt;br /&gt;
&lt;br /&gt;
84 1f 1f 00  //&lt;br /&gt;
&lt;br /&gt;
77 1b 1b 00 //&lt;br /&gt;
&lt;br /&gt;
69 17 17 00 //&lt;br /&gt;
&lt;br /&gt;
65 61 82 00 //&lt;br /&gt;
&lt;br /&gt;
54 50 85 00 //&lt;br /&gt;
&lt;br /&gt;
44 3e 89 00 //&lt;br /&gt;
&lt;br /&gt;
33 2d 8c 00  //&lt;br /&gt;
&lt;br /&gt;
d4 d6 47 00 //&lt;br /&gt;
&lt;br /&gt;
b8 ba 36 00  //&lt;br /&gt;
&lt;br /&gt;
9d 9f 26 00  //&lt;br /&gt;
&lt;br /&gt;
81 83 15 00  //&lt;br /&gt;
&lt;br /&gt;
58 a5 64 00  //&lt;br /&gt;
&lt;br /&gt;
45 91 51 00  //&lt;br /&gt;
&lt;br /&gt;
31 7c 3d 00  //&lt;br /&gt;
&lt;br /&gt;
df b4 3e 00 //&lt;br /&gt;
&lt;br /&gt;
b9 94 2f 00  //&lt;br /&gt;
&lt;br /&gt;
92 73 1f 00 //&lt;br /&gt;
&lt;br /&gt;
6c 53 10 00  //&lt;br /&gt;
&lt;br /&gt;
71 a5 a5 00  //&lt;br /&gt;
&lt;br /&gt;
5b 95 95 00  //&lt;br /&gt;
&lt;br /&gt;
44 86 86 00  //&lt;br /&gt;
&lt;br /&gt;
2e 76 76 00  //&lt;br /&gt;
&lt;br /&gt;
75 61 76 00  //&lt;br /&gt;
&lt;br /&gt;
72 4d 78 00 //&lt;br /&gt;
&lt;br /&gt;
6e 38 7b 00  //&lt;br /&gt;
&lt;br /&gt;
6b 24 7d 00 //&lt;br /&gt;
&lt;br /&gt;
7d b0 c0 00 //&lt;br /&gt;
&lt;br /&gt;
69 95 a3 00 //&lt;br /&gt;
&lt;br /&gt;
54 7b 87 00 //&lt;br /&gt;
&lt;br /&gt;
40 60 6a 00 //&lt;br /&gt;
&lt;br /&gt;
cd 7a 37 00  //&lt;br /&gt;
&lt;br /&gt;
a9 64 2c 00 //&lt;br /&gt;
&lt;br /&gt;
84 4d 21 00  //&lt;br /&gt;
&lt;br /&gt;
60 37 16 00  //&lt;br /&gt;
&lt;br /&gt;
d4 83 83 00 //&lt;br /&gt;
&lt;br /&gt;
a5 5e 5e 00  //&lt;br /&gt;
&lt;br /&gt;
87 42 42 00  //&lt;br /&gt;
&lt;br /&gt;
5f 2d 2d 00  //&lt;br /&gt;
&lt;br /&gt;
93 73 1b 00 //&lt;br /&gt;
&lt;br /&gt;
7c 60 18 00  //&lt;br /&gt;
&lt;br /&gt;
5a 45 0e 00  //&lt;br /&gt;
&lt;br /&gt;
dd d8 c0 00 //&lt;br /&gt;
&lt;br /&gt;
bd b9 a4 00  //&lt;br /&gt;
&lt;br /&gt;
9e 9a 88 00  //&lt;br /&gt;
&lt;br /&gt;
7e 7b 6c 00  //&lt;br /&gt;
&lt;br /&gt;
91 6d 6d 00  //&lt;br /&gt;
&lt;br /&gt;
76 59 59 00  //&lt;br /&gt;
&lt;br /&gt;
5c 44 44 00 //&lt;br /&gt;
&lt;br /&gt;
41 30 30 00  //&lt;br /&gt;
&lt;br /&gt;
75 61 76 00  //&lt;br /&gt;
&lt;br /&gt;
6b 4d 6c 00  //&lt;br /&gt;
&lt;br /&gt;
60 39 62 00  //&lt;br /&gt;
&lt;br /&gt;
56 25 58 00 //&lt;br /&gt;
&lt;br /&gt;
a6 c1 71 00  //&lt;br /&gt;
&lt;br /&gt;
8e a6 61 00  //&lt;br /&gt;
&lt;br /&gt;
77 8a 50 00  //&lt;br /&gt;
&lt;br /&gt;
5f 6f 40 00  //&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==PLN==&lt;br /&gt;
&lt;br /&gt;
Planet File&lt;br /&gt;
&lt;br /&gt;
==POB==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46 4f 52 4d             // FORM&lt;br /&gt;
00 00 02 d3             // 723 Form Count&lt;br /&gt;
43 45 4c 4c 46 4f 52 4d // CELLFORM&lt;br /&gt;
00 00 02 c7             // 711 count to end of form&lt;br /&gt;
30 30 30 35 44 41 54 41 // 0005DATA&lt;br /&gt;
00 00 00 a9 &lt;br /&gt;
04 00 00 00 &lt;br /&gt;
00 &lt;br /&gt;
6d 61 69 6e 68 61 6e 67 61 72 // mainhangar&lt;br /&gt;
00&lt;br /&gt;
61 70 70 65 61 72 61 6e 63 65 2f 6d 65 73 68 2f  // appearance/mesh/&lt;br /&gt;
74 68 6d 5f 73 70 63 5f 73 74 61 72 5f 64 65 73  // thm_spc_star_des&lt;br /&gt;
74 72 6f 79 65 72 5f 73 30 31 5f 72 31 5f 6d 61  // troyer_s01_r1_ma&lt;br /&gt;
69 6e 68 61 6e 67 61 72 5f 6d 65 73 68 5f 72 31  // inhangar_mesh_r1&lt;br /&gt;
2e 6d 73 68                                      // .msh&lt;br /&gt;
00 01 &lt;br /&gt;
61 70 70 65 61 72 61 6e 63 65                    // appearance&lt;br /&gt;
2f 63 6f 6c 6c 69 73 69 6f 6e 2f 74 68 6d 5f 73  // /collision/thm_s&lt;br /&gt;
70 63 5f 73 74 61 72 5f 64 65 73 74 72 6f 79 65  // pc_star_destroye&lt;br /&gt;
72 5f 73 30 31 5f 72 31 5f 6d 61 69 6e 68 61 6e  // r_s01_r1_mainhan&lt;br /&gt;
67 61 72 5f 63 6f 6c 6c 69 73 69 6f 6e 5f 66 6c  // gar_collision_fl&lt;br /&gt;
6f 6f 72 30 2e 66 6c 72                          // oor0.flr&lt;br /&gt;
00 &lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 04 &lt;br /&gt;
4e 55 4c 4c 46 4f 52 4d    // NULLFORM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 02 00 00 &lt;br /&gt;
00 01 0c 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
46 4f 52 4d // FROM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 03 00 00 &lt;br /&gt;
00 01 0a 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 04 00 00 &lt;br /&gt;
00 01 09 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 05 00 00 &lt;br /&gt;
00 01 02 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
4c 47 48 54               // LGHT&lt;br /&gt;
00 00 00 be  // 190&lt;br /&gt;
02 00 00 00 &lt;br /&gt;
01 00 00 00 &lt;br /&gt;
00 &lt;br /&gt;
01 45 b3 3f   // 1.40   R Lighting Color Like sun light but only shows on toon&lt;br /&gt;
0a d7 b3 3f   // 1.40   B Lighting Color&lt;br /&gt;
fe cf a5 3f   // 1.30   G Lighting Color&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
01 45 b3 3f   // 1.40   R Lighting Color&lt;br /&gt;
0a d7 b3 3f   // 1.40   B Lighting Color&lt;br /&gt;
fe cf a5 3f   // 1.30   G Lighting Color&lt;br /&gt;
00 00 80 3f   // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 80 &lt;br /&gt;
00 00 00 80 &lt;br /&gt;
00 f6 f3 be  // -0.48&lt;br /&gt;
11 12 61 3f  //  0.88&lt;br /&gt;
78 a0 51 43  //  209.63&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
11 12 61 bf  //  0.88&lt;br /&gt;
00 f6 f3 be  // -0.48&lt;br /&gt;
67 08 a8 c2  // -84.02&lt;br /&gt;
00 00 80 3f  //  1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
01 00 00 00 &lt;br /&gt;
00 &lt;br /&gt;
d5 3e 97 3f  // 1.18   R Lighting Color Like sun light but only shows on toon&lt;br /&gt;
9e fb ad 3f  // 1.36   B Lighting Color&lt;br /&gt;
0a d7 b3 3f  // 1.40   G Lighting Color&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
d5 3e 97 3f  // 1.18   R Lighting Color&lt;br /&gt;
9e fb ad 3f  // 1.36   B Lighting Color&lt;br /&gt;
0a d7 b3 3f  // 1.40   G Lighting Color&lt;br /&gt;
00 00 80 3f  // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 80 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
c2 19 f4 3e  // 0.48&lt;br /&gt;
60 08 61 3f  // 0.88&lt;br /&gt;
78 a0 51 43  // 209.63&lt;br /&gt;
00 00 00 00&lt;br /&gt;
60 08 61 bf  // -0.88&lt;br /&gt;
c2 19 f4 3e  //  0.48&lt;br /&gt;
67 43 a3 c2  // -81.63&lt;br /&gt;
00 00 80 3f  // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PRT==&lt;br /&gt;
&lt;br /&gt;
Particle File&lt;br /&gt;
&lt;br /&gt;
==PSH==&lt;br /&gt;
&lt;br /&gt;
Pixel Shader? File&lt;br /&gt;
&lt;br /&gt;
==PST==&lt;br /&gt;
&lt;br /&gt;
Playback File&lt;br /&gt;
&lt;br /&gt;
==[[TRE_QSTFileType|QST - '''QueST files''']]==&lt;br /&gt;
QueST files are XML files describing journal quests. [[TRE_QSTFileType|Let's examine them here.]]&lt;br /&gt;
&lt;br /&gt;
==SAT==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SAT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'WSNP' FORM (ws file)&lt;br /&gt;
&lt;br /&gt;
- FORM&lt;br /&gt;
- NODS&lt;br /&gt;
- size&lt;br /&gt;
- offset to stringtable&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 E4     //formsize&lt;br /&gt;
&lt;br /&gt;
53 4D 41 54     //SMAT&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 D8     //formsize &lt;br /&gt;
 &lt;br /&gt;
30 30 30 30     //0000&lt;br /&gt;
&lt;br /&gt;
44 41 54 41     //DATA&lt;br /&gt;
&lt;br /&gt;
00 00 00 34     //datasize&lt;br /&gt;
&lt;br /&gt;
01 A7 15 00     //id&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //parentid&lt;br /&gt;
&lt;br /&gt;
70 00 00 00     //strtable index&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //ox&lt;br /&gt;
&lt;br /&gt;
D4 15 1E BE     //oY&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //oz&lt;br /&gt;
&lt;br /&gt;
51 EE 7C 3F     //ow&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //scale??&lt;br /&gt;
&lt;br /&gt;
38 CA A0 45     //x&lt;br /&gt;
&lt;br /&gt;
00 00 AF 43     //y&lt;br /&gt;
&lt;br /&gt;
EE DE B2 C4     //z&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
00 00 00 44     //type?&lt;br /&gt;
&lt;br /&gt;
7B D6 12 E7     //?? &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==SFK==&lt;br /&gt;
&lt;br /&gt;
SFK? File&lt;br /&gt;
&lt;br /&gt;
==SFP==&lt;br /&gt;
&lt;br /&gt;
This file contains the info on building Footprints&lt;br /&gt;
the below breakdown is from shared_player_house_tatooine_small_style_01.sfp a &lt;br /&gt;
Small Tatooine style 1 house.  Still needs further breakdown!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 48 &lt;br /&gt;
46 4f 4f 54 46 4f 52 4d // FOOTFORM&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
30 30 30 30 &lt;br /&gt;
49 4e 46 4f // INFO&lt;br /&gt;
00 00 00 18&lt;br /&gt;
03 00 00 00 &lt;br /&gt;
04 00 00 00 &lt;br /&gt;
01 00 00 00 &lt;br /&gt;
01 00 00 00&lt;br /&gt;
00 00 00 41 &lt;br /&gt;
00 00 00 41 &lt;br /&gt;
50 52 4e 54 // PRNT&lt;br /&gt;
00 00 00 10 &lt;br /&gt;
48 48 48 00 &lt;br /&gt;
46 46 46 00 &lt;br /&gt;
46 46 46 00 &lt;br /&gt;
46 46 46 00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SHT - '''shader'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SHT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==SKT==&lt;br /&gt;
&lt;br /&gt;
Skeleton File&lt;br /&gt;
&lt;br /&gt;
==SND==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SND ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
46 4f 52 4d              // FORM (Element)&lt;br /&gt;
&lt;br /&gt;
00 00 00 a7              // Length Of Data that Follows (Count starts after this byte) (a7 = 167)&lt;br /&gt;
&lt;br /&gt;
53 44 32 44              // SD2D (Element)&lt;br /&gt;
&lt;br /&gt;
30 30 30 33              // 0003 (Version ?)&lt;br /&gt;
&lt;br /&gt;
00 00 00 9b              // string length&lt;br /&gt;
&lt;br /&gt;
73 61 6d 70&lt;br /&gt;
6c 65 2f 61&lt;br /&gt;
6d 62 5f 63&lt;br /&gt;
6c 6f 6e 69&lt;br /&gt;
6e 67 5f 66&lt;br /&gt;
61 63 69 6c&lt;br /&gt;
69 74 79 5f&lt;br /&gt;
69 6e 74 5f&lt;br /&gt;
6c 70 2e 77&lt;br /&gt;
61 76 00 00              // sample/amb_cloning_facility_int_lp.wav&lt;br /&gt;
&lt;br /&gt;
00 00 00 00              // ?&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 &lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
00 00 &lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192) (Again?)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
FF FF FF FF&lt;br /&gt;
FF FF FF FF              // ?&lt;br /&gt;
&lt;br /&gt;
00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00&lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192) (Again?)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
00 00&lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192) (Again?)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 01&lt;br /&gt;
00 00 00 01&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 80 3F 00&lt;br /&gt;
00 80 3F 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 02&lt;br /&gt;
00 00 00 CD&lt;br /&gt;
CC CC 3D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==SPR==&lt;br /&gt;
&lt;br /&gt;
Sprite File&lt;br /&gt;
&lt;br /&gt;
==SSA==&lt;br /&gt;
&lt;br /&gt;
SSA? File&lt;br /&gt;
&lt;br /&gt;
==[[TRE_STFFileType|STF - '''Strings Table File (Language)''']]==&lt;br /&gt;
{{Box_TREformats|STF ''format''|&lt;br /&gt;
It contains all the game's strings. During network communications the strings are identificated with: filename without extension + code + ansi string id.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Header:&lt;br /&gt;
[int]      // STF file type header id (sequence: 0xCD 0xAB 0x00 0x00, value: 0x0000ABCD = 43981)&lt;br /&gt;
[byte]     // useless? flag (might be a boolean, seen so far: 0x01 and 0x00)&lt;br /&gt;
[int]      // next free index in file to add an item, always &amp;gt; items count (useless for us)&lt;br /&gt;
[int]      // items count&lt;br /&gt;
&lt;br /&gt;
Then items list, for each:&lt;br /&gt;
[int]      // item index in the file (eg: 1, 2, 9, 3, 7, ...) &lt;br /&gt;
[int]      // code (gesture?)&lt;br /&gt;
[int]      // unicode digits count of the sentence (eg: 11)&lt;br /&gt;
[u_string] // 2 bytes per char (eg: &amp;quot;hello world&amp;quot; is 11 digits long, 22 bytes total)&lt;br /&gt;
&lt;br /&gt;
Then item's string ids, for each:&lt;br /&gt;
[int]      // item index in the file matching one in previous list (eg: 1, 2, 9, 3, 7, ...)&lt;br /&gt;
[int]      // ascii digits count of the string id (eg: 12)&lt;br /&gt;
[a_string] // 1 byte per char (eg: &amp;quot;basic_answer&amp;quot; is 12 digits long, 12 bytes total)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}Understood at 80%.&lt;br /&gt;
&lt;br /&gt;
==SWH==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SWH''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==TGA - '''Targa Texture'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TGA ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Terrain files Are divided in 2 main sections. The terrain generator and the maps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[TRN (FileFormat)|TRN - '''Terrain File''']]==&lt;br /&gt;
[[Image:Trn layers.jpg]]&lt;br /&gt;
{{Box_TREformats|TRN ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==TRT - '''Texture Renderer File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TRT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==TRT - '''Texture Renderer File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TRT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==TXT - '''Text File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TXT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==UI - '''User Interface File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|UI ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==VSH - '''Vertex Shader Script'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|VSH ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Shader City - Possible App to open the Vertex Shader Scripts)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==WAV - '''WAV Audio File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|WAV ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==WS - '''world structures'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|WS ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
'WSNP' FORM (ws file)&lt;br /&gt;
&lt;br /&gt;
- FORM&lt;br /&gt;
- NODS&lt;br /&gt;
- size&lt;br /&gt;
- offset to stringtable&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 E4     //formsize&lt;br /&gt;
&lt;br /&gt;
4E 4F 44 45     //NODE&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 D8     //formsize &lt;br /&gt;
 &lt;br /&gt;
30 30 30 30     //0000&lt;br /&gt;
&lt;br /&gt;
44 41 54 41     //DATA&lt;br /&gt;
&lt;br /&gt;
00 00 00 34     //datasize&lt;br /&gt;
&lt;br /&gt;
01 A7 15 00     //id&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //parentid&lt;br /&gt;
&lt;br /&gt;
70 00 00 00     //strtable index&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //ox&lt;br /&gt;
&lt;br /&gt;
D4 15 1E BE     //oY&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //oz&lt;br /&gt;
&lt;br /&gt;
51 EE 7C 3F     //ow&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //scale??&lt;br /&gt;
&lt;br /&gt;
38 CA A0 45     //x&lt;br /&gt;
&lt;br /&gt;
00 00 AF 43     //y&lt;br /&gt;
&lt;br /&gt;
EE DE B2 C4     //z&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
00 00 00 44     //type?&lt;br /&gt;
&lt;br /&gt;
7B D6 12 E7     //?? &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
World Structures&lt;br /&gt;
&lt;br /&gt;
There is one .ws file per planet (none for space that I have found yet although it would seem applicable), containing a list of items found outdoors on each planets.  This includes buildings, terminals, streetlights, fog/special effects, ruins, and so forth.  Trees/plants/rocks are not included unless they are somehow unique or special.&lt;/div&gt;</summary>
		<author><name>Lloydyboy</name></author>	</entry>

	<entry>
		<id>http://wiki.swganh.org/index.php?title=TRE:TRE_Breakdown&amp;diff=44441</id>
		<title>TRE:TRE Breakdown</title>
		<link rel="alternate" type="text/html" href="http://wiki.swganh.org/index.php?title=TRE:TRE_Breakdown&amp;diff=44441"/>
				<updated>2008-08-28T14:54:15Z</updated>
		
		<summary type="html">&lt;p&gt;Lloydyboy: /* IFF - '''Interchange Format File''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border:0; margin: 0.2em 10px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f9f9f9; padding:0px; border:1px solid #aaaaaa; margin-bottom:5px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:120%; padding:0.4em; background-color:#eeeeee; border-bottom:1px solid #aaaaaa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#cf7606; font-size:200%;&amp;quot;&amp;gt;'''Welcome to'''&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#005288; font-size:200%;&amp;quot;&amp;gt;'''SWGANH Tre Sub-Files Documentation'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| style=&amp;quot;zborder-top:1px solid #aaaaaa;&amp;quot; width=&amp;quot;100% border-collapse: collapse;&amp;quot; cellpadding=0 cellspacing=0&lt;br /&gt;
|- align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| style=&amp;quot;padding: 0.2em;&amp;quot; width=&amp;quot;25%&amp;quot; | '''[[TreFiles History]]''' '''[[TreFile Template]]'''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==ANS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|ANS ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==APT - '''Appearance File'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|APT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==ASH==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|ASH ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CDF - '''Client Data File'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CDF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CEF - '''Client Effect file'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CEF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CFG - '''Configuration file'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CFG ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==CMP - '''Component File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|CMP ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==[[TRE_DDSFileType|DDS - '''DirectDraw Surface File (Texture)''']]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|DDS ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DirectDraw Surface File (texture)&lt;br /&gt;
&lt;br /&gt;
Download plugin for photoshop here: &lt;br /&gt;
http://download.nvidia.com/developer/NVTextureSuite/Photoshop_Plugins_7.83.0629.1500.exe&lt;br /&gt;
&lt;br /&gt;
MSDN article on file format here: &lt;br /&gt;
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/dx9_graphics_reference_dds_file.asp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==EFT - '''Effect'''==&lt;br /&gt;
[[Image:Eft.jpg]]&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|EFT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 - The first DATA record contains 2-bytes.  The first byte is an unsigned char that represents&lt;br /&gt;
the number of IMPL Forms in the file.  The 2nd byte is currently unknown.&lt;br /&gt;
&lt;br /&gt;
 - The PVSH form contains a record of 0000 which contains the full path of an HLSL vertex shader&lt;br /&gt;
program.&lt;br /&gt;
&lt;br /&gt;
 - The PPSH form contain a 0001 form which contains 1 DATA record and a variable number of PTXM&lt;br /&gt;
forms.  The DATA record is made up of 1 unsigned char (which indicates the number of PTXM records)&lt;br /&gt;
followed by the full path of an HLSL pixel shader program.&lt;br /&gt;
&lt;br /&gt;
 - Each PTXM form contains one 0002 record.  The first byte of which is an unsigned char followed&lt;br /&gt;
by a 4 char texture tag name.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==FFE - '''Force Feedback File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|FFE ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==FLR==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|FLR ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==IFF - '''Interchange Format File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|IFF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.szonye.com/bradd/iff.html - Overview of File Format&lt;br /&gt;
http://www.ibm.com/developerworks/power/library/pa-spec16/ - alternative Overview&lt;br /&gt;
&lt;br /&gt;
IFF Files are made up of Chunk(s). Each Chunk follows the format:&lt;br /&gt;
&lt;br /&gt;
Type (4 x Char)&lt;br /&gt;
Size (32 Bit Int Big-Endian)&lt;br /&gt;
Data (Length determined by Size)&lt;br /&gt;
&lt;br /&gt;
(NOTE: Data lengths which are odd numbers are padded by a '0' which is not included in the Size (for 2 byte alignment))&lt;br /&gt;
&lt;br /&gt;
Chunks can contain other (child) Chunks, or even complete .IFF Files.&lt;br /&gt;
&lt;br /&gt;
IFF Files must start with types of either: 'FORM' (0x464F524D), 'LIST' (0x4C495354) or 'CAT ' (0x43415420).&lt;br /&gt;
&lt;br /&gt;
Strictly speaking, IFF Files must have a single Root Chunk in the file to keep to the Standard,&lt;br /&gt;
however it is expected that Top Level Chunk may potentially co-exist in SOEs IFFs.&lt;br /&gt;
&lt;br /&gt;
It is currently believed that all SOE IFFs start with FORM (LIST and CAT not required).&lt;br /&gt;
&lt;br /&gt;
FORM Types are basically storage (Record) for other proprietary Chunks.&lt;br /&gt;
&lt;br /&gt;
Every SOE FORM has an additional 32bit Sub Type taking up offsets 8-11 ie:&lt;br /&gt;
Type (4 x Char)&lt;br /&gt;
Size (32 Bit Int Big-Endian)&lt;br /&gt;
Sub-Type (4x Char)&lt;br /&gt;
Data (Length determined by Size)&lt;br /&gt;
&lt;br /&gt;
This means, for SOE FORMs, the data starts at offset 12, and is Size-4 long.&lt;br /&gt;
&lt;br /&gt;
~ Known SOE Proprietary Chunks ~&lt;br /&gt;
CRCT - List of 32bit SOE CRCs, no delimeter&lt;br /&gt;
STNG - List of Strings, delimited by 0x00&lt;br /&gt;
DATA - Some sort of Value. In Lists it appears to be an item count&lt;br /&gt;
STRT - Hash Table IDs, 32bit, no delimeter&lt;br /&gt;
EMAP - List of 3 No. Strings, delimited by 0x00. Appear to be Event Related. &amp;quot;EventSource\0EventDestination\0ClientEffect&amp;quot;&lt;br /&gt;
0000 - List of Strings (generally Filenames), delimited by 0x00&lt;br /&gt;
&lt;br /&gt;
~ Example ~&lt;br /&gt;
An Example SOE .IFF (Misc\planet_crc_string_table.iff)&lt;br /&gt;
FORM (Length 524, Subtype CSTB [0x43535442])&lt;br /&gt;
*FORM (Length 512, Subtype 0000 [0x30303030])&lt;br /&gt;
**DATA (Length, 4)&lt;br /&gt;
**CRCT (Length 100)&lt;br /&gt;
**STRT (Length 100)&lt;br /&gt;
**STNG (Length 272)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==ILF - '''Interior Layout File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|ILF ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==INC - '''Include File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|INC ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LAT==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LAT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
possible relation to MAYA Lattices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LAY - '''Layout File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LAY ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LMG==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LMG ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[FORM]   &lt;br /&gt;
[uint32]           //formsize&lt;br /&gt;
[MLOD]&lt;br /&gt;
&lt;br /&gt;
[FORM]&lt;br /&gt;
[uint32]           //formsize&lt;br /&gt;
[0000]&lt;br /&gt;
&lt;br /&gt;
[INFO]&lt;br /&gt;
[uint32]           //infosize(2)&lt;br /&gt;
[uint16]           //name elements count&lt;br /&gt;
&lt;br /&gt;
[NAME]&lt;br /&gt;
[uint32]           //namesize&lt;br /&gt;
[namestring]       //0 terminated &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LOD - '''level of detail'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|LOD ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==LSB==&lt;br /&gt;
&lt;br /&gt;
LSB? File&lt;br /&gt;
&lt;br /&gt;
==LTN==&lt;br /&gt;
&lt;br /&gt;
LTN? File Something to do with lighting&lt;br /&gt;
&lt;br /&gt;
==MGN==&lt;br /&gt;
&lt;br /&gt;
MGN? File 3d model information&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|MGN ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rollout SWG_roll &amp;quot;Model importer&amp;quot; (&lt;br /&gt;
fn readInvLong f = (&lt;br /&gt;
  t1 = readbyte f #unsigned&lt;br /&gt;
  t2 = readbyte f #unsigned&lt;br /&gt;
  t3 = readbyte f #unsigned&lt;br /&gt;
  t4 = readbyte f #unsigned&lt;br /&gt;
  return (t4+t3*0x100+t2*0x10000+t1*0x1000000)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readFORM f = (&lt;br /&gt;
  ofsForm = readInvLong f&lt;br /&gt;
  hdr = readlong f&lt;br /&gt;
  return hdr&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPoint3 f sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT3Ary = #()&lt;br /&gt;
  testbyte = readlong f&lt;br /&gt;
  fseek f -4 #seek_cur&lt;br /&gt;
  if (testbyte&amp;lt;65536)AND(testbyte&amp;gt;=0) then (&lt;br /&gt;
   for i = 1 to (datasize/16) do (&lt;br /&gt;
    idx = 1 + (readlong f)&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    PT3Ary[idx] = [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
   for i = 1 to PT3Ary.count do&lt;br /&gt;
    if PT3Ary[i] == undefined then PT3Ary[i] = [0,0,0]&lt;br /&gt;
  ) else (&lt;br /&gt;
   for i = 1 to (datasize/12) do (&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    append PT3Ary [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
  )&lt;br /&gt;
  return PT3Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readTCSD f = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT2Ary = #()&lt;br /&gt;
  for i = 1 to (datasize/8) do (&lt;br /&gt;
   vx = readfloat f&lt;br /&gt;
   vy = 1- (readfloat f)&lt;br /&gt;
   append PT2Ary [vx,vy,0]   &lt;br /&gt;
  )&lt;br /&gt;
  return PT2Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  for i = 1 to numIndex do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readNIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  for i = 1 to (datasize/4) do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readOITL f = (&lt;br /&gt;
  IdxAry = #()&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   append IdxAry (1+(readshort f))&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(IdxAry,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readITL f = (&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(undefined,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn buildmesh VTary FCary NLary UVary PIDXary NIDXary = (&lt;br /&gt;
  for i = 1 to PIDXary.count do PIDXary[i] = VTary[(PIDXary[i])]&lt;br /&gt;
  for i = 1 to NIDXary.count do NIDXary[i] = NLary[(NIDXary[i])]&lt;br /&gt;
  if FCary[1] == undefined then  msh = mesh vertices:PIDXary faces:FCary[2]&lt;br /&gt;
  else msh = mesh vertices:PIDXary faces:FCary[2] materialIDs:FCary[1]&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary[2].count do setTVFace msh j FCary[2][j]&lt;br /&gt;
  for j = 1 to NIDXary.count do setNormal msh j NIDXary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
  ----------------------------------------------------------------------------&lt;br /&gt;
fn readDATA f numData sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  if datasize &amp;lt; 8 then (&lt;br /&gt;
   fseek f datasize #seek_cur&lt;br /&gt;
   return undefined&lt;br /&gt;
  )&lt;br /&gt;
  VTary = #()&lt;br /&gt;
  NLary = #()&lt;br /&gt;
  UVary = #()&lt;br /&gt;
  sizeElement = datasize/numData&lt;br /&gt;
  --format &amp;quot;V:% @[%]\n&amp;quot; sizeElement (ftell f)&lt;br /&gt;
  for i = 1 to numData do (&lt;br /&gt;
   vx = (readfloat f)*sc;    vy = (readfloat f)*sc;    vz = (readfloat f)*sc&lt;br /&gt;
   nx = readfloat f;    ny = readfloat f;    nz = readfloat f&lt;br /&gt;
   --&lt;br /&gt;
   byteRead = 32&lt;br /&gt;
   case sizeElement of (&lt;br /&gt;
    36: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    52: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    56: ( fseek f 16 #seek_cur ; byteRead = 48 )&lt;br /&gt;
    default: byteRead = 32&lt;br /&gt;
   )&lt;br /&gt;
   vu = readfloat f;    vv = 1-(readfloat f)&lt;br /&gt;
   fseek f (sizeElement-byteRead) #seek_cur&lt;br /&gt;
   --&lt;br /&gt;
   append VTary [vx,-vz,vy]&lt;br /&gt;
   append NLary [nx,-nz,ny]&lt;br /&gt;
   append UVary [vu,vv,0]&lt;br /&gt;
  )&lt;br /&gt;
  return #(VTary,NLary,UVary)&lt;br /&gt;
)&lt;br /&gt;
fn readINDX f = (&lt;br /&gt;
  FCary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  sizeElement = datasize / numIndex&lt;br /&gt;
  for i = 1 to (numIndex/3) do (&lt;br /&gt;
   if sizeElement == 2 then (&lt;br /&gt;
    f1 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f2 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f3 = 1 + (readshort f #unsigned)&lt;br /&gt;
   ) else if sizeElement == 4 then (&lt;br /&gt;
    f1 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f2 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f3 = 1 + (readlong f #unsigned)&lt;br /&gt;
   ) else messagebox &amp;quot;error in face index&amp;quot;&lt;br /&gt;
   append FCary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return FCary&lt;br /&gt;
)&lt;br /&gt;
fn buildmesh2 VTary FCary NLary UVary = (&lt;br /&gt;
  msh = mesh vertices:VTary faces:FCary&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary.count do setTVFace msh j FCary[j]&lt;br /&gt;
  for j = 1 to NLary.count do setNormal msh j NLary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
--GUI--&lt;br /&gt;
spinner fscale &amp;quot;Scale : &amp;quot; fieldwidth:60 range:[0.001, 1000, 1]&lt;br /&gt;
button impMGN &amp;quot;Import   MGN / MSH&amp;quot; width:150 Height:25 align:#center&lt;br /&gt;
label lbl1 &amp;quot;&amp;quot;&lt;br /&gt;
label lbl2 &amp;quot;by Fatduck&amp;quot; align:#right&lt;br /&gt;
&lt;br /&gt;
on impMGN pressed do (&lt;br /&gt;
  fname = getOpenFileName caption:&amp;quot;Select Star Wars Galaxies Model file&amp;quot; types:&amp;quot;MGN File (*.mgn)|*.mgn|MSH File (*.msh)|*.msh|All Files (*.*)|*.*|&amp;quot;&lt;br /&gt;
  if fname != undefined then (&lt;br /&gt;
   f = fopen fname &amp;quot;rb&amp;quot;&lt;br /&gt;
   fseek f 0 #seek_end&lt;br /&gt;
   ofsEOF = ftell f&lt;br /&gt;
   fseek f 0 #seek_set&lt;br /&gt;
   VTary = #()&lt;br /&gt;
   UVary = #()&lt;br /&gt;
   NLary = #()&lt;br /&gt;
   FCary = #()&lt;br /&gt;
   PIDXary = #()&lt;br /&gt;
   NIDXary = #()&lt;br /&gt;
   meshFlag = undefined&lt;br /&gt;
   infoFlag = undefined&lt;br /&gt;
   mshVert = 0&lt;br /&gt;
   do (&lt;br /&gt;
    header = readlong f&lt;br /&gt;
    case header of (&lt;br /&gt;
     0x58444E49:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readINDX f&lt;br /&gt;
        msh = buildmesh2 VTary FCary NLary UVary&lt;br /&gt;
       )&lt;br /&gt;
     0x41544144:&lt;br /&gt;
       (&lt;br /&gt;
        rslt = readDATA f mshVert fscale.value&lt;br /&gt;
        if rslt != undefined then (&lt;br /&gt;
         VTary = rslt[1]&lt;br /&gt;
         NLary = rslt[2]&lt;br /&gt;
         UVary = rslt[3]&lt;br /&gt;
        )&lt;br /&gt;
        infoFlag = false&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F46:&lt;br /&gt;
       (&lt;br /&gt;
        flg = readFORM f&lt;br /&gt;
        if flg == 0x474D4B53 then meshFlag = true --SKMG&lt;br /&gt;
        else if flg == 0x20544C42 then meshFlag = false --BLT&lt;br /&gt;
        if flg == 0x41585456 then infoFlag = true --VTXA&lt;br /&gt;
       )   &lt;br /&gt;
     0x4F464E49:&lt;br /&gt;
       (&lt;br /&gt;
        if infoFlag == true then (&lt;br /&gt;
         fseek f 8 #seek_cur&lt;br /&gt;
         mshVert = readlong f&lt;br /&gt;
        ) else fseek f (readInvLong f) #seek_cur&lt;br /&gt;
       ) &lt;br /&gt;
     0x4E534F50:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then VTary = readPoint3 f fscale.value&lt;br /&gt;
        else readPoint3 f fscale.value&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F4E:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then NLary = readPoint3 f 1&lt;br /&gt;
        else readPoint3 f 1&lt;br /&gt;
       )&lt;br /&gt;
     0x58444950: PIDXary = readPIDX f&lt;br /&gt;
     0x5844494E: NIDXary = readNIDX f&lt;br /&gt;
     0x44534354: UVary = readTCSD f&lt;br /&gt;
     0x4C54494F:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readOITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     0x204C5449:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     default:&lt;br /&gt;
       (&lt;br /&gt;
        datasize = readInvLong f&lt;br /&gt;
        fseek f datasize #seek_cur&lt;br /&gt;
       )&lt;br /&gt;
    )--end case&lt;br /&gt;
   ) while (ftell f) != ofsEOF&lt;br /&gt;
   fclose f&lt;br /&gt;
  )--end if fname&lt;br /&gt;
)--end on impMGN&lt;br /&gt;
&lt;br /&gt;
)--end rollout SWG_roll&lt;br /&gt;
&lt;br /&gt;
if Fatduck_SWG != undefined then closeRolloutFloater Fatduck_SWG&lt;br /&gt;
Fatduck_SWG = newRolloutFloater &amp;quot;Star Wars Galaxies&amp;quot; 200 175 10 70&lt;br /&gt;
addRollout SWG_roll Fatduck_SWG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==MKR==&lt;br /&gt;
&lt;br /&gt;
Marker File&lt;br /&gt;
&lt;br /&gt;
==MP3==&lt;br /&gt;
&lt;br /&gt;
MP3 Audio File&lt;br /&gt;
&lt;br /&gt;
==MSH - '''mesh'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|MSH ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rollout SWG_roll &amp;quot;Model importer&amp;quot; (&lt;br /&gt;
fn readInvLong f = (&lt;br /&gt;
  t1 = readbyte f #unsigned&lt;br /&gt;
  t2 = readbyte f #unsigned&lt;br /&gt;
  t3 = readbyte f #unsigned&lt;br /&gt;
  t4 = readbyte f #unsigned&lt;br /&gt;
  return (t4+t3*0x100+t2*0x10000+t1*0x1000000)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readFORM f = (&lt;br /&gt;
  ofsForm = readInvLong f&lt;br /&gt;
  hdr = readlong f&lt;br /&gt;
  return hdr&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPoint3 f sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT3Ary = #()&lt;br /&gt;
  testbyte = readlong f&lt;br /&gt;
  fseek f -4 #seek_cur&lt;br /&gt;
  if (testbyte&amp;lt;65536)AND(testbyte&amp;gt;=0) then (&lt;br /&gt;
   for i = 1 to (datasize/16) do (&lt;br /&gt;
    idx = 1 + (readlong f)&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    PT3Ary[idx] = [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
   for i = 1 to PT3Ary.count do&lt;br /&gt;
    if PT3Ary[i] == undefined then PT3Ary[i] = [0,0,0]&lt;br /&gt;
  ) else (&lt;br /&gt;
   for i = 1 to (datasize/12) do (&lt;br /&gt;
    vx = (readfloat f) * sc&lt;br /&gt;
    vy = (readfloat f) * sc&lt;br /&gt;
    vz = (readfloat f) * sc&lt;br /&gt;
    append PT3Ary [vx,-vz,vy]   &lt;br /&gt;
   )&lt;br /&gt;
  )&lt;br /&gt;
  return PT3Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readTCSD f = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  PT2Ary = #()&lt;br /&gt;
  for i = 1 to (datasize/8) do (&lt;br /&gt;
   vx = readfloat f&lt;br /&gt;
   vy = 1- (readfloat f)&lt;br /&gt;
   append PT2Ary [vx,vy,0]   &lt;br /&gt;
  )&lt;br /&gt;
  return PT2Ary&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readPIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  for i = 1 to numIndex do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readNIDX f = (&lt;br /&gt;
  IndexAry = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  for i = 1 to (datasize/4) do append IndexAry (1+(readlong f))&lt;br /&gt;
  return IndexAry&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readOITL f = (&lt;br /&gt;
  IdxAry = #()&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   append IdxAry (1+(readshort f))&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(IdxAry,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn readITL f = (&lt;br /&gt;
  Int3Ary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numdata = readlong f&lt;br /&gt;
  for i = 1 to numdata do (&lt;br /&gt;
   f1 = 1 + (readlong f)&lt;br /&gt;
   f2 = 1 + (readlong f)&lt;br /&gt;
   f3 = 1 + (readlong f)&lt;br /&gt;
   append Int3Ary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return #(undefined,Int3Ary)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
fn buildmesh VTary FCary NLary UVary PIDXary NIDXary = (&lt;br /&gt;
  for i = 1 to PIDXary.count do PIDXary[i] = VTary[(PIDXary[i])]&lt;br /&gt;
  for i = 1 to NIDXary.count do NIDXary[i] = NLary[(NIDXary[i])]&lt;br /&gt;
  if FCary[1] == undefined then  msh = mesh vertices:PIDXary faces:FCary[2]&lt;br /&gt;
  else msh = mesh vertices:PIDXary faces:FCary[2] materialIDs:FCary[1]&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary[2].count do setTVFace msh j FCary[2][j]&lt;br /&gt;
  for j = 1 to NIDXary.count do setNormal msh j NIDXary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
  ----------------------------------------------------------------------------&lt;br /&gt;
fn readDATA f numData sc = (&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  if datasize &amp;lt; 8 then (&lt;br /&gt;
   fseek f datasize #seek_cur&lt;br /&gt;
   return undefined&lt;br /&gt;
  )&lt;br /&gt;
  VTary = #()&lt;br /&gt;
  NLary = #()&lt;br /&gt;
  UVary = #()&lt;br /&gt;
  sizeElement = datasize/numData&lt;br /&gt;
  --format &amp;quot;V:% @[%]\n&amp;quot; sizeElement (ftell f)&lt;br /&gt;
  for i = 1 to numData do (&lt;br /&gt;
   vx = (readfloat f)*sc;    vy = (readfloat f)*sc;    vz = (readfloat f)*sc&lt;br /&gt;
   nx = readfloat f;    ny = readfloat f;    nz = readfloat f&lt;br /&gt;
   --&lt;br /&gt;
   byteRead = 32&lt;br /&gt;
   case sizeElement of (&lt;br /&gt;
    36: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    52: ( readlong f ; byteRead = 36 )&lt;br /&gt;
    56: ( fseek f 16 #seek_cur ; byteRead = 48 )&lt;br /&gt;
    default: byteRead = 32&lt;br /&gt;
   )&lt;br /&gt;
   vu = readfloat f;    vv = 1-(readfloat f)&lt;br /&gt;
   fseek f (sizeElement-byteRead) #seek_cur&lt;br /&gt;
   --&lt;br /&gt;
   append VTary [vx,-vz,vy]&lt;br /&gt;
   append NLary [nx,-nz,ny]&lt;br /&gt;
   append UVary [vu,vv,0]&lt;br /&gt;
  )&lt;br /&gt;
  return #(VTary,NLary,UVary)&lt;br /&gt;
)&lt;br /&gt;
fn readINDX f = (&lt;br /&gt;
  FCary = #()&lt;br /&gt;
  datasize = readInvLong f&lt;br /&gt;
  numIndex = readlong f&lt;br /&gt;
  sizeElement = datasize / numIndex&lt;br /&gt;
  for i = 1 to (numIndex/3) do (&lt;br /&gt;
   if sizeElement == 2 then (&lt;br /&gt;
    f1 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f2 = 1 + (readshort f #unsigned)&lt;br /&gt;
    f3 = 1 + (readshort f #unsigned)&lt;br /&gt;
   ) else if sizeElement == 4 then (&lt;br /&gt;
    f1 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f2 = 1 + (readlong f #unsigned)&lt;br /&gt;
    f3 = 1 + (readlong f #unsigned)&lt;br /&gt;
   ) else messagebox &amp;quot;error in face index&amp;quot;&lt;br /&gt;
   append FCary [f1,f2,f3]&lt;br /&gt;
  )&lt;br /&gt;
  return FCary&lt;br /&gt;
)&lt;br /&gt;
fn buildmesh2 VTary FCary NLary UVary = (&lt;br /&gt;
  msh = mesh vertices:VTary faces:FCary&lt;br /&gt;
  msh.numTVerts = UVary.count&lt;br /&gt;
  buildTVFaces msh&lt;br /&gt;
  for j = 1 to UVary.count do setTVert  msh j UVary[j]&lt;br /&gt;
  for j = 1 to FCary.count do setTVFace msh j FCary[j]&lt;br /&gt;
  for j = 1 to NLary.count do setNormal msh j NLary[j]&lt;br /&gt;
  return msh&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
--GUI--&lt;br /&gt;
spinner fscale &amp;quot;Scale : &amp;quot; fieldwidth:60 range:[0.001, 1000, 1]&lt;br /&gt;
button impMGN &amp;quot;Import   MGN / MSH&amp;quot; width:150 Height:25 align:#center&lt;br /&gt;
label lbl1 &amp;quot;&amp;quot;&lt;br /&gt;
label lbl2 &amp;quot;by Fatduck&amp;quot; align:#right&lt;br /&gt;
&lt;br /&gt;
on impMGN pressed do (&lt;br /&gt;
  fname = getOpenFileName caption:&amp;quot;Select Star Wars Galaxies Model file&amp;quot; types:&amp;quot;MGN File (*.mgn)|*.mgn|MSH File (*.msh)|*.msh|All Files (*.*)|*.*|&amp;quot;&lt;br /&gt;
  if fname != undefined then (&lt;br /&gt;
   f = fopen fname &amp;quot;rb&amp;quot;&lt;br /&gt;
   fseek f 0 #seek_end&lt;br /&gt;
   ofsEOF = ftell f&lt;br /&gt;
   fseek f 0 #seek_set&lt;br /&gt;
   VTary = #()&lt;br /&gt;
   UVary = #()&lt;br /&gt;
   NLary = #()&lt;br /&gt;
   FCary = #()&lt;br /&gt;
   PIDXary = #()&lt;br /&gt;
   NIDXary = #()&lt;br /&gt;
   meshFlag = undefined&lt;br /&gt;
   infoFlag = undefined&lt;br /&gt;
   mshVert = 0&lt;br /&gt;
   do (&lt;br /&gt;
    header = readlong f&lt;br /&gt;
    case header of (&lt;br /&gt;
     0x58444E49:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readINDX f&lt;br /&gt;
        msh = buildmesh2 VTary FCary NLary UVary&lt;br /&gt;
       )&lt;br /&gt;
     0x41544144:&lt;br /&gt;
       (&lt;br /&gt;
        rslt = readDATA f mshVert fscale.value&lt;br /&gt;
        if rslt != undefined then (&lt;br /&gt;
         VTary = rslt[1]&lt;br /&gt;
         NLary = rslt[2]&lt;br /&gt;
         UVary = rslt[3]&lt;br /&gt;
        )&lt;br /&gt;
        infoFlag = false&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F46:&lt;br /&gt;
       (&lt;br /&gt;
        flg = readFORM f&lt;br /&gt;
        if flg == 0x474D4B53 then meshFlag = true --SKMG&lt;br /&gt;
        else if flg == 0x20544C42 then meshFlag = false --BLT&lt;br /&gt;
        if flg == 0x41585456 then infoFlag = true --VTXA&lt;br /&gt;
       )   &lt;br /&gt;
     0x4F464E49:&lt;br /&gt;
       (&lt;br /&gt;
        if infoFlag == true then (&lt;br /&gt;
         fseek f 8 #seek_cur&lt;br /&gt;
         mshVert = readlong f&lt;br /&gt;
        ) else fseek f (readInvLong f) #seek_cur&lt;br /&gt;
       ) &lt;br /&gt;
     0x4E534F50:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then VTary = readPoint3 f fscale.value&lt;br /&gt;
        else readPoint3 f fscale.value&lt;br /&gt;
       )&lt;br /&gt;
     0x4D524F4E:&lt;br /&gt;
       (&lt;br /&gt;
        if meshFlag == true then NLary = readPoint3 f 1&lt;br /&gt;
        else readPoint3 f 1&lt;br /&gt;
       )&lt;br /&gt;
     0x58444950: PIDXary = readPIDX f&lt;br /&gt;
     0x5844494E: NIDXary = readNIDX f&lt;br /&gt;
     0x44534354: UVary = readTCSD f&lt;br /&gt;
     0x4C54494F:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readOITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     0x204C5449:&lt;br /&gt;
       (&lt;br /&gt;
        FCary = readITL f&lt;br /&gt;
        msh = buildmesh VTary FCary NLary UVary PIDXary NIDXary&lt;br /&gt;
       )&lt;br /&gt;
     default:&lt;br /&gt;
       (&lt;br /&gt;
        datasize = readInvLong f&lt;br /&gt;
        fseek f datasize #seek_cur&lt;br /&gt;
       )&lt;br /&gt;
    )--end case&lt;br /&gt;
   ) while (ftell f) != ofsEOF&lt;br /&gt;
   fclose f&lt;br /&gt;
  )--end if fname&lt;br /&gt;
)--end on impMGN&lt;br /&gt;
&lt;br /&gt;
)--end rollout SWG_roll&lt;br /&gt;
&lt;br /&gt;
if Fatduck_SWG != undefined then closeRolloutFloater Fatduck_SWG&lt;br /&gt;
Fatduck_SWG = newRolloutFloater &amp;quot;Star Wars Galaxies&amp;quot; 200 175 10 70&lt;br /&gt;
addRollout SWG_roll Fatduck_SWG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==PAL - '''palette'''==&lt;br /&gt;
&lt;br /&gt;
Palette File&lt;br /&gt;
&lt;br /&gt;
PAL Editor can be downloaded here -&amp;gt; http://mods.mandalorians.de/system/infusions/pro_download_panel/download.php?did=16&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|PAL ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
52 49 46 46  // RIFF&lt;br /&gt;
&lt;br /&gt;
10 01 00 00  // size (int 32)&lt;br /&gt;
&lt;br /&gt;
50 40 4c 20  // Pal&lt;br /&gt;
&lt;br /&gt;
64 61 74 61  // Data&lt;br /&gt;
&lt;br /&gt;
40 00 00 00  // size (int 32)&lt;br /&gt;
&lt;br /&gt;
// Here starts the color pallate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
00 03  // uint16 version&lt;br /&gt;
&lt;br /&gt;
40 00  // uint16 pallette colors count(64)&lt;br /&gt;
&lt;br /&gt;
// This is were the swg pallet editor start's showing were the colors are&lt;br /&gt;
&lt;br /&gt;
cc cc cc 00   // uint32 (RGBA)&lt;br /&gt;
&lt;br /&gt;
b7 b7 b7 00 //&lt;br /&gt;
&lt;br /&gt;
a3 a3 a3 00  //&lt;br /&gt;
&lt;br /&gt;
8e 8e 8e 00  //&lt;br /&gt;
&lt;br /&gt;
92 23 23 00  //&lt;br /&gt;
&lt;br /&gt;
84 1f 1f 00  //&lt;br /&gt;
&lt;br /&gt;
77 1b 1b 00 //&lt;br /&gt;
&lt;br /&gt;
69 17 17 00 //&lt;br /&gt;
&lt;br /&gt;
65 61 82 00 //&lt;br /&gt;
&lt;br /&gt;
54 50 85 00 //&lt;br /&gt;
&lt;br /&gt;
44 3e 89 00 //&lt;br /&gt;
&lt;br /&gt;
33 2d 8c 00  //&lt;br /&gt;
&lt;br /&gt;
d4 d6 47 00 //&lt;br /&gt;
&lt;br /&gt;
b8 ba 36 00  //&lt;br /&gt;
&lt;br /&gt;
9d 9f 26 00  //&lt;br /&gt;
&lt;br /&gt;
81 83 15 00  //&lt;br /&gt;
&lt;br /&gt;
58 a5 64 00  //&lt;br /&gt;
&lt;br /&gt;
45 91 51 00  //&lt;br /&gt;
&lt;br /&gt;
31 7c 3d 00  //&lt;br /&gt;
&lt;br /&gt;
df b4 3e 00 //&lt;br /&gt;
&lt;br /&gt;
b9 94 2f 00  //&lt;br /&gt;
&lt;br /&gt;
92 73 1f 00 //&lt;br /&gt;
&lt;br /&gt;
6c 53 10 00  //&lt;br /&gt;
&lt;br /&gt;
71 a5 a5 00  //&lt;br /&gt;
&lt;br /&gt;
5b 95 95 00  //&lt;br /&gt;
&lt;br /&gt;
44 86 86 00  //&lt;br /&gt;
&lt;br /&gt;
2e 76 76 00  //&lt;br /&gt;
&lt;br /&gt;
75 61 76 00  //&lt;br /&gt;
&lt;br /&gt;
72 4d 78 00 //&lt;br /&gt;
&lt;br /&gt;
6e 38 7b 00  //&lt;br /&gt;
&lt;br /&gt;
6b 24 7d 00 //&lt;br /&gt;
&lt;br /&gt;
7d b0 c0 00 //&lt;br /&gt;
&lt;br /&gt;
69 95 a3 00 //&lt;br /&gt;
&lt;br /&gt;
54 7b 87 00 //&lt;br /&gt;
&lt;br /&gt;
40 60 6a 00 //&lt;br /&gt;
&lt;br /&gt;
cd 7a 37 00  //&lt;br /&gt;
&lt;br /&gt;
a9 64 2c 00 //&lt;br /&gt;
&lt;br /&gt;
84 4d 21 00  //&lt;br /&gt;
&lt;br /&gt;
60 37 16 00  //&lt;br /&gt;
&lt;br /&gt;
d4 83 83 00 //&lt;br /&gt;
&lt;br /&gt;
a5 5e 5e 00  //&lt;br /&gt;
&lt;br /&gt;
87 42 42 00  //&lt;br /&gt;
&lt;br /&gt;
5f 2d 2d 00  //&lt;br /&gt;
&lt;br /&gt;
93 73 1b 00 //&lt;br /&gt;
&lt;br /&gt;
7c 60 18 00  //&lt;br /&gt;
&lt;br /&gt;
5a 45 0e 00  //&lt;br /&gt;
&lt;br /&gt;
dd d8 c0 00 //&lt;br /&gt;
&lt;br /&gt;
bd b9 a4 00  //&lt;br /&gt;
&lt;br /&gt;
9e 9a 88 00  //&lt;br /&gt;
&lt;br /&gt;
7e 7b 6c 00  //&lt;br /&gt;
&lt;br /&gt;
91 6d 6d 00  //&lt;br /&gt;
&lt;br /&gt;
76 59 59 00  //&lt;br /&gt;
&lt;br /&gt;
5c 44 44 00 //&lt;br /&gt;
&lt;br /&gt;
41 30 30 00  //&lt;br /&gt;
&lt;br /&gt;
75 61 76 00  //&lt;br /&gt;
&lt;br /&gt;
6b 4d 6c 00  //&lt;br /&gt;
&lt;br /&gt;
60 39 62 00  //&lt;br /&gt;
&lt;br /&gt;
56 25 58 00 //&lt;br /&gt;
&lt;br /&gt;
a6 c1 71 00  //&lt;br /&gt;
&lt;br /&gt;
8e a6 61 00  //&lt;br /&gt;
&lt;br /&gt;
77 8a 50 00  //&lt;br /&gt;
&lt;br /&gt;
5f 6f 40 00  //&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==PLN==&lt;br /&gt;
&lt;br /&gt;
Planet File&lt;br /&gt;
&lt;br /&gt;
==POB==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46 4f 52 4d             // FORM&lt;br /&gt;
00 00 02 d3             // 723 Form Count&lt;br /&gt;
43 45 4c 4c 46 4f 52 4d // CELLFORM&lt;br /&gt;
00 00 02 c7             // 711 count to end of form&lt;br /&gt;
30 30 30 35 44 41 54 41 // 0005DATA&lt;br /&gt;
00 00 00 a9 &lt;br /&gt;
04 00 00 00 &lt;br /&gt;
00 &lt;br /&gt;
6d 61 69 6e 68 61 6e 67 61 72 // mainhangar&lt;br /&gt;
00&lt;br /&gt;
61 70 70 65 61 72 61 6e 63 65 2f 6d 65 73 68 2f  // appearance/mesh/&lt;br /&gt;
74 68 6d 5f 73 70 63 5f 73 74 61 72 5f 64 65 73  // thm_spc_star_des&lt;br /&gt;
74 72 6f 79 65 72 5f 73 30 31 5f 72 31 5f 6d 61  // troyer_s01_r1_ma&lt;br /&gt;
69 6e 68 61 6e 67 61 72 5f 6d 65 73 68 5f 72 31  // inhangar_mesh_r1&lt;br /&gt;
2e 6d 73 68                                      // .msh&lt;br /&gt;
00 01 &lt;br /&gt;
61 70 70 65 61 72 61 6e 63 65                    // appearance&lt;br /&gt;
2f 63 6f 6c 6c 69 73 69 6f 6e 2f 74 68 6d 5f 73  // /collision/thm_s&lt;br /&gt;
70 63 5f 73 74 61 72 5f 64 65 73 74 72 6f 79 65  // pc_star_destroye&lt;br /&gt;
72 5f 73 30 31 5f 72 31 5f 6d 61 69 6e 68 61 6e  // r_s01_r1_mainhan&lt;br /&gt;
67 61 72 5f 63 6f 6c 6c 69 73 69 6f 6e 5f 66 6c  // gar_collision_fl&lt;br /&gt;
6f 6f 72 30 2e 66 6c 72                          // oor0.flr&lt;br /&gt;
00 &lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 04 &lt;br /&gt;
4e 55 4c 4c 46 4f 52 4d    // NULLFORM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 02 00 00 &lt;br /&gt;
00 01 0c 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
46 4f 52 4d // FROM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 03 00 00 &lt;br /&gt;
00 01 0a 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 04 00 00 &lt;br /&gt;
00 01 09 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 &lt;br /&gt;
48 50 52 54 4c 30 30 30 34 // HPRTL0004&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
01 05 00 00 &lt;br /&gt;
00 01 02 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 80 3f // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
4c 47 48 54               // LGHT&lt;br /&gt;
00 00 00 be  // 190&lt;br /&gt;
02 00 00 00 &lt;br /&gt;
01 00 00 00 &lt;br /&gt;
00 &lt;br /&gt;
01 45 b3 3f   // 1.40   R Lighting Color Like sun light but only shows on toon&lt;br /&gt;
0a d7 b3 3f   // 1.40   B Lighting Color&lt;br /&gt;
fe cf a5 3f   // 1.30   G Lighting Color&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
01 45 b3 3f   // 1.40   R Lighting Color&lt;br /&gt;
0a d7 b3 3f   // 1.40   B Lighting Color&lt;br /&gt;
fe cf a5 3f   // 1.30   G Lighting Color&lt;br /&gt;
00 00 80 3f   // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 80 &lt;br /&gt;
00 00 00 80 &lt;br /&gt;
00 f6 f3 be  // -0.48&lt;br /&gt;
11 12 61 3f  //  0.88&lt;br /&gt;
78 a0 51 43  //  209.63&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
11 12 61 bf  //  0.88&lt;br /&gt;
00 f6 f3 be  // -0.48&lt;br /&gt;
67 08 a8 c2  // -84.02&lt;br /&gt;
00 00 80 3f  //  1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
01 00 00 00 &lt;br /&gt;
00 &lt;br /&gt;
d5 3e 97 3f  // 1.18   R Lighting Color Like sun light but only shows on toon&lt;br /&gt;
9e fb ad 3f  // 1.36   B Lighting Color&lt;br /&gt;
0a d7 b3 3f  // 1.40   G Lighting Color&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
d5 3e 97 3f  // 1.18   R Lighting Color&lt;br /&gt;
9e fb ad 3f  // 1.36   B Lighting Color&lt;br /&gt;
0a d7 b3 3f  // 1.40   G Lighting Color&lt;br /&gt;
00 00 80 3f  // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00 80 &lt;br /&gt;
00 00 00 00 &lt;br /&gt;
c2 19 f4 3e  // 0.48&lt;br /&gt;
60 08 61 3f  // 0.88&lt;br /&gt;
78 a0 51 43  // 209.63&lt;br /&gt;
00 00 00 00&lt;br /&gt;
60 08 61 bf  // -0.88&lt;br /&gt;
c2 19 f4 3e  //  0.48&lt;br /&gt;
67 43 a3 c2  // -81.63&lt;br /&gt;
00 00 80 3f  // 1&lt;br /&gt;
00 00 00 00 &lt;br /&gt;
00 00 00                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PRT==&lt;br /&gt;
&lt;br /&gt;
Particle File&lt;br /&gt;
&lt;br /&gt;
==PSH==&lt;br /&gt;
&lt;br /&gt;
Pixel Shader? File&lt;br /&gt;
&lt;br /&gt;
==PST==&lt;br /&gt;
&lt;br /&gt;
Playback File&lt;br /&gt;
&lt;br /&gt;
==[[TRE_QSTFileType|QST - '''QueST files''']]==&lt;br /&gt;
QueST files are XML files describing journal quests. [[TRE_QSTFileType|Let's examine them here.]]&lt;br /&gt;
&lt;br /&gt;
==SAT==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SAT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'WSNP' FORM (ws file)&lt;br /&gt;
&lt;br /&gt;
- FORM&lt;br /&gt;
- NODS&lt;br /&gt;
- size&lt;br /&gt;
- offset to stringtable&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 E4     //formsize&lt;br /&gt;
&lt;br /&gt;
53 4D 41 54     //SMAT&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 D8     //formsize &lt;br /&gt;
 &lt;br /&gt;
30 30 30 30     //0000&lt;br /&gt;
&lt;br /&gt;
44 41 54 41     //DATA&lt;br /&gt;
&lt;br /&gt;
00 00 00 34     //datasize&lt;br /&gt;
&lt;br /&gt;
01 A7 15 00     //id&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //parentid&lt;br /&gt;
&lt;br /&gt;
70 00 00 00     //strtable index&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //ox&lt;br /&gt;
&lt;br /&gt;
D4 15 1E BE     //oY&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //oz&lt;br /&gt;
&lt;br /&gt;
51 EE 7C 3F     //ow&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //scale??&lt;br /&gt;
&lt;br /&gt;
38 CA A0 45     //x&lt;br /&gt;
&lt;br /&gt;
00 00 AF 43     //y&lt;br /&gt;
&lt;br /&gt;
EE DE B2 C4     //z&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
00 00 00 44     //type?&lt;br /&gt;
&lt;br /&gt;
7B D6 12 E7     //?? &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==SFK==&lt;br /&gt;
&lt;br /&gt;
SFK? File&lt;br /&gt;
&lt;br /&gt;
==SFP==&lt;br /&gt;
&lt;br /&gt;
This file contains the info on building Footprints&lt;br /&gt;
the below breakdown is from shared_player_house_tatooine_small_style_01.sfp a &lt;br /&gt;
Small Tatooine style 1 house.  Still needs further breakdown!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46 4f 52 4d // FORM&lt;br /&gt;
00 00 00 48 &lt;br /&gt;
46 4f 4f 54 46 4f 52 4d // FOOTFORM&lt;br /&gt;
00 00 00 3c &lt;br /&gt;
30 30 30 30 &lt;br /&gt;
49 4e 46 4f // INFO&lt;br /&gt;
00 00 00 18&lt;br /&gt;
03 00 00 00 &lt;br /&gt;
04 00 00 00 &lt;br /&gt;
01 00 00 00 &lt;br /&gt;
01 00 00 00&lt;br /&gt;
00 00 00 41 &lt;br /&gt;
00 00 00 41 &lt;br /&gt;
50 52 4e 54 // PRNT&lt;br /&gt;
00 00 00 10 &lt;br /&gt;
48 48 48 00 &lt;br /&gt;
46 46 46 00 &lt;br /&gt;
46 46 46 00 &lt;br /&gt;
46 46 46 00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SHT - '''shader'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SHT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==SKT==&lt;br /&gt;
&lt;br /&gt;
Skeleton File&lt;br /&gt;
&lt;br /&gt;
==SND==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SND ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
46 4f 52 4d              // FORM (Element)&lt;br /&gt;
&lt;br /&gt;
00 00 00 a7              // Length Of Data that Follows (Count starts after this byte) (a7 = 167)&lt;br /&gt;
&lt;br /&gt;
53 44 32 44              // SD2D (Element)&lt;br /&gt;
&lt;br /&gt;
30 30 30 33              // 0003 (Version ?)&lt;br /&gt;
&lt;br /&gt;
00 00 00 9b              // string length&lt;br /&gt;
&lt;br /&gt;
73 61 6d 70&lt;br /&gt;
6c 65 2f 61&lt;br /&gt;
6d 62 5f 63&lt;br /&gt;
6c 6f 6e 69&lt;br /&gt;
6e 67 5f 66&lt;br /&gt;
61 63 69 6c&lt;br /&gt;
69 74 79 5f&lt;br /&gt;
69 6e 74 5f&lt;br /&gt;
6c 70 2e 77&lt;br /&gt;
61 76 00 00              // sample/amb_cloning_facility_int_lp.wav&lt;br /&gt;
&lt;br /&gt;
00 00 00 00              // ?&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 &lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
00 00 &lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192) (Again?)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
FF FF FF FF&lt;br /&gt;
FF FF FF FF              // ?&lt;br /&gt;
&lt;br /&gt;
00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00&lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192) (Again?)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
00 00&lt;br /&gt;
&lt;br /&gt;
C0                       // Bitrate (192) (Again?)&lt;br /&gt;
&lt;br /&gt;
3F                       // Volume ?&lt;br /&gt;
&lt;br /&gt;
00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 01&lt;br /&gt;
00 00 00 01&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 80 3F 00&lt;br /&gt;
00 80 3F 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 00&lt;br /&gt;
&lt;br /&gt;
00 00 00 00&lt;br /&gt;
00 00 00 02&lt;br /&gt;
00 00 00 CD&lt;br /&gt;
CC CC 3D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==SPR==&lt;br /&gt;
&lt;br /&gt;
Sprite File&lt;br /&gt;
&lt;br /&gt;
==SSA==&lt;br /&gt;
&lt;br /&gt;
SSA? File&lt;br /&gt;
&lt;br /&gt;
==[[TRE_STFFileType|STF - '''Strings Table File (Language)''']]==&lt;br /&gt;
{{Box_TREformats|STF ''format''|&lt;br /&gt;
It contains all the game's strings. During network communications the strings are identificated with: filename without extension + code + ansi string id.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Header:&lt;br /&gt;
[int]      // STF file type header id (sequence: 0xCD 0xAB 0x00 0x00, value: 0x0000ABCD = 43981)&lt;br /&gt;
[byte]     // useless? flag (might be a boolean, seen so far: 0x01 and 0x00)&lt;br /&gt;
[int]      // next free index in file to add an item, always &amp;gt; items count (useless for us)&lt;br /&gt;
[int]      // items count&lt;br /&gt;
&lt;br /&gt;
Then items list, for each:&lt;br /&gt;
[int]      // item index in the file (eg: 1, 2, 9, 3, 7, ...) &lt;br /&gt;
[int]      // code (gesture?)&lt;br /&gt;
[int]      // unicode digits count of the sentence (eg: 11)&lt;br /&gt;
[u_string] // 2 bytes per char (eg: &amp;quot;hello world&amp;quot; is 11 digits long, 22 bytes total)&lt;br /&gt;
&lt;br /&gt;
Then item's string ids, for each:&lt;br /&gt;
[int]      // item index in the file matching one in previous list (eg: 1, 2, 9, 3, 7, ...)&lt;br /&gt;
[int]      // ascii digits count of the string id (eg: 12)&lt;br /&gt;
[a_string] // 1 byte per char (eg: &amp;quot;basic_answer&amp;quot; is 12 digits long, 12 bytes total)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}Understood at 80%.&lt;br /&gt;
&lt;br /&gt;
==SWH==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|SWH''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==TGA - '''Targa Texture'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TGA ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Terrain files Are divided in 2 main sections. The terrain generator and the maps&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[TRN (FileFormat)|TRN - '''Terrain File''']]==&lt;br /&gt;
[[Image:Trn layers.jpg]]&lt;br /&gt;
{{Box_TREformats|TRN ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==TRT - '''Texture Renderer File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TRT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==TRT - '''Texture Renderer File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TRT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==TXT - '''Text File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|TXT ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==UI - '''User Interface File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|UI ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==VSH - '''Vertex Shader Script'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|VSH ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Shader City - Possible App to open the Vertex Shader Scripts)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==WAV - '''WAV Audio File'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|WAV ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==WS - '''world structures'''==&lt;br /&gt;
&lt;br /&gt;
{{Box_TREformats|WS ''format''|&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
'WSNP' FORM (ws file)&lt;br /&gt;
&lt;br /&gt;
- FORM&lt;br /&gt;
- NODS&lt;br /&gt;
- size&lt;br /&gt;
- offset to stringtable&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 E4     //formsize&lt;br /&gt;
&lt;br /&gt;
4E 4F 44 45     //NODE&lt;br /&gt;
&lt;br /&gt;
46 4F 52 4D     //FORM&lt;br /&gt;
&lt;br /&gt;
00 00 04 D8     //formsize &lt;br /&gt;
 &lt;br /&gt;
30 30 30 30     //0000&lt;br /&gt;
&lt;br /&gt;
44 41 54 41     //DATA&lt;br /&gt;
&lt;br /&gt;
00 00 00 34     //datasize&lt;br /&gt;
&lt;br /&gt;
01 A7 15 00     //id&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //parentid&lt;br /&gt;
&lt;br /&gt;
70 00 00 00     //strtable index&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //ox&lt;br /&gt;
&lt;br /&gt;
D4 15 1E BE     //oY&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //oz&lt;br /&gt;
&lt;br /&gt;
51 EE 7C 3F     //ow&lt;br /&gt;
&lt;br /&gt;
00 00 00 00     //scale??&lt;br /&gt;
&lt;br /&gt;
38 CA A0 45     //x&lt;br /&gt;
&lt;br /&gt;
00 00 AF 43     //y&lt;br /&gt;
&lt;br /&gt;
EE DE B2 C4     //z&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
00 00 00 44     //type?&lt;br /&gt;
&lt;br /&gt;
7B D6 12 E7     //?? &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
World Structures&lt;br /&gt;
&lt;br /&gt;
There is one .ws file per planet (none for space that I have found yet although it would seem applicable), containing a list of items found outdoors on each planets.  This includes buildings, terminals, streetlights, fog/special effects, ruins, and so forth.  Trees/plants/rocks are not included unless they are somehow unique or special.&lt;/div&gt;</summary>
		<author><name>Lloydyboy</name></author>	</entry>

	</feed>