<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alioth.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kroccamen</id>
	<title>Elite Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alioth.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kroccamen"/>
	<link rel="alternate" type="text/html" href="https://wiki.alioth.net/index.php/Special:Contributions/Kroccamen"/>
	<updated>2026-11-05T05:25:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://wiki.alioth.net/index.php?title=Classic_Elite_entity_states&amp;diff=57826</id>
		<title>Classic Elite entity states</title>
		<link rel="alternate" type="text/html" href="https://wiki.alioth.net/index.php?title=Classic_Elite_entity_states&amp;diff=57826"/>
		<updated>2019-01-12T22:48:54Z</updated>

		<summary type="html">&lt;p&gt;Kroccamen: Add C64 entitiy layout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upon launching from the Space Station the player is confronted by several entities, the planet ahead, the space station behind, and perhaps additional ships.&lt;br /&gt;
&lt;br /&gt;
== BBC Disk Version ==&lt;br /&gt;
&lt;br /&gt;
The following description of each entity&amp;#039;s state is specific to the BBC Disk [[Classic_Elite|Classic version of Elite]], there are some variations in the other 8-bit versions.&lt;br /&gt;
&lt;br /&gt;
Each entity has a state represented in 37 bytes. The first 9 bytes are the (x,y,z) coordinates to 23bit precision with the player at the origin. The next 18 bytes store a 9-member rotation matrix, with the positive unit vector scaled to 0x6000. A pointer of 2 bytes points to a heap that contains processed vertex data for display.&lt;br /&gt;
&lt;br /&gt;
Single bytes represent the entity&amp;#039;s speed, acceleration, remaining energy, and counters for roll and pitch actions currently underway.&lt;br /&gt;
&lt;br /&gt;
The remaining 3 bytes represent the entity&amp;#039;s A.I., which we shall refer to as the &amp;#039;&amp;#039;&amp;#039;Attack&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Behaviour&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Visible States&amp;#039;&amp;#039;&amp;#039;. Some bits serve more than one purpose if they are set. (See the A.I. section below for details)&lt;br /&gt;
&lt;br /&gt;
== C64 Version ==&lt;br /&gt;
&lt;br /&gt;
This information based on the [https://github.com/Kroc/elite-harmless Elite C64 disassembly on GitHub].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte Offset&lt;br /&gt;
! Data Size&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
! Zero Page Addr.&lt;br /&gt;
|-&lt;br /&gt;
| +0&lt;br /&gt;
| 3 bytes&lt;br /&gt;
| xpos&lt;br /&gt;
| 3D X-position within space&lt;br /&gt;
| $09&lt;br /&gt;
|-&lt;br /&gt;
| +3&lt;br /&gt;
| 3 bytes&lt;br /&gt;
| ypos&lt;br /&gt;
| 3D Y-position within space&lt;br /&gt;
| $0C&lt;br /&gt;
|-&lt;br /&gt;
| +6&lt;br /&gt;
| 3 bytes&lt;br /&gt;
| zpos&lt;br /&gt;
| 3D Z-position within space&lt;br /&gt;
| $0F&lt;br /&gt;
|-&lt;br /&gt;
| +9&lt;br /&gt;
| 2 bytes&lt;br /&gt;
| m0x0&lt;br /&gt;
| Part of the 3&amp;amp;times;3 rotation matrix&lt;br /&gt;
| $12&lt;br /&gt;
|-&lt;br /&gt;
| +11&lt;br /&gt;
| 2 bytes&lt;br /&gt;
| m0x1&lt;br /&gt;
| Part of the 3&amp;amp;times;3 rotation matrix&lt;br /&gt;
| $14&lt;br /&gt;
|-&lt;br /&gt;
| +13&lt;br /&gt;
| 2 bytes&lt;br /&gt;
| m0x2&lt;br /&gt;
| Part of the 3&amp;amp;times;3 rotation matrix&lt;br /&gt;
| $16&lt;br /&gt;
|-&lt;br /&gt;
| +15&lt;br /&gt;
| 2 bytes&lt;br /&gt;
| m1x0&lt;br /&gt;
| Part of the 3&amp;amp;times;3 rotation matrix&lt;br /&gt;
| $18&lt;br /&gt;
|-&lt;br /&gt;
| +17&lt;br /&gt;
| 2 bytes&lt;br /&gt;
| m1x1&lt;br /&gt;
| Part of the 3&amp;amp;times;3 rotation matrix&lt;br /&gt;
| $1A&lt;br /&gt;
|-&lt;br /&gt;
| +19&lt;br /&gt;
| 2 bytes&lt;br /&gt;
| m1x2&lt;br /&gt;
| Part of the 3&amp;amp;times;3 rotation matrix&lt;br /&gt;
| $1C&lt;br /&gt;
|-&lt;br /&gt;
| +21&lt;br /&gt;
| 2 bytes&lt;br /&gt;
| m2x0&lt;br /&gt;
| Part of the 3&amp;amp;times;3 rotation matrix&lt;br /&gt;
| $1E&lt;br /&gt;
|-&lt;br /&gt;
| +23&lt;br /&gt;
| 2 bytes&lt;br /&gt;
| m2x1&lt;br /&gt;
| Part of the 3&amp;amp;times;3 rotation matrix&lt;br /&gt;
| $20&lt;br /&gt;
|-&lt;br /&gt;
| +25&lt;br /&gt;
| 2 bytes&lt;br /&gt;
| m2x2&lt;br /&gt;
| Part of the 3&amp;amp;times;3 rotation matrix&lt;br /&gt;
| $22&lt;br /&gt;
|-&lt;br /&gt;
| +27&lt;br /&gt;
| 2 bytes&lt;br /&gt;
| vertexData&lt;br /&gt;
| A pointer to already processed vertex data&lt;br /&gt;
| $24&lt;br /&gt;
|-&lt;br /&gt;
| +29&lt;br /&gt;
| 1 byte&lt;br /&gt;
| roll&lt;br /&gt;
| X-Rotation&lt;br /&gt;
| $26&lt;br /&gt;
|-&lt;br /&gt;
| +30&lt;br /&gt;
| 1 byte&lt;br /&gt;
| pitch&lt;br /&gt;
| Z-Rotation&lt;br /&gt;
| $27&lt;br /&gt;
|-&lt;br /&gt;
| +31&lt;br /&gt;
| 1 byte&lt;br /&gt;
| visibility&lt;br /&gt;
| A.I. Visibility state flags, as described in the A.I. section below&lt;br /&gt;
| $28&lt;br /&gt;
|-&lt;br /&gt;
| +32&lt;br /&gt;
| 1 byte&lt;br /&gt;
| attack&lt;br /&gt;
| A.I. Attack state flags, as described in the A.I. section below&lt;br /&gt;
| $29&lt;br /&gt;
|-&lt;br /&gt;
| +33&lt;br /&gt;
| 1 byte&lt;br /&gt;
| speed&lt;br /&gt;
| Forward momentum&lt;br /&gt;
| $2A&lt;br /&gt;
|-&lt;br /&gt;
| +34&lt;br /&gt;
| 1 byte&lt;br /&gt;
| acceleration&lt;br /&gt;
| Acceleration rate&lt;br /&gt;
| $2B&lt;br /&gt;
|-&lt;br /&gt;
| +35&lt;br /&gt;
| 1 byte&lt;br /&gt;
| energy&lt;br /&gt;
| Energy level&lt;br /&gt;
| $2C&lt;br /&gt;
|-&lt;br /&gt;
| +36&lt;br /&gt;
| 1 byte&lt;br /&gt;
| behaviour&lt;br /&gt;
| A.I. Behaviour state flags, as described in the A.I. section below&lt;br /&gt;
| $2D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== A.I. ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot;| Bit&lt;br /&gt;
! Attack State&lt;br /&gt;
|-&lt;br /&gt;
|7 &lt;br /&gt;
|A.I. is active, use tactics. Missiles&amp;#039; trajectory updated 8 times more often than others. &lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Missile&amp;#039;s target is player, or entity is more than mildly aggressive. &lt;br /&gt;
|-&lt;br /&gt;
|5,4,3,2,1&lt;br /&gt;
|I.D. of Missile&amp;#039;s target, or refinement to level of aggression.&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Entity has an E.C.M. (Electronic Counter Measures) to destroy in-flight missiles.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot;| Bit&lt;br /&gt;
! Behaviour State&lt;br /&gt;
|-&lt;br /&gt;
|7 &lt;br /&gt;
|Remove entity silently, too far away or entity is scooped cargo.&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Entity is a Police vessel, destroying one affects your legal status.&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Entity (Shuttle or Transporter) under Space Station protection, will launch cops.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Entity is docking, go to planet then to space station.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Pirate, attack player if not in space station safety zone, else fly away from player.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Entity is angry with player, accuracy of shooting determined by level of aggression.&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Bounty hunter, attacks player if player&amp;#039;s legal status is fugitive.&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Peaceful trader, maybe attacks player if player&amp;#039;s legal status is fugitive.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot;| Bit&lt;br /&gt;
! Visible State&lt;br /&gt;
|-&lt;br /&gt;
|7 &lt;br /&gt;
|Terminate entity with a dust explosion&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Entity is firing laser at player, or entity is exploding.&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Display nodes of wire-frame or explosion, not a far-away dot.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Keep visible on scanner&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Recent rendering to screen needs to be erased (draw with EOR operation again)&lt;br /&gt;
|-&lt;br /&gt;
|2,1,0&lt;br /&gt;
|Number of missiles or thargons remaining within entity, maximum is 7.&lt;br /&gt;
|}&lt;br /&gt;
The arrangement of the bits is driven by the preferences of 6502 machine code. [http://wiki.nesdev.com/w/index.php/6502_assembly_optimisations#Easily_test_2_upper_bits_of_a_variable Direct bit tests exist for the highest bits], and the lower bits tend to be used to count small quantities.&lt;br /&gt;
&lt;br /&gt;
Source code for the BBC tape and TUBE versions of BBC Elite can be found at [http://www.iancgbell.clara.net/elite/text/index.htm Ian Bell&amp;#039;s] web site and were used to disassemble and interpret the Disk version described here.&lt;br /&gt;
&lt;br /&gt;
[[Category:Classic]]&lt;/div&gt;</summary>
		<author><name>Kroccamen</name></author>
		
	</entry>
</feed>