<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://moddingwiki.shikadi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Woalexan</id>
	<title>ModdingWiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://moddingwiki.shikadi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Woalexan"/>
	<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/wiki/Special:Contributions/Woalexan"/>
	<updated>2026-05-14T05:48:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.11</generator>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12646</id>
		<title>Hi Octane</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12646"/>
		<updated>2025-11-03T20:13:53Z</updated>

		<summary type="html">&lt;p&gt;Woalexan: Fix wrong value, Add byte 49 info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hi Octane&#039;&#039;&#039; is hover-car racing game. According to Sean Cooper it was made in 6.5 weeks using engine code from Syndicate and Magic Carpet. There are at least two releases of the game, the initial release (executable contains string &#039;&#039;Jun 10 1995 17:45:48&#039;&#039;) with 6 levels, and a later extended version (&#039;&#039;Oct 23 1995 15:57:32&#039;&#039;) with 9 levels, additional game modes, and slightly reworked levels. In certain file format details the used version makes a difference.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
Level inspector and incomplete editor by movAX13h (contains all assets of the original game extracted/converted by srtuss): https://github.com/movAX13h/HiOctaneTools&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = sounds/music.dat&lt;br /&gt;
 | Format = see below&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Archive containing music files in different formats: [[XMI Format]], [[GEN Format]], [[ROL Format]], [[WTB Format]].&amp;lt;br/&amp;gt;There are five files per format : TGAME1, TGAME2, TGAME3, TGAME4, TINTRO2.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== MUSIC.DAT ==&lt;br /&gt;
&lt;br /&gt;
* read the [[INT32LE]] at EOF and seek to returned position&lt;br /&gt;
* count the N number of [[INT16LE]] that equals &amp;lt;code&amp;gt;0x0001&amp;lt;/code&amp;gt;, then read N of the following struct:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTunes || Offset to the list of tunes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune1 || Offset to the first tune&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || unknown || Unknown (always &amp;lt;code&amp;gt;0xC0000000&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;192&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTunes || Length of all tunes together, bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* for each of the former struct&lt;br /&gt;
** seek to &amp;lt;code&amp;gt;offTunes&amp;lt;/code&amp;gt;&lt;br /&gt;
** read one of the following struct, its &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; indicates the byte sum of tunes following&lt;br /&gt;
** read as many of the following struct until their &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; sum equals the one in previous step&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || name[12] || File name of the tune, &amp;lt;code&amp;gt;\0&amp;lt;/code&amp;gt; padded&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[6] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune || Tune relative offset&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[4] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTune || Tune length, bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || unknown || Unknown (always &amp;lt;code&amp;gt;0x5A00&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;90&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* you now have a catalog of a collection of tunes, e.g. five ROL songs, five WTB songs etc&lt;br /&gt;
* to extract a song, copy &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; bytes starting at &amp;lt;code&amp;gt;offTune1 + offTune&amp;lt;/code&amp;gt;, file name is &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RNC-compressed files ==&lt;br /&gt;
&lt;br /&gt;
Many of the game&#039;s files are compressed using the [[Rob Northern Compression]] format; some of them such as &#039;&#039;SOUND\SOUND.DAT&#039;&#039; are a concatenation of many RNC archives simply &#039;&#039;glued&#039;&#039; together.&lt;br /&gt;
&lt;br /&gt;
A command-line unpacker can be found here : [http://syndicate.lubiki.pl/downloads/bullfrog_utils_rnc.zip Bullfrog games RNC Utilities] (from [http://syndicate.lubiki.pl/synd/rework/synd_rework_rnc.php Unpacking RNC files])&lt;br /&gt;
&lt;br /&gt;
== DAT/TAB pairs ==&lt;br /&gt;
&lt;br /&gt;
Can be decompressed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_tabdat.zip Bullfrog games DAT/TAB Graphics extractor] (they first must be decompressed if they are RNC-compressed).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DAT format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Without a TAB file, it&#039;s raw pixels; with a TAB file it&#039;s a form of line by line RLE compression where only transparent pixels are compressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TAB format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || position || Image position in .DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || height || Image height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TMAPS:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Contains powerups and some HUD elements but TAB format is different:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || flat || Size of RNC stream unpacked, useless as it&#039;s contained in stream header already&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || pos || Position in DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || index || Some index but can be duplicate, so likely a type or category instead&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are N+1 entries to be able to compute last item size in DAT.&lt;br /&gt;
&lt;br /&gt;
Each image has the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT16 || unknown || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || height || Image height&lt;br /&gt;
|-&lt;br /&gt;
| INT8[] || pixels || Image pixels, 8-bit paletted &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game&#039;s files ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Format&lt;br /&gt;
! RNC compressed&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|data\hfont0-0.dat&amp;lt;br/&amp;gt;data\hfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\hspr0-0.dat&amp;lt;br/&amp;gt;data\hspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (large)&lt;br /&gt;
|-&lt;br /&gt;
|data\intro.dat&lt;br /&gt;
|[[Autodesk FLI animation]]&lt;br /&gt;
|No&lt;br /&gt;
|Game introduction&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-0.dat&amp;lt;br/&amp;gt;data\logo0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-1.dat&amp;lt;br/&amp;gt;data\logo0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mfont0-0.dat&amp;lt;br/&amp;gt;data\mfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mspr0-0.dat&amp;lt;br/&amp;gt;data\mspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (small)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-0.dat&amp;lt;br/&amp;gt;data\olfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-1.dat&amp;lt;br/&amp;gt;data\olfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\onet0-*.dat&amp;lt;br/&amp;gt;data\oscr0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200 and 640&amp;amp;times;480&lt;br /&gt;
|Yes&lt;br /&gt;
|Loading and selection screens&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-0.dat&amp;lt;br/&amp;gt;data\osfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-1.dat&amp;lt;br/&amp;gt;data\osfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\palet0-0.dat&lt;br /&gt;
|[[VGA Palette]]&lt;br /&gt;
|No&lt;br /&gt;
|The palette of every asset of the game, unless specified&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-0.dat&amp;lt;br/&amp;gt;data\panel0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-1.dat&amp;lt;br/&amp;gt;data\panel0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-0.dat&amp;lt;br/&amp;gt;data\panel9-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-1.dat&amp;lt;br/&amp;gt;data\panel9-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-0.dat&amp;lt;br/&amp;gt;data\pfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-1.dat&amp;lt;br/&amp;gt;data\pfont0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\point0-0.dat&amp;lt;br/&amp;gt;data\point0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor cursors&lt;br /&gt;
|-&lt;br /&gt;
|data\puzzle.dat&lt;br /&gt;
|[[Raw VGA image]], 112&amp;amp;times;96&lt;br /&gt;
|No&lt;br /&gt;
|The cheat puzzle activated with CTRL-Tab in-game&lt;br /&gt;
|-&lt;br /&gt;
|data\sky0-*.dat&lt;br /&gt;
|[[Raw VGA Image]], 256&amp;amp;times;256&lt;br /&gt;
|Yes&lt;br /&gt;
|Horizon of each track&lt;br /&gt;
|-&lt;br /&gt;
|data\srch0-0.dat&lt;br /&gt;
|[[Raw VGA Image]], 32&amp;amp;times;32&lt;br /&gt;
|Yes&lt;br /&gt;
|Looks like a radar but seems to be unused&lt;br /&gt;
|-&lt;br /&gt;
|data\table0-*.dat&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
These files differ by at most a few bytes, their name suggests a sine table but this is pure speculation.&lt;br /&gt;
&lt;br /&gt;
The following pattern appears when they are interpreted as a 256 pixels wide image:&lt;br /&gt;
&lt;br /&gt;
[[File:HiOctaneTable.png]]&lt;br /&gt;
|-&lt;br /&gt;
|data\textu0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 64&amp;amp;times;16384&lt;br /&gt;
|Yes&lt;br /&gt;
|64&amp;amp;times;64 terrain textures&lt;br /&gt;
|-&lt;br /&gt;
|data\title.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200&lt;br /&gt;
|Yes&lt;br /&gt;
|The introductory screen&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.dat&lt;br /&gt;
|&lt;br /&gt;
|Yes&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.tab&lt;br /&gt;
|&lt;br /&gt;
|No&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\track0-0.dat&amp;lt;br/&amp;gt;data\track0-0.tab&amp;lt;br/&amp;gt;data\track0-1.dat&amp;lt;br/&amp;gt;data\track0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No/Yes&lt;br /&gt;
|Contain the images of the level minimaps that are shown in the HUD. The game does work without them,&lt;br /&gt;
but then the minimap is not shown. Initial game version does not use RNC compression, extended version does.&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-0.dat&amp;lt;br/&amp;gt;objects/data/tex0-0.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;768&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-1.dat&amp;lt;br/&amp;gt;objects/data/tex0-1.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;88&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; none of the TAB files are RNC-compressed.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The image formats above are partially decoded, they are still missing palette information.&lt;br /&gt;
&lt;br /&gt;
All the images are paletted, 8 bits per pixels.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTRO.DAT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Header can be fixed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_flifix.zip Autodesk Animator FLI files fixer] but since format is pretty old and that [http://syndicate.lubiki.pl/downloads/utils_waaplay110.zip Autodesk Animation Player 1.10] is a legacy Win16 executable, it is not very convenient to use as of today.&lt;br /&gt;
&lt;br /&gt;
Instead, the file can be converted by FFMPEG to either BMP or AVI,&lt;br /&gt;
&lt;br /&gt;
Convert the animation to individual images, handle last invalid frame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i INTRO.DAT -vframes 548 -pix_fmt bgr24 intro%03d.bmp&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert the sequence of images to a raw AVI and respect the original frame rate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -r 14 -i intro%03d.bmp -vcodec rawvideo intro.avi&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that since the underlying format does not handle audio, there won&#039;t be any.&lt;br /&gt;
&lt;br /&gt;
== CONFIG.DAT ==&lt;br /&gt;
&lt;br /&gt;
Contains the configuration of the game, current state of game logic relevant variables (for example next selected race track),&lt;br /&gt;
and the Highscore table. Obvious settings like graphics mode (VGA vs. SVGA) or if computer players are enabled are not stored in the configuration file, and are&lt;br /&gt;
reset to the default value during each start of the game. The save game files reuse the same file format, but I believe for save game files some data fields will most likely be ignored or not used.&lt;br /&gt;
&lt;br /&gt;
The advantage is that the users game settings are restored for each save game independently. The initial game release config file always has a size of 11449 bytes, the extended game release config file 137833 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Data type !! only ext Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Null terminated string || No || Current championship name (max 12 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034D || UINT8 || Yes || Current value for Death match lives (0 min up to 4 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034E || UINT8 || Yes || Current value for Hot seat players (2 min up to 8 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034F || UINT8 || Yes || Current value for Hot seat racing time (1 min up to 5 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0350 || Null terminated string || Yes || Player 2 name (max 8 characters), If empty string Player 2 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0370 || Null terminated string || Yes || Player 3 name (max 8 characters), If empty string Player 3 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0390 || Null terminated string || Yes || Player 4 name (max 8 characters), If empty string Player 4 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03B0 || Null terminated string || Yes || Player 5 name (max 8 characters), If empty string Player 5 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03D0 || Null terminated string || Yes || Player 6 name (max 8 characters), If empty string Player 6 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03F0 || Null terminated string || Yes || Player 7 name (max 8 characters), If empty string Player 7 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0410 || Null terminated string || Yes || Player 8 name (max 8 characters), If empty string Player 8 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x094B || UINT8 || No || Current selected player craft color scheme (0 = Madmedicine, 1 = Assassins, 2 = Gorehounds, 3 = Foofighters, 4 = Dethfest, 5 = Firephreaks, 6 = Stormriders, 7 = Bullfrog)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094C || UINT8 || No || Current selected player craft (0 = KD1 Speeder, 1 = Berserker, 2 = Jugga, 3 = Vampyr, 4 = Outrider, 5 = Flexiwing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094F || Null terminated string || No || Player 1 name (max 8 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0977 || UINT8 || No || Current game difficulty setting (0 = easy up to 3 = highest difficulty)&lt;br /&gt;
|-&lt;br /&gt;
| 0x097D || UINT8 || No || Music volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0981 || UINT8 || No || Sound volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0994 || STRUCT || No || Pos1 Highscore Entry (each entry 39 bytes, detail please see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x09BB || STRUCT || No || Pos2 Highscore Entry&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C79 || STRUCT || No || Pos20 Highscore Entry (last one shown in game table, but there are many more in file afterwards)&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|- &lt;br /&gt;
| 0x2996 || UINT8 || No || Shading Off = 0, Shading On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299A || UINT8 || No || Sky Off = 0, Sky On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299E || UINT8 || No || Renderer Setting 1 (TextureMapping lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 0; TextureMapping 2nd lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A2 || UINT8 || No || Renderer Setting 2 (TextureMapping 3nd lowest setting: 0x299E = 1,  0x29A2 = 1, 0x29A6 = 1; TextureMapping 4th lowest setting: 0x299E = 2,  0x29A2 = 2, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A6 || UINT8 || No || Renderer Setting 3 (TextureMapping 5th lowest setting: 0x299E = 3,  0x29A2 = 3, 0x29A6 = 1 (default value); TextureMapping highest setting: 0x299E = 3,  0x29A2 = 4, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C76 || UINT8 || No || Current selected race track (0 = level 1, 1 = level 2, and so on)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C7A || UINT8 || No || Current selected game language (0 = English, 1 = German, 2 = French, 3 = Spanish, 4 = Italian)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Highscore Table Entry Struct Detail ===&lt;br /&gt;
* 1 byte for highscore value&lt;br /&gt;
* 3 bytes of unknown data&lt;br /&gt;
* 1 bytes for player assessement string table index&lt;br /&gt;
* 9 bytes for player name best lap, 9th byte = string termination char&lt;br /&gt;
* 25 bytes of unknown data&lt;br /&gt;
&lt;br /&gt;
The player assessement string table (inside the executable) has the following order:&lt;br /&gt;
* Immortal&lt;br /&gt;
* Hardwired&lt;br /&gt;
* Outta Control&lt;br /&gt;
* Demon&lt;br /&gt;
* Deadly&lt;br /&gt;
* Wrecker&lt;br /&gt;
* Dangerous&lt;br /&gt;
* Tailgater&lt;br /&gt;
* Antisocial&lt;br /&gt;
* Dust Devil&lt;br /&gt;
* Upwardly Mobile&lt;br /&gt;
* Mediocre&lt;br /&gt;
* Too Slow&lt;br /&gt;
* Endangered Species&lt;br /&gt;
* Target Practice&lt;br /&gt;
* Back Marker&lt;br /&gt;
* Canyon Kisser&lt;br /&gt;
* Victim&lt;br /&gt;
* Scrap&lt;br /&gt;
* Smear&lt;br /&gt;
* Cheating Sucks (this is actually an additional entry, which is not possible according to the 20 different assessement point range)&lt;br /&gt;
&lt;br /&gt;
== Level file format ==&lt;br /&gt;
&lt;br /&gt;
Many details about the Hi Octane level file format were found out in the past already, and are for example documented under the HiOctaneTools link mentioned above. One specific information that was missing until now is where to find the starting location for the race and type/location of chargers in the level file. The source code of the HiOctaneTools already contained the readout of a POI (point of interest) value from the map data which already pointed to the area of important locations, but was still lacking the information what type of location this exactly is, and what size it has in terrain cells. I found that the POI value points to certain file offsets in the level file.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! POI value !! Level file offset&lt;br /&gt;
|-&lt;br /&gt;
| 992 || 246924&lt;br /&gt;
|-&lt;br /&gt;
| 993 || 247009&lt;br /&gt;
|-&lt;br /&gt;
| 994 || 247094&lt;br /&gt;
|-&lt;br /&gt;
| 995 || 247179  &lt;br /&gt;
|-&lt;br /&gt;
| 996 || 247264  &lt;br /&gt;
|-&lt;br /&gt;
| 997 || 247349  &lt;br /&gt;
|-&lt;br /&gt;
| 998 || 247434  &lt;br /&gt;
|-&lt;br /&gt;
| 999 || 247519  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each entry at this specific file locations is 85 bytes long. This bytes have the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte Nr !! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || UINT8 || Region type || 1 = Shield charger, 2 = Fuel charger, 3 = Ammo charger, 4 = Race start location&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UINT8 || Fixed value || Contains always value 1 for each used entry&lt;br /&gt;
|-&lt;br /&gt;
| 3 || UINT8 || Contains value that depends on the RegionId || Value = 224 + RegionId (number of region entry), possible range from 224 up to 231 &lt;br /&gt;
|-&lt;br /&gt;
| 4 || UINT8 || Same value as Byte 3 || Please see description above &lt;br /&gt;
|-&lt;br /&gt;
| 5 || UINT8 || Fixed value || Contains always value 3 for each used entry &lt;br /&gt;
|-&lt;br /&gt;
| 12 || UINT8 || Contains value that depends on the RegionId || Value = 200 + RegionId (number of region entry), possible range from 200 up to 207 &lt;br /&gt;
|-&lt;br /&gt;
| 13 || UINT8 || Fixed value || Contains always value 7 for each used entry &lt;br /&gt;
|-&lt;br /&gt;
| 16 || UINT8 || Seems to have always the same value as byte 4 || &lt;br /&gt;
|-&lt;br /&gt;
| 17 || UINT8 || Seems to have always the same value as byte 5 || &lt;br /&gt;
|-&lt;br /&gt;
| 18 || UINT8 || Fixed value || Contains always value 1 for each used entry&lt;br /&gt;
|-&lt;br /&gt;
| 24 &amp;amp; 25 || FLOAT || X coordinate || X coordinate of cell right in the middle of the defined location, Byte 25 = Integer, Byte 24 only uses two values: 0 or 128, I believe it allows to add 0.5f&lt;br /&gt;
|-&lt;br /&gt;
| 26 &amp;amp; 27 || FLOAT || Y coordinate || Y coordinate of cell right in the middle of the defined location, Byte 27 = Integer, Byte 26 only uses two values: 0 or 128, I believe it allows to add 0.5f&lt;br /&gt;
|-&lt;br /&gt;
| 39 || UINT8 || In most levels value is fixed with 232 || Some levels use different values, Right now purpose is unknown&lt;br /&gt;
|-&lt;br /&gt;
| 40 || UINT8 || In most levels value is fixed with 54 || Some levels use different values, Right now purpose is unknown&lt;br /&gt;
|-&lt;br /&gt;
| 45 &amp;amp; 46 || FLOAT || Region size in Cells in X direction || Counted from the middle cell to the outer edge of the region, Byte 46 = Integer, Byte 45 only uses two values: 0 or 128, I believe it allows to add 0.5f&lt;br /&gt;
|-&lt;br /&gt;
| 47 &amp;amp; 48 || FLOAT || Region size in Cells in Y direction || Counted from the middle cell to the outer edge of the region, Byte 48 = Integer, Byte 47 only uses two values: 0 or 128, I believe it allows to add 0.5f&lt;br /&gt;
|-&lt;br /&gt;
| 49 || UINT8 || Fixed value || Seems to be always value 128 for each existing region entry, For empty entry value 0&lt;br /&gt;
|-&lt;br /&gt;
| 69 || UINT8 || Value depending on region type || Always contains value 244 + Value of byte at offset 0 (Region type)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits (in alphabetical order) == &lt;br /&gt;
&lt;br /&gt;
Aybe&lt;br /&gt;
&lt;br /&gt;
Malvineous&lt;br /&gt;
&lt;br /&gt;
movAX13h&lt;br /&gt;
&lt;br /&gt;
srtuss&lt;br /&gt;
&lt;br /&gt;
[http://syndicate.lubiki.pl/ Syndicate series unofficial fan site] for the various utilities.&lt;br /&gt;
&lt;br /&gt;
woalexan&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[https://1drv.ms/f/s!AqAtR29m3cqGxz75Vv-3cap8guE3 Game demo, Network and MPU-401 patches]&lt;br /&gt;
&lt;br /&gt;
[https://www.vogons.org/viewtopic.php?f=7&amp;amp;t=33173&amp;amp;hilit=hi+octane Hi-Octane + General MIDI = crash?]&lt;/div&gt;</summary>
		<author><name>Woalexan</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12483</id>
		<title>Hi Octane</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12483"/>
		<updated>2025-10-21T20:07:02Z</updated>

		<summary type="html">&lt;p&gt;Woalexan: Fixed region table after latest learnings, Found that Important bytes were missing before&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hi Octane&#039;&#039;&#039; is hover-car racing game. According to Sean Cooper it was made in 6.5 weeks using engine code from Syndicate and Magic Carpet. There are at least two releases of the game, the initial release (executable contains string &#039;&#039;Jun 10 1995 17:45:48&#039;&#039;) with 6 levels, and a later extended version (&#039;&#039;Oct 23 1995 15:57:32&#039;&#039;) with 9 levels, additional game modes, and slightly reworked levels. In certain file format details the used version makes a difference.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
Level inspector and incomplete editor by movAX13h (contains all assets of the original game extracted/converted by srtuss): https://github.com/movAX13h/HiOctaneTools&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = sounds/music.dat&lt;br /&gt;
 | Format = see below&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Archive containing music files in different formats: [[XMI Format]], [[GEN Format]], [[ROL Format]], [[WTB Format]].&amp;lt;br/&amp;gt;There are five files per format : TGAME1, TGAME2, TGAME3, TGAME4, TINTRO2.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== MUSIC.DAT ==&lt;br /&gt;
&lt;br /&gt;
* read the [[INT32LE]] at EOF and seek to returned position&lt;br /&gt;
* count the N number of [[INT16LE]] that equals &amp;lt;code&amp;gt;0x0001&amp;lt;/code&amp;gt;, then read N of the following struct:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTunes || Offset to the list of tunes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune1 || Offset to the first tune&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || unknown || Unknown (always &amp;lt;code&amp;gt;0xC0000000&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;192&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTunes || Length of all tunes together, bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* for each of the former struct&lt;br /&gt;
** seek to &amp;lt;code&amp;gt;offTunes&amp;lt;/code&amp;gt;&lt;br /&gt;
** read one of the following struct, its &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; indicates the byte sum of tunes following&lt;br /&gt;
** read as many of the following struct until their &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; sum equals the one in previous step&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || name[12] || File name of the tune, &amp;lt;code&amp;gt;\0&amp;lt;/code&amp;gt; padded&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[6] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune || Tune relative offset&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[4] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTune || Tune length, bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || unknown || Unknown (always &amp;lt;code&amp;gt;0x5A00&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;90&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* you now have a catalog of a collection of tunes, e.g. five ROL songs, five WTB songs etc&lt;br /&gt;
* to extract a song, copy &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; bytes starting at &amp;lt;code&amp;gt;offTune1 + offTune&amp;lt;/code&amp;gt;, file name is &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RNC-compressed files ==&lt;br /&gt;
&lt;br /&gt;
Many of the game&#039;s files are compressed using the [[Rob Northern Compression]] format; some of them such as &#039;&#039;SOUND\SOUND.DAT&#039;&#039; are a concatenation of many RNC archives simply &#039;&#039;glued&#039;&#039; together.&lt;br /&gt;
&lt;br /&gt;
A command-line unpacker can be found here : [http://syndicate.lubiki.pl/downloads/bullfrog_utils_rnc.zip Bullfrog games RNC Utilities] (from [http://syndicate.lubiki.pl/synd/rework/synd_rework_rnc.php Unpacking RNC files])&lt;br /&gt;
&lt;br /&gt;
== DAT/TAB pairs ==&lt;br /&gt;
&lt;br /&gt;
Can be decompressed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_tabdat.zip Bullfrog games DAT/TAB Graphics extractor] (they first must be decompressed if they are RNC-compressed).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DAT format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Without a TAB file, it&#039;s raw pixels; with a TAB file it&#039;s a form of line by line RLE compression where only transparent pixels are compressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TAB format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || position || Image position in .DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || height || Image height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TMAPS:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Contains powerups and some HUD elements but TAB format is different:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || flat || Size of RNC stream unpacked, useless as it&#039;s contained in stream header already&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || pos || Position in DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || index || Some index but can be duplicate, so likely a type or category instead&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are N+1 entries to be able to compute last item size in DAT.&lt;br /&gt;
&lt;br /&gt;
Each image has the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT16 || unknown || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || height || Image height&lt;br /&gt;
|-&lt;br /&gt;
| INT8[] || pixels || Image pixels, 8-bit paletted &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game&#039;s files ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Format&lt;br /&gt;
! RNC compressed&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|data\hfont0-0.dat&amp;lt;br/&amp;gt;data\hfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\hspr0-0.dat&amp;lt;br/&amp;gt;data\hspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (large)&lt;br /&gt;
|-&lt;br /&gt;
|data\intro.dat&lt;br /&gt;
|[[Autodesk FLI animation]]&lt;br /&gt;
|No&lt;br /&gt;
|Game introduction&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-0.dat&amp;lt;br/&amp;gt;data\logo0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-1.dat&amp;lt;br/&amp;gt;data\logo0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mfont0-0.dat&amp;lt;br/&amp;gt;data\mfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mspr0-0.dat&amp;lt;br/&amp;gt;data\mspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (small)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-0.dat&amp;lt;br/&amp;gt;data\olfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-1.dat&amp;lt;br/&amp;gt;data\olfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\onet0-*.dat&amp;lt;br/&amp;gt;data\oscr0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200 and 640&amp;amp;times;480&lt;br /&gt;
|Yes&lt;br /&gt;
|Loading and selection screens&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-0.dat&amp;lt;br/&amp;gt;data\osfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-1.dat&amp;lt;br/&amp;gt;data\osfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\palet0-0.dat&lt;br /&gt;
|[[VGA Palette]]&lt;br /&gt;
|No&lt;br /&gt;
|The palette of every asset of the game, unless specified&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-0.dat&amp;lt;br/&amp;gt;data\panel0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-1.dat&amp;lt;br/&amp;gt;data\panel0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-0.dat&amp;lt;br/&amp;gt;data\panel9-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-1.dat&amp;lt;br/&amp;gt;data\panel9-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-0.dat&amp;lt;br/&amp;gt;data\pfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-1.dat&amp;lt;br/&amp;gt;data\pfont0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\point0-0.dat&amp;lt;br/&amp;gt;data\point0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor cursors&lt;br /&gt;
|-&lt;br /&gt;
|data\puzzle.dat&lt;br /&gt;
|[[Raw VGA image]], 112&amp;amp;times;96&lt;br /&gt;
|No&lt;br /&gt;
|The cheat puzzle activated with CTRL-Tab in-game&lt;br /&gt;
|-&lt;br /&gt;
|data\sky0-*.dat&lt;br /&gt;
|[[Raw VGA Image]], 256&amp;amp;times;256&lt;br /&gt;
|Yes&lt;br /&gt;
|Horizon of each track&lt;br /&gt;
|-&lt;br /&gt;
|data\srch0-0.dat&lt;br /&gt;
|[[Raw VGA Image]], 32&amp;amp;times;32&lt;br /&gt;
|Yes&lt;br /&gt;
|Looks like a radar but seems to be unused&lt;br /&gt;
|-&lt;br /&gt;
|data\table0-*.dat&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
These files differ by at most a few bytes, their name suggests a sine table but this is pure speculation.&lt;br /&gt;
&lt;br /&gt;
The following pattern appears when they are interpreted as a 256 pixels wide image:&lt;br /&gt;
&lt;br /&gt;
[[File:HiOctaneTable.png]]&lt;br /&gt;
|-&lt;br /&gt;
|data\textu0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 64&amp;amp;times;16384&lt;br /&gt;
|Yes&lt;br /&gt;
|64&amp;amp;times;64 terrain textures&lt;br /&gt;
|-&lt;br /&gt;
|data\title.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200&lt;br /&gt;
|Yes&lt;br /&gt;
|The introductory screen&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.dat&lt;br /&gt;
|&lt;br /&gt;
|Yes&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.tab&lt;br /&gt;
|&lt;br /&gt;
|No&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\track0-0.dat&amp;lt;br/&amp;gt;data\track0-0.tab&amp;lt;br/&amp;gt;data\track0-1.dat&amp;lt;br/&amp;gt;data\track0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No/Yes&lt;br /&gt;
|Contain the images of the level minimaps that are shown in the HUD. The game does work without them,&lt;br /&gt;
but then the minimap is not shown. Initial game version does not use RNC compression, extended version does.&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-0.dat&amp;lt;br/&amp;gt;objects/data/tex0-0.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;768&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-1.dat&amp;lt;br/&amp;gt;objects/data/tex0-1.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;88&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; none of the TAB files are RNC-compressed.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The image formats above are partially decoded, they are still missing palette information.&lt;br /&gt;
&lt;br /&gt;
All the images are paletted, 8 bits per pixels.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTRO.DAT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Header can be fixed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_flifix.zip Autodesk Animator FLI files fixer] but since format is pretty old and that [http://syndicate.lubiki.pl/downloads/utils_waaplay110.zip Autodesk Animation Player 1.10] is a legacy Win16 executable, it is not very convenient to use as of today.&lt;br /&gt;
&lt;br /&gt;
Instead, the file can be converted by FFMPEG to either BMP or AVI,&lt;br /&gt;
&lt;br /&gt;
Convert the animation to individual images, handle last invalid frame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i INTRO.DAT -vframes 548 -pix_fmt bgr24 intro%03d.bmp&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert the sequence of images to a raw AVI and respect the original frame rate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -r 14 -i intro%03d.bmp -vcodec rawvideo intro.avi&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that since the underlying format does not handle audio, there won&#039;t be any.&lt;br /&gt;
&lt;br /&gt;
== CONFIG.DAT ==&lt;br /&gt;
&lt;br /&gt;
Contains the configuration of the game, current state of game logic relevant variables (for example next selected race track),&lt;br /&gt;
and the Highscore table. Obvious settings like graphics mode (VGA vs. SVGA) or if computer players are enabled are not stored in the configuration file, and are&lt;br /&gt;
reset to the default value during each start of the game. The save game files reuse the same file format, but I believe for save game files some data fields will most likely be ignored or not used.&lt;br /&gt;
&lt;br /&gt;
The advantage is that the users game settings are restored for each save game independently. The initial game release config file always has a size of 11449 bytes, the extended game release config file 137833 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Data type !! only ext Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Null terminated string || No || Current championship name (max 12 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034D || UINT8 || Yes || Current value for Death match lives (0 min up to 4 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034E || UINT8 || Yes || Current value for Hot seat players (2 min up to 8 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034F || UINT8 || Yes || Current value for Hot seat racing time (1 min up to 5 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0350 || Null terminated string || Yes || Player 2 name (max 8 characters), If empty string Player 2 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0370 || Null terminated string || Yes || Player 3 name (max 8 characters), If empty string Player 3 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0390 || Null terminated string || Yes || Player 4 name (max 8 characters), If empty string Player 4 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03B0 || Null terminated string || Yes || Player 5 name (max 8 characters), If empty string Player 5 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03D0 || Null terminated string || Yes || Player 6 name (max 8 characters), If empty string Player 6 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03F0 || Null terminated string || Yes || Player 7 name (max 8 characters), If empty string Player 7 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0410 || Null terminated string || Yes || Player 8 name (max 8 characters), If empty string Player 8 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x094B || UINT8 || No || Current selected player craft color scheme (0 = Madmedicine, 1 = Assassins, 2 = Gorehounds, 3 = Foofighters, 4 = Dethfest, 5 = Firephreaks, 6 = Stormriders, 7 = Bullfrog)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094C || UINT8 || No || Current selected player craft (0 = KD1 Speeder, 1 = Berserker, 2 = Jugga, 3 = Vampyr, 4 = Outrider, 5 = Flexiwing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094F || Null terminated string || No || Player 1 name (max 8 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0977 || UINT8 || No || Current game difficulty setting (0 = easy up to 3 = highest difficulty)&lt;br /&gt;
|-&lt;br /&gt;
| 0x097D || UINT8 || No || Music volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0981 || UINT8 || No || Sound volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0994 || STRUCT || No || Pos1 Highscore Entry (each entry 39 bytes, detail please see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x09BB || STRUCT || No || Pos2 Highscore Entry&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C79 || STRUCT || No || Pos20 Highscore Entry (last one shown in game table, but there are many more in file afterwards)&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|- &lt;br /&gt;
| 0x2996 || UINT8 || No || Shading Off = 0, Shading On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299A || UINT8 || No || Sky Off = 0, Sky On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299E || UINT8 || No || Renderer Setting 1 (TextureMapping lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 0; TextureMapping 2nd lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A2 || UINT8 || No || Renderer Setting 2 (TextureMapping 3nd lowest setting: 0x299E = 1,  0x29A2 = 1, 0x29A6 = 1; TextureMapping 4th lowest setting: 0x299E = 2,  0x29A2 = 2, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A6 || UINT8 || No || Renderer Setting 3 (TextureMapping 5th lowest setting: 0x299E = 3,  0x29A2 = 3, 0x29A6 = 1 (default value); TextureMapping highest setting: 0x299E = 3,  0x29A2 = 4, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C76 || UINT8 || No || Current selected race track (0 = level 1, 1 = level 2, and so on)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C7A || UINT8 || No || Current selected game language (0 = English, 1 = German, 2 = French, 3 = Spanish, 4 = Italian)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Highscore Table Entry Struct Detail ===&lt;br /&gt;
* 1 byte for highscore value&lt;br /&gt;
* 3 bytes of unknown data&lt;br /&gt;
* 1 bytes for player assessement string table index&lt;br /&gt;
* 9 bytes for player name best lap, 9th byte = string termination char&lt;br /&gt;
* 25 bytes of unknown data&lt;br /&gt;
&lt;br /&gt;
The player assessement string table (inside the executable) has the following order:&lt;br /&gt;
* Immortal&lt;br /&gt;
* Hardwired&lt;br /&gt;
* Outta Control&lt;br /&gt;
* Demon&lt;br /&gt;
* Deadly&lt;br /&gt;
* Wrecker&lt;br /&gt;
* Dangerous&lt;br /&gt;
* Tailgater&lt;br /&gt;
* Antisocial&lt;br /&gt;
* Dust Devil&lt;br /&gt;
* Upwardly Mobile&lt;br /&gt;
* Mediocre&lt;br /&gt;
* Too Slow&lt;br /&gt;
* Endangered Species&lt;br /&gt;
* Target Practice&lt;br /&gt;
* Back Marker&lt;br /&gt;
* Canyon Kisser&lt;br /&gt;
* Victim&lt;br /&gt;
* Scrap&lt;br /&gt;
* Smear&lt;br /&gt;
* Cheating Sucks (this is actually an additional entry, which is not possible according to the 20 different assessement point range)&lt;br /&gt;
&lt;br /&gt;
== Level file format ==&lt;br /&gt;
&lt;br /&gt;
Many details about the Hi Octane level file format were found out in the past already, and are for example documented under the HiOctaneTools link mentioned above. One specific information that was missing until now is where to find the starting location for the race and type/location of chargers in the level file. The source code of the HiOctaneTools already contained the readout of a POI (point of interest) value from the map data which already pointed to the area of important locations, but was still lacking the information what type of location this exactly is, and what size it has in terrain cells. I found that the POI value points to certain file offsets in the level file.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! POI value !! Level file offset&lt;br /&gt;
|-&lt;br /&gt;
| 992 || 246924&lt;br /&gt;
|-&lt;br /&gt;
| 993 || 247009&lt;br /&gt;
|-&lt;br /&gt;
| 994 || 247094&lt;br /&gt;
|-&lt;br /&gt;
| 995 || 247179  &lt;br /&gt;
|-&lt;br /&gt;
| 996 || 247264  &lt;br /&gt;
|-&lt;br /&gt;
| 997 || 247349  &lt;br /&gt;
|-&lt;br /&gt;
| 998 || 247434  &lt;br /&gt;
|-&lt;br /&gt;
| 999 || 247519  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each entry at this specific file locations is 85 bytes long. This bytes have the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte Nr !! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || UINT8 || Region type || 1 = Shield charger, 2 = Fuel charger, 3 = Ammo charger, 4 = Race start location&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UINT8 || Fixed value || Contains always value 1 for each used entry&lt;br /&gt;
|-&lt;br /&gt;
| 3 || UINT8 || Contains value that depends on the RegionId || Value = 224 + RegionId (number of region entry), possible range from 224 up to 231 &lt;br /&gt;
|-&lt;br /&gt;
| 4 || UINT8 || Same value as Byte 3 || Please see description above &lt;br /&gt;
|-&lt;br /&gt;
| 5 || UINT8 || Fixed value || Contains always value 3 for each used entry &lt;br /&gt;
|-&lt;br /&gt;
| 12 || UINT8 || Contains value that depends on the RegionId || Value = 200 + RegionId (number of region entry), possible range from 200 up to 207 &lt;br /&gt;
|-&lt;br /&gt;
| 13 || UINT8 || Fixed value || Contains always value 7 for each used entry &lt;br /&gt;
|-&lt;br /&gt;
| 16 || UINT8 || Seems to have always the same value as byte 4 || &lt;br /&gt;
|-&lt;br /&gt;
| 17 || UINT8 || Seems to have always the same value as byte 5 || &lt;br /&gt;
|-&lt;br /&gt;
| 18 || UINT8 || Fixed value || Contains always value 1 for each used entry&lt;br /&gt;
|-&lt;br /&gt;
| 24 &amp;amp; 25 || FLOAT || X coordinate || X coordinate of cell right in the middle of the defined location, Byte 25 = Integer, Byte 24 only uses two values: 0 or 128, I believe it allows to add 0.5f&lt;br /&gt;
|-&lt;br /&gt;
| 26 &amp;amp; 27 || FLOAT || Y coordinate || Y coordinate of cell right in the middle of the defined location, Byte 27 = Integer, Byte 26 only uses two values: 0 or 128, I believe it allows to add 0.5f&lt;br /&gt;
|-&lt;br /&gt;
| 39 || UINT8 || In most levels value is fixed with 232 || Some levels use different values, Right now purpose is unknown&lt;br /&gt;
|-&lt;br /&gt;
| 40 || UINT8 || In most levels value is fixed with 54 || Some levels use different values, Right now purpose is unknown&lt;br /&gt;
|-&lt;br /&gt;
| 45 &amp;amp; 46 || FLOAT || Region size in Cells in X direction || Counted from the middle cell to the outer edge of the region, Byte 46 = Integer, Byte 45 only uses two values: 0 or 128, I believe it allows to add 0.5f&lt;br /&gt;
|-&lt;br /&gt;
| 47 &amp;amp; 48 || FLOAT || Region size in Cells in Y direction || Counted from the middle cell to the outer edge of the region, Byte 48 = Integer, Byte 47 only uses two values: 0 or 128, I believe it allows to add 0.5f&lt;br /&gt;
|-&lt;br /&gt;
| 69 || UINT8 || Value depending on region type || Always contains value 245 + Value of byte at offset 0 (Region type)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits (in alphabetical order) == &lt;br /&gt;
&lt;br /&gt;
Aybe&lt;br /&gt;
&lt;br /&gt;
Malvineous&lt;br /&gt;
&lt;br /&gt;
movAX13h&lt;br /&gt;
&lt;br /&gt;
srtuss&lt;br /&gt;
&lt;br /&gt;
[http://syndicate.lubiki.pl/ Syndicate series unofficial fan site] for the various utilities.&lt;br /&gt;
&lt;br /&gt;
woalexan&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[https://1drv.ms/f/s!AqAtR29m3cqGxz75Vv-3cap8guE3 Game demo, Network and MPU-401 patches]&lt;br /&gt;
&lt;br /&gt;
[https://www.vogons.org/viewtopic.php?f=7&amp;amp;t=33173&amp;amp;hilit=hi+octane Hi-Octane + General MIDI = crash?]&lt;/div&gt;</summary>
		<author><name>Woalexan</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12450</id>
		<title>Hi Octane</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12450"/>
		<updated>2025-09-13T19:28:15Z</updated>

		<summary type="html">&lt;p&gt;Woalexan: Added new level file finding about region definition&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hi Octane&#039;&#039;&#039; is hover-car racing game. According to Sean Cooper it was made in 6.5 weeks using engine code from Syndicate and Magic Carpet. There are at least two releases of the game, the initial release (executable contains string &#039;&#039;Jun 10 1995 17:45:48&#039;&#039;) with 6 levels, and a later extended version (&#039;&#039;Oct 23 1995 15:57:32&#039;&#039;) with 9 levels, additional game modes, and slightly reworked levels. In certain file format details the used version makes a difference.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
Level inspector and incomplete editor by movAX13h (contains all assets of the original game extracted/converted by srtuss): https://github.com/movAX13h/HiOctaneTools&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = sounds/music.dat&lt;br /&gt;
 | Format = see below&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Archive containing music files in different formats: [[XMI Format]], [[GEN Format]], [[ROL Format]], [[WTB Format]].&amp;lt;br/&amp;gt;There are five files per format : TGAME1, TGAME2, TGAME3, TGAME4, TINTRO2.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== MUSIC.DAT ==&lt;br /&gt;
&lt;br /&gt;
* read the [[INT32LE]] at EOF and seek to returned position&lt;br /&gt;
* count the N number of [[INT16LE]] that equals &amp;lt;code&amp;gt;0x0001&amp;lt;/code&amp;gt;, then read N of the following struct:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTunes || Offset to the list of tunes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune1 || Offset to the first tune&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || unknown || Unknown (always &amp;lt;code&amp;gt;0xC0000000&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;192&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTunes || Length of all tunes together, bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* for each of the former struct&lt;br /&gt;
** seek to &amp;lt;code&amp;gt;offTunes&amp;lt;/code&amp;gt;&lt;br /&gt;
** read one of the following struct, its &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; indicates the byte sum of tunes following&lt;br /&gt;
** read as many of the following struct until their &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; sum equals the one in previous step&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || name[12] || File name of the tune, &amp;lt;code&amp;gt;\0&amp;lt;/code&amp;gt; padded&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[6] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune || Tune relative offset&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[4] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTune || Tune length, bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || unknown || Unknown (always &amp;lt;code&amp;gt;0x5A00&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;90&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* you now have a catalog of a collection of tunes, e.g. five ROL songs, five WTB songs etc&lt;br /&gt;
* to extract a song, copy &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; bytes starting at &amp;lt;code&amp;gt;offTune1 + offTune&amp;lt;/code&amp;gt;, file name is &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RNC-compressed files ==&lt;br /&gt;
&lt;br /&gt;
Many of the game&#039;s files are compressed using the [[Rob Northern Compression]] format; some of them such as &#039;&#039;SOUND\SOUND.DAT&#039;&#039; are a concatenation of many RNC archives simply &#039;&#039;glued&#039;&#039; together.&lt;br /&gt;
&lt;br /&gt;
A command-line unpacker can be found here : [http://syndicate.lubiki.pl/downloads/bullfrog_utils_rnc.zip Bullfrog games RNC Utilities] (from [http://syndicate.lubiki.pl/synd/rework/synd_rework_rnc.php Unpacking RNC files])&lt;br /&gt;
&lt;br /&gt;
== DAT/TAB pairs ==&lt;br /&gt;
&lt;br /&gt;
Can be decompressed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_tabdat.zip Bullfrog games DAT/TAB Graphics extractor] (they first must be decompressed if they are RNC-compressed).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DAT format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Without a TAB file, it&#039;s raw pixels; with a TAB file it&#039;s a form of line by line RLE compression where only transparent pixels are compressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TAB format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || position || Image position in .DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || height || Image height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TMAPS:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Contains powerups and some HUD elements but TAB format is different:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || flat || Size of RNC stream unpacked, useless as it&#039;s contained in stream header already&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || pos || Position in DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || index || Some index but can be duplicate, so likely a type or category instead&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are N+1 entries to be able to compute last item size in DAT.&lt;br /&gt;
&lt;br /&gt;
Each image has the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT16 || unknown || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || height || Image height&lt;br /&gt;
|-&lt;br /&gt;
| INT8[] || pixels || Image pixels, 8-bit paletted &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game&#039;s files ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Format&lt;br /&gt;
! RNC compressed&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|data\hfont0-0.dat&amp;lt;br/&amp;gt;data\hfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\hspr0-0.dat&amp;lt;br/&amp;gt;data\hspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (large)&lt;br /&gt;
|-&lt;br /&gt;
|data\intro.dat&lt;br /&gt;
|[[Autodesk FLI animation]]&lt;br /&gt;
|No&lt;br /&gt;
|Game introduction&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-0.dat&amp;lt;br/&amp;gt;data\logo0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-1.dat&amp;lt;br/&amp;gt;data\logo0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mfont0-0.dat&amp;lt;br/&amp;gt;data\mfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mspr0-0.dat&amp;lt;br/&amp;gt;data\mspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (small)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-0.dat&amp;lt;br/&amp;gt;data\olfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-1.dat&amp;lt;br/&amp;gt;data\olfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\onet0-*.dat&amp;lt;br/&amp;gt;data\oscr0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200 and 640&amp;amp;times;480&lt;br /&gt;
|Yes&lt;br /&gt;
|Loading and selection screens&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-0.dat&amp;lt;br/&amp;gt;data\osfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-1.dat&amp;lt;br/&amp;gt;data\osfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\palet0-0.dat&lt;br /&gt;
|[[VGA Palette]]&lt;br /&gt;
|No&lt;br /&gt;
|The palette of every asset of the game, unless specified&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-0.dat&amp;lt;br/&amp;gt;data\panel0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-1.dat&amp;lt;br/&amp;gt;data\panel0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-0.dat&amp;lt;br/&amp;gt;data\panel9-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-1.dat&amp;lt;br/&amp;gt;data\panel9-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-0.dat&amp;lt;br/&amp;gt;data\pfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-1.dat&amp;lt;br/&amp;gt;data\pfont0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\point0-0.dat&amp;lt;br/&amp;gt;data\point0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor cursors&lt;br /&gt;
|-&lt;br /&gt;
|data\puzzle.dat&lt;br /&gt;
|[[Raw VGA image]], 112&amp;amp;times;96&lt;br /&gt;
|No&lt;br /&gt;
|The cheat puzzle activated with CTRL-Tab in-game&lt;br /&gt;
|-&lt;br /&gt;
|data\sky0-*.dat&lt;br /&gt;
|[[Raw VGA Image]], 256&amp;amp;times;256&lt;br /&gt;
|Yes&lt;br /&gt;
|Horizon of each track&lt;br /&gt;
|-&lt;br /&gt;
|data\srch0-0.dat&lt;br /&gt;
|[[Raw VGA Image]], 32&amp;amp;times;32&lt;br /&gt;
|Yes&lt;br /&gt;
|Looks like a radar but seems to be unused&lt;br /&gt;
|-&lt;br /&gt;
|data\table0-*.dat&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
These files differ by at most a few bytes, their name suggests a sine table but this is pure speculation.&lt;br /&gt;
&lt;br /&gt;
The following pattern appears when they are interpreted as a 256 pixels wide image:&lt;br /&gt;
&lt;br /&gt;
[[File:HiOctaneTable.png]]&lt;br /&gt;
|-&lt;br /&gt;
|data\textu0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 64&amp;amp;times;16384&lt;br /&gt;
|Yes&lt;br /&gt;
|64&amp;amp;times;64 terrain textures&lt;br /&gt;
|-&lt;br /&gt;
|data\title.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200&lt;br /&gt;
|Yes&lt;br /&gt;
|The introductory screen&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.dat&lt;br /&gt;
|&lt;br /&gt;
|Yes&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.tab&lt;br /&gt;
|&lt;br /&gt;
|No&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\track0-0.dat&amp;lt;br/&amp;gt;data\track0-0.tab&amp;lt;br/&amp;gt;data\track0-1.dat&amp;lt;br/&amp;gt;data\track0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No/Yes&lt;br /&gt;
|Contain the images of the level minimaps that are shown in the HUD. The game does work without them,&lt;br /&gt;
but then the minimap is not shown. Initial game version does not use RNC compression, extended version does.&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-0.dat&amp;lt;br/&amp;gt;objects/data/tex0-0.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;768&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-1.dat&amp;lt;br/&amp;gt;objects/data/tex0-1.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;88&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; none of the TAB files are RNC-compressed.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The image formats above are partially decoded, they are still missing palette information.&lt;br /&gt;
&lt;br /&gt;
All the images are paletted, 8 bits per pixels.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTRO.DAT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Header can be fixed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_flifix.zip Autodesk Animator FLI files fixer] but since format is pretty old and that [http://syndicate.lubiki.pl/downloads/utils_waaplay110.zip Autodesk Animation Player 1.10] is a legacy Win16 executable, it is not very convenient to use as of today.&lt;br /&gt;
&lt;br /&gt;
Instead, the file can be converted by FFMPEG to either BMP or AVI,&lt;br /&gt;
&lt;br /&gt;
Convert the animation to individual images, handle last invalid frame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i INTRO.DAT -vframes 548 -pix_fmt bgr24 intro%03d.bmp&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert the sequence of images to a raw AVI and respect the original frame rate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -r 14 -i intro%03d.bmp -vcodec rawvideo intro.avi&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that since the underlying format does not handle audio, there won&#039;t be any.&lt;br /&gt;
&lt;br /&gt;
== CONFIG.DAT ==&lt;br /&gt;
&lt;br /&gt;
Contains the configuration of the game, current state of game logic relevant variables (for example next selected race track),&lt;br /&gt;
and the Highscore table. Obvious settings like graphics mode (VGA vs. SVGA) or if computer players are enabled are not stored in the configuration file, and are&lt;br /&gt;
reset to the default value during each start of the game. The save game files reuse the same file format, but I believe for save game files some data fields will most likely be ignored or not used.&lt;br /&gt;
&lt;br /&gt;
The advantage is that the users game settings are restored for each save game independently. The initial game release config file always has a size of 11449 bytes, the extended game release config file 137833 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Data type !! only ext Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Null terminated string || No || Current championship name (max 12 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034D || UINT8 || Yes || Current value for Death match lives (0 min up to 4 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034E || UINT8 || Yes || Current value for Hot seat players (2 min up to 8 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034F || UINT8 || Yes || Current value for Hot seat racing time (1 min up to 5 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0350 || Null terminated string || Yes || Player 2 name (max 8 characters), If empty string Player 2 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0370 || Null terminated string || Yes || Player 3 name (max 8 characters), If empty string Player 3 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0390 || Null terminated string || Yes || Player 4 name (max 8 characters), If empty string Player 4 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03B0 || Null terminated string || Yes || Player 5 name (max 8 characters), If empty string Player 5 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03D0 || Null terminated string || Yes || Player 6 name (max 8 characters), If empty string Player 6 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03F0 || Null terminated string || Yes || Player 7 name (max 8 characters), If empty string Player 7 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0410 || Null terminated string || Yes || Player 8 name (max 8 characters), If empty string Player 8 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x094B || UINT8 || No || Current selected player craft color scheme (0 = Madmedicine, 1 = Assassins, 2 = Gorehounds, 3 = Foofighters, 4 = Dethfest, 5 = Firephreaks, 6 = Stormriders, 7 = Bullfrog)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094C || UINT8 || No || Current selected player craft (0 = KD1 Speeder, 1 = Berserker, 2 = Jugga, 3 = Vampyr, 4 = Outrider, 5 = Flexiwing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094F || Null terminated string || No || Player 1 name (max 8 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0977 || UINT8 || No || Current game difficulty setting (0 = easy up to 3 = highest difficulty)&lt;br /&gt;
|-&lt;br /&gt;
| 0x097D || UINT8 || No || Music volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0981 || UINT8 || No || Sound volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0994 || STRUCT || No || Pos1 Highscore Entry (each entry 39 bytes, detail please see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x09BB || STRUCT || No || Pos2 Highscore Entry&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C79 || STRUCT || No || Pos20 Highscore Entry (last one shown in game table, but there are many more in file afterwards)&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|- &lt;br /&gt;
| 0x2996 || UINT8 || No || Shading Off = 0, Shading On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299A || UINT8 || No || Sky Off = 0, Sky On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299E || UINT8 || No || Renderer Setting 1 (TextureMapping lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 0; TextureMapping 2nd lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A2 || UINT8 || No || Renderer Setting 2 (TextureMapping 3nd lowest setting: 0x299E = 1,  0x29A2 = 1, 0x29A6 = 1; TextureMapping 4th lowest setting: 0x299E = 2,  0x29A2 = 2, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A6 || UINT8 || No || Renderer Setting 3 (TextureMapping 5th lowest setting: 0x299E = 3,  0x29A2 = 3, 0x29A6 = 1 (default value); TextureMapping highest setting: 0x299E = 3,  0x29A2 = 4, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C76 || UINT8 || No || Current selected race track (0 = level 1, 1 = level 2, and so on)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C7A || UINT8 || No || Current selected game language (0 = English, 1 = German, 2 = French, 3 = Spanish, 4 = Italian)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Highscore Table Entry Struct Detail ===&lt;br /&gt;
* 1 byte for highscore value&lt;br /&gt;
* 3 bytes of unknown data&lt;br /&gt;
* 1 bytes for player assessement string table index&lt;br /&gt;
* 9 bytes for player name best lap, 9th byte = string termination char&lt;br /&gt;
* 25 bytes of unknown data&lt;br /&gt;
&lt;br /&gt;
The player assessement string table (inside the executable) has the following order:&lt;br /&gt;
* Immortal&lt;br /&gt;
* Hardwired&lt;br /&gt;
* Outta Control&lt;br /&gt;
* Demon&lt;br /&gt;
* Deadly&lt;br /&gt;
* Wrecker&lt;br /&gt;
* Dangerous&lt;br /&gt;
* Tailgater&lt;br /&gt;
* Antisocial&lt;br /&gt;
* Dust Devil&lt;br /&gt;
* Upwardly Mobile&lt;br /&gt;
* Mediocre&lt;br /&gt;
* Too Slow&lt;br /&gt;
* Endangered Species&lt;br /&gt;
* Target Practice&lt;br /&gt;
* Back Marker&lt;br /&gt;
* Canyon Kisser&lt;br /&gt;
* Victim&lt;br /&gt;
* Scrap&lt;br /&gt;
* Smear&lt;br /&gt;
* Cheating Sucks (this is actually an additional entry, which is not possible according to the 20 different assessement point range)&lt;br /&gt;
&lt;br /&gt;
== Level file format ==&lt;br /&gt;
&lt;br /&gt;
Many details about the Hi Octane level file format were found out in the past already, and are for example documented under the HiOctaneTools link mentioned above. One specific information that was missing until now is where to find the starting location for the race and type/location of chargers in the level file. The source code of the HiOctaneTools already contained the readout of a POI (point of interest) value from the map data which already pointed to the area of important locations, but was still lacking the information what type of location this exactly is, and what size it has in terrain cells. I found that the POI value points to certain file offsets in the level file.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! POI value !! Level file offset&lt;br /&gt;
|-&lt;br /&gt;
| 992 || 246924&lt;br /&gt;
|-&lt;br /&gt;
| 993 || 247009&lt;br /&gt;
|-&lt;br /&gt;
| 994 || 247094&lt;br /&gt;
|-&lt;br /&gt;
| 995 || 247179  &lt;br /&gt;
|-&lt;br /&gt;
| 996 || 247264  &lt;br /&gt;
|-&lt;br /&gt;
| 997 || 247349  &lt;br /&gt;
|-&lt;br /&gt;
| 998 || 247434  &lt;br /&gt;
|-&lt;br /&gt;
| 999 || 247519  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each entry at this specific file locations is 85 bytes long. This bytes have the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Byte Nr !! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || UINT8 || Region type || 1 = Shield charger, 2 = Fuel charger, 3 = Ammo charger, 4 = Race start location&lt;br /&gt;
|-&lt;br /&gt;
| 25 || INT16 || X coordinate || X coordinate of cell right in the middle of the defined location&lt;br /&gt;
|-&lt;br /&gt;
| 27 || INT16 || Y coordinate || Y coordinate of cell right in the middle of the defined location&lt;br /&gt;
|-&lt;br /&gt;
| 46 || UINT8 || Region size in Cells in X direction || Counted from the middle cell to the outer edge of the region&lt;br /&gt;
|-&lt;br /&gt;
| 48 || UINT8 || Region size in Cells in Y direction || Counted from the middle cell to the outer edge of the region    &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits (in alphabetical order) == &lt;br /&gt;
&lt;br /&gt;
Aybe&lt;br /&gt;
&lt;br /&gt;
Malvineous&lt;br /&gt;
&lt;br /&gt;
movAX13h&lt;br /&gt;
&lt;br /&gt;
srtuss&lt;br /&gt;
&lt;br /&gt;
[http://syndicate.lubiki.pl/ Syndicate series unofficial fan site] for the various utilities.&lt;br /&gt;
&lt;br /&gt;
woalexan&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[https://1drv.ms/f/s!AqAtR29m3cqGxz75Vv-3cap8guE3 Game demo, Network and MPU-401 patches]&lt;br /&gt;
&lt;br /&gt;
[https://www.vogons.org/viewtopic.php?f=7&amp;amp;t=33173&amp;amp;hilit=hi+octane Hi-Octane + General MIDI = crash?]&lt;/div&gt;</summary>
		<author><name>Woalexan</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12447</id>
		<title>Hi Octane</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12447"/>
		<updated>2025-08-27T19:47:19Z</updated>

		<summary type="html">&lt;p&gt;Woalexan: /* Game&amp;#039;s files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hi Octane&#039;&#039;&#039; is hover-car racing game. According to Sean Cooper it was made in 6.5 weeks using engine code from Syndicate and Magic Carpet. There are at least two releases of the game, the initial release (executable contains string &#039;&#039;Jun 10 1995 17:45:48&#039;&#039;) with 6 levels, and a later extended version (&#039;&#039;Oct 23 1995 15:57:32&#039;&#039;) with 9 levels, additional game modes, and slightly reworked levels. In certain file format details the used version makes a difference.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
Level inspector and incomplete editor by movAX13h (contains all assets of the original game extracted/converted by srtuss): https://github.com/movAX13h/HiOctaneTools&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = sounds/music.dat&lt;br /&gt;
 | Format = see below&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Archive containing music files in different formats: [[XMI Format]], [[GEN Format]], [[ROL Format]], [[WTB Format]].&amp;lt;br/&amp;gt;There are five files per format : TGAME1, TGAME2, TGAME3, TGAME4, TINTRO2.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== MUSIC.DAT ==&lt;br /&gt;
&lt;br /&gt;
* read the [[INT32LE]] at EOF and seek to returned position&lt;br /&gt;
* count the N number of [[INT16LE]] that equals &amp;lt;code&amp;gt;0x0001&amp;lt;/code&amp;gt;, then read N of the following struct:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTunes || Offset to the list of tunes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune1 || Offset to the first tune&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || unknown || Unknown (always &amp;lt;code&amp;gt;0xC0000000&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;192&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTunes || Length of all tunes together, bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* for each of the former struct&lt;br /&gt;
** seek to &amp;lt;code&amp;gt;offTunes&amp;lt;/code&amp;gt;&lt;br /&gt;
** read one of the following struct, its &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; indicates the byte sum of tunes following&lt;br /&gt;
** read as many of the following struct until their &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; sum equals the one in previous step&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || name[12] || File name of the tune, &amp;lt;code&amp;gt;\0&amp;lt;/code&amp;gt; padded&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[6] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune || Tune relative offset&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[4] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTune || Tune length, bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || unknown || Unknown (always &amp;lt;code&amp;gt;0x5A00&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;90&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* you now have a catalog of a collection of tunes, e.g. five ROL songs, five WTB songs etc&lt;br /&gt;
* to extract a song, copy &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; bytes starting at &amp;lt;code&amp;gt;offTune1 + offTune&amp;lt;/code&amp;gt;, file name is &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RNC-compressed files ==&lt;br /&gt;
&lt;br /&gt;
Many of the game&#039;s files are compressed using the [[Rob Northern Compression]] format; some of them such as &#039;&#039;SOUND\SOUND.DAT&#039;&#039; are a concatenation of many RNC archives simply &#039;&#039;glued&#039;&#039; together.&lt;br /&gt;
&lt;br /&gt;
A command-line unpacker can be found here : [http://syndicate.lubiki.pl/downloads/bullfrog_utils_rnc.zip Bullfrog games RNC Utilities] (from [http://syndicate.lubiki.pl/synd/rework/synd_rework_rnc.php Unpacking RNC files])&lt;br /&gt;
&lt;br /&gt;
== DAT/TAB pairs ==&lt;br /&gt;
&lt;br /&gt;
Can be decompressed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_tabdat.zip Bullfrog games DAT/TAB Graphics extractor] (they first must be decompressed if they are RNC-compressed).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DAT format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Without a TAB file, it&#039;s raw pixels; with a TAB file it&#039;s a form of line by line RLE compression where only transparent pixels are compressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TAB format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || position || Image position in .DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || height || Image height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TMAPS:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Contains powerups and some HUD elements but TAB format is different:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || flat || Size of RNC stream unpacked, useless as it&#039;s contained in stream header already&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || pos || Position in DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || index || Some index but can be duplicate, so likely a type or category instead&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are N+1 entries to be able to compute last item size in DAT.&lt;br /&gt;
&lt;br /&gt;
Each image has the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT16 || unknown || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || height || Image height&lt;br /&gt;
|-&lt;br /&gt;
| INT8[] || pixels || Image pixels, 8-bit paletted &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game&#039;s files ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Format&lt;br /&gt;
! RNC compressed&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|data\hfont0-0.dat&amp;lt;br/&amp;gt;data\hfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\hspr0-0.dat&amp;lt;br/&amp;gt;data\hspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (large)&lt;br /&gt;
|-&lt;br /&gt;
|data\intro.dat&lt;br /&gt;
|[[Autodesk FLI animation]]&lt;br /&gt;
|No&lt;br /&gt;
|Game introduction&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-0.dat&amp;lt;br/&amp;gt;data\logo0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-1.dat&amp;lt;br/&amp;gt;data\logo0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mfont0-0.dat&amp;lt;br/&amp;gt;data\mfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mspr0-0.dat&amp;lt;br/&amp;gt;data\mspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (small)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-0.dat&amp;lt;br/&amp;gt;data\olfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-1.dat&amp;lt;br/&amp;gt;data\olfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\onet0-*.dat&amp;lt;br/&amp;gt;data\oscr0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200 and 640&amp;amp;times;480&lt;br /&gt;
|Yes&lt;br /&gt;
|Loading and selection screens&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-0.dat&amp;lt;br/&amp;gt;data\osfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-1.dat&amp;lt;br/&amp;gt;data\osfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\palet0-0.dat&lt;br /&gt;
|[[VGA Palette]]&lt;br /&gt;
|No&lt;br /&gt;
|The palette of every asset of the game, unless specified&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-0.dat&amp;lt;br/&amp;gt;data\panel0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-1.dat&amp;lt;br/&amp;gt;data\panel0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-0.dat&amp;lt;br/&amp;gt;data\panel9-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-1.dat&amp;lt;br/&amp;gt;data\panel9-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-0.dat&amp;lt;br/&amp;gt;data\pfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-1.dat&amp;lt;br/&amp;gt;data\pfont0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\point0-0.dat&amp;lt;br/&amp;gt;data\point0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor cursors&lt;br /&gt;
|-&lt;br /&gt;
|data\puzzle.dat&lt;br /&gt;
|[[Raw VGA image]], 112&amp;amp;times;96&lt;br /&gt;
|No&lt;br /&gt;
|The cheat puzzle activated with CTRL-Tab in-game&lt;br /&gt;
|-&lt;br /&gt;
|data\sky0-*.dat&lt;br /&gt;
|[[Raw VGA Image]], 256&amp;amp;times;256&lt;br /&gt;
|Yes&lt;br /&gt;
|Horizon of each track&lt;br /&gt;
|-&lt;br /&gt;
|data\srch0-0.dat&lt;br /&gt;
|[[Raw VGA Image]], 32&amp;amp;times;32&lt;br /&gt;
|Yes&lt;br /&gt;
|Looks like a radar but seems to be unused&lt;br /&gt;
|-&lt;br /&gt;
|data\table0-*.dat&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
These files differ by at most a few bytes, their name suggests a sine table but this is pure speculation.&lt;br /&gt;
&lt;br /&gt;
The following pattern appears when they are interpreted as a 256 pixels wide image:&lt;br /&gt;
&lt;br /&gt;
[[File:HiOctaneTable.png]]&lt;br /&gt;
|-&lt;br /&gt;
|data\textu0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 64&amp;amp;times;16384&lt;br /&gt;
|Yes&lt;br /&gt;
|64&amp;amp;times;64 terrain textures&lt;br /&gt;
|-&lt;br /&gt;
|data\title.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200&lt;br /&gt;
|Yes&lt;br /&gt;
|The introductory screen&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.dat&lt;br /&gt;
|&lt;br /&gt;
|Yes&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.tab&lt;br /&gt;
|&lt;br /&gt;
|No&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\track0-0.dat&amp;lt;br/&amp;gt;data\track0-0.tab&amp;lt;br/&amp;gt;data\track0-1.dat&amp;lt;br/&amp;gt;data\track0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No/Yes&lt;br /&gt;
|Contain the images of the level minimaps that are shown in the HUD. The game does work without them,&lt;br /&gt;
but then the minimap is not shown. Initial game version does not use RNC compression, extended version does.&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-0.dat&amp;lt;br/&amp;gt;objects/data/tex0-0.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;768&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-1.dat&amp;lt;br/&amp;gt;objects/data/tex0-1.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;88&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; none of the TAB files are RNC-compressed.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The image formats above are partially decoded, they are still missing palette information.&lt;br /&gt;
&lt;br /&gt;
All the images are paletted, 8 bits per pixels.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTRO.DAT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Header can be fixed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_flifix.zip Autodesk Animator FLI files fixer] but since format is pretty old and that [http://syndicate.lubiki.pl/downloads/utils_waaplay110.zip Autodesk Animation Player 1.10] is a legacy Win16 executable, it is not very convenient to use as of today.&lt;br /&gt;
&lt;br /&gt;
Instead, the file can be converted by FFMPEG to either BMP or AVI,&lt;br /&gt;
&lt;br /&gt;
Convert the animation to individual images, handle last invalid frame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i INTRO.DAT -vframes 548 -pix_fmt bgr24 intro%03d.bmp&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert the sequence of images to a raw AVI and respect the original frame rate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -r 14 -i intro%03d.bmp -vcodec rawvideo intro.avi&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that since the underlying format does not handle audio, there won&#039;t be any.&lt;br /&gt;
&lt;br /&gt;
== CONFIG.DAT ==&lt;br /&gt;
&lt;br /&gt;
Contains the configuration of the game, current state of game logic relevant variables (for example next selected race track),&lt;br /&gt;
and the Highscore table. Obvious settings like graphics mode (VGA vs. SVGA) or if computer players are enabled are not stored in the configuration file, and are&lt;br /&gt;
reset to the default value during each start of the game. The save game files reuse the same file format, but I believe for save game files some data fields will most likely be ignored or not used.&lt;br /&gt;
&lt;br /&gt;
The advantage is that the users game settings are restored for each save game independently. The initial game release config file always has a size of 11449 bytes, the extended game release config file 137833 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Data type !! only ext Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Null terminated string || No || Current championship name (max 12 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034D || UINT8 || Yes || Current value for Death match lives (0 min up to 4 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034E || UINT8 || Yes || Current value for Hot seat players (2 min up to 8 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034F || UINT8 || Yes || Current value for Hot seat racing time (1 min up to 5 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0350 || Null terminated string || Yes || Player 2 name (max 8 characters), If empty string Player 2 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0370 || Null terminated string || Yes || Player 3 name (max 8 characters), If empty string Player 3 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0390 || Null terminated string || Yes || Player 4 name (max 8 characters), If empty string Player 4 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03B0 || Null terminated string || Yes || Player 5 name (max 8 characters), If empty string Player 5 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03D0 || Null terminated string || Yes || Player 6 name (max 8 characters), If empty string Player 6 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03F0 || Null terminated string || Yes || Player 7 name (max 8 characters), If empty string Player 7 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0410 || Null terminated string || Yes || Player 8 name (max 8 characters), If empty string Player 8 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x094B || UINT8 || No || Current selected player craft color scheme (0 = Madmedicine, 1 = Assassins, 2 = Gorehounds, 3 = Foofighters, 4 = Dethfest, 5 = Firephreaks, 6 = Stormriders, 7 = Bullfrog)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094C || UINT8 || No || Current selected player craft (0 = KD1 Speeder, 1 = Berserker, 2 = Jugga, 3 = Vampyr, 4 = Outrider, 5 = Flexiwing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094F || Null terminated string || No || Player 1 name (max 8 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0977 || UINT8 || No || Current game difficulty setting (0 = easy up to 3 = highest difficulty)&lt;br /&gt;
|-&lt;br /&gt;
| 0x097D || UINT8 || No || Music volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0981 || UINT8 || No || Sound volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0994 || STRUCT || No || Pos1 Highscore Entry (each entry 39 bytes, detail please see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x09BB || STRUCT || No || Pos2 Highscore Entry&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C79 || STRUCT || No || Pos20 Highscore Entry (last one shown in game table, but there are many more in file afterwards)&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|- &lt;br /&gt;
| 0x2996 || UINT8 || No || Shading Off = 0, Shading On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299A || UINT8 || No || Sky Off = 0, Sky On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299E || UINT8 || No || Renderer Setting 1 (TextureMapping lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 0; TextureMapping 2nd lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A2 || UINT8 || No || Renderer Setting 2 (TextureMapping 3nd lowest setting: 0x299E = 1,  0x29A2 = 1, 0x29A6 = 1; TextureMapping 4th lowest setting: 0x299E = 2,  0x29A2 = 2, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A6 || UINT8 || No || Renderer Setting 3 (TextureMapping 5th lowest setting: 0x299E = 3,  0x29A2 = 3, 0x29A6 = 1 (default value); TextureMapping highest setting: 0x299E = 3,  0x29A2 = 4, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C76 || UINT8 || No || Current selected race track (0 = level 1, 1 = level 2, and so on)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C7A || UINT8 || No || Current selected game language (0 = English, 1 = German, 2 = French, 3 = Spanish, 4 = Italian)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Highscore Table Entry Struct Detail ===&lt;br /&gt;
* 1 byte for highscore value&lt;br /&gt;
* 3 bytes of unknown data&lt;br /&gt;
* 1 bytes for player assessement string table index&lt;br /&gt;
* 9 bytes for player name best lap, 9th byte = string termination char&lt;br /&gt;
* 25 bytes of unknown data&lt;br /&gt;
&lt;br /&gt;
The player assessement string table (inside the executable) has the following order:&lt;br /&gt;
* Immortal&lt;br /&gt;
* Hardwired&lt;br /&gt;
* Outta Control&lt;br /&gt;
* Demon&lt;br /&gt;
* Deadly&lt;br /&gt;
* Wrecker&lt;br /&gt;
* Dangerous&lt;br /&gt;
* Tailgater&lt;br /&gt;
* Antisocial&lt;br /&gt;
* Dust Devil&lt;br /&gt;
* Upwardly Mobile&lt;br /&gt;
* Mediocre&lt;br /&gt;
* Too Slow&lt;br /&gt;
* Endangered Species&lt;br /&gt;
* Target Practice&lt;br /&gt;
* Back Marker&lt;br /&gt;
* Canyon Kisser&lt;br /&gt;
* Victim&lt;br /&gt;
* Scrap&lt;br /&gt;
* Smear&lt;br /&gt;
* Cheating Sucks (this is actually an additional entry, which is not possible according to the 20 different assessement point range) &lt;br /&gt;
&lt;br /&gt;
== Credits (in alphabetical order) == &lt;br /&gt;
&lt;br /&gt;
Aybe&lt;br /&gt;
&lt;br /&gt;
Malvineous&lt;br /&gt;
&lt;br /&gt;
movAX13h&lt;br /&gt;
&lt;br /&gt;
srtuss&lt;br /&gt;
&lt;br /&gt;
[http://syndicate.lubiki.pl/ Syndicate series unofficial fan site] for the various utilities.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[https://1drv.ms/f/s!AqAtR29m3cqGxz75Vv-3cap8guE3 Game demo, Network and MPU-401 patches]&lt;br /&gt;
&lt;br /&gt;
[https://www.vogons.org/viewtopic.php?f=7&amp;amp;t=33173&amp;amp;hilit=hi+octane Hi-Octane + General MIDI = crash?]&lt;/div&gt;</summary>
		<author><name>Woalexan</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12446</id>
		<title>Hi Octane</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12446"/>
		<updated>2025-08-27T19:45:22Z</updated>

		<summary type="html">&lt;p&gt;Woalexan: Added small detail about settings not stored in config file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hi Octane&#039;&#039;&#039; is hover-car racing game. According to Sean Cooper it was made in 6.5 weeks using engine code from Syndicate and Magic Carpet. There are at least two releases of the game, the initial release (executable contains string &#039;&#039;Jun 10 1995 17:45:48&#039;&#039;) with 6 levels, and a later extended version (&#039;&#039;Oct 23 1995 15:57:32&#039;&#039;) with 9 levels, additional game modes, and slightly reworked levels. In certain file format details the used version makes a difference.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
Level inspector and incomplete editor by movAX13h (contains all assets of the original game extracted/converted by srtuss): https://github.com/movAX13h/HiOctaneTools&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = sounds/music.dat&lt;br /&gt;
 | Format = see below&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Archive containing music files in different formats: [[XMI Format]], [[GEN Format]], [[ROL Format]], [[WTB Format]].&amp;lt;br/&amp;gt;There are five files per format : TGAME1, TGAME2, TGAME3, TGAME4, TINTRO2.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== MUSIC.DAT ==&lt;br /&gt;
&lt;br /&gt;
* read the [[INT32LE]] at EOF and seek to returned position&lt;br /&gt;
* count the N number of [[INT16LE]] that equals &amp;lt;code&amp;gt;0x0001&amp;lt;/code&amp;gt;, then read N of the following struct:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTunes || Offset to the list of tunes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune1 || Offset to the first tune&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || unknown || Unknown (always &amp;lt;code&amp;gt;0xC0000000&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;192&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTunes || Length of all tunes together, bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* for each of the former struct&lt;br /&gt;
** seek to &amp;lt;code&amp;gt;offTunes&amp;lt;/code&amp;gt;&lt;br /&gt;
** read one of the following struct, its &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; indicates the byte sum of tunes following&lt;br /&gt;
** read as many of the following struct until their &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; sum equals the one in previous step&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || name[12] || File name of the tune, &amp;lt;code&amp;gt;\0&amp;lt;/code&amp;gt; padded&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[6] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune || Tune relative offset&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[4] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTune || Tune length, bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || unknown || Unknown (always &amp;lt;code&amp;gt;0x5A00&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;90&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* you now have a catalog of a collection of tunes, e.g. five ROL songs, five WTB songs etc&lt;br /&gt;
* to extract a song, copy &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; bytes starting at &amp;lt;code&amp;gt;offTune1 + offTune&amp;lt;/code&amp;gt;, file name is &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RNC-compressed files ==&lt;br /&gt;
&lt;br /&gt;
Many of the game&#039;s files are compressed using the [[Rob Northern Compression]] format; some of them such as &#039;&#039;SOUND\SOUND.DAT&#039;&#039; are a concatenation of many RNC archives simply &#039;&#039;glued&#039;&#039; together.&lt;br /&gt;
&lt;br /&gt;
A command-line unpacker can be found here : [http://syndicate.lubiki.pl/downloads/bullfrog_utils_rnc.zip Bullfrog games RNC Utilities] (from [http://syndicate.lubiki.pl/synd/rework/synd_rework_rnc.php Unpacking RNC files])&lt;br /&gt;
&lt;br /&gt;
== DAT/TAB pairs ==&lt;br /&gt;
&lt;br /&gt;
Can be decompressed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_tabdat.zip Bullfrog games DAT/TAB Graphics extractor] (they first must be decompressed if they are RNC-compressed).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DAT format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Without a TAB file, it&#039;s raw pixels; with a TAB file it&#039;s a form of line by line RLE compression where only transparent pixels are compressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TAB format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || position || Image position in .DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || height || Image height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TMAPS:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Contains powerups and some HUD elements but TAB format is different:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || flat || Size of RNC stream unpacked, useless as it&#039;s contained in stream header already&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || pos || Position in DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || index || Some index but can be duplicate, so likely a type or category instead&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are N+1 entries to be able to compute last item size in DAT.&lt;br /&gt;
&lt;br /&gt;
Each image has the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT16 || unknown || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || height || Image height&lt;br /&gt;
|-&lt;br /&gt;
| INT8[] || pixels || Image pixels, 8-bit paletted &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game&#039;s files ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Format&lt;br /&gt;
! RNC compressed&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|data\hfont0-0.dat&amp;lt;br/&amp;gt;data\hfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\hspr0-0.dat&amp;lt;br/&amp;gt;data\hspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (large)&lt;br /&gt;
|-&lt;br /&gt;
|data\intro.dat&lt;br /&gt;
|[[Autodesk FLI animation]]&lt;br /&gt;
|No&lt;br /&gt;
|Game introduction&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-0.dat&amp;lt;br/&amp;gt;data\logo0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-1.dat&amp;lt;br/&amp;gt;data\logo0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mfont0-0.dat&amp;lt;br/&amp;gt;data\mfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mspr0-0.dat&amp;lt;br/&amp;gt;data\mspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (small)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-0.dat&amp;lt;br/&amp;gt;data\olfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-1.dat&amp;lt;br/&amp;gt;data\olfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\onet0-*.dat&amp;lt;br/&amp;gt;data\oscr0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200 and 640&amp;amp;times;480&lt;br /&gt;
|Yes&lt;br /&gt;
|Loading and selection screens&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-0.dat&amp;lt;br/&amp;gt;data\osfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-1.dat&amp;lt;br/&amp;gt;data\osfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\palet0-0.dat&lt;br /&gt;
|[[VGA Palette]]&lt;br /&gt;
|No&lt;br /&gt;
|The palette of every asset of the game, unless specified&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-0.dat&amp;lt;br/&amp;gt;data\panel0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-1.dat&amp;lt;br/&amp;gt;data\panel0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-0.dat&amp;lt;br/&amp;gt;data\panel9-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-1.dat&amp;lt;br/&amp;gt;data\panel9-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-0.dat&amp;lt;br/&amp;gt;data\pfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-1.dat&amp;lt;br/&amp;gt;data\pfont0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\point0-0.dat&amp;lt;br/&amp;gt;data\point0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor cursors&lt;br /&gt;
|-&lt;br /&gt;
|data\puzzle.dat&lt;br /&gt;
|[[Raw VGA image]], 112&amp;amp;times;96&lt;br /&gt;
|No&lt;br /&gt;
|The cheat puzzle activated with CTRL-Tab in-game&lt;br /&gt;
|-&lt;br /&gt;
|data\sky0-*.dat&lt;br /&gt;
|[[Raw VGA Image]], 256&amp;amp;times;256&lt;br /&gt;
|Yes&lt;br /&gt;
|Horizon of each track&lt;br /&gt;
|-&lt;br /&gt;
|data\srch0-0.dat&lt;br /&gt;
|[[Raw VGA Image]], 32&amp;amp;times;32&lt;br /&gt;
|Yes&lt;br /&gt;
|Looks like a radar but seems to be unused&lt;br /&gt;
|-&lt;br /&gt;
|data\table0-*.dat&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
These files differ by at most a few bytes, their name suggests a sine table but this is pure speculation.&lt;br /&gt;
&lt;br /&gt;
The following pattern appears when they are interpreted as a 256 pixels wide image:&lt;br /&gt;
&lt;br /&gt;
[[File:HiOctaneTable.png]]&lt;br /&gt;
|-&lt;br /&gt;
|data\textu0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 64&amp;amp;times;16384&lt;br /&gt;
|Yes&lt;br /&gt;
|64&amp;amp;times;64 terrain textures&lt;br /&gt;
|-&lt;br /&gt;
|data\title.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200&lt;br /&gt;
|Yes&lt;br /&gt;
|The introductory screen&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.dat&lt;br /&gt;
|&lt;br /&gt;
|Yes&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.tab&lt;br /&gt;
|&lt;br /&gt;
|No&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\track0-0.dat&amp;lt;br/&amp;gt;data\track0-0.tab&amp;lt;br/&amp;gt;data\track0-1.dat&amp;lt;br/&amp;gt;data\track0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No/Yes&lt;br /&gt;
|Contain the images of the level minimaps that are shown in the HUD. The game does work without them,&lt;br /&gt;
but then the minimap is not shown. Original game does not use RNC compression, extended version does.&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-0.dat&amp;lt;br/&amp;gt;objects/data/tex0-0.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;768&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-1.dat&amp;lt;br/&amp;gt;objects/data/tex0-1.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;88&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; none of the TAB files are RNC-compressed.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The image formats above are partially decoded, they are still missing palette information.&lt;br /&gt;
&lt;br /&gt;
All the images are paletted, 8 bits per pixels.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTRO.DAT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Header can be fixed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_flifix.zip Autodesk Animator FLI files fixer] but since format is pretty old and that [http://syndicate.lubiki.pl/downloads/utils_waaplay110.zip Autodesk Animation Player 1.10] is a legacy Win16 executable, it is not very convenient to use as of today.&lt;br /&gt;
&lt;br /&gt;
Instead, the file can be converted by FFMPEG to either BMP or AVI,&lt;br /&gt;
&lt;br /&gt;
Convert the animation to individual images, handle last invalid frame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i INTRO.DAT -vframes 548 -pix_fmt bgr24 intro%03d.bmp&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert the sequence of images to a raw AVI and respect the original frame rate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -r 14 -i intro%03d.bmp -vcodec rawvideo intro.avi&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that since the underlying format does not handle audio, there won&#039;t be any.&lt;br /&gt;
&lt;br /&gt;
== CONFIG.DAT ==&lt;br /&gt;
&lt;br /&gt;
Contains the configuration of the game, current state of game logic relevant variables (for example next selected race track),&lt;br /&gt;
and the Highscore table. Obvious settings like graphics mode (VGA vs. SVGA) or if computer players are enabled are not stored in the configuration file, and are&lt;br /&gt;
reset to the default value during each start of the game. The save game files reuse the same file format, but I believe for save game files some data fields will most likely be ignored or not used.&lt;br /&gt;
&lt;br /&gt;
The advantage is that the users game settings are restored for each save game independently. The initial game release config file always has a size of 11449 bytes, the extended game release config file 137833 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Data type !! only ext Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Null terminated string || No || Current championship name (max 12 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034D || UINT8 || Yes || Current value for Death match lives (0 min up to 4 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034E || UINT8 || Yes || Current value for Hot seat players (2 min up to 8 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034F || UINT8 || Yes || Current value for Hot seat racing time (1 min up to 5 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0350 || Null terminated string || Yes || Player 2 name (max 8 characters), If empty string Player 2 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0370 || Null terminated string || Yes || Player 3 name (max 8 characters), If empty string Player 3 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0390 || Null terminated string || Yes || Player 4 name (max 8 characters), If empty string Player 4 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03B0 || Null terminated string || Yes || Player 5 name (max 8 characters), If empty string Player 5 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03D0 || Null terminated string || Yes || Player 6 name (max 8 characters), If empty string Player 6 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03F0 || Null terminated string || Yes || Player 7 name (max 8 characters), If empty string Player 7 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0410 || Null terminated string || Yes || Player 8 name (max 8 characters), If empty string Player 8 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x094B || UINT8 || No || Current selected player craft color scheme (0 = Madmedicine, 1 = Assassins, 2 = Gorehounds, 3 = Foofighters, 4 = Dethfest, 5 = Firephreaks, 6 = Stormriders, 7 = Bullfrog)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094C || UINT8 || No || Current selected player craft (0 = KD1 Speeder, 1 = Berserker, 2 = Jugga, 3 = Vampyr, 4 = Outrider, 5 = Flexiwing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094F || Null terminated string || No || Player 1 name (max 8 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0977 || UINT8 || No || Current game difficulty setting (0 = easy up to 3 = highest difficulty)&lt;br /&gt;
|-&lt;br /&gt;
| 0x097D || UINT8 || No || Music volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0981 || UINT8 || No || Sound volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0994 || STRUCT || No || Pos1 Highscore Entry (each entry 39 bytes, detail please see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x09BB || STRUCT || No || Pos2 Highscore Entry&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C79 || STRUCT || No || Pos20 Highscore Entry (last one shown in game table, but there are many more in file afterwards)&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|- &lt;br /&gt;
| 0x2996 || UINT8 || No || Shading Off = 0, Shading On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299A || UINT8 || No || Sky Off = 0, Sky On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299E || UINT8 || No || Renderer Setting 1 (TextureMapping lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 0; TextureMapping 2nd lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A2 || UINT8 || No || Renderer Setting 2 (TextureMapping 3nd lowest setting: 0x299E = 1,  0x29A2 = 1, 0x29A6 = 1; TextureMapping 4th lowest setting: 0x299E = 2,  0x29A2 = 2, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A6 || UINT8 || No || Renderer Setting 3 (TextureMapping 5th lowest setting: 0x299E = 3,  0x29A2 = 3, 0x29A6 = 1 (default value); TextureMapping highest setting: 0x299E = 3,  0x29A2 = 4, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C76 || UINT8 || No || Current selected race track (0 = level 1, 1 = level 2, and so on)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C7A || UINT8 || No || Current selected game language (0 = English, 1 = German, 2 = French, 3 = Spanish, 4 = Italian)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Highscore Table Entry Struct Detail ===&lt;br /&gt;
* 1 byte for highscore value&lt;br /&gt;
* 3 bytes of unknown data&lt;br /&gt;
* 1 bytes for player assessement string table index&lt;br /&gt;
* 9 bytes for player name best lap, 9th byte = string termination char&lt;br /&gt;
* 25 bytes of unknown data&lt;br /&gt;
&lt;br /&gt;
The player assessement string table (inside the executable) has the following order:&lt;br /&gt;
* Immortal&lt;br /&gt;
* Hardwired&lt;br /&gt;
* Outta Control&lt;br /&gt;
* Demon&lt;br /&gt;
* Deadly&lt;br /&gt;
* Wrecker&lt;br /&gt;
* Dangerous&lt;br /&gt;
* Tailgater&lt;br /&gt;
* Antisocial&lt;br /&gt;
* Dust Devil&lt;br /&gt;
* Upwardly Mobile&lt;br /&gt;
* Mediocre&lt;br /&gt;
* Too Slow&lt;br /&gt;
* Endangered Species&lt;br /&gt;
* Target Practice&lt;br /&gt;
* Back Marker&lt;br /&gt;
* Canyon Kisser&lt;br /&gt;
* Victim&lt;br /&gt;
* Scrap&lt;br /&gt;
* Smear&lt;br /&gt;
* Cheating Sucks (this is actually an additional entry, which is not possible according to the 20 different assessement point range) &lt;br /&gt;
&lt;br /&gt;
== Credits (in alphabetical order) == &lt;br /&gt;
&lt;br /&gt;
Aybe&lt;br /&gt;
&lt;br /&gt;
Malvineous&lt;br /&gt;
&lt;br /&gt;
movAX13h&lt;br /&gt;
&lt;br /&gt;
srtuss&lt;br /&gt;
&lt;br /&gt;
[http://syndicate.lubiki.pl/ Syndicate series unofficial fan site] for the various utilities.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[https://1drv.ms/f/s!AqAtR29m3cqGxz75Vv-3cap8guE3 Game demo, Network and MPU-401 patches]&lt;br /&gt;
&lt;br /&gt;
[https://www.vogons.org/viewtopic.php?f=7&amp;amp;t=33173&amp;amp;hilit=hi+octane Hi-Octane + General MIDI = crash?]&lt;/div&gt;</summary>
		<author><name>Woalexan</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12445</id>
		<title>Hi Octane</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12445"/>
		<updated>2025-08-27T19:36:29Z</updated>

		<summary type="html">&lt;p&gt;Woalexan: Added additional info for highscore table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hi Octane&#039;&#039;&#039; is hover-car racing game. According to Sean Cooper it was made in 6.5 weeks using engine code from Syndicate and Magic Carpet. There are at least two releases of the game, the initial release (executable contains string &#039;&#039;Jun 10 1995 17:45:48&#039;&#039;) with 6 levels, and a later extended version (&#039;&#039;Oct 23 1995 15:57:32&#039;&#039;) with 9 levels, additional game modes, and slightly reworked levels. In certain file format details the used version makes a difference.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
Level inspector and incomplete editor by movAX13h (contains all assets of the original game extracted/converted by srtuss): https://github.com/movAX13h/HiOctaneTools&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = sounds/music.dat&lt;br /&gt;
 | Format = see below&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Archive containing music files in different formats: [[XMI Format]], [[GEN Format]], [[ROL Format]], [[WTB Format]].&amp;lt;br/&amp;gt;There are five files per format : TGAME1, TGAME2, TGAME3, TGAME4, TINTRO2.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== MUSIC.DAT ==&lt;br /&gt;
&lt;br /&gt;
* read the [[INT32LE]] at EOF and seek to returned position&lt;br /&gt;
* count the N number of [[INT16LE]] that equals &amp;lt;code&amp;gt;0x0001&amp;lt;/code&amp;gt;, then read N of the following struct:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTunes || Offset to the list of tunes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune1 || Offset to the first tune&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || unknown || Unknown (always &amp;lt;code&amp;gt;0xC0000000&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;192&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTunes || Length of all tunes together, bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* for each of the former struct&lt;br /&gt;
** seek to &amp;lt;code&amp;gt;offTunes&amp;lt;/code&amp;gt;&lt;br /&gt;
** read one of the following struct, its &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; indicates the byte sum of tunes following&lt;br /&gt;
** read as many of the following struct until their &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; sum equals the one in previous step&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || name[12] || File name of the tune, &amp;lt;code&amp;gt;\0&amp;lt;/code&amp;gt; padded&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[6] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune || Tune relative offset&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[4] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTune || Tune length, bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || unknown || Unknown (always &amp;lt;code&amp;gt;0x5A00&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;90&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* you now have a catalog of a collection of tunes, e.g. five ROL songs, five WTB songs etc&lt;br /&gt;
* to extract a song, copy &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; bytes starting at &amp;lt;code&amp;gt;offTune1 + offTune&amp;lt;/code&amp;gt;, file name is &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RNC-compressed files ==&lt;br /&gt;
&lt;br /&gt;
Many of the game&#039;s files are compressed using the [[Rob Northern Compression]] format; some of them such as &#039;&#039;SOUND\SOUND.DAT&#039;&#039; are a concatenation of many RNC archives simply &#039;&#039;glued&#039;&#039; together.&lt;br /&gt;
&lt;br /&gt;
A command-line unpacker can be found here : [http://syndicate.lubiki.pl/downloads/bullfrog_utils_rnc.zip Bullfrog games RNC Utilities] (from [http://syndicate.lubiki.pl/synd/rework/synd_rework_rnc.php Unpacking RNC files])&lt;br /&gt;
&lt;br /&gt;
== DAT/TAB pairs ==&lt;br /&gt;
&lt;br /&gt;
Can be decompressed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_tabdat.zip Bullfrog games DAT/TAB Graphics extractor] (they first must be decompressed if they are RNC-compressed).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DAT format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Without a TAB file, it&#039;s raw pixels; with a TAB file it&#039;s a form of line by line RLE compression where only transparent pixels are compressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TAB format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || position || Image position in .DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || height || Image height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TMAPS:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Contains powerups and some HUD elements but TAB format is different:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || flat || Size of RNC stream unpacked, useless as it&#039;s contained in stream header already&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || pos || Position in DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || index || Some index but can be duplicate, so likely a type or category instead&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are N+1 entries to be able to compute last item size in DAT.&lt;br /&gt;
&lt;br /&gt;
Each image has the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT16 || unknown || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || height || Image height&lt;br /&gt;
|-&lt;br /&gt;
| INT8[] || pixels || Image pixels, 8-bit paletted &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game&#039;s files ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Format&lt;br /&gt;
! RNC compressed&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|data\hfont0-0.dat&amp;lt;br/&amp;gt;data\hfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\hspr0-0.dat&amp;lt;br/&amp;gt;data\hspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (large)&lt;br /&gt;
|-&lt;br /&gt;
|data\intro.dat&lt;br /&gt;
|[[Autodesk FLI animation]]&lt;br /&gt;
|No&lt;br /&gt;
|Game introduction&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-0.dat&amp;lt;br/&amp;gt;data\logo0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-1.dat&amp;lt;br/&amp;gt;data\logo0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mfont0-0.dat&amp;lt;br/&amp;gt;data\mfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mspr0-0.dat&amp;lt;br/&amp;gt;data\mspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (small)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-0.dat&amp;lt;br/&amp;gt;data\olfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-1.dat&amp;lt;br/&amp;gt;data\olfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\onet0-*.dat&amp;lt;br/&amp;gt;data\oscr0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200 and 640&amp;amp;times;480&lt;br /&gt;
|Yes&lt;br /&gt;
|Loading and selection screens&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-0.dat&amp;lt;br/&amp;gt;data\osfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-1.dat&amp;lt;br/&amp;gt;data\osfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\palet0-0.dat&lt;br /&gt;
|[[VGA Palette]]&lt;br /&gt;
|No&lt;br /&gt;
|The palette of every asset of the game, unless specified&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-0.dat&amp;lt;br/&amp;gt;data\panel0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-1.dat&amp;lt;br/&amp;gt;data\panel0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-0.dat&amp;lt;br/&amp;gt;data\panel9-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-1.dat&amp;lt;br/&amp;gt;data\panel9-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-0.dat&amp;lt;br/&amp;gt;data\pfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-1.dat&amp;lt;br/&amp;gt;data\pfont0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\point0-0.dat&amp;lt;br/&amp;gt;data\point0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor cursors&lt;br /&gt;
|-&lt;br /&gt;
|data\puzzle.dat&lt;br /&gt;
|[[Raw VGA image]], 112&amp;amp;times;96&lt;br /&gt;
|No&lt;br /&gt;
|The cheat puzzle activated with CTRL-Tab in-game&lt;br /&gt;
|-&lt;br /&gt;
|data\sky0-*.dat&lt;br /&gt;
|[[Raw VGA Image]], 256&amp;amp;times;256&lt;br /&gt;
|Yes&lt;br /&gt;
|Horizon of each track&lt;br /&gt;
|-&lt;br /&gt;
|data\srch0-0.dat&lt;br /&gt;
|[[Raw VGA Image]], 32&amp;amp;times;32&lt;br /&gt;
|Yes&lt;br /&gt;
|Looks like a radar but seems to be unused&lt;br /&gt;
|-&lt;br /&gt;
|data\table0-*.dat&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
These files differ by at most a few bytes, their name suggests a sine table but this is pure speculation.&lt;br /&gt;
&lt;br /&gt;
The following pattern appears when they are interpreted as a 256 pixels wide image:&lt;br /&gt;
&lt;br /&gt;
[[File:HiOctaneTable.png]]&lt;br /&gt;
|-&lt;br /&gt;
|data\textu0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 64&amp;amp;times;16384&lt;br /&gt;
|Yes&lt;br /&gt;
|64&amp;amp;times;64 terrain textures&lt;br /&gt;
|-&lt;br /&gt;
|data\title.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200&lt;br /&gt;
|Yes&lt;br /&gt;
|The introductory screen&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.dat&lt;br /&gt;
|&lt;br /&gt;
|Yes&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.tab&lt;br /&gt;
|&lt;br /&gt;
|No&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\track0-0.dat&amp;lt;br/&amp;gt;data\track0-0.tab&amp;lt;br/&amp;gt;data\track0-1.dat&amp;lt;br/&amp;gt;data\track0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No/Yes&lt;br /&gt;
|Contain the images of the level minimaps that are shown in the HUD. The game does work without them,&lt;br /&gt;
but then the minimap is not shown. Original game does not use RNC compression, extended version does.&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-0.dat&amp;lt;br/&amp;gt;objects/data/tex0-0.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;768&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-1.dat&amp;lt;br/&amp;gt;objects/data/tex0-1.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;88&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; none of the TAB files are RNC-compressed.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The image formats above are partially decoded, they are still missing palette information.&lt;br /&gt;
&lt;br /&gt;
All the images are paletted, 8 bits per pixels.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTRO.DAT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Header can be fixed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_flifix.zip Autodesk Animator FLI files fixer] but since format is pretty old and that [http://syndicate.lubiki.pl/downloads/utils_waaplay110.zip Autodesk Animation Player 1.10] is a legacy Win16 executable, it is not very convenient to use as of today.&lt;br /&gt;
&lt;br /&gt;
Instead, the file can be converted by FFMPEG to either BMP or AVI,&lt;br /&gt;
&lt;br /&gt;
Convert the animation to individual images, handle last invalid frame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i INTRO.DAT -vframes 548 -pix_fmt bgr24 intro%03d.bmp&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert the sequence of images to a raw AVI and respect the original frame rate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -r 14 -i intro%03d.bmp -vcodec rawvideo intro.avi&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that since the underlying format does not handle audio, there won&#039;t be any.&lt;br /&gt;
&lt;br /&gt;
== CONFIG.DAT ==&lt;br /&gt;
&lt;br /&gt;
Contains the configuration of the game, current state of game logic relevant variables (for example next selected race track),&lt;br /&gt;
and the Highscore table. &lt;br /&gt;
The save game files reuse the same file format, but I believe for save game files some data fields will most likely be ignored or not used.&lt;br /&gt;
&lt;br /&gt;
The advantage is that the users game settings are restored for each save game independently.&lt;br /&gt;
&lt;br /&gt;
The initial game release config file always has a size of 11449 bytes, the extended game release config file 137833 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Data type !! only ext Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Null terminated string || No || Current championship name (max 12 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034D || UINT8 || Yes || Current value for Death match lives (0 min up to 4 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034E || UINT8 || Yes || Current value for Hot seat players (2 min up to 8 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034F || UINT8 || Yes || Current value for Hot seat racing time (1 min up to 5 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0350 || Null terminated string || Yes || Player 2 name (max 8 characters), If empty string Player 2 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0370 || Null terminated string || Yes || Player 3 name (max 8 characters), If empty string Player 3 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0390 || Null terminated string || Yes || Player 4 name (max 8 characters), If empty string Player 4 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03B0 || Null terminated string || Yes || Player 5 name (max 8 characters), If empty string Player 5 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03D0 || Null terminated string || Yes || Player 6 name (max 8 characters), If empty string Player 6 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03F0 || Null terminated string || Yes || Player 7 name (max 8 characters), If empty string Player 7 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0410 || Null terminated string || Yes || Player 8 name (max 8 characters), If empty string Player 8 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x094B || UINT8 || No || Current selected player craft color scheme (0 = Madmedicine, 1 = Assassins, 2 = Gorehounds, 3 = Foofighters, 4 = Dethfest, 5 = Firephreaks, 6 = Stormriders, 7 = Bullfrog)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094C || UINT8 || No || Current selected player craft (0 = KD1 Speeder, 1 = Berserker, 2 = Jugga, 3 = Vampyr, 4 = Outrider, 5 = Flexiwing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094F || Null terminated string || No || Player 1 name (max 8 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0977 || UINT8 || No || Current game difficulty setting (0 = easy up to 3 = highest difficulty)&lt;br /&gt;
|-&lt;br /&gt;
| 0x097D || UINT8 || No || Music volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0981 || UINT8 || No || Sound volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0994 || STRUCT || No || Pos1 Highscore Entry (each entry 39 bytes, detail please see below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x09BB || STRUCT || No || Pos2 Highscore Entry&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C79 || STRUCT || No || Pos20 Highscore Entry (last one shown in game table, but there are many more in file afterwards)&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|- &lt;br /&gt;
| 0x2996 || UINT8 || No || Shading Off = 0, Shading On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299A || UINT8 || No || Sky Off = 0, Sky On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299E || UINT8 || No || Renderer Setting 1 (TextureMapping lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 0; TextureMapping 2nd lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A2 || UINT8 || No || Renderer Setting 2 (TextureMapping 3nd lowest setting: 0x299E = 1,  0x29A2 = 1, 0x29A6 = 1; TextureMapping 4th lowest setting: 0x299E = 2,  0x29A2 = 2, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A6 || UINT8 || No || Renderer Setting 3 (TextureMapping 5th lowest setting: 0x299E = 3,  0x29A2 = 3, 0x29A6 = 1 (default value); TextureMapping highest setting: 0x299E = 3,  0x29A2 = 4, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C76 || UINT8 || No || Current selected race track (0 = level 1, 1 = level 2, and so on)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C7A || UINT8 || No || Current selected game language (0 = English, 1 = German, 2 = French, 3 = Spanish, 4 = Italian)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Highscore Table Entry Struct Detail ===&lt;br /&gt;
* 1 byte for highscore value&lt;br /&gt;
* 3 bytes of unknown data&lt;br /&gt;
* 1 bytes for player assessement string table index&lt;br /&gt;
* 9 bytes for player name best lap, 9th byte = string termination char&lt;br /&gt;
* 25 bytes of unknown data&lt;br /&gt;
&lt;br /&gt;
The player assessement string table (inside the executable) has the following order:&lt;br /&gt;
* Immortal&lt;br /&gt;
* Hardwired&lt;br /&gt;
* Outta Control&lt;br /&gt;
* Demon&lt;br /&gt;
* Deadly&lt;br /&gt;
* Wrecker&lt;br /&gt;
* Dangerous&lt;br /&gt;
* Tailgater&lt;br /&gt;
* Antisocial&lt;br /&gt;
* Dust Devil&lt;br /&gt;
* Upwardly Mobile&lt;br /&gt;
* Mediocre&lt;br /&gt;
* Too Slow&lt;br /&gt;
* Endangered Species&lt;br /&gt;
* Target Practice&lt;br /&gt;
* Back Marker&lt;br /&gt;
* Canyon Kisser&lt;br /&gt;
* Victim&lt;br /&gt;
* Scrap&lt;br /&gt;
* Smear&lt;br /&gt;
* Cheating Sucks (this is actually an additional entry, which is not possible according to the 20 different assessement point range) &lt;br /&gt;
&lt;br /&gt;
== Credits (in alphabetical order) == &lt;br /&gt;
&lt;br /&gt;
Aybe&lt;br /&gt;
&lt;br /&gt;
Malvineous&lt;br /&gt;
&lt;br /&gt;
movAX13h&lt;br /&gt;
&lt;br /&gt;
srtuss&lt;br /&gt;
&lt;br /&gt;
[http://syndicate.lubiki.pl/ Syndicate series unofficial fan site] for the various utilities.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[https://1drv.ms/f/s!AqAtR29m3cqGxz75Vv-3cap8guE3 Game demo, Network and MPU-401 patches]&lt;br /&gt;
&lt;br /&gt;
[https://www.vogons.org/viewtopic.php?f=7&amp;amp;t=33173&amp;amp;hilit=hi+octane Hi-Octane + General MIDI = crash?]&lt;/div&gt;</summary>
		<author><name>Woalexan</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12444</id>
		<title>Hi Octane</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12444"/>
		<updated>2025-08-27T19:11:13Z</updated>

		<summary type="html">&lt;p&gt;Woalexan: Added more config.dat field data&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hi Octane&#039;&#039;&#039; is hover-car racing game. According to Sean Cooper it was made in 6.5 weeks using engine code from Syndicate and Magic Carpet. There are at least two releases of the game, the initial release (executable contains string &#039;&#039;Jun 10 1995 17:45:48&#039;&#039;) with 6 levels, and a later extended version (&#039;&#039;Oct 23 1995 15:57:32&#039;&#039;) with 9 levels, additional game modes, and slightly reworked levels. In certain file format details the used version makes a difference.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
Level inspector and incomplete editor by movAX13h (contains all assets of the original game extracted/converted by srtuss): https://github.com/movAX13h/HiOctaneTools&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = sounds/music.dat&lt;br /&gt;
 | Format = see below&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Archive containing music files in different formats: [[XMI Format]], [[GEN Format]], [[ROL Format]], [[WTB Format]].&amp;lt;br/&amp;gt;There are five files per format : TGAME1, TGAME2, TGAME3, TGAME4, TINTRO2.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== MUSIC.DAT ==&lt;br /&gt;
&lt;br /&gt;
* read the [[INT32LE]] at EOF and seek to returned position&lt;br /&gt;
* count the N number of [[INT16LE]] that equals &amp;lt;code&amp;gt;0x0001&amp;lt;/code&amp;gt;, then read N of the following struct:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTunes || Offset to the list of tunes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune1 || Offset to the first tune&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || unknown || Unknown (always &amp;lt;code&amp;gt;0xC0000000&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;192&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTunes || Length of all tunes together, bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* for each of the former struct&lt;br /&gt;
** seek to &amp;lt;code&amp;gt;offTunes&amp;lt;/code&amp;gt;&lt;br /&gt;
** read one of the following struct, its &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; indicates the byte sum of tunes following&lt;br /&gt;
** read as many of the following struct until their &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; sum equals the one in previous step&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || name[12] || File name of the tune, &amp;lt;code&amp;gt;\0&amp;lt;/code&amp;gt; padded&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[6] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune || Tune relative offset&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[4] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTune || Tune length, bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || unknown || Unknown (always &amp;lt;code&amp;gt;0x5A00&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;90&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* you now have a catalog of a collection of tunes, e.g. five ROL songs, five WTB songs etc&lt;br /&gt;
* to extract a song, copy &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; bytes starting at &amp;lt;code&amp;gt;offTune1 + offTune&amp;lt;/code&amp;gt;, file name is &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RNC-compressed files ==&lt;br /&gt;
&lt;br /&gt;
Many of the game&#039;s files are compressed using the [[Rob Northern Compression]] format; some of them such as &#039;&#039;SOUND\SOUND.DAT&#039;&#039; are a concatenation of many RNC archives simply &#039;&#039;glued&#039;&#039; together.&lt;br /&gt;
&lt;br /&gt;
A command-line unpacker can be found here : [http://syndicate.lubiki.pl/downloads/bullfrog_utils_rnc.zip Bullfrog games RNC Utilities] (from [http://syndicate.lubiki.pl/synd/rework/synd_rework_rnc.php Unpacking RNC files])&lt;br /&gt;
&lt;br /&gt;
== DAT/TAB pairs ==&lt;br /&gt;
&lt;br /&gt;
Can be decompressed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_tabdat.zip Bullfrog games DAT/TAB Graphics extractor] (they first must be decompressed if they are RNC-compressed).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DAT format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Without a TAB file, it&#039;s raw pixels; with a TAB file it&#039;s a form of line by line RLE compression where only transparent pixels are compressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TAB format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || position || Image position in .DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || height || Image height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TMAPS:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Contains powerups and some HUD elements but TAB format is different:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || flat || Size of RNC stream unpacked, useless as it&#039;s contained in stream header already&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || pos || Position in DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || index || Some index but can be duplicate, so likely a type or category instead&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are N+1 entries to be able to compute last item size in DAT.&lt;br /&gt;
&lt;br /&gt;
Each image has the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT16 || unknown || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || height || Image height&lt;br /&gt;
|-&lt;br /&gt;
| INT8[] || pixels || Image pixels, 8-bit paletted &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game&#039;s files ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Format&lt;br /&gt;
! RNC compressed&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|data\hfont0-0.dat&amp;lt;br/&amp;gt;data\hfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\hspr0-0.dat&amp;lt;br/&amp;gt;data\hspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (large)&lt;br /&gt;
|-&lt;br /&gt;
|data\intro.dat&lt;br /&gt;
|[[Autodesk FLI animation]]&lt;br /&gt;
|No&lt;br /&gt;
|Game introduction&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-0.dat&amp;lt;br/&amp;gt;data\logo0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-1.dat&amp;lt;br/&amp;gt;data\logo0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mfont0-0.dat&amp;lt;br/&amp;gt;data\mfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mspr0-0.dat&amp;lt;br/&amp;gt;data\mspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (small)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-0.dat&amp;lt;br/&amp;gt;data\olfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-1.dat&amp;lt;br/&amp;gt;data\olfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\onet0-*.dat&amp;lt;br/&amp;gt;data\oscr0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200 and 640&amp;amp;times;480&lt;br /&gt;
|Yes&lt;br /&gt;
|Loading and selection screens&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-0.dat&amp;lt;br/&amp;gt;data\osfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-1.dat&amp;lt;br/&amp;gt;data\osfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\palet0-0.dat&lt;br /&gt;
|[[VGA Palette]]&lt;br /&gt;
|No&lt;br /&gt;
|The palette of every asset of the game, unless specified&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-0.dat&amp;lt;br/&amp;gt;data\panel0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-1.dat&amp;lt;br/&amp;gt;data\panel0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-0.dat&amp;lt;br/&amp;gt;data\panel9-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-1.dat&amp;lt;br/&amp;gt;data\panel9-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-0.dat&amp;lt;br/&amp;gt;data\pfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-1.dat&amp;lt;br/&amp;gt;data\pfont0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\point0-0.dat&amp;lt;br/&amp;gt;data\point0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor cursors&lt;br /&gt;
|-&lt;br /&gt;
|data\puzzle.dat&lt;br /&gt;
|[[Raw VGA image]], 112&amp;amp;times;96&lt;br /&gt;
|No&lt;br /&gt;
|The cheat puzzle activated with CTRL-Tab in-game&lt;br /&gt;
|-&lt;br /&gt;
|data\sky0-*.dat&lt;br /&gt;
|[[Raw VGA Image]], 256&amp;amp;times;256&lt;br /&gt;
|Yes&lt;br /&gt;
|Horizon of each track&lt;br /&gt;
|-&lt;br /&gt;
|data\srch0-0.dat&lt;br /&gt;
|[[Raw VGA Image]], 32&amp;amp;times;32&lt;br /&gt;
|Yes&lt;br /&gt;
|Looks like a radar but seems to be unused&lt;br /&gt;
|-&lt;br /&gt;
|data\table0-*.dat&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
These files differ by at most a few bytes, their name suggests a sine table but this is pure speculation.&lt;br /&gt;
&lt;br /&gt;
The following pattern appears when they are interpreted as a 256 pixels wide image:&lt;br /&gt;
&lt;br /&gt;
[[File:HiOctaneTable.png]]&lt;br /&gt;
|-&lt;br /&gt;
|data\textu0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 64&amp;amp;times;16384&lt;br /&gt;
|Yes&lt;br /&gt;
|64&amp;amp;times;64 terrain textures&lt;br /&gt;
|-&lt;br /&gt;
|data\title.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200&lt;br /&gt;
|Yes&lt;br /&gt;
|The introductory screen&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.dat&lt;br /&gt;
|&lt;br /&gt;
|Yes&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.tab&lt;br /&gt;
|&lt;br /&gt;
|No&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\track0-0.dat&amp;lt;br/&amp;gt;data\track0-0.tab&amp;lt;br/&amp;gt;data\track0-1.dat&amp;lt;br/&amp;gt;data\track0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No/Yes&lt;br /&gt;
|Contain the images of the level minimaps that are shown in the HUD. The game does work without them,&lt;br /&gt;
but then the minimap is not shown. Original game does not use RNC compression, extended version does.&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-0.dat&amp;lt;br/&amp;gt;objects/data/tex0-0.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;768&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-1.dat&amp;lt;br/&amp;gt;objects/data/tex0-1.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;88&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; none of the TAB files are RNC-compressed.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The image formats above are partially decoded, they are still missing palette information.&lt;br /&gt;
&lt;br /&gt;
All the images are paletted, 8 bits per pixels.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTRO.DAT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Header can be fixed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_flifix.zip Autodesk Animator FLI files fixer] but since format is pretty old and that [http://syndicate.lubiki.pl/downloads/utils_waaplay110.zip Autodesk Animation Player 1.10] is a legacy Win16 executable, it is not very convenient to use as of today.&lt;br /&gt;
&lt;br /&gt;
Instead, the file can be converted by FFMPEG to either BMP or AVI,&lt;br /&gt;
&lt;br /&gt;
Convert the animation to individual images, handle last invalid frame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i INTRO.DAT -vframes 548 -pix_fmt bgr24 intro%03d.bmp&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert the sequence of images to a raw AVI and respect the original frame rate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -r 14 -i intro%03d.bmp -vcodec rawvideo intro.avi&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that since the underlying format does not handle audio, there won&#039;t be any.&lt;br /&gt;
&lt;br /&gt;
== CONFIG.DAT ==&lt;br /&gt;
&lt;br /&gt;
Contains the configuration of the game, current state of game logic relevant variables (for example next selected race track),&lt;br /&gt;
and the Highscore table. &lt;br /&gt;
The save game files reuse the same file format, but I believe for save game files some data fields will most likely be ignored or not used.&lt;br /&gt;
&lt;br /&gt;
The advantage is that the users game settings are restored for each save game independently.&lt;br /&gt;
&lt;br /&gt;
The initial game release config file always has a size of 11449 bytes, the extended game release config file 137833 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Data type !! only ext Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Null terminated string || No || Current championship name (max 12 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034D || UINT8 || Yes || Current value for Death match lives (0 min up to 4 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034E || UINT8 || Yes || Current value for Hot seat players (2 min up to 8 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x034F || UINT8 || Yes || Current value for Hot seat racing time (1 min up to 5 max)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0350 || Null terminated string || Yes || Player 2 name (max 8 characters), If empty string Player 2 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0370 || Null terminated string || Yes || Player 3 name (max 8 characters), If empty string Player 3 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0390 || Null terminated string || Yes || Player 4 name (max 8 characters), If empty string Player 4 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03B0 || Null terminated string || Yes || Player 5 name (max 8 characters), If empty string Player 5 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03D0 || Null terminated string || Yes || Player 6 name (max 8 characters), If empty string Player 6 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x03F0 || Null terminated string || Yes || Player 7 name (max 8 characters), If empty string Player 7 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x0410 || Null terminated string || Yes || Player 8 name (max 8 characters), If empty string Player 8 name not set&lt;br /&gt;
|-&lt;br /&gt;
| 0x094B || UINT8 || No || Current selected player craft color scheme (0 = Madmedicine, 1 = Assassins, 2 = Gorehounds, 3 = Foofighters, 4 = Dethfest, 5 = Firephreaks, 6 = Stormriders, 7 = Bullfrog)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094C || UINT8 || No || Current selected player craft (0 = KD1 Speeder, 1 = Berserker, 2 = Jugga, 3 = Vampyr, 4 = Outrider, 5 = Flexiwing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094F || Null terminated string || No || Player 1 name (max 8 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0977 || UINT8 || No || Current game difficulty setting (0 = easy up to 3 = highest difficulty)&lt;br /&gt;
|-&lt;br /&gt;
| 0x097D || UINT8 || No || Music volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0981 || UINT8 || No || Sound volume (0 = Off up to 200 = max volume)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2996 || UINT8 || No || Shading Off = 0, Shading On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299A || UINT8 || No || Sky Off = 0, Sky On = 1 (Default On)&lt;br /&gt;
|-&lt;br /&gt;
| 0x299E || UINT8 || No || Renderer Setting 1 (TextureMapping lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 0; TextureMapping 2nd lowest setting: 0x299E = 0,  0x29A2 = 0, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A2 || UINT8 || No || Renderer Setting 2 (TextureMapping 3nd lowest setting: 0x299E = 1,  0x29A2 = 1, 0x29A6 = 1; TextureMapping 4th lowest setting: 0x299E = 2,  0x29A2 = 2, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x29A6 || UINT8 || No || Renderer Setting 3 (TextureMapping 5th lowest setting: 0x299E = 3,  0x29A2 = 3, 0x29A6 = 1 (default value); TextureMapping highest setting: 0x299E = 3,  0x29A2 = 4, 0x29A6 = 1)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C76 || UINT8 || No || Current selected race track (0 = level 1, 1 = level 2, and so on)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C7A || UINT8 || No || Current selected game language (0 = English, 1 = German, 2 = French, 3 = Spanish, 4 = Italian)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits (in alphabetical order) == &lt;br /&gt;
&lt;br /&gt;
Aybe&lt;br /&gt;
&lt;br /&gt;
Malvineous&lt;br /&gt;
&lt;br /&gt;
movAX13h&lt;br /&gt;
&lt;br /&gt;
srtuss&lt;br /&gt;
&lt;br /&gt;
[http://syndicate.lubiki.pl/ Syndicate series unofficial fan site] for the various utilities.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[https://1drv.ms/f/s!AqAtR29m3cqGxz75Vv-3cap8guE3 Game demo, Network and MPU-401 patches]&lt;br /&gt;
&lt;br /&gt;
[https://www.vogons.org/viewtopic.php?f=7&amp;amp;t=33173&amp;amp;hilit=hi+octane Hi-Octane + General MIDI = crash?]&lt;/div&gt;</summary>
		<author><name>Woalexan</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12443</id>
		<title>Hi Octane</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12443"/>
		<updated>2025-08-27T18:49:57Z</updated>

		<summary type="html">&lt;p&gt;Woalexan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hi Octane&#039;&#039;&#039; is hover-car racing game. According to Sean Cooper it was made in 6.5 weeks using engine code from Syndicate and Magic Carpet. There are at least two releases of the game, the initial release (executable contains string &#039;&#039;Jun 10 1995 17:45:48&#039;&#039;) with 6 levels, and a later extended version (&#039;&#039;Oct 23 1995 15:57:32&#039;&#039;) with 9 levels, additional game modes, and slightly reworked levels. In certain file format details the used version makes a difference.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
Level inspector and incomplete editor by movAX13h (contains all assets of the original game extracted/converted by srtuss): https://github.com/movAX13h/HiOctaneTools&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = sounds/music.dat&lt;br /&gt;
 | Format = see below&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Archive containing music files in different formats: [[XMI Format]], [[GEN Format]], [[ROL Format]], [[WTB Format]].&amp;lt;br/&amp;gt;There are five files per format : TGAME1, TGAME2, TGAME3, TGAME4, TINTRO2.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== MUSIC.DAT ==&lt;br /&gt;
&lt;br /&gt;
* read the [[INT32LE]] at EOF and seek to returned position&lt;br /&gt;
* count the N number of [[INT16LE]] that equals &amp;lt;code&amp;gt;0x0001&amp;lt;/code&amp;gt;, then read N of the following struct:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTunes || Offset to the list of tunes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune1 || Offset to the first tune&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || unknown || Unknown (always &amp;lt;code&amp;gt;0xC0000000&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;192&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTunes || Length of all tunes together, bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* for each of the former struct&lt;br /&gt;
** seek to &amp;lt;code&amp;gt;offTunes&amp;lt;/code&amp;gt;&lt;br /&gt;
** read one of the following struct, its &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; indicates the byte sum of tunes following&lt;br /&gt;
** read as many of the following struct until their &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; sum equals the one in previous step&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || name[12] || File name of the tune, &amp;lt;code&amp;gt;\0&amp;lt;/code&amp;gt; padded&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[6] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune || Tune relative offset&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[4] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTune || Tune length, bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || unknown || Unknown (always &amp;lt;code&amp;gt;0x5A00&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;90&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* you now have a catalog of a collection of tunes, e.g. five ROL songs, five WTB songs etc&lt;br /&gt;
* to extract a song, copy &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; bytes starting at &amp;lt;code&amp;gt;offTune1 + offTune&amp;lt;/code&amp;gt;, file name is &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RNC-compressed files ==&lt;br /&gt;
&lt;br /&gt;
Many of the game&#039;s files are compressed using the [[Rob Northern Compression]] format; some of them such as &#039;&#039;SOUND\SOUND.DAT&#039;&#039; are a concatenation of many RNC archives simply &#039;&#039;glued&#039;&#039; together.&lt;br /&gt;
&lt;br /&gt;
A command-line unpacker can be found here : [http://syndicate.lubiki.pl/downloads/bullfrog_utils_rnc.zip Bullfrog games RNC Utilities] (from [http://syndicate.lubiki.pl/synd/rework/synd_rework_rnc.php Unpacking RNC files])&lt;br /&gt;
&lt;br /&gt;
== DAT/TAB pairs ==&lt;br /&gt;
&lt;br /&gt;
Can be decompressed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_tabdat.zip Bullfrog games DAT/TAB Graphics extractor] (they first must be decompressed if they are RNC-compressed).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DAT format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Without a TAB file, it&#039;s raw pixels; with a TAB file it&#039;s a form of line by line RLE compression where only transparent pixels are compressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TAB format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || position || Image position in .DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || height || Image height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TMAPS:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Contains powerups and some HUD elements but TAB format is different:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || flat || Size of RNC stream unpacked, useless as it&#039;s contained in stream header already&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || pos || Position in DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || index || Some index but can be duplicate, so likely a type or category instead&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are N+1 entries to be able to compute last item size in DAT.&lt;br /&gt;
&lt;br /&gt;
Each image has the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT16 || unknown || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || height || Image height&lt;br /&gt;
|-&lt;br /&gt;
| INT8[] || pixels || Image pixels, 8-bit paletted &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game&#039;s files ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Format&lt;br /&gt;
! RNC compressed&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|data\hfont0-0.dat&amp;lt;br/&amp;gt;data\hfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\hspr0-0.dat&amp;lt;br/&amp;gt;data\hspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (large)&lt;br /&gt;
|-&lt;br /&gt;
|data\intro.dat&lt;br /&gt;
|[[Autodesk FLI animation]]&lt;br /&gt;
|No&lt;br /&gt;
|Game introduction&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-0.dat&amp;lt;br/&amp;gt;data\logo0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-1.dat&amp;lt;br/&amp;gt;data\logo0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mfont0-0.dat&amp;lt;br/&amp;gt;data\mfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mspr0-0.dat&amp;lt;br/&amp;gt;data\mspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (small)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-0.dat&amp;lt;br/&amp;gt;data\olfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-1.dat&amp;lt;br/&amp;gt;data\olfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\onet0-*.dat&amp;lt;br/&amp;gt;data\oscr0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200 and 640&amp;amp;times;480&lt;br /&gt;
|Yes&lt;br /&gt;
|Loading and selection screens&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-0.dat&amp;lt;br/&amp;gt;data\osfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-1.dat&amp;lt;br/&amp;gt;data\osfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\palet0-0.dat&lt;br /&gt;
|[[VGA Palette]]&lt;br /&gt;
|No&lt;br /&gt;
|The palette of every asset of the game, unless specified&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-0.dat&amp;lt;br/&amp;gt;data\panel0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-1.dat&amp;lt;br/&amp;gt;data\panel0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-0.dat&amp;lt;br/&amp;gt;data\panel9-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-1.dat&amp;lt;br/&amp;gt;data\panel9-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-0.dat&amp;lt;br/&amp;gt;data\pfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-1.dat&amp;lt;br/&amp;gt;data\pfont0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\point0-0.dat&amp;lt;br/&amp;gt;data\point0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor cursors&lt;br /&gt;
|-&lt;br /&gt;
|data\puzzle.dat&lt;br /&gt;
|[[Raw VGA image]], 112&amp;amp;times;96&lt;br /&gt;
|No&lt;br /&gt;
|The cheat puzzle activated with CTRL-Tab in-game&lt;br /&gt;
|-&lt;br /&gt;
|data\sky0-*.dat&lt;br /&gt;
|[[Raw VGA Image]], 256&amp;amp;times;256&lt;br /&gt;
|Yes&lt;br /&gt;
|Horizon of each track&lt;br /&gt;
|-&lt;br /&gt;
|data\srch0-0.dat&lt;br /&gt;
|[[Raw VGA Image]], 32&amp;amp;times;32&lt;br /&gt;
|Yes&lt;br /&gt;
|Looks like a radar but seems to be unused&lt;br /&gt;
|-&lt;br /&gt;
|data\table0-*.dat&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
These files differ by at most a few bytes, their name suggests a sine table but this is pure speculation.&lt;br /&gt;
&lt;br /&gt;
The following pattern appears when they are interpreted as a 256 pixels wide image:&lt;br /&gt;
&lt;br /&gt;
[[File:HiOctaneTable.png]]&lt;br /&gt;
|-&lt;br /&gt;
|data\textu0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 64&amp;amp;times;16384&lt;br /&gt;
|Yes&lt;br /&gt;
|64&amp;amp;times;64 terrain textures&lt;br /&gt;
|-&lt;br /&gt;
|data\title.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200&lt;br /&gt;
|Yes&lt;br /&gt;
|The introductory screen&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.dat&lt;br /&gt;
|&lt;br /&gt;
|Yes&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.tab&lt;br /&gt;
|&lt;br /&gt;
|No&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\track0-0.dat&amp;lt;br/&amp;gt;data\track0-0.tab&amp;lt;br/&amp;gt;data\track0-1.dat&amp;lt;br/&amp;gt;data\track0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No/Yes&lt;br /&gt;
|Contain the images of the level minimaps that are shown in the HUD. The game does work without them,&lt;br /&gt;
but then the minimap is not shown. Original game does not use RNC compression, extended version does.&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-0.dat&amp;lt;br/&amp;gt;objects/data/tex0-0.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;768&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-1.dat&amp;lt;br/&amp;gt;objects/data/tex0-1.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;88&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; none of the TAB files are RNC-compressed.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The image formats above are partially decoded, they are still missing palette information.&lt;br /&gt;
&lt;br /&gt;
All the images are paletted, 8 bits per pixels.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTRO.DAT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Header can be fixed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_flifix.zip Autodesk Animator FLI files fixer] but since format is pretty old and that [http://syndicate.lubiki.pl/downloads/utils_waaplay110.zip Autodesk Animation Player 1.10] is a legacy Win16 executable, it is not very convenient to use as of today.&lt;br /&gt;
&lt;br /&gt;
Instead, the file can be converted by FFMPEG to either BMP or AVI,&lt;br /&gt;
&lt;br /&gt;
Convert the animation to individual images, handle last invalid frame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i INTRO.DAT -vframes 548 -pix_fmt bgr24 intro%03d.bmp&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert the sequence of images to a raw AVI and respect the original frame rate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -r 14 -i intro%03d.bmp -vcodec rawvideo intro.avi&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that since the underlying format does not handle audio, there won&#039;t be any.&lt;br /&gt;
&lt;br /&gt;
== CONFIG.DAT ==&lt;br /&gt;
&lt;br /&gt;
Contains the configuration of the game, current state of game logic relevant variables (for example next selected race track),&lt;br /&gt;
and the Highscore table. &lt;br /&gt;
The save game files reuse the same file format, but I believe for save game files some data fields will most likely be ignored or not used.&lt;br /&gt;
&lt;br /&gt;
The advantage is that the users game settings are restored for each save game independently.&lt;br /&gt;
&lt;br /&gt;
The initial game release config file always has a size of 11449 bytes, the extended game release config file 137833 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Data type !! only ext Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0000 || Null terminated string || No || Current championship name (max 12 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094B || UINT8 || No || Current selected player craft color scheme (0 = Madmedicine, 1 = Assassins, 2 = Gorehounds, 3 = Foofighters, 4 = Dethfest, 5 = Firephreaks, 6 = Stormriders, 7 = Bullfrog)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094C || UINT8 || No || Current selected player craft (0 = KD1 Speeder, 1 = Berserker, 2 = Jugga, 3 = Vampyr, 4 = Outrider, 5 = Flexiwing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x094F || Null terminated string || No || Player 1 name (max 8 characters)&lt;br /&gt;
|-&lt;br /&gt;
| 0x0977 || UINT8 || No || Current game difficulty setting (0 = easy up to 3 = highest difficulty)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C76 || UINT8 || No || Current selected race track (0 = level 1, 1 = level 2, and so on)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C7A || UINT8 || No || Current selected game language (0 = English, 1 = German, 2 = French, 3 = Spanish, 4 = Italian)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Credits (in alphabetical order) == &lt;br /&gt;
&lt;br /&gt;
Aybe&lt;br /&gt;
&lt;br /&gt;
Malvineous&lt;br /&gt;
&lt;br /&gt;
movAX13h&lt;br /&gt;
&lt;br /&gt;
srtuss&lt;br /&gt;
&lt;br /&gt;
[http://syndicate.lubiki.pl/ Syndicate series unofficial fan site] for the various utilities.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[https://1drv.ms/f/s!AqAtR29m3cqGxz75Vv-3cap8guE3 Game demo, Network and MPU-401 patches]&lt;br /&gt;
&lt;br /&gt;
[https://www.vogons.org/viewtopic.php?f=7&amp;amp;t=33173&amp;amp;hilit=hi+octane Hi-Octane + General MIDI = crash?]&lt;/div&gt;</summary>
		<author><name>Woalexan</name></author>
	</entry>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12442</id>
		<title>Hi Octane</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Hi_Octane&amp;diff=12442"/>
		<updated>2025-08-27T18:06:49Z</updated>

		<summary type="html">&lt;p&gt;Woalexan: /* Game&amp;#039;s files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = No&lt;br /&gt;
 | Tiles = No&lt;br /&gt;
 | Sprites = No&lt;br /&gt;
 | Fullscreen = No&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = No&lt;br /&gt;
 | Text = No&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hi Octane&#039;&#039;&#039; is hover-car racing game. According to Sean Cooper it was made in 6.5 weeks using engine code from Syndicate and Magic Carpet.&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
Level inspector and incomplete editor by movAX13h (contains all assets of the original game extracted/converted by srtuss): https://github.com/movAX13h/HiOctaneTools&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = sounds/music.dat&lt;br /&gt;
 | Format = see below&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Archive containing music files in different formats: [[XMI Format]], [[GEN Format]], [[ROL Format]], [[WTB Format]].&amp;lt;br/&amp;gt;There are five files per format : TGAME1, TGAME2, TGAME3, TGAME4, TINTRO2.&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== MUSIC.DAT ==&lt;br /&gt;
&lt;br /&gt;
* read the [[INT32LE]] at EOF and seek to returned position&lt;br /&gt;
* count the N number of [[INT16LE]] that equals &amp;lt;code&amp;gt;0x0001&amp;lt;/code&amp;gt;, then read N of the following struct:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTunes || Offset to the list of tunes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune1 || Offset to the first tune&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || unknown || Unknown (always &amp;lt;code&amp;gt;0xC0000000&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;192&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTunes || Length of all tunes together, bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* for each of the former struct&lt;br /&gt;
** seek to &amp;lt;code&amp;gt;offTunes&amp;lt;/code&amp;gt;&lt;br /&gt;
** read one of the following struct, its &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; indicates the byte sum of tunes following&lt;br /&gt;
** read as many of the following struct until their &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; sum equals the one in previous step&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || name[12] || File name of the tune, &amp;lt;code&amp;gt;\0&amp;lt;/code&amp;gt; padded&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[6] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || offTune || Tune relative offset&lt;br /&gt;
|-&lt;br /&gt;
| CHAR || padding[4] || Padding bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || lenTune || Tune length, bytes&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || unknown || Unknown (always &amp;lt;code&amp;gt;0x5A00&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;90&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* you now have a catalog of a collection of tunes, e.g. five ROL songs, five WTB songs etc&lt;br /&gt;
* to extract a song, copy &amp;lt;code&amp;gt;lenTune&amp;lt;/code&amp;gt; bytes starting at &amp;lt;code&amp;gt;offTune1 + offTune&amp;lt;/code&amp;gt;, file name is &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RNC-compressed files ==&lt;br /&gt;
&lt;br /&gt;
Many of the game&#039;s files are compressed using the [[Rob Northern Compression]] format; some of them such as &#039;&#039;SOUND\SOUND.DAT&#039;&#039; are a concatenation of many RNC archives simply &#039;&#039;glued&#039;&#039; together.&lt;br /&gt;
&lt;br /&gt;
A command-line unpacker can be found here : [http://syndicate.lubiki.pl/downloads/bullfrog_utils_rnc.zip Bullfrog games RNC Utilities] (from [http://syndicate.lubiki.pl/synd/rework/synd_rework_rnc.php Unpacking RNC files])&lt;br /&gt;
&lt;br /&gt;
== DAT/TAB pairs ==&lt;br /&gt;
&lt;br /&gt;
Can be decompressed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_tabdat.zip Bullfrog games DAT/TAB Graphics extractor] (they first must be decompressed if they are RNC-compressed).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DAT format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Without a TAB file, it&#039;s raw pixels; with a TAB file it&#039;s a form of line by line RLE compression where only transparent pixels are compressed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TAB format:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || position || Image position in .DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || height || Image height&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TMAPS:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Contains powerups and some HUD elements but TAB format is different:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || flat || Size of RNC stream unpacked, useless as it&#039;s contained in stream header already&lt;br /&gt;
|-&lt;br /&gt;
| INT32LE || pos || Position in DAT&lt;br /&gt;
|-&lt;br /&gt;
| INT16LE || index || Some index but can be duplicate, so likely a type or category instead&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are N+1 entries to be able to compute last item size in DAT.&lt;br /&gt;
&lt;br /&gt;
Each image has the following format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| INT16 || unknown || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || width || Image width&lt;br /&gt;
|-&lt;br /&gt;
| INT8 || height || Image height&lt;br /&gt;
|-&lt;br /&gt;
| INT8[] || pixels || Image pixels, 8-bit paletted &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game&#039;s files ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Format&lt;br /&gt;
! RNC compressed&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
|data\hfont0-0.dat&amp;lt;br/&amp;gt;data\hfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\hspr0-0.dat&amp;lt;br/&amp;gt;data\hspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (large)&lt;br /&gt;
|-&lt;br /&gt;
|data\intro.dat&lt;br /&gt;
|[[Autodesk FLI animation]]&lt;br /&gt;
|No&lt;br /&gt;
|Game introduction&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-0.dat&amp;lt;br/&amp;gt;data\logo0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\logo0-1.dat&amp;lt;br/&amp;gt;data\logo0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Game logo (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mfont0-0.dat&amp;lt;br/&amp;gt;data\mfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Thin white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\mspr0-0.dat&amp;lt;br/&amp;gt;data\mspr0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor icons (small)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-0.dat&amp;lt;br/&amp;gt;data\olfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\olfnt0-1.dat&amp;lt;br/&amp;gt;data\olfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Large white font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\onet0-*.dat&amp;lt;br/&amp;gt;data\oscr0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200 and 640&amp;amp;times;480&lt;br /&gt;
|Yes&lt;br /&gt;
|Loading and selection screens&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-0.dat&amp;lt;br/&amp;gt;data\osfnt0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\osfnt0-1.dat&amp;lt;br/&amp;gt;data\osfnt0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Small white font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\palet0-0.dat&lt;br /&gt;
|[[VGA Palette]]&lt;br /&gt;
|No&lt;br /&gt;
|The palette of every asset of the game, unless specified&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-0.dat&amp;lt;br/&amp;gt;data\panel0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel0-1.dat&amp;lt;br/&amp;gt;data\panel0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-0.dat&amp;lt;br/&amp;gt;data\panel9-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 2-players (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\panel9-1.dat&amp;lt;br/&amp;gt;data\panel9-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|HUD 1-player (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-0.dat&amp;lt;br/&amp;gt;data\pfont0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (VGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\pfont0-1.dat&amp;lt;br/&amp;gt;data\pfont0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No&lt;br /&gt;
|Large green font (SVGA)&lt;br /&gt;
|-&lt;br /&gt;
|data\point0-0.dat&amp;lt;br/&amp;gt;data\point0-0.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|Editor cursors&lt;br /&gt;
|-&lt;br /&gt;
|data\puzzle.dat&lt;br /&gt;
|[[Raw VGA image]], 112&amp;amp;times;96&lt;br /&gt;
|No&lt;br /&gt;
|The cheat puzzle activated with CTRL-Tab in-game&lt;br /&gt;
|-&lt;br /&gt;
|data\sky0-*.dat&lt;br /&gt;
|[[Raw VGA Image]], 256&amp;amp;times;256&lt;br /&gt;
|Yes&lt;br /&gt;
|Horizon of each track&lt;br /&gt;
|-&lt;br /&gt;
|data\srch0-0.dat&lt;br /&gt;
|[[Raw VGA Image]], 32&amp;amp;times;32&lt;br /&gt;
|Yes&lt;br /&gt;
|Looks like a radar but seems to be unused&lt;br /&gt;
|-&lt;br /&gt;
|data\table0-*.dat&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
These files differ by at most a few bytes, their name suggests a sine table but this is pure speculation.&lt;br /&gt;
&lt;br /&gt;
The following pattern appears when they are interpreted as a 256 pixels wide image:&lt;br /&gt;
&lt;br /&gt;
[[File:HiOctaneTable.png]]&lt;br /&gt;
|-&lt;br /&gt;
|data\textu0-*.dat&lt;br /&gt;
|[[Raw VGA image]], 64&amp;amp;times;16384&lt;br /&gt;
|Yes&lt;br /&gt;
|64&amp;amp;times;64 terrain textures&lt;br /&gt;
|-&lt;br /&gt;
|data\title.dat&lt;br /&gt;
|[[Raw VGA image]], 320&amp;amp;times;200&lt;br /&gt;
|Yes&lt;br /&gt;
|The introductory screen&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.dat&lt;br /&gt;
|&lt;br /&gt;
|Yes&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\tmaps.tab&lt;br /&gt;
|&lt;br /&gt;
|No&lt;br /&gt;
|see above&lt;br /&gt;
|-&lt;br /&gt;
|data\track0-0.dat&amp;lt;br/&amp;gt;data\track0-0.tab&amp;lt;br/&amp;gt;data\track0-1.dat&amp;lt;br/&amp;gt;data\track0-1.tab&lt;br /&gt;
|[[Unknown format]]&lt;br /&gt;
|No/Yes&lt;br /&gt;
|Contain the images of the level minimaps that are shown in the HUD. The game does work without them,&lt;br /&gt;
but then the minimap is not shown. Original game does not use RNC compression, extended version does.&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-0.dat&amp;lt;br/&amp;gt;objects/data/tex0-0.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;768&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|objects/data/tex0-1.dat&amp;lt;br/&amp;gt;objects/data/tex0-1.tab&lt;br /&gt;
|[[Hi-Octane Texture Atlas]], 256&amp;amp;times;88&lt;br /&gt;
|No&lt;br /&gt;
|In-game textures&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; none of the TAB files are RNC-compressed.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The image formats above are partially decoded, they are still missing palette information.&lt;br /&gt;
&lt;br /&gt;
All the images are paletted, 8 bits per pixels.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTRO.DAT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Header can be fixed using [http://syndicate.lubiki.pl/downloads/bullfrog_utils_flifix.zip Autodesk Animator FLI files fixer] but since format is pretty old and that [http://syndicate.lubiki.pl/downloads/utils_waaplay110.zip Autodesk Animation Player 1.10] is a legacy Win16 executable, it is not very convenient to use as of today.&lt;br /&gt;
&lt;br /&gt;
Instead, the file can be converted by FFMPEG to either BMP or AVI,&lt;br /&gt;
&lt;br /&gt;
Convert the animation to individual images, handle last invalid frame:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i INTRO.DAT -vframes 548 -pix_fmt bgr24 intro%03d.bmp&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Convert the sequence of images to a raw AVI and respect the original frame rate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -r 14 -i intro%03d.bmp -vcodec rawvideo intro.avi&lt;br /&gt;
&amp;lt;/syntaxhightlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that since the underlying format does not handle audio, there won&#039;t be any.&lt;br /&gt;
&lt;br /&gt;
== Credits (in alphabetical order) == &lt;br /&gt;
&lt;br /&gt;
Aybe&lt;br /&gt;
&lt;br /&gt;
Malvineous&lt;br /&gt;
&lt;br /&gt;
movAX13h&lt;br /&gt;
&lt;br /&gt;
srtuss&lt;br /&gt;
&lt;br /&gt;
[http://syndicate.lubiki.pl/ Syndicate series unofficial fan site] for the various utilities.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[https://1drv.ms/f/s!AqAtR29m3cqGxz75Vv-3cap8guE3 Game demo, Network and MPU-401 patches]&lt;br /&gt;
&lt;br /&gt;
[https://www.vogons.org/viewtopic.php?f=7&amp;amp;t=33173&amp;amp;hilit=hi+octane Hi-Octane + General MIDI = crash?]&lt;/div&gt;</summary>
		<author><name>Woalexan</name></author>
	</entry>
</feed>