DSA Appendix

Their information from CSBwin (CSBsrc98), source code comments by Paul Stevens.

object types

# Table name
0 door
1 teleporter
2 text
3 actuator
4 monster
5 weapon
6 clothing
7 scroll
8 potion
9 chest
10 misc
11 ?
12 ?
13 ?
14 missile
15 cloud

object specific attributes

door

Bit(s) Description
0 Door switch
0 Have switch
1 Havn't switch
1 Open with axe
0 No
1 Yes
2 Open with fireball
0 No
1 Yes
3 Open dir
0 Horz.
1 Vert.
4-7 (4 bits) Ornate index (selected by level descriptor; screenshot)
8 Door type (selected by level descriptor; screenshot)
0 Door type A
1 Door type B
9-15 (7 bits) Undefined

Useful values/masks for your code:

DOOR_SW_ON = 1
DOOR_SW_OFF = 0
DOOR_SW_MASK = 1

DOOR_OPEN_WITH_AX_NO = 0
DOOR_OPEN_WITH_AX_YES = 2
DOOR_OPEN_WITH_AX_MASK = 2

DOOR_OPEN_WITH_FIREBALL_NO = 0
DOOR_OPEN_WITH_FIREBALL_YES = 4
DOOR_OPEN_WITH_FIREBALL_MASK = 4

DOOR_OPENDIR_HORZ = 0
DOOR_OPENDIR_VERT = 8
DOOR_OPENDIR_MASK = 8

DOOR_ORNATE0 = 0
DOOR_ORNATE1 = 16
DOOR_ORNATE2 = 32
DOOR_ORNATE3 = 48
DOOR_ORNATE4 = 64
DOOR_ORNATE5 = 80
DOOR_ORNATE6 = 96
DOOR_ORNATE7 = 112
DOOR_ORNATE8 = 128
DOOR_ORNATE9 = 144
DOOR_ORNATE10 = 160
DOOR_ORNATE11 = 176
DOOR_ORNATE12 = 192
DOOR_ORNATE13 = 208
DOOR_ORNATE14 = 224
DOOR_ORNATE15 = 240
DOOR_ORNATE_MASK = 240

DOOR_TYPE_A = 0
DOOR_TYPE_B = 512
DOOR_TYPE_MASK = 512

teleporter

Bit(s) Description
0-1 (2 bits) Rotation

0: N
1: E
2: S
3: W

2 Rotator

0: face
1: rotate

3-4 (2-bits) Target

0: objects only
1: monsters only
2: party/objects only
3: anything

5 Beep

0: No
1: Yes

6-15 (10 bits) Undefined

Useful values/masks for your code:

TELE_ROTATION_N = 0
TELE_ROTATION_E = 1
TELE_ROTATION_S = 2
TELE_ROTATION_W = 3
TELE_ROTATION_MASK = 3

TELE_ROTATOR_FACE = 0
TELE_ROTATOR_ROTATE = 4
TELE_ROTATOR_MASK = 4

TELE_TARGET_OBJECTS_ONLY = 0
TELE_TARGET_MONSTERS_ONLY = 8
TELE_TARGET_PARTY_OBJECTS_ONLY = 16
TELE_TARGET_ANYTHING = 24
TELE_TARGET_MASK = 24

TELE_BEEP_NO = 0
TELE_BEEP_YES = 32
TELE_BEEP_MASK = 32

text

Bit(s) Description
0 Visible

0: No
1: Yes

1-15 (14 bits) Undefined

Useful values/masks for your code:

TEXT_VISIBLE_NO = 0
TEXT_VISIBLE_YES = 1
TEXT_VISIBLE_MASK = 1

actuator

Bit(s) Description
0 Beep

0: No
1: Yes

1 Once only

0: No
1: Yes

2-6 (7 bits) Type (from 0 to 127)
7-15 (9 bits) Undefined

Useful values/masks for your code:

ACTU_BEEP_OFF = 0
ACTU_BEEP_ON = 1
ACTU_BEEP_MASK = 1

ACTU_ONCEONLY_NO = 0
ACTU_ONCEONLY_YES = 2
ACTU_ONCEONLY_MASK = 2

ACTU_TYPE_MASK = 508

monster

Bit(s) Description
0-4 (5 bits) Type (from 0 to 26)
5-15 (11 bits) Undefined

weapon

Bit(s) Description
0-6 (7 bits) Type (from 0 to 127)
7-15 (9 bits) Undefined

clothing

Bit(s) Description
0-6 (7 bits) Type (from 0 to 127)
7-15 (9 bits) Undefined

scroll

Bit(s) Description
0-15 (16 bits) Undefined

potion

Bit(s) Description
0-7 (8 bits) Strength (from 0 to 255)
8-14 (7 bits) Type (from 0 to 127)
15 Undefined

chest

Bit(s) Description
0-15 (16 bits) # of items in container

misc

Bit(s) Description
0-6 (7 bits) Type
7-15 (9 bits) Undefined

 

Screenshots

Ornate images

In this case:

bulletOrnate index on wall actuator returns
bullet(Empty ornate) → 0
bulletHook → 1
bulletSlime → 2
bulletGrate → 3
bulletIron Ring → 4
bulletVi Altar → 5
bulletAnd so on...
bulletOrnate index at floor actuator returns
bullet(Empty ornate) → 0
bulletPoison puddle → 1
bulletWater puddle → 2
bulletGrey mark → 3
bulletAnd so on...

Door types