Alone in the Dark is a French 3D survival-horror game that is now widely known as the grandfather of the genre (and of tank controls).
Unused Areas#
Scrapped Room#
On the 2nd floor, there is a hidden room between the living room and the 3rd bedroom, behind the ritual chamber. Only colliders are drawn; the rest is missing.
The first picture can be seen in the game by going out of bounds and touching the appropriate triggers:
- go to second floor lobby
- go out of bounds (e.g., by running against the corner of the door that leads to the living room)
- touch the right side of the following room triggers, while staying out of bounds and not touching any camera trigger : corridor, lobby, living room.
The idea is to enter the living room while the camera that leads to it is not active.
A video that show how to trigger the hidden room:
Hidden Cellar Stairs#
Based on their positioning, they were probably supposed to lead to a cellar door outside. There is also a door at the base of the stairs.
Similarly, the stairs in the small room to the cellar on the first floor are not used. Instead, the PC teleports directly to the cellar once it has passed the door.
Secret Tunnel#
There's a secret tunnel in the caverns with a jagged shape that was probably left in the game by mistake. This tunnel is possible to enter from the tunnel between where the first flying wasp-creature is and where the big purple spider is.
Unused Code#
Water Animation#
Water can be animated by cycling the following entries of the game's palette : 224-229 (6 colors), 230-235 (6 colors), 236-239 (4 colors).
Unused Polygon Type#
The game renders polygons in different ways - flat, transparent (e.g. glass), noise (e.g. doors), gradient (e.g. metallic objects) - calling different functions depending on the polygon type. One such function, MyAffPolyFlou (can be translated to "MyRenderPolyBlurry"), goes unused.
Below is an example of forcing the game to render the main character with that function:
Unknown rendering function#
To render actors, the game primarly use 2 functions (depending if the actor is animated or not):
- AnimeNuage : this can be translated to AnimateCloud. "Cloud" here probably refer to 3D vertices projected in space.
- RotateNuage : this can be translated RotateCloud.
There is a 3rd function called DessineNuage which is never called by the game. This can be translated to "DrawCloud". This function transforms and projects actor vertices (as the 2 other ones) but it's unclear what it does afterwards. Forcing the game to call that function makes it crash. It might have been used early during game development, for debugging purposes.
Anti-Piracy Protection Skip Code#
The anti-piracy protection screen (only present in the original floppy disk release) can be skipped if you type in benjaminyaelfred. Part of this secret skip code comes from the game developer names Frédérick Raynal and Yaël Barroz.
Unused CD track#
The CD Track 06 is not used.
Unused animations#
The following animations (located in LISTANIM.PAK) are not used during gameplay and not referenced by any script :
- Entry 69 (vagabond not moving)
- Entry 97 (jelly attacking, very similar to 96)
Unused Text#
Lamp#
The message "There is already oil in the lamp" (entry 517 in ENGLISH.PAK) is never shown in the game and not referenced by any script. It's not part of the lamp logic, as it's possible to fill two cans of oil back-to-back.
Developer Credits#
Present at 0001CC80 in the executable.
Debug by Fred le 25/11/91
Debug Text#
The executable contains strings that were probably used to debug scripts during game's development.
Unused Debugging Functions#
The executable contains several (unused) functions that enable RS323 communication with a Minitel, in order to trace messages.
InitMtlDebug
ClrRsCom
InitRsCom
TraceMacro
DumpParam
PrintRs
SendRs
OutRs
OutWordRs
InRs
InWordRs
InterruptRs
Variables#
VAR
COL
HARD_DEC
HARD_COL
HIT
HIT_BY
ANIM
END_ANIM
FRAME
END_FRAME
BODY
MARK
NUM_TRACK
CHRONO
ROOM_CHRONO
DIST
COL_BY
FOUND
ACTION
POSREL
JOY
BUTTON
CONTACT
ALPHA
BETA
GAMMA
IN_HAND
HIT_FORCE
CAMERA
RND
FALLING
ROOM
LIFE
FOUNDED
COOR_Y
TEST_ZV_END_ANIM
MUSIC
C_VAR
STAGE
THROWN
Functions#
DO_MOVE (%d)
ANIM(%d) %d THEN %d
ANIM_ALL(%d) %d THEN %d
ANIM(%d) %d REPEAT
BODY(%d)
IF != GOTO %d
IF == GOTO %d
IF < GOTO %d
IF <= GOTO %d
IF > GOTO %d
IF >= GOTO %d
GOTO %d
RETURN
END
ANIM_MOVE(%d) %d %d %d %d %d %d %d
MOVE(%d) %d %d %d
HIT(%d) %d %d %d %d %d
MESSAGE %d
MESSAGE_VALUE %d %d
VAR(%d) %d =
INC VAR(%d) %d
DEC VAR(%d) %d
ADD VAR(%d) %d
SUB VAR(%d) %d
LIFE_MODE(%d) %d
SWITCH
CASE %d ELSE GOTO %d
CAMERA %d %d
START_CHRONO(%d)
MULTI_CASE %d ELSE GOTO %d
FOUND %d
LIFE(%d) %d
DELETE %d
TAKE %d
IN_HAND %d
READ %d %d
ANIM_SAMPLE(%d) %d %d
SPECIAL(%d) %d
DO_REAL_ZV(%d)
SAMPLE
TYPE(%d) %d
GAME_OVER
MANUAL_ROT(%d)
RND_FREQ %d
MUSIC %d
SET_BETA %d %d
DO_ROT_ZV(%d)
STAGE(%d) %d %d %d %d %d
FOUND_NAME(%d) %d
FOUND_FLAG(%d) %d
FOUND_LIFE(%d) %d
CAMERA_TARGET %d
DROP %d
FIRE(%d) %d %d %d %d %d %d
TEST_COL(%d) %d
FOUND_BODY(%d) %d
SET_ALPHA %d %d
STOP_BETA(%d)
DO_MAX_ZV(%d)
PUT %d %d %d %d %d %d %d %d %d
MODIF_C_VAR %d =
DO_NORMAL_ZV
DO_CARRE_ZV
SAMPLE %d THEN %d
LIGHT %d
SHAKING %d
INVENTORY %d
FOUND_WEIGHT %d
UP_COOR_Y
SPEED %d
PUT_AT %d %d
DEF_ZV(%d) %d %d %d %d %d %d
HIT_OBJECT(%d) %d %d
GET_HARD_CLIP
ANGLE(%d) %d %d %d
|
The Alone in the Dark series | |
|---|---|
|
DOS |
|
|
3DO |
|
|
PlayStation |
|
|
Game Boy Color |
|
|
Windows |
|