the cutting room mirror

Shadow Man (Nintendo 64)

To do:

Shadow Man is a third person action/horror game for the Nintendo 64 based on the Valiant comic book series of the same name.

Sub-Pages#

Test Map#

ShadowManN64-testmap1.pngShadowManN64-testmap2.pngShadowManN64-testmap3.png

Present in the game is a test map which is a small maze-like room completely devoid of any objects. To access it, use the below code and press A at the main menu and you'll warp to the test map.

Version

GameShark Code

USA

D1196B3E 7674
81196B3E 76B0

(Source: Mezmorize (Classic Videogame Hacking))

Developer Notes#

Present at 0x1A69375:

Filenames:
1st two characters refer to level number*
2nd two charcters refer to scene number (within that level)
3rd two charcters refer to line number (within that scene)
4th single character refers to character speaking (see KEY: above for 
details)
*TT & GN describe the Titles and the General game noises

Debug Texts#

8000212C    audio/sndplayer.c
80002148    NGLISH_LEX
80002154    audio/synthesizer.c
800021D8    _SCENE17EX
800021E8    audio/env.c
80002364    audio/reverb.c
800023C4    AUDIO_SPEECHEX
80002534    io/sirawdma.c
800025A8    io/sirawwrite.c 

80028614    !fp_LEVELS_P

80031C48    fp_ANIMS

80600000    x:%d y:%d z:%d RAM:%dk (%d) Sector:%d Fr:%d
8060002C    %s - [BK]
80600038    FlatFaults : %d
            DecompFaults : %d

80601D7C    audio\speech\english\generic\gn%04ds.wav

806020E8    Z buffer

80609F38    LOADING EVENTS
80609F7C    INIT : Initialise_Game_Primary_Services
80609FCC    INIT : Initialise_Game_EffectsTextures
80609FF4    INIT : Initialise_Game_Secondary_Services
8060A020    INIT : Initialise_Game_Adventure_Settings
8060A068    INIT : Initialise_Game_General
8060A088    INIT : Initialise_Game_Default_CutScene
8060A0B0    INIT : Initialise_Game_Level
8060A0FC    INIT : Initialise_Game_Lists
8060A144    INIT : Initialise_Game_Default_Scripts
8060A16C    INIT : Initialise_Game_Default_Values

8060DC40    LOADING RESOURCES %d-%d
8060DC88    RSC_D_SOREFIRE
8060DC98    RSC_SMOKERING2
8060DCA8    RSC_SMOKERING1

80614C30    level05\scene05\050500m.wav
80614C4C    level05\scene05\050501m.wav

8061A030    cutscene\scripts\english\swampday\0000.ncs
8061A060    cutscene\scripts\english\deadside\jaunty03.ncs

8061B1A0    audio\speech\english\%s
8061B1B8    Level
8061B1C4    Scene

806D6E10    %2d- %s (%d Page%s

Uncompiled Source Code#

The Brazilian version contains a small portion of the game's source code at offsets 0x4B25D-0x4BFFE:

# 1 "game\\inc\\ShadCam.h" 1




# 1 "engine\\inc\\BSPDefs.h" 1
# 387 "engine\\inc\\BSPDefs.h"

# 5 "game\\inc\\ShadCam.h" 2


# 1 "engine\\inc\\List.h" 1
 





# 73 "engine\\inc\\List.h"

# 7 "game\\inc\\ShadCam.h" 2

# 1 "engine\\inc\\3DSPath.h" 1
# 24 "engine\\inc\\3DSPath.h"

# 8 "game\\inc\\ShadCam.h" 2


enum
{
    CAM_TRACK = 0,
    CAM_COMPASS,
    CAM_FREE,
    CAM_CUT,
    CAM_CUTSCENE,
    CAM_FOLLOWPATH,
    CAM_SNIPE,
    CAM_FANCY,
};

 
enum
{
    CAM_PATH_1 = 0,
    CAM_PATH_2,
    CAM_PATH_DW_CAM,             
    CAM_PATH_DW_TARG,            
    CAM_PATH_MG_CAM,             
    CAM_PATH_MG_TARG,            
    CAM_PATH_AS_CAM,             
    CAM_PATH_AS_TARG,            
    CAM_PATH_TEN_CAM,            
    CAM_PATH_TEN_TARG,           
    CAM_PATH_PROF_CAM,           
    CAM_PATH_PROF_TARG,          
};

enum {
    FCAM_SOULCOLLECT = 0,
    FCAM_SOULUP,
    FCAM_USETEDDY,
};

typedef struct
{
 
    UPKData     *RomFile;
    s16         FileID;
    t_3DS_PATH  *PathPtr;
}t_CAM_PATH_LIST;
typedef struct
{
    t_VECT      Pos;
    float       Frame;
    float       Speed;
    t_3DS_PATH  *Path;
}t_PATH_POINT;




typedef struct
{
    t_VECT  Source;
    t_VECT  Target;
    float radius;
}t_CAM_POS_DEF;


extern  t_CAM_POS_DEF CameraDistanceTable[];

 
extern int crouchcam;

extern Sint32   DistIndex;
extern Sint32   OldDistIndex;
extern Sint32   fOldDistIndex;


extern  Sint32      SnapCameraFlag;
extern  t_CAMERA    TrackCamera;
extern  t_CAMERA    FreeCamera;
extern  t_CAMERA    CutCamera;
extern  t_CAMERA    PathCamera;
extern  t_CAMERA    SnipeCamera;
extern  t_CAMERA    FancyCamera;
extern  Sint32      CameraMode;
extern  int crouchcam;
extern  t_CAM_PATH_LIST CameraPaths[];

extern  void        SetCutawayCamera(t_CAMERA *Camera, t_VECT *sv,t_VECT *dv);
extern  void        CutawayCamera(t_CAMERA *Camera);
extern  t_LINKNODE  *CreateCamera(t_VECT *Pos, t_VECT *Rot, Sint32 id, Sint32 Var1, Sint32 Var2);
extern  void        UpdateIngameCamera(void);
extern  void        InitIngameCamera(void);
extern  void        InitFollowCam(t_3DS_PATH *SourcePath, t_3DS_PATH    *DestPath, float SrcSpeed, float DestSpeed, float SrcIndex, float DestIndex);
 
 
extern  void        InitCameraPathList(t_CAM_PATH_LIST *List);
extern  void        FollowPathUpdateCamera(t_CAMERA *Camera);
extern  void        PointFollowPath(t_PATH_POINT *PPoint);


# 22 "game\\cutscene\\inc\\CSCamera.h" 2



 
 
 
typedef
enum    e_CSCameraMode
{
    CSCAMERAMODE_FIXED  =   0,
    CSCAMERAMODE_LOOK_AT_ACTOR,
    CSCAMERAMODE_FOLLOW_PATH,
    CSCAMERAMODE_REL_ACTOR,
    CSCAMERAMODE_MOVING,

}   t_CSCameraMode;


 
 
 
extern  t_CAM_PATH_LIST CameraPathListSwampEnterChurch[];
extern  t_CAM_PATH_LIST CameraPathListIntro[];
extern  t_CAM_PATH_LIST CameraPathListCredits[];





extern float    CutCamPanX;
extern float    CutCamPanY;
extern float    CutCamPanZ;
extern Sint32   CutCamPanXTime;
extern Sint32   CutCamPanYTime;
extern Sint32   CutCamPanZTime;




 
 
 
extern  Sint32  CutSceneGetCameraModeNumber (const Uint8*);
extern  void    CutSceneUpdateCamera        (void);
extern  void    CSCameraShake               (float amplitude);





 
 
 
# 26 "game\\cutscene\\inc\\CutScene.h" 2







 
 
 
enum
{
    CS_DARKSOUL=0,
    CS_SHADCHANGE,
    CS_GIVE_TEDDY,
    CS_FREE_HANDS,
    CS_REMOVE_DARKSOUL,
    CS_HOLD_ECLIPSER,
    CS_GIVE_ECLIPSER_TO_NETTIE,
    CS_ECLIPSER_IN_SHADOWMAN,
    CS_REMOVE_ECLIPSER,
    CS_HOLD_DESERTEAGLE,
    CS_FIRE_PISTOL,
    CS_MILTON_FIRES,
    CS_MARCO_FIRES,
    CS_AVERY_FIRES,
    CS_HOLD_BEAR,
    CS_GIVE_BEAR_TO_LUKE,
    CS_LUKE_HIDES_BEAR,
    CS_REMOVE_BEAR,
    CS_DEMON_TROOPER,
    CS_MAKE_IT_LIGHT,
    CS_MAKE_IT_DARK

(Source: Shygoo)

References#


  1. acclaim.com > press releases > Shadow Man in Stores. "GLEN COVE, N.Y., August 31, 1999 - Acclaim Entertainment, Inc. (NASDAQ: AKLM), a leading worldwide interactive entertainment company, today announced that its much anticipated, third-person 3D action/adventure game Shadow Man has shipped to retail stores nationwide. Developed by Acclaim Studios Teesside, Shadow Man takes video-gaming into the unexplored territories of the human psyche, challenging gamers to stop a marauding band of villains from unleashing unspeakable horrors upon the world as we know it."↩︎
  2. N64 NSO↩︎
  3. Nintendo Official Magazine 084 (EMAP), p. 21↩︎
  4. Hyper 071, p. 67↩︎
  5. [Nintendo - Isto é Entretenimento]↩︎