Files

6.7 KiB

Level BigStuff Table (Class 7)

L17 is a table describing big items in real-world levels.

Cyberspace levels may re-use "big stuff" entries for further software entries. These entries need to be interpreted differently. See Software.

Level BigStuff Entry (16 bytes)

0000  [6]byte   Level object prefix
0006  [10]byte  BigStuff Info

Displays

There are several big items that are capable of displaying (animated) content. They reuse the following common types:

Display Info (10 bytes)

0000  int16     Frame count
0002  int16     Loop type
0004  int16     Alternation type
0006  int16     Picture source
0008  int16     Alternate picture source

Animated screens are also controlled by the Loop Configuration. If not, they use their own loop type.

Loop Type (1 byte)

0x00  Forward
0x01  Forward/Backward
0x02  Backward
0x03  Forward/Backward

Other values have been found as well, without effect; The engine defaults to forward looping.

** Alternation Type** (1 byte)

0x00  Don't alternate
0x03  Alternate randomly

Not all alternate source combinations work properly. Commonly it is used to alternate to a text.

Picture Source (2 bytes)

This field specifies what shall be shown. It has the following cases:

0x0000 .. 0x00F5  Image frames, offset from resource 0x0141
0x00F6            Static fading into SHODAN's face
0x00F7            Unknown (only found to display static)
0x00F8 .. 0x00FF  Surveillance screens 0 .. 7
0x0100 .. 0x017E  Text message from resource 0x0877
0x017F            Random number for CPU rooms, level 1-6 before destroying nodes.
0x0180 .. 0x01FF  Text message, scrolling vertically

For surveillance screens, the sources of screens 0-7 are specified in the Surveillance Sources Table.

The following big items support displays: 7/0/6 (TV), 7/0/7 (COMPUTER MONITOR), 7/2/6 (SCREEN, small), 7/2/8 (SCREEN, large), 7/2/9 (SCREEN, medium), with variation: 7/5/5 (CONTROL PANEL), 7/5/6 (CONTROL PEDESTAL) (see below)

Electronics 7/0/x

Apart from some displays, nothing special

Furniture 7/1/x

Cabinets 7/1/2

Cabinet Data (10 bytes)

0000  [2]byte   Unused
0002  [2]int16  Object index
0006  [4]byte   Unused

Cabinets can contain up to two objects.

Texturable furniture 7/1/5, 7/1/7, 7/1/8 (chairs and couches)

Texturable Furniture Data (10 bytes)

0000  [6]byte   Unused
0006  int16     Texture index
0008  [2]byte   Unused

If Texture index is not zero, it specifies the alternate texture to use for the "main" faces of the furniture.

Surfaces 7/2/x

These are big objects that are flat and should be placed at another surface.

Words 7/2/3

Words BigStuff Data (10 bytes)

0000  int16     Text index (within resource 0x0868)
0002  int16     Font and size (bits 0-3 are font, 4-7 are size)
0004  int16     Colour (palette index, 0 defaults to red)
0006  [4]byte   Unused

Texture Maps 7/2/7

Texture map big stuff (10 bytes)

0000  [6]byte   Unused
0006  int16     Texture index
0008  [2]byte   Unused

Texture maps allow to place one tile from the level texture list at any arbitrary position.

Lighting 7/3/x

Medical equipment 7/4/x

Control Pedestals (buttons only) 7/4/0

These can trigger an object if used.

Button Control Pedestal Info (10 bytes)

0000  [2]byte   Unused
0002  int16     Trigger object index
0004  [6]byte   Unused

Surgery Machines 7/4/3

Surgery Machine Info (10 bytes)

0000  [2]byte   Unused
0002  byte      Broken state; 0x00 = OK, 0xE7 = broken
0003  [2]byte   Unused
0005  byte      Broken message index; Broken default: 0x61
0006  [4]byte   Unused

With all bytes zero, the surgery machine works normally.

When the Broken state field is set to a certain value (the game has 0xE7 for the one on level 2, though some other work, too), then the machine wouldn't work. When not working, the message identified with Broken message index is displayed in the HUD. (0x61 = "This machine is broken").

Textureable Furniture 7/4/5 (chairs)

These have the same layout as the general textureable furniture (see above).

Science and security equipment 7/5/x

Security Cameras 7/5/4

Security Camera Info (10 bytes)

0000  [2]byte   Unused
0002  byte      Panning switch; 0x00: stationary, 0x01: panning
0003  [7]byte   Unused

Control Pedestals (with display) 7/5/5, 7/5/6

Control pedestals are similar to displays regarding the source of the display. Instead of having different loop options, they trigger an object if used.

Display Control Pedestal Info (10 bytes)

0000  int16     Frame count
0002  int16     Trigger object index
0004  int16     Alternation type
0006  int16     Picture source
0008  int16     Alternate picture source

Garden big stuff 7/6/x

Bridges 7/7/x

Solid Bridges 7/7/0, 7/7/1

Solid Bridge Info (10 bytes)

0000  [2]byte   Unused
0002  byte      Size. Bits 0-3: X, bits 4-7: Y
0003  byte      Height. 0 is default, level height units otherwise.
0004  byte      Top/Bottom texture
0005  byte      Side texture
0006  [4]byte   Unused

The size fields are defined as 0: 3D model default, 4: tile width. The texture fields have bit 7 set to indicate texture from level texture list. If 0, the other 7 bits index into citmat.res.

If either textures are to be taken from the level list, the object description will be that of the textures. If a texture is to be taken from citmat.res, the texture index must be > 0, otherwise it will still be the first level texture, even if bit 7 is 0.

Force Bridges 7/7/7, 7/7/8, 7/7/9

Force Bridge Info (10 bytes)

0000  [2]byte   Unused
0002  byte      Size. Bits 0-3: X, bits 4-7: Y -- see above
0003  byte      Height. 0 is default, level height units otherwise.
0004  [2]byte   Unused
0006  byte      Colour
0007  [3]byte   Unused

Object 7/7/8 is a placeholder for force bridges that have not been activated yet. These objects are invisible and are made to force bridges with the use of trigger action 24.

Force bridges of type 7/7/9 differ from the typical ones (7/7/7) in having a default height of zero and no animation when switched from type 8. They furthermore need a size explicitly set.

The engine supports several different values for Colour. Used values are 0x00 for red and 0xFE for green.

Not all 256 colour possibilities have been tested, many resulted in dark red tones or solid colours. Usable variants were found from 0xF7 and above.