<?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=Alexbeav</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=Alexbeav"/>
	<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/wiki/Special:Contributions/Alexbeav"/>
	<updated>2026-08-12T06:13:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.11</generator>
	<entry>
		<id>https://moddingwiki.shikadi.net/w/index.php?title=Raptor&amp;diff=12867</id>
		<title>Raptor</title>
		<link rel="alternate" type="text/html" href="https://moddingwiki.shikadi.net/w/index.php?title=Raptor&amp;diff=12867"/>
		<updated>2026-07-15T20:06:56Z</updated>

		<summary type="html">&lt;p&gt;Alexbeav: Adding info about GLB files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedMoreInfo}}&lt;br /&gt;
{{Game Infobox&lt;br /&gt;
 | Levels = Edit&lt;br /&gt;
 | Tiles = Edit&lt;br /&gt;
 | Sprites = Edit&lt;br /&gt;
 | Fullscreen = Edit&lt;br /&gt;
 | Sound = No&lt;br /&gt;
 | Music = Edit&lt;br /&gt;
 | Text = Edit&lt;br /&gt;
 | Story = No&lt;br /&gt;
 | Interface = No&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
{{BeginFileFormatTools|Type=game}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [[Camoto]]&lt;br /&gt;
| Platform = Linux/Windows&lt;br /&gt;
| grp = Edit&lt;br /&gt;
| map = No&lt;br /&gt;
| gfx = Some&lt;br /&gt;
| mus = No&lt;br /&gt;
| sfx = No&lt;br /&gt;
| txt = No&lt;br /&gt;
| sav = No&lt;br /&gt;
| exe = No&lt;br /&gt;
}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [[Camoto Online#gamearchive.js|Camoto/gamearchive.js]]&lt;br /&gt;
| Platform = Any&lt;br /&gt;
| grp = Edit&lt;br /&gt;
| map = No&lt;br /&gt;
| gfx = No&lt;br /&gt;
| mus = No&lt;br /&gt;
| sfx = No&lt;br /&gt;
| txt = No&lt;br /&gt;
| sav = No&lt;br /&gt;
| exe = No&lt;br /&gt;
}}&lt;br /&gt;
{{FileFormatTool&lt;br /&gt;
| Name = [https://github.com/Alexbeav/raptor-map-editor Raptor Map Editor]&lt;br /&gt;
| Platform = Any&lt;br /&gt;
| grp = Edit&lt;br /&gt;
| map = Edit&lt;br /&gt;
| gfx = Some&lt;br /&gt;
| mus = Edit&lt;br /&gt;
| sfx = No&lt;br /&gt;
| txt = No&lt;br /&gt;
| sav = No&lt;br /&gt;
| exe = No&lt;br /&gt;
}}&lt;br /&gt;
{{EndFileFormatTools}}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
&lt;br /&gt;
* Raptor&#039;s creators have [http://mking.com/raptor_game.html ported it to other platforms] including iPhone and Windows&lt;br /&gt;
* The [https://github.com/skynettx/dosraptor original source code] of the DOS version has been released&lt;br /&gt;
* [https://github.com/Alexbeav/raptor-map-editor Raptor Map Editor] — browser-based level, sprite-library and music editor&lt;br /&gt;
&lt;br /&gt;
{{BeginGameFileList}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.glb&lt;br /&gt;
 | Format = [[GLB Format (Raptor)]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Archive file storing most of the game data files&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *.ini&lt;br /&gt;
 | Format = ASCII text&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Configuration file storing game settings&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *_agx&lt;br /&gt;
 | Format = [[Raptor Animated Graphics]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Files used for Raptor fullscreen cutscenes.&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = genmidi_op2&lt;br /&gt;
 | Format = [[OP2 Bank Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = [[OPL]] FM patches for MIDI instruments&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = lastscr?_txt&lt;br /&gt;
 | Format = [[B800 Text]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Text-mode exit screens&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *_dat&lt;br /&gt;
 | Format = [[VGA Palette]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = 6-bit VGA palette&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *_fx&lt;br /&gt;
 | Format = 8-bit PCM, unknown header&lt;br /&gt;
 | KnownFormat = Partial&lt;br /&gt;
 | Desc = Sound effects&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = SPRITE?_ITM&lt;br /&gt;
 | Format = [[Raptor Level Format#Sprite library (SPRITEn_ITM)|Raptor sprite library]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Enemy and object definitions for a sprite bank&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = FLATSG?_ITM&lt;br /&gt;
 | Format = [[Raptor Level Format#Tile properties (FLATSGn_ITM)|Raptor tile properties]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Destructibility, hit points and bounty values for tiles&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *_itm&lt;br /&gt;
 | Format = ?&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Other binary data tables&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *_map&lt;br /&gt;
 | Format = [[Raptor Level Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Game levels, including tile grids and actor placements&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *_mus&lt;br /&gt;
 | Format = [[MUS Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Background music&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *_pic, *_blk&lt;br /&gt;
 | Format = [[Raptor PIC Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Various images and full-screen graphics&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *_rec&lt;br /&gt;
 | Format = [[Raptor Demo Format]]&lt;br /&gt;
 | KnownFormat = No&lt;br /&gt;
 | Desc = Pre-recorded demo macros&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = startg?tiles .. endg?tiles&lt;br /&gt;
 | Format = [[Raptor Tileset Format]]&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Tiles used to draw game levels&lt;br /&gt;
}}&lt;br /&gt;
{{GameFile&lt;br /&gt;
 | Name = *_txt&lt;br /&gt;
 | Format = ASCII text&lt;br /&gt;
 | KnownFormat = Yes&lt;br /&gt;
 | Desc = Text for various game screens&lt;br /&gt;
}}&lt;br /&gt;
{{EndGameFileList}}&lt;br /&gt;
&lt;br /&gt;
== Actor data (resolved fields) ==&lt;br /&gt;
&lt;br /&gt;
Each actor (enemy or object placement) is six INT32LE values. The four fields previously marked as needing investigation are resolved below from the released DOS source (&amp;lt;code&amp;gt;MAP.H&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ENEMY.C&amp;lt;/code&amp;gt;), validated byte-for-byte against the shipped v1.2 data. In the game source this record is the 24-byte &amp;lt;code&amp;gt;CSPRITE&amp;lt;/code&amp;gt; structure.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Source name !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || INT32LE || &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; || Spawn-group chain. See &#039;&#039;Spawn order&#039;&#039; below. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; means the next actor spawns with this one; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; ends the group.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || INT32LE || &amp;lt;code&amp;gt;slib&amp;lt;/code&amp;gt; || Index into the &amp;lt;code&amp;gt;SPRITE&#039;&#039;n&#039;&#039;_ITM&amp;lt;/code&amp;gt; sprite library (see &#039;&#039;Sprite library&#039;&#039;). This selects the enemy or object type.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || INT32LE || &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; || Tile-grid column, 0–8.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || INT32LE || &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; || Tile-grid row, 0–139. See &#039;&#039;Spawn order&#039;&#039; for why actors do not use rows 140–149.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || INT32LE || &amp;lt;code&amp;gt;game&amp;lt;/code&amp;gt; || Sprite bank 0–3, selecting which of the four &amp;lt;code&amp;gt;SPRITE&#039;&#039;n&#039;&#039;_ITM&amp;lt;/code&amp;gt; libraries &amp;lt;code&amp;gt;slib&amp;lt;/code&amp;gt; indexes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || INT32LE || &amp;lt;code&amp;gt;level&amp;lt;/code&amp;gt; || Difficulty gate. &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; = easy, &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; = medium and &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; = hard; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; are secret tiers; other values never spawn. Easy actors spawn on every difficulty, medium actors on veteran and above, and hard actors only on elite.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Spawn order ==&lt;br /&gt;
&lt;br /&gt;
The engine spawns actors with a forward-only cursor over the actor list (&amp;lt;code&amp;gt;ENEMY_Think&amp;lt;/code&amp;gt;). A group is a run of consecutive actors chained by &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; until an actor has &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;. The whole group spawns when the scrolling map reaches the head actor&#039;s &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; row.&lt;br /&gt;
&lt;br /&gt;
Because the cursor only moves forward and the map scrolls from row 139 toward row 0:&lt;br /&gt;
&lt;br /&gt;
* Group heads must appear in descending-&amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; order in the list.&lt;br /&gt;
* Every group head&#039;s &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; must be 139 or less.&lt;br /&gt;
&lt;br /&gt;
If either condition is violated, the cursor stalls and every actor after the offending entry silently fails to spawn. This is why placements do not use rows 140–149, and why a level editor must re-sort groups by descending head &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; after edits. All 27 shipped levels satisfy this invariant.&lt;br /&gt;
&lt;br /&gt;
== Sprite library (&amp;lt;code&amp;gt;SPRITE&#039;&#039;n&#039;&#039;_ITM&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;slib&amp;lt;/code&amp;gt; indexes an array of 528-byte &amp;lt;code&amp;gt;SPRITE&amp;lt;/code&amp;gt; records defined in &amp;lt;code&amp;gt;MAP.H&amp;lt;/code&amp;gt;. These are stored as the GLB items &amp;lt;code&amp;gt;SPRITE1_ITM&amp;lt;/code&amp;gt; through &amp;lt;code&amp;gt;SPRITE4_ITM&amp;lt;/code&amp;gt;, one per bank. The engine derives the entry count from the item&#039;s byte size, so appending complete records adds enemy types without a code change.&lt;br /&gt;
&lt;br /&gt;
Each record contains the GLB item name of its first graphic frame, hit points, bounty, explosion type, as many as 24 gun mounts, as many as 24 engine-flame positions, and as many as 30 flight-path waypoints with a movement or AI type. Enemy behaviour is therefore largely data-driven.&lt;br /&gt;
&lt;br /&gt;
Record layout (all values are little-endian):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || char[16] || &amp;lt;code&amp;gt;iname&amp;lt;/code&amp;gt; — GLB item name of the first graphic frame&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || INT32LE × 26 || &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bonus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;exptype&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shotspace&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ground&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;suck&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame_rate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;num_frames&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;countdown&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rewind&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;animtype&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shadow&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bossflag&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hits&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;money&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shootstart&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shootcnt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shootframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;movespeed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;numflight&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;repos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;flighttype&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;numguns&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;numengs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sfx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;song&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x78 || INT16LE × 144 || &amp;lt;code&amp;gt;shoot_type[24]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;engx[24]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;engy[24]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;englx[24]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shootx[24]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shooty[24]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x198 || INT16LE × 60 || &amp;lt;code&amp;gt;flightx[30]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;flighty[30]&amp;lt;/code&amp;gt; — waypoint offsets from the spawn anchor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The known &amp;lt;code&amp;gt;flighttype&amp;lt;/code&amp;gt; values are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;: repeat — ping-pongs between the last waypoint and waypoint &amp;lt;code&amp;gt;repos&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: linear — follows the waypoint list once and leaves.&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: kamikaze — follows the waypoint list, then dives at the player.&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;–&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;: ground variants — ignore waypoints and scroll with the terrain.&lt;br /&gt;
&lt;br /&gt;
== Tile properties (&amp;lt;code&amp;gt;FLATSG&#039;&#039;n&#039;&#039;_ITM&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
Each bank has an array of 8-byte &amp;lt;code&amp;gt;FLATS&amp;lt;/code&amp;gt; records, one per tile and in the same order as the tile graphics.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Field&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || INT32LE || &amp;lt;code&amp;gt;linkflat&amp;lt;/code&amp;gt; — tile index displayed after this tile is destroyed. A value equal to the tile&#039;s own index makes it indestructible.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || INT16LE || &amp;lt;code&amp;gt;bonus&amp;lt;/code&amp;gt; — hit points or bonus ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || INT16LE || &amp;lt;code&amp;gt;bounty&amp;lt;/code&amp;gt; — money awarded when destroyed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== GLB items that make up a level ==&lt;br /&gt;
&lt;br /&gt;
Levels and their supporting data are named items inside the game&#039;s GLB archives:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;MAP&#039;&#039;w&#039;&#039;G&#039;&#039;s&#039;&#039;_MAP&amp;lt;/code&amp;gt; — level data in this format, for wave &#039;&#039;w&#039;&#039; 1–9 of sector &#039;&#039;s&#039;&#039; 1–3.&lt;br /&gt;
* &amp;lt;code&amp;gt;SPRITE&#039;&#039;n&#039;&#039;_ITM&amp;lt;/code&amp;gt; — sprite library for bank &#039;&#039;n&#039;&#039; 1–4.&lt;br /&gt;
* &amp;lt;code&amp;gt;FLATSG&#039;&#039;n&#039;&#039;_ITM&amp;lt;/code&amp;gt; — tile-property table for bank &#039;&#039;n&#039;&#039; 1–4.&lt;br /&gt;
* &amp;lt;code&amp;gt;STARTG&#039;&#039;n&#039;&#039;TILES&amp;lt;/code&amp;gt; through &amp;lt;code&amp;gt;ENDG&#039;&#039;n&#039;&#039;TILES&amp;lt;/code&amp;gt; — marker-delimited run of 32×32 tile graphics for bank &#039;&#039;n&#039;&#039; 1–4. A cell&#039;s graphic is the item at &amp;lt;code&amp;gt;STARTG&#039;&#039;n&#039;&#039;TILES&amp;lt;/code&amp;gt; + 1 + &#039;&#039;tile number&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Because GLB item IDs are positional, an editor that rebuilds an archive must preserve item order. See [[GLB Format (Raptor)]].&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
The actor-field resolution, spawn-order invariant, sprite-library, tile-property and GLB-item documentation were reverse-engineered from the released Raptor DOS source and validated byte-for-byte against the shipped v1.2 data by [https://github.com/Alexbeav Alexbeav] and contributors to the [https://github.com/Alexbeav/raptor-map-editor Raptor Map Editor] project in 2026. Original page and tile/header documentation is credited to the earlier contributors.&lt;br /&gt;
&lt;br /&gt;
[[Category:Apogee]]&lt;br /&gt;
[[Category:Cygnus]]&lt;br /&gt;
[[Category:Overhead]]&lt;br /&gt;
[[Category:Space Invaders]]&lt;/div&gt;</summary>
		<author><name>Alexbeav</name></author>
	</entry>
</feed>