<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://www.grandtheftwiki.com/SCO/history?feed=atom</id>
	<title>SCO - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.grandtheftwiki.com/SCO/history?feed=atom"/>
	<link rel="alternate" type="text/html" href="https://www.grandtheftwiki.com/SCO/history"/>
	<updated>2026-06-15T06:39:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220897&amp;oldid=prev</id>
		<title>A-Dust at 01:03, 22 September 2010</title>
		<link rel="alternate" type="text/html" href="https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220897&amp;oldid=prev"/>
		<updated>2010-09-22T01:03:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:03, 22 September 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{toc}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{toc}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;SCO&#039;&#039;&#039; files contain [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GTA 4&lt;/del&gt;]]&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;s &lt;/del&gt;game scripts. Its new format replaces old [[SCM|scm]] one.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;SCO&#039;&#039;&#039; files contain [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Grand Theft Auto IV|Grand Theft Auto IV&#039;s&lt;/ins&gt;]] game scripts. Its new format replaces old [[SCM|scm]] one.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== File Format ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== File Format ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>A-Dust</name></author>
	</entry>
	<entry>
		<id>https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220896&amp;oldid=prev</id>
		<title>Gtabot: /* Opcodes */removing template:note, removed: {{note|1}}</title>
		<link rel="alternate" type="text/html" href="https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220896&amp;oldid=prev"/>
		<updated>2010-03-28T18:10:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Opcodes: &lt;/span&gt;removing template:note, removed: {{note|1}}&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:10, 28 March 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l197&quot;&gt;Line 197:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 197:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{note|1}} &lt;/del&gt;The Vectors on the stack are pointers to the memory containing the full vector. A Vector is characterised by this structure:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;The Vectors on the stack are pointers to the memory containing the full vector. A Vector is characterised by this structure:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  4b - FLOAT32 - X&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  4b - FLOAT32 - X&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Gtabot</name></author>
	</entry>
	<entry>
		<id>https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220895&amp;oldid=prev</id>
		<title>Gtabot: clean up, replaced: {{TocRight}} → {{toc}}</title>
		<link rel="alternate" type="text/html" href="https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220895&amp;oldid=prev"/>
		<updated>2010-01-25T19:17:48Z</updated>

		<summary type="html">&lt;p&gt;clean up, replaced: {{TocRight}} → {{toc}}&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:17, 25 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TocRight&lt;/del&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;toc&lt;/ins&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;SCO&amp;#039;&amp;#039;&amp;#039; files contain [[GTA 4]]&amp;#039;s game scripts. Its new format replaces old [[SCM|scm]] one.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;SCO&amp;#039;&amp;#039;&amp;#039; files contain [[GTA 4]]&amp;#039;s game scripts. Its new format replaces old [[SCM|scm]] one.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Gtabot</name></author>
	</entry>
	<entry>
		<id>https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220894&amp;oldid=prev</id>
		<title>Gtabot: /* See also */clean up, replaced: {{GTA4-navi}} → {{gtaiv}}</title>
		<link rel="alternate" type="text/html" href="https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220894&amp;oldid=prev"/>
		<updated>2010-01-23T20:25:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;See also: &lt;/span&gt;clean up, replaced: {{GTA4-navi}} → {{gtaiv}}&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:25, 23 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l220&quot;&gt;Line 220:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 220:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Mission Scripting (Overview)]] &amp;amp;ndash; introduction to mission scripting in the previous games&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Mission Scripting (Overview)]] &amp;amp;ndash; introduction to mission scripting in the previous games&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GTA4-navi&lt;/del&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gtaiv&lt;/ins&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Mission Script]][[Category:File Formats]]{{fdl}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Mission Script]][[Category:File Formats]]{{fdl}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Gtabot</name></author>
	</entry>
	<entry>
		<id>https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220893&amp;oldid=prev</id>
		<title>Gtabot: clean up,</title>
		<link rel="alternate" type="text/html" href="https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220893&amp;oldid=prev"/>
		<updated>2010-01-23T20:12:34Z</updated>

		<summary type="html">&lt;p&gt;clean up,&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:12, 23 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l28&quot;&gt;Line 28:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 28:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Opcodes can have varying sizes, but all opcodes are identified by their first byte. There are 79 opcodes which can occur and any opcode above 80 is a Push opcode which pushes &amp;#039;&amp;#039;&amp;#039;it&amp;#039;s own number - 96&amp;#039;&amp;#039;&amp;#039; onto the stack. For example, opcode 100 will push 4 onto the stack. Opcodes 76,77,78 deal with XLive protected buffers and are available on the PC platform only. Undefined opcodes (i.e. opcode 79), will cause a forceful abort of the script execution.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Opcodes can have varying sizes, but all opcodes are identified by their first byte. There are 79 opcodes which can occur and any opcode above 80 is a Push opcode which pushes &amp;#039;&amp;#039;&amp;#039;it&amp;#039;s own number - 96&amp;#039;&amp;#039;&amp;#039; onto the stack. For example, opcode 100 will push 4 onto the stack. Opcodes 76,77,78 deal with XLive protected buffers and are available on the PC platform only. Undefined opcodes (i.e. opcode 79), will cause a forceful abort of the script execution.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Prettytable}} &lt;/del&gt;class=&quot;collapsible&quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{|class=&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;prettytable &lt;/ins&gt;collapsible&quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!ID&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!ID&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!Name&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!Name&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l96&quot;&gt;Line 96:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 96:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|30|| vneg || Reverses the sign on the first vector{{Ref|1}} on the stack || 1 byte&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|30|| vneg || Reverses the sign on the first vector{{Ref|1}} on the stack || 1 byte&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|31|| iand || Performs an [[Wikipedia:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Logical_conjunction&lt;/del&gt;|And]] operation to the first 2 integers on the stack || 1 byte&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|31|| iand || Performs an [[Wikipedia:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Logical conjunction&lt;/ins&gt;|And]] operation to the first 2 integers on the stack || 1 byte&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|32|| ior || Performs an [[Wikipedia:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Logical_disjunction&lt;/del&gt;|Or]] operation to the first 2 integers on the stack || 1 byte&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|32|| ior || Performs an [[Wikipedia:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Logical disjunction&lt;/ins&gt;|Or]] operation to the first 2 integers on the stack || 1 byte&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|33|| ixor || Performs a [[Wikipedia:XOR|Xor]] operation to the first 2 integers on the stack || 1 byte&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|33|| ixor || Performs a [[Wikipedia:XOR|Xor]] operation to the first 2 integers on the stack || 1 byte&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l210&quot;&gt;Line 210:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 210:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==High Level Representation==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==High Level Representation==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To turn the assembly of a SCO file into a high level representation some factors have to be considered. Arrays and structures can be defined, so it is reasonable to assume there is some kind of typecasting, even if it is only between the following types; [[Wikipedia:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Integer_&lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;computer_science&lt;/del&gt;)|int]], [[Wikipedia:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Floating_point&lt;/del&gt;|float]], [[Wikipedia:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;String_&lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;computer_science&lt;/del&gt;)|string]] or a predefined structure. It is interesting to note that opcodes exist to typecast integers and concatenate them directly to strings, this suggests the SCO language has a java like way of handling strings (using + and += for concatenation). The SCO file does not seem to have native support for the notion of classes, however this is not to say they could not be implemented within SCO itself similar to how they are done at a low level in C++.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To turn the assembly of a SCO file into a high level representation some factors have to be considered. Arrays and structures can be defined, so it is reasonable to assume there is some kind of typecasting, even if it is only between the following types; [[Wikipedia:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Integer &lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;computer science&lt;/ins&gt;)|int]], [[Wikipedia:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Floating point&lt;/ins&gt;|float]], [[Wikipedia:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;String &lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;computer science&lt;/ins&gt;)|string]] or a predefined structure. It is interesting to note that opcodes exist to typecast integers and concatenate them directly to strings, this suggests the SCO language has a java like way of handling strings (using + and += for concatenation). The SCO file does not seem to have native support for the notion of classes, however this is not to say they could not be implemented within SCO itself similar to how they are done at a low level in C++.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Tools ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Tools ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{GTAF|396486|Scone}} &amp;amp;ndash; &lt;/del&gt;SCO (Dis-)assembler by {{U|Sacky}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* SCO (Dis-)assembler by {{U|Sacky}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenIV]] &amp;amp;ndash; contains a built-in decompiler&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[OpenIV]] &amp;amp;ndash; contains a built-in decompiler&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[SparkIV]] &amp;amp;ndash; contains a built-in decompiler&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[SparkIV]] &amp;amp;ndash; contains a built-in decompiler&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Gtabot</name></author>
	</entry>
	<entry>
		<id>https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220892&amp;oldid=prev</id>
		<title>Gboyers: 1 revision:&amp;#32;Imported from gtamodding.com - under GNU FDL</title>
		<link rel="alternate" type="text/html" href="https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220892&amp;oldid=prev"/>
		<updated>2010-01-11T23:55:38Z</updated>

		<summary type="html">&lt;p&gt;1 revision: Imported from gtamodding.com - under GNU FDL&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:55, 11 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en-GB&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Gboyers</name></author>
	</entry>
	<entry>
		<id>https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220891&amp;oldid=prev</id>
		<title>gtw&gt;Sacky@GTAM: Removed Inaccurate High Level Representation Documentation, will replace later</title>
		<link rel="alternate" type="text/html" href="https://www.grandtheftwiki.com/index.php?title=SCO&amp;diff=220891&amp;oldid=prev"/>
		<updated>2009-04-09T14:51:34Z</updated>

		<summary type="html">&lt;p&gt;Removed Inaccurate High Level Representation Documentation, will replace later&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{TocRight}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SCO&amp;#039;&amp;#039;&amp;#039; files contain [[GTA 4]]&amp;#039;s game scripts. Its new format replaces old [[SCM|scm]] one.&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
A SCO file is layed out into 4 segments. First the [[#Header|header]] containing information about the SCO file. Then the [[#Code Segment|code segment]] which contains the opcode&amp;#039;s which govern how the script behaves. The next segment is the [[#Global Variables|global variables]] container which contains enough space to hold the scripts global variables. The last is the [[#Public Variables|public variables]] container, it is unclear what this segment actually does.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
There are 2 types of SCO files, an encrypted and unencrypted one. Each file however shares the same unencrypted header structure, and you can use this to determine which type of SCO file you are dealing with. The size of this header is &amp;#039;&amp;#039;&amp;#039;24 bytes&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
 4b - CHAR[4]/UINT32 - SCO Identifier&lt;br /&gt;
 4b - UINT32 - Code Size&lt;br /&gt;
 4b - UINT32 - Global Var Count&lt;br /&gt;
 4b - UINT32 - Public Var Count&lt;br /&gt;
 4b - UINT32 - Script Flags&lt;br /&gt;
 4b - UINT32 - Signature&lt;br /&gt;
&lt;br /&gt;
The SCO Identifier will be &amp;quot;SCR\r&amp;quot; (or 0xD524353) in an unencrypted version, and &amp;quot;scr&amp;quot;+0xE (or 0xE726373) in an encrypted version. To decrypt an encrypted version you must decrypt each segment (except the header) separately using GTA IV&amp;#039;s AES [[Cryptography]].&lt;br /&gt;
The Code Size refers to the amount of bytes the code section takes up.&lt;br /&gt;
The Global Var Count refers to the amount of global variables the SCO file contains. The segment for global variables starts at the end of Header + Code Size, and continues for 4x the global variable count (due to the global variables being stored in 4 byte&amp;#039;s each).&lt;br /&gt;
The Public Var Size refers to the amount of public variables the SCO file contains. The segment for public variables starts at the end of Header + Code Size + Global Var Count * 4, and continues for 4x the public variable count (due to the public variables being stored in 4 byte&amp;#039;s each).&lt;br /&gt;
The Script Flags are boolean bits which are currently unexplained.&lt;br /&gt;
The Signature only differs in navgen_main, but could possibly set the script priority.&lt;br /&gt;
&lt;br /&gt;
===Code Segment===&lt;br /&gt;
The Code Segment contains the opcodes which govern the scripts behaviour.&lt;br /&gt;
&lt;br /&gt;
====Opcodes====&lt;br /&gt;
Opcodes can have varying sizes, but all opcodes are identified by their first byte. There are 79 opcodes which can occur and any opcode above 80 is a Push opcode which pushes &amp;#039;&amp;#039;&amp;#039;it&amp;#039;s own number - 96&amp;#039;&amp;#039;&amp;#039; onto the stack. For example, opcode 100 will push 4 onto the stack. Opcodes 76,77,78 deal with XLive protected buffers and are available on the PC platform only. Undefined opcodes (i.e. opcode 79), will cause a forceful abort of the script execution.&lt;br /&gt;
&lt;br /&gt;
{|{{Prettytable}} class=&amp;quot;collapsible&amp;quot;&lt;br /&gt;
!ID&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
!Length&lt;br /&gt;
|-&lt;br /&gt;
|0|| nop || No operation || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|1|| iadd || Adds the top 2 items on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|2|| isub || Subtracts the top 2 items on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|3|| imul || Multiplies the top 2 items on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|4|| idiv || Divides the top 2 items on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|5|| imod || Mods the top 2 items on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|6|| iszero || Checks the first item on the stack to see if it equals 0 || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|7|| ineg || Reverses the sign on the item on the top of the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|8|| icmpeq || Compares the top 2 integers on the stack to see if they are equal || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|9|| icmpne || Compares the top 2 integers on the stack to see if they are not equal || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|10|| icmpgt || Compares the top 2 integers on the stack to see if the first one is greater than the second one || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|11|| icmpge || Compares the top 2 integers on the stack to see if the first one is greater than or equal to the second one || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|12|| icmplt || Compares the top 2 integers on the stack to see if the first one is less than the second one || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|13|| icmple || Compares the top 2 integers on the stack to see if the first one is less than or equal to the second one || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|14|| fadd || Adds the top 2 floats on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|15|| fsub || Subtracts the top 2 floats on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|16|| fmul || Multiplies the top 2 floats on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|17|| fdiv || Divides the top 2 floats on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|18|| fmod || Mods the top 2 floats on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|19|| fneg || Reverses the sign on the first float on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|20|| fcmpeq || Compares the top 2 floats on the stack to see if they are equal || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|21|| fcmpne || Compares the top 2 floats on the stack to see if they are not equal || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|22|| fcmpgt || Compares the top 2 floats on the stack to see if the first one is greater than the second one || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|23|| fcmpge || Compares the top 2 floats on the stack to see if the first one is greater than or equal to the second one || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|24|| fcmplt || Compares the top 2 floats on the stack to see if the first one is less than the second one || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|25|| fcmple || Compares the top 2 floats on the stack to see if the first one is less than or equal to the second one || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|26|| vadd || Adds the top 2 Vectors{{Ref|1}} on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|27|| vsub || Subtracts the top 2 Vectors{{Ref|1}} on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|28|| vmul || Multiplies the top 2 Vectors{{Ref|1}} on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|29|| vdiv || Divides the top 2 Vectors{{Ref|1}} on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|30|| vneg || Reverses the sign on the first vector{{Ref|1}} on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|31|| iand || Performs an [[Wikipedia:Logical_conjunction|And]] operation to the first 2 integers on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|32|| ior || Performs an [[Wikipedia:Logical_disjunction|Or]] operation to the first 2 integers on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|33|| ixor || Performs a [[Wikipedia:XOR|Xor]] operation to the first 2 integers on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|34|| jmp || Jumps to a section of code, using the next 4 bytes after the opcode as a placement || 5 bytes&lt;br /&gt;
|-&lt;br /&gt;
|35|| jmpf || Jumps to a section of code if the top of the stack is 0, using the next 4 bytes after the opcode as a placement || 5 bytes&lt;br /&gt;
|-&lt;br /&gt;
|36|| jmpt || Jumps to a section of code if the top of the stack is 1, using the next 4 bytes after the opcode as a placement || 5 bytes&lt;br /&gt;
|-&lt;br /&gt;
|37|| itof || Converts the top integer on the stack to a float, and puts that float on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|38|| ftoi || Converts the top float on the stack to an integer, and puts that integer on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|39|| ftov || Converts the top float into a Vector{{Ref|1}} containing 3 instances of the same float, and pushes the pointer to that Vector{{Ref|1}} onto the top of the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|40|| ipush2 || Pushes a short onto the stack, the short is defined in the next 2 bytes after the opcode || 3 bytes&lt;br /&gt;
|-&lt;br /&gt;
|41|| ipush || Pushes an int onto the stack, the integer is defined in the next 4 bytes after the opcode || 5 bytes&lt;br /&gt;
|-&lt;br /&gt;
|42|| fpush || Pushes a float onto the stack, the float is defined in the next 4 bytes after the opcode. Performs exactly the same as Push || 5 bytes&lt;br /&gt;
|-&lt;br /&gt;
|43|| dup || Duplicates the first item on the stack, and pushes it back onto the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|44|| pop || Pops the top item off the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|45|| native || Calls a [[native function]]. The number of arguments for the native to take is defined in the next byte after the opcode. The number of return values is defined in the byte after that (it is always 1 or 0). The next 4 bytes are the hash of the native&amp;#039;s name. || 7 bytes&lt;br /&gt;
|-&lt;br /&gt;
|46|| call || Calls a function within the script, and puts the return address on top of the stack. The location of the function is defined in the next 4 bytes after the opcode || 5 bytes&lt;br /&gt;
|-&lt;br /&gt;
|47|| enter || Indicates the beginning of an internal function. The byte after the opcode indicates the amount of arguments the function takes off the stack, and the next 2 bytes after that indicate the number of variables the function will have to generate on the stack. || 4 bytes&lt;br /&gt;
|-&lt;br /&gt;
|48|| ret || Indicates the end of an internal function. The byte after the opcode indicates the amount of arguments that will have to be popped off the stack, and the next byte after that indicates the stack number of the return address || 3 bytes&lt;br /&gt;
|-&lt;br /&gt;
|49|| pget || Pops a pointer off the stack and pushes the value stored in that pointer back onto the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|50|| pset || Pops 2 items off the stack and stores the second item at the location of the first item (the first item being a pointer) || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|51|| ppeekset || Pops the first item off the stack and peeks at the second item on the stack, then stores the first item at the location pointed to by the second item on the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|52|| explode || Pops 2 items off the stack, the first and second items being the beginning of the memory of the array and the end of the memory of the array. It then divides the difference of these 2 locations by 4 to get the number of items in the array, after which is pushes these items one by one onto the stack in 4 byte segments || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|53|| implode || Pops the first item off the stack to get the address of the array to write to, and then pops the stack off onto that array || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|54|| flvar0 || Pushes the pointer to the first function local variable onto the stack. || 1 byte &lt;br /&gt;
|-&lt;br /&gt;
|55|| flvar1 || Pushes the pointer to the second function local variable onto the stack. || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|56|| flvar2 || Pushes the pointer to the third function local variable onto the stack. || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|57|| flvar3 || Pushes the pointer to the fourth function local variable onto the stack. || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|58|| flvar4 || Pushes the pointer to the fifth function local variable onto the stack. || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|59|| flvar5 || Pushes the pointer to the sixth function local variable onto the stack. || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|60|| flvar6 || Pushes the pointer to the seventh function local variable onto the stack. || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|61|| flvar7 || Pushes the pointer to the eigth function local variable onto the stack. || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|62|| flvar || Pushes the pointer to a function local variable onto the stack where the index is above or equal to 8 || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|63|| global || Pops the index of the global variable off the stack, and pushes a pointer to the script global variable onto the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|64|| public || Pops the index of the public variable off the stack, and pushes a pointer to the public variable onto the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|65|| array || Pops the array location, element size and index off the stack, the pushes a pointer to the index of that array onto the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|66|| switch || Pops the item to compare off the stack, and then jumps to location corresponding to that item. After the opcode byte it contains a byte defining the number of possible entries, and after that the number of possible entries times 8 are taken up with repeating instances of 4 bytes of the index identifier, and 4 bytes of the location to jump to if that index is correct || (Byte after opcode * 8) + 2&lt;br /&gt;
|-&lt;br /&gt;
|67|| spush || Pushes a string onto the stack. The byte after the opcode signals the string length, and for the amount of string length after that byte contains each character of the string || (Byte after opcode)+2&lt;br /&gt;
|-&lt;br /&gt;
|68|| null || Pushes a pointer to an empty memory container onto the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|69|| scpy || Pops 2 pointers off the stack, and copies the second item to the first item || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|70|| itos || Pops an integer off the stack and pushes an array to a string representation of that integer onto the stack || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|71|| sadd || Pops 2 pointers off the stack, and appends the second item to the first item || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|72|| saddi || Pops 2 items off the stack, and performs a IntToStr on the second item (the integer), then appends that string representation to the first item || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|73|| catch || Sets up a safe area that has the ability to catch errors || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|74|| throw || Indicates an area that handles a script error relative to the catch opcode || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|75|| memcpy || Pops 3 items off the stack. Copies the third item&amp;#039;s memory into the first item&amp;#039;s memory with repeating defined by the second item. It then appends a null terminator to the first item&amp;#039;s memory || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|76|| getxprotect || Pops a memory location off the stack and pushes its XLive unprotected value onto the stack (PC Only) || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|77|| setxprotect || Pops a memory location off the stack, pops another value off the stack. Protects the second value using XLive and stores the value in the memory location. (PC Only) || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|78|| refxprotect || Pops a memory location off the stack, pops another value off the stack to determine protection flags, and finally pops another value which indicates the number of items to operate on. If the 1st bit of the flags is set, the number of items at the memory location will be XLive unprotected. If the 2nd bit is set, they will be XLive protected instead. (PC Only) || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|79|| exit || Terminates the script under an error condition || 1 byte&lt;br /&gt;
|-&lt;br /&gt;
|80 -&amp;gt; 255|| ipush1 || Pushes an integer onto the stack. The integer is defined by the opcode number - 96. For example opcode 95 would push -1 onto the stack, and opcode 97 would push 1 || 1 byte&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{note|1}} The Vectors on the stack are pointers to the memory containing the full vector. A Vector is characterised by this structure:&lt;br /&gt;
&lt;br /&gt;
 4b - FLOAT32 - X&lt;br /&gt;
 4b - FLOAT32 - Y&lt;br /&gt;
 4b - FLOAT32 - Z&lt;br /&gt;
&lt;br /&gt;
===Global Variables===&lt;br /&gt;
This contains the Global Variables in the script. Each global variable is 4 bytes long, and can contain static information in the script file itself.&lt;br /&gt;
&lt;br /&gt;
===Public Variables===&lt;br /&gt;
It is uncertain what this section actually does.&lt;br /&gt;
&lt;br /&gt;
==High Level Representation==&lt;br /&gt;
To turn the assembly of a SCO file into a high level representation some factors have to be considered. Arrays and structures can be defined, so it is reasonable to assume there is some kind of typecasting, even if it is only between the following types; [[Wikipedia:Integer_(computer_science)|int]], [[Wikipedia:Floating_point|float]], [[Wikipedia:String_(computer_science)|string]] or a predefined structure. It is interesting to note that opcodes exist to typecast integers and concatenate them directly to strings, this suggests the SCO language has a java like way of handling strings (using + and += for concatenation). The SCO file does not seem to have native support for the notion of classes, however this is not to say they could not be implemented within SCO itself similar to how they are done at a low level in C++.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
* {{GTAF|396486|Scone}} &amp;amp;ndash; SCO (Dis-)assembler by {{U|Sacky}}&lt;br /&gt;
* [[OpenIV]] &amp;amp;ndash; contains a built-in decompiler&lt;br /&gt;
* [[SparkIV]] &amp;amp;ndash; contains a built-in decompiler&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Mission Scripting (Overview)]] &amp;amp;ndash; introduction to mission scripting in the previous games&lt;br /&gt;
&lt;br /&gt;
{{GTA4-navi}}&lt;br /&gt;
[[Category:Mission Script]][[Category:File Formats]]{{fdl}}&lt;/div&gt;</summary>
		<author><name>gtw&gt;Sacky@GTAM</name></author>
	</entry>
</feed>