Main
Introduction
Storyboard
Release Information
Awards
Starting a Game
About A. Crowther
Interface
Monitors
Movements
Droid Status
Disk
Group Display
Hands
Sleep & Pause
Remote Control
Preferences
Droids
Skills
Inventory
Droid Parts
Tools
Weapons
The Camera
Items
Dev-Scapes
Optics
Environment
Walls
Doors
Shops
Encounters
Miscellaneous
Miscellaneous
FAQ
Tips & Tricks
Pre-Captive
Bugs
Did You Know?
Tools
Technical
The Map Generator
Sounds
Disk Directory
Drawing Encounters
Flying Items
Internal Graphics
Holamap
Fire Hydrants
View Rendering
Website
History
Acknowledgments
Links/Contact

Disk Directory

The programmer made many attempts to prevent Captive from being illegally copied. One method used was to create his own disk operating system called Ratt-DOS which reads and writes data to the storage media. Not relying on the DOS integrated into the system, this gave the programmer the complete freedom to access the files any way he wanted. But still, the files had to be found somehow in order to be retrieved.

When trying to see the floppy disk directory directly from the computer, the user would receive an error instead. That's because Captive's custom directory can only be found and used by Ratt-DOS and nothing else. Captive has its directory stored and encrypted on sector 1 of the floppy disk and is 1,392 bytes long. Each disk has a checksum, label, a sort of track cluster table and file allocation table (FAT).

The Directory

The following table is the directory of the first floppy disk for the Atari ST. The columns are defined as follow:

File Name: Name of the file. The name of the file cannot exceed 12 characters.
Track: The track number onto which the file starts. Ratt-DOS doesn't work by sector, so there is indeed a bit of space wasted.
Side: The side number onto which the file starts.
Track Span: The number of tracks occupied by the file.
File Size: The size of the file once it's decompressed.

File Name Track Side Track Span File Size
fed_BootFile2029300
fed_MapGen40329120
fed_MapView70210216
fed3-A.pic90432000
fed3-B.pic130532000
fed2-A.pic180532000
fed2-B.pic230532000
fed6-A.pic280532000
fed6-B.pic330532000
fed6-C.pic380532000
fed6-D.pic430532000
fed6-E.pic480432000
fed6-F.pic520332000
fed9.pic550232000
fed7-A.pic570432000
fed7-B.pic610532000
fed7-C.pic660432000
fed7-D.pic700332000
fed7-E.pic730532000
Fed_Credits11332032
fed_Demo41434068
Case.pic818288424
Federation1611397844
Fed_Sounds2911052716
fed4.pic391232000
fed5.pic411432000
fed8.pic451532000
fed10.pic501232000
FedAnni1.pi521432000
FedAnni2.pi561432000
FedAnni3.pi601332000

The Checksums

Master disk - Disk 1: 0x1ce20047
Master disk - Disk 2: 0x39c8008e
Save game disk: 0x00a608bb

The same checksums are used for Captive version 1.0 and version 1.2. Captive's demo has no disk directory, therefore has no checksum.

The Files

The files are either graphics, code or a mix of both.

fed_BootFile

This is the first file loaded by the system. It...
  • sets the system memory for the video, stack and temporary buffer
  • introduces Captive by loading and executing the "Captive" title screen, "Bouncing lines" introduction and case animation
  • loads and executes the "Federation" game module
  • decrypts RNC compressed files
  • loads and shows "Insert disk two" screen (if necessary)
  • initializes keyboard control

Fed_Credits

This is the first image that appears. It is displayed while the "Bouncing lines" introduction is being loaded.

This bitmap is the same on the Amiga and Atari, even though there are no music tracks on the Atari.

fed_Demo

This file holds the code and images used by the "bouncing lines" introduction sequence.

It's interesting to understand how the bouncing lines demo basically works.

The system uses a table to know the current position of each lines (the table has 146 values, one for each line of the image) and changes the position of a line depending on the current speed of it as stored in another table (146 values as well).

While the line is falling, it compares its position with the line right under it (it doesn't care less about any other line). If its position is greater, the movement speed sign of both lines is inversed; this makes the falling line (the one on top) bounce upward and the bouncing line (the one under) bounce downward because, when colliding, the line on top is always going down while the one under is always going up. Of course, the first line will also bounce at the bottom of the screen.

When all lines are done bouncing, an incremental counter kicks in to determine what to do at each screen update.

Case.pic

The animation sequence of the case. Actually, this file has a ".pic" extension probably because 99% of it is the bitmap frames of the animation and only 1% of it is the code that handles them. The animation sequence consists of 9 frames of 320x200 each.

When Captive plays this animation, it plays the following 37 frames sequence for an animation of 5.3 seconds: 9, 9, 9, 9, 9, 9, 9, 9, 8, 7, 6, 5, 5, 5, 5, 6, 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1.

fed_MapGen

The code of the map generator module.

fed_MapView

The module used while we're in space. It handles everything inside the Holamap.

Federation

The code of the main module. This is where everything is happening while being on a moon or planet (inside or outside).

Fed_Sounds

The sound file. Read the sound page for more information regarding this file.

fed2-*.pic

Graphics for the doors, camera, puzzles, buttons and wall decorations. There are two different sets; set "A" is used 4 bases in a row, then set "B" for the next 4 bases.

fed2-A.picfed2-B.pic

fed3-*.pic

The "A" set is for the generators, computers, shops, water, fire, wall rollers (for pushable walls) and unlockers. The "B" set is mainly identical except that the graphics are used when being outside. The lower-left side is reserved for the sky which is obviously only in the "B" set.

fed3-A.picfed3-B.pic
Internaly, the system uses the exact same code to represent a generator and tree, computer and lander, shop and evergreen, fire and grass, and water. When clicking an evergreen, the system will make the exact same verification as if a shop had been clicked, but will not display the shop menu because it knows the environment is currently outside a base.

fed4.pic

The main screen.

fed5.pic

A bit of everything. Notice the bottom-right corner that seems to be nothing but a big yellow square. This region is used by the system to manipulate animated graphics, such as opening/closing doors or the red pixels that appear after bumping fire.

fed6-*.pic

The encounters.

fed6-A.picfed6-B.pic
fed6-C.picfed6-D.pic
fed6-E.picfed6-F.pic

fed7-*.pic

The graphics that make up the interior of a base.

fed7-A.picfed7-B.pic
fed7-C.picfed7-D.pic
fed7-E.pic

fed8.pic

The graphics used to draw the droids, weapons and items.

As seen here, the high organisation of the graphics allows to pack many separate graphics into a single file. Every single object, wall, encounters, or whatever visual has to be drawn depending on its location in the droids' field of view. In fact, a total of 957 different graphics are handled by the game.

fed9.pic

The ceilings.

fed10.pic

The left side is used when entering text such as droid names and computer passwords. The right side is used when showing an animation.

FedAnni1.pi

The frames of the animation when the droids have been destroyed.

FedAnni2.pi

The frames of the animation when the base has been destroyed.

FedAnni3.pi

The frames of the animation when Trill is rescued.