sm64/include/camera.h

1194 lines
28 KiB
C

/********************************************************************************
camera.h: Ultra 64 MARIO Brothers include file
Copyright (c) 1995 Nintendo co., ltd. All rights reserved
August 24, 1995
*********************************************************************************/
#define CAMDEBUGSW 0
#define CAMVER2 1 // 0: original version 1:English version
#define BVD_A 45 //shido pak no timing no chosei camdemo.c to autodemo.c ni tukatteiru
#define BVD_B 30
#define BVD_C 0
#define BVD_D 0
#define BVD_E 10
#ifndef CAMERA_H
#include "camno.h"
#define SPNUM 32
#define CAMERA_H
#define CAM_FIELD 1
#define CAM_INSIDE 2
#define CAM_WATER 3
#define CAM_DUNGEON 4
#define CAM_TWOPLAY 5
#define CAM_VIEWING 6
#define CAM_BRIDGE 7
#define CAM_RIVER 8
#define CAM_BACK 9
#define CAM_CANNON 10
#define CAM_KUPPA 11
#define CAM_RAIL 12
#define CAM_FIX 13
#define CAM_PARALLEL 14
#define CAM_SLIDER 15
#define CAM_DUNGEON_O 16
#define CAM_SPIRAL 17
#define CAM_DEMO_OFF 0
#define CAM_DEMO_TEST0 128
#define CAM_DEMO_TEST1 129
#define CAM_DEMO_DOOR1 130
#define CAM_DEMO_DOOR2 131
//#define CAM_DEMO_TRAP_FALL 132
#define CAM_DEMO_CANNON 133
#define CAM_DEMO_RIPPLE 134
#define CAM_DEMO_RIPPLEOUT 135
#define CAM_OPENDEMO_0 136
//#define CAM_DEMO_DOORIN1 137
//#define CAM_DEMO_DOORIN2 138
#define CAM_DEMO_TRIPDOOR 139
#define CAM_DEMO_DOOR_MAINROOM1 140
#define CAM_DEMO_DOOR_MAINROOM2 141
#define CAM_DEMO_MAINMAP 142
#define CAM_DEMO_WINDEMO 143
#define CAM_DEMO_KUPPA 144
#define CAM_DEMO_VIEWTEST 145
#define CAM_DEMO_VIEWTEST 145
#define CAM_DEMO_TURN 146
#define CAM_DEMO_RIPPLEPUSH 147
#define CAM_DEMO_PUTONHAT 148
#define CAM_DEMO_AUTODOOR 149
#define CAM_DEMO_CANNONDOOR 150
#define CAM_DEMO_OPENKDOOR 151
#define CAM_DEMO_GIDDYDOWN 152
#define CAM_DEMO_FOREDOWNE 153
#define CAM_DEMO_BACKDOWNE 154
#define CAM_DEMO_SANDDOWN 155
#define CAM_DEMO_GASDOWN 156
#define CAM_DEMO_BEATKUPPA 157
#define CAM_DEMO_LOSEDKUPPA 158
#define CAM_DEMO_SWIMDOWNE 159
#define CAM_DEMO_RIPPLEWIN 160
#define CAM_DEMO_ITEM 161
#define CAM_DEMO_TALK 162
#define CAM_DEMO_TALKYESNO 163
#define CAM_DEMO_PYLTOP 164
#define CAM_DEMO_WINDEMOOVERLOOK 165
#define CAM_DEMO_WINDEMOCLOSEUP 166
#define CAM_DEMO_WINDEMOSTOROBO 167
#define CAM_DEMO_PYLEXP 168
#define CAM_DEMO_PUSHOUT 169
#define CAM_DEMO_PUSHDOWN 170
#define CAM_DEMO_LOOKBOARD 171
#define CAM_DEMO_ENDB 172
#define CAM_DEMO_LOOKOBJ 173
#define CAM_DEMO_ENDA 174
#define CAM_DEMO_WINDEMO2 175
#define CAM_DEMO_STAR8 176
#define CAM_DEMO_SAYONARA 177
#define CAM_DEMO_CREDITS 178
#define CAM_DEMO_INFALL 179
#define CAM_DEMO_BLUESKY 180
#define CAM_DEMO_METALPOOL 181
#define CAM_FLAG_TURNCENTER 0x0001 /* field camera long viewing */
#define CAM_FLAG_VIEWLONG 0x0002 /* field camera long viewing */
#define CAM_FLAG_TURNLEFT 0x0004 /* field camera turn left */
#define CAM_FLAG_TURNRIGHT 0x0008 /* field camera turn right */
#define CAM_FLAG_TURNCODE 0x0010 /* field camera turn left */
#define CAM_FLAG_DUNGEONWATER 0x0020 /* Dungeon camera suityu-mode */
#define CAM_FLAG_LOCKPOS 0x0040 /* Dungeon camera suityu-mode */
#define CAM_FLAG_MDCHANGE 0x0100 /* camera mode changing */
#define CAM_FLAG_VIEWMODEOFF 0x0200 /* map camera */
#define CAM_FLAG_VIEWMODE_ex 0x0400 // player igai ga viewmode wo ON ni sitatoki set suru.
#define CAM_FLAG_INIT 0x0800 /* init map camera(in CtrlGameCamera) */
#define CAM_FLAG_MAPMODE 0x1000 /* map camera */
#define CAM_FLAG_VIEWMODE 0x2000
#define CAM_FLAG_INWATER 0x4000 /* camera in water */
#define CAM_FLAG_PAUSE 0x8000 /* camera pause mode */
// Windemo
#define wdLong 0
#define wdNormal 1
#define wdClose 2
#define wdKuppa 3
#define wdSonoba 4
#define gSF_SPECIAL 0x0001 /* Do Special near camera */
#define gSF_VIEWLONG 0x0002 /* View long no back up*/
#define gSF_SPECIALMODE 0x0004 /* 1:Special camera 0:Stop camera*/
#define SC_CHECK 0
#define SC_ON 1
#define SC_OFF 2
#define SM_CHECK 0
#define SM_SPECIAL 1
#define SM_STOP 2
#define gCF_ACHASEON 0x0001
#define gCF_ACHASEDISABLE 0x0002
#define gCF_1STFRAME 0x0004
#define gCF_RAILCHANGED 0x0008
#define gCF_CAMTOCLOSE 0x0010 // Back camera no toki camera tono kyori wo chijimeru
#define gCF_HITWALL 0x0020 // Kabe ni atatta toki no flag
#define gCF_ZZZZ 0x0040 // Mario ga neteiru toki no flag
#define gCF_CAMTURN 0x0080 // Mario ga Cameara ni atatta toki syori wo tomeru
#define gCF_CAMTURNINIG 0x0100 // Mario ga Cameara ni atatta toki syori wo tomeru
#define gCF_DRIFT 0x0200 // Kabe no mawarikomi-cyu
#define gCF_INBETON 0x0400 // Camera Mode Change no tokino inbetweener no flag
#define gCF_INBETING 0x0800 // Camera Mode Change no tokino inbetween wo siteirutokino flag
#define gCF_LOCKMODE 0x1000 // Camera Mode no Lock(1 frame dake)
#define gCF_DEMO_TURN 0x2000 // Mawarikomi demo no ON/OFF 1=ON
#define gCF_DEMO_INBETACTIVE 0x4000 // demo cyu- no Inbetween wo on ni suru
#define gCF_DOOREND 0x8000 // door wo kugutta tokini CAM_MIN no check wo OFF ni suru.
#define gCS_FIX 0x1 // MainHall no genkan etc..
#define gCS_PAUSE 0x2
#define gCS_TURNLEFTmax 0x4
#define gCS_TURNRIGHTmax 0x8
#define CDMF_MODETESTON 0x0001
#define CDMF_JUGEMON 0x0002
#define gCFd_camAngleyAuto 0x0001 /*AUTO de camAngley wo inc,dec suruka */
#define gCFSE_VIEWTRIG 0x0001
#define gCFSE_SPECIAL_ON 0x0002
#define gCFSE_SPECIAL_OFF 0x0004
#define gCFSE_SPECIALMODE_ON 0x0008
#define gCFSE_SPECIALMODE_OFF 0x0010
#define gCFSE_SHUTTER 0x0020
//#define ZOOM_TEST 255
#define ZOOM_OFF 0
#define ZOOM_45 1
#define ZOOM_NORMAL 2
#define ZOOM_CLEAR 3
#define ZOOM_MAINROOM 4
#define ZOOM_DOOR 5
#define ZOOM_RIPPLE 6
#define ZOOM_OBAKE 7
#define ZOOM_UP 8
#define ZOOM_WINDEMOCLOSEUP 9
#define ZOOM_PYLEXPUP 10
#define ZOOM_PYLEXPDOWN 11
#define ZOOM_PEACH 12
#define ZOOM_KISS 13
#define ZS_BEEEN 1
#define ZS_GATYOOON 2
#define ZS_MIDDLE 3
#define ZS_LARGE 4
#define DI_OUTDOOR 1 // obake yashi no soto he derutoki
#define DI_RAIL 2 // Main room no Fix -> Rail no toki
#define DI_15A 3 // Map15 no Fix camera no tame no coard
#define DI_15B 4 // Map15 no Fix camera no tame no coard
#define VS_SMALL 1
#define VS_MIDDLE 2
#define VS_LARGE 3
#define VS_GOROGORO 4
#define VS_PUNCH 5
#define VS_KEY 6
#define VS_CANNON 7
#define VS_PYLAMID 8
#define VS_CHINBOTSU 9
#define VS_QUAKE 10
#define VE_PUNCH 1
#define VE_HIPDROP 2
#define VE_DAMAGE_S 3
#define VE_DAMAGE_M 4
#define VE_DAMAGE_L 5
#define VE_DAMAGE_WATER 6
#define VE_DEAD 7
#define VE_HEADATK 8
#define VE_LANDDMG 9
#define VE_ELEC 10
#define VIEW_ON 1
#define VIEW_OFF 2
#define SW_OFF 0 // swing mode
#define SW_NORMAL 1 // swing mode
#define SW_SHIP 2 // swing mode
#define SW_UNTEI 3 // swing mode
#define SW_GIDDY 4 // swing mode
#define SW_OVERLOOK 5 // swing mode
#define SW_MAINMAP 6 // swing mode
// BG code list
#define CAMCODE_FIELD 13
#define CAMCODE_DUNGEON 11
#define CAMCODE_DUNGEON_O 102
#define CAMCODE_DUNGEON_SLOPE 121
#define CAMCODE_WALLROTOFF 40
#define CAMCODE_HEIKOU 105
#define CAMCODE_TURNCENTER 110
#define CAMCODE_TURNRIGHT 111
#define CAMCODE_TURNLEFT 112
#define CAMCODE_RIPPLE_START 211
#define CAMCODE_RIPPLE_END 252
#define CAMCODE_DEATH 10 // ku-cyu- shibou
#define CAMCODE_KUPPA 101
// Camera Parameter
//#define BIG_DIST 400.0f
//#define FIELD_DIST_MM 796.0f /* Main Map */
//#define FIELD_LONG 400.0f /*400.0f*/
//#define FIELD_LONG_MM 400.0f /*400.0f*/
//#define FIELD_HEIGHT 100.0f
//#define FIELD_HEIGHT_MM 100.0f /*125.0f*/
//#define FIELD_PITCH 0x200 //ANGLE8
//#define FIELD_DISTANGLEX 0x900
//#define FIELD_DISTANGLEX_MM 0x900
#define CAMINIT_HEIGHT 125.0f
#define FIELD_DIST 1000.0f
#define FIELD_LONG 400.0f /*400.0f*/
#define FIELD_HEIGHT 125.0f
#define FIELD_PITCH ANGLE8
#define FIELD_DISTANGLEX 0x900
#define PARALLEL_DIST 1000.0f
#define PARALLEL_LONG 400.0f
#define PARALLEL_HEIGHT 125.0f
#define PARALLEL_PITCH ANGLE8
#define PARALLEL_DISTANGLEX 0x900
#define BIG_DIST 600.0f
#define BIG_LONG 400.0f
#define BIG_HEIGHT 125.0f
#define BIG_PITCH ANGLE8
#define BIG_DISTANGLEX 0x900
#define SMALL_DIST 1000.0f
#define SMALL_LONG 400.0f
#define SMALL_HEIGHT 125.0f
#define SMALL_PITCH ANGLE8
#define SMALL_DISTANGLEX 0x900
#define WATER_DIST 800.0f
#define WATER_MIN 300.0f
#define WATER_LONG 50.0f
#define WATER_HEIGHT 125.0f
#define RIVER_DIST 800.0f
#define RIVER_LONG 50.0f
#define RIVER_HEIGHT 125.0f
#define RIVER_LOOKHEIGHT 125.0f;
#define RAIL_HEIGHT 150.0f
#define BACK_DIST 800.0f;
#define BACK_DIST_MAP6 1000.0f;
#define VIEW_DIST 250.0f
#define VIEW_HEIGHT 125.0f
#define BIRD_DIST 1000.0f
#define BIRD_ANGX 0x2800
#define SPECIAL_WATER_DIST 350.0f
#define SPECIAL_WATER_HEIGHT 120.0f
#define SPECIAL_DIST 350.0f
#define SPECIAL_HEIGHT 90.0f
#define SPECIAL_LOOKHEIGHT 100.0f
#define SPECIAL_HEIGHTLONG 300.0f+400.0f
#define SPECIAL_LONG 1050.0f
#define DUNGEON_DIST 800.0f
#define DUNGEON_HEIGHT 125.0f
#define DUNGEON_O_HEIGHT 225.0f
#define DUNGEON_HEIGHTLONG 500.0f
#define DUNGEON_LONG 400.0f
#define DUNGEON_MIN 200.0f
#define DUNGEON_MIN_CAM 250.0f
#define SMOG_HEIGHT 130.0f
#define FIX_MIN 300.0f /*200.0f*/
#define FIX_HIGHTLONG 400.0f /*200.0f*/
#define RAIL_MIN 300.0f /*200.0f*/
#define RAIL_HIGHTLONG 400.0f /*200.0f*/
#define TWOPLAY_HEIGHT 125.0f
#define TWOPLAY_DIST 375.0f
#define KUPPA_HEIGHT 300.0f
#define KUPPA_LOOKHEIGHT 100.0f
#define KUPPA_DIST 375.0f
#define KUPPA_LONG 400.0f
#define KUPPA_ANGLEX 0x1000
#define KUPPA_DISTANGLEX 0x1800
#define SPIRAL_HEIGHT 125.0f
#define CANNON_DEPTH 335.0f+50.0f /* 50.0f = offset */
// Winning Demo
#define WINDEMO_DIST 600.0f
#define WINDEMO_HEIGHT 100.0f
//end of Camera Parameter
#define ANGLE8 0x05B0
#define ANGLE30 0x1555
#define ANGLE45 0x2000
#define ANGLE60 0x2AAA
#define ANGLE90 0x4000
#define ANGLE180 0x8000
#define ANGLE359 0x8000
// Demo producer's code
#define PRODUCE_WINDEMO 1
#define PRODUCE_KUPPA 2
#define PRODUCE_ENDB 3
#define PRODUCE_MAINMAP 4
#define PRODUCE_PEACH 5
#define PRODUCE_JUGEM 6
#define PRODUCE_BIRD 7
#define PRODUCE_BIRD2 8
#define PRODUCE_BIRD_B 9
/********************************************************************************/
/* Global veriable. */
/********************************************************************************/
/* player information record */
typedef struct {
ulong status; /* player's status */
FVector position; /* player's position */
SVector angle; /* player's angle */
short headAngx; /* player's head angle x */
short headAngy; /* player's head angle y */
short eyeCtrl; /* player's eye control */
short handCtrl;
short demostatus;
StrategyRecord *Stp;
} CamPLInfo, *CamPLInfoPtr;
/* camera parameter record */
typedef struct {
FVector lookat; /* camera look at point */
FVector position; /* camera position */
float distance; /* camera distance from a look at point */
short anglex; /* camera rotation angle x */
short angley; /* camera rotation angle y */
} CamParam;
/* camera mode change record */
typedef struct {
short mode; /* change camera mode */
short retmode;
short nframes; /* mode change frames */
short counter; /* mode change conter */
CamParam origin;
CamParam change;
} CamMDChange;
/* Demo actor structure */
typedef struct {
FVector position; /* camera look at point */
FVector lookat; /* camera look at point */
} DemoParam;
/* Camera joint Data structure */
typedef struct {
FVector position;
short flag;
}JointData;
typedef struct {
int flag;
short ang;
}cwr;
/* Data structure for Demo */
typedef struct {
ulong status;
FVector position;
FVector vec;
SVector angle;
short timer;
}Demodata;
/* camera zoom record */
typedef struct {
uchar mode; /* zoom mode */
uchar oldmode; /* zoom mode(old) */
float angle;
float ofs;
long count;
float shakeang; /* shake value */
short shakefreq; /* shake frequency */
short shakefreqvel; /* shake velocity */
short shakeangdec; /* shake decriment value */
} ZoomRecord, *ZoomPtr;
/* camera information record */
typedef struct {
uchar mode; /* camera mode */
uchar orgmode; /* original camera mode */
short panning; /* base angle for player control */
FVector lookat; /* current look at point */
FVector position; /* current camera position */
SVector angle;
SVector angleoffset;
float centerx; /* camera rotation center position x */
float centerz; /* camera rotation center position z */
uchar demomode; /* camera mode */
float persp; /* camera mode */
char BGareabuf;
short pan; /* base angle for player control(buffer) */
short panofs; /* base angle for player control(offset) */
ZoomRecord zoom;
float DIST;
float LONG;
uchar doorinfo; /* camera mode */
float centery; /* camera rotation center position y */
} CameraRecord, *CameraPtr;
extern CameraPtr cameraOut;
/* camera information record buffer */
typedef struct {
FVector lookat; /* current look at point(Main) */
FVector position; /* current camera position(Main) */
FVector Slookat; /* current look at point(Sub) */
FVector Sposition; /* current camera position(Sub) */
FVector center; /* Map center */
uchar mode; /* camera mode */
uchar orgmode; /* original camera mode */
uchar perspmode; /* perspective mode */
float persp; /* perspective */
float perspofs; /* perspective offset */
float dist;
SVector ang;
SVector shakeang; /* shake value */
short shakefreqX; /* shake frequency */
short shakefreqvelX; /* shake velocity */
short shakeangdecX; /* shake decriment value */
FVector Wallofs; // Wall ni atatta toki no inbetween wo yaru //
SVector swingang; /* swing angle */
char swingpnt; /* data pointer */
short swingfreq; /* swing frequency */
short swingfreqvel; /* swing velocity */
short swingangdec; /* swing decriment value */
// FVector Oposition; /* old camera position(Sub) */
// FVector Olookat; /* old camera lookat(Sub) */
short anglez; // rotation z
short panning;
short pan;
FVector Flookat; /* final output data */
FVector Fposition; /* final output data */
short shakefreqZ; /* shake frequency */
short shakefreqvelZ; /* shake velocity */
short shakeangdecZ; /* shake decriment value */
short shakefreqY; /* shake frequency */
short shakefreqvelY; /* shake velocity */
short shakeangdecY; /* shake decriment value */
float lookrate; /* camera->look chase rate (default 0.8f)*/
float lookrateY; /* camera->look[_AY] chase rate (default 0.3f)*/
float posrate; /* camera->position chase rate(default 0.3f )*/
float posrateY; /* camera->position[_AY] chase rate(default 0.3f )*/
short anglezofs; // rotation z offset
ulong lastmInfo_status;
short scrollrot; // BG scroll no offset
} CameraBuffer, *CameraBuf;
extern CameraBuffer camWork;
/* Data structure for Camera Inbetween system */
typedef struct {
short angx; //rotation x
short angy; //rotation y
float dist ;
short Langx; //rotation x
short Langy; //rotation y
float Ldist ;
int frame ;
FVector Omario; //Mario no old position
int Lframe ;
}InbetRecord , *InbetPtr;
/* Data structure for Camera Control Block */
typedef struct {
char sceneNo;
short (*prog)(CameraPtr camera);
SVector center; //center pos
SVector width ; //width
short angley; //rotation y
}CamCtlBlock , *CamCtlBlockPtr;
// Data structure for Viewmode no buffer
typedef struct {
FVector position;
FVector lookat;
float camLookatxofs;
float camLookatyofs;
}Viewbakdat , *ViewbakdatPtr;
/* Data structure for Spline */
typedef struct {
char code; // Code
float T; // T no sokudo (0<Tvel<1.0)
SVector pos;
}Splinedat , *SplinedatPtr;
typedef struct {
char code; // Code
uchar T; // T no sokudo (0<Tvel<1.0)
SVector pos;
}SplinedatZ , *SplinedatPtrZ;
/* Data structure for Camera Rail */
typedef struct {
short code; // 0:end code
FVector pos;
float width;
float xper ;
}Raildat , *RaildatPtr;
typedef struct {
BGCheckData *Gplane;
float ground;
short Gattr;
BGCheckData *Rplane;
short Rattr;
float roof;
BGCheckData *GplaneOld;
float groundOld;
short GattrOld;
BGCheckData *RplaneOld;
float roofOld;
short RattrOld;
float water;
}C_marioBGInfo ,*C_marioBGInfoPtr;
typedef struct {
short No;
float dist;
SVector Pang;
SVector Lang;
float frame;
float T;
}Jg , *JgPtr;
/********************************************************************************/
/* Global veriable. */
/********************************************************************************/
extern CamPLInfo camPlayerInfo[2]; /* player information for camera control */
extern short gameCameraControl; /* game camera control flags */
extern short gameCameraFlag; /* game camera control flags */
extern short gameCameraCounter; /* Demo tokatde tsukau...*/
extern SplinedatZ Cspline[SPNUM]; // spline test
extern SplinedatZ CsplineL[SPNUM]; // spline test
#if CAMDEBUGSW
extern CamDebugModeFlag;
#endif
extern short Csplineno; // spline test
extern float CsplineT; // spline test
extern short Csplinecount; // spline test
//camdemo.c
extern short DemoCameraPointer;
extern short DemoCameraCounter;
extern SplinedatZ JugemP[];
extern SplinedatZ JugemL[];
extern SplinedatZ JugemP2[];
extern SplinedatZ JugemL2[];
/* For Demo */
extern Demodata camDemo[10];
//extern StrategyRecord *demostratstp;
extern StrategyRecord *demoposstp;
extern StrategyRecord *demolookstp;
extern StrategyRecord *camBOSSstp;
extern int demoseqcode;
extern uchar ENDdemomode;
extern int producecode;
extern CameraPtr Camerawork;
/* Slider no block kirikae */
extern FVector camBlockofs;
/********************************************************************************/
/* Function prototype declaration. */
/********************************************************************************/
extern void
InitCamera_1st(void);
extern ulong
ZoomControl(int code, MapNode *node, void *data);
extern ulong
GameCamera(int code, MapNode *node, void *data);
extern void
CtrlGameCamera(CameraPtr camera);
extern void
InitGameCamera(CameraPtr camera);
extern void
InitCameraParam(CameraPtr camera);
extern void
ChangeGameCamera(CameraPtr camera, short new_mode, short frames);
extern void
InbetGameCamera(CameraPtr camera, short newMode, short nframes);
extern short
cameraDemo(uchar mode);
extern short
cameraDemoMsg(uchar mode);
extern short
cameraDemoStratMsgNum(uchar mode,StrategyRecord *stp,short No);
extern short
cameraDemoStratMsg(uchar mode,StrategyRecord *stp);
extern short
cameraDemoStrat(uchar mode,StrategyRecord *stp);
extern void
Viewshake(short mode);
extern void
Vieweffect(short mode);
extern void
Viewshaking(short mode,float x,float y,float z);
extern void
InbetCamera(CameraPtr camera, short nframes);
extern int
InitViewingCamera(CameraPtr camera);
extern int
FinishViewingCamera(CameraPtr camera);
extern SplinedatZ xxxxP[];
extern SplinedatZ xxxxL[];
extern SplinedatZ sayoP[];
extern SplinedatZ sayoL[];
//camlib.c
extern void
CCW_Parallel(CameraPtr camera);
extern int
SpecialMode(int mode);
extern int
SpecialCamera(int mode);
extern int
Crou_CamAngLimit(FVector position,FVector lookat,short maxX,short minX);
extern short
Crou_CameraIconSet(CameraPtr camera);
//extern short
//GetSpline(FVector POS,FVector LOOK,float FRAME,short *Prx,short *Pry,short *Lrx,short *Lry);
extern int
CamWallCheck(FVector position, float ofs, float R);
extern int
Crou_sameFV(FVector p,float x,float y,float z);
extern int
Crou_mariosamepos(float x,float y,float z);
extern void
SubFVector(FVector org, FVector sub);
extern void
Crou_SeekViewoff_pos(CameraPtr camera);
extern short
Crou_XZbarrier(FVector position,FVector lookat,float Xl,float Xs,float Zl,float Zs);
extern void
Srou_pos2FVector(FVector pos, StrategyRecord *stp );
extern void
Srou_FVector2pos(StrategyRecord *stp,FVector pos);
extern void
Srou_rot2SVector(SVector rot, StrategyRecord *stp);
//extern void
//Srou_SVector2rot( StrategyRecord *stp ,SVector rot);
extern short
Crou_AnglePerCamDist(short angle,float offdist,float x,float y,float z);
extern int
ViewingCam(int sw);
extern void
Crou_BGM_Peach(void);
extern void
Crou_BGM_Openning(void);
extern void
Crou_SE_SHUTTER(void);
extern void
Crou_SE_SPECIALCAMERA(void);
extern void
Crou_SE_ZOOM_IN (void);
extern void
Crou_SE_ZOOM_OUT(void);
extern void
Crou_SE_CAMERAMOVE(void);
extern void
Crou_SE_BUZZER(void);
extern void
Crou_DebugCommand(CameraPtr camera);
extern short
Crou_Forcerot_s(short org , short obj );
extern short
Crou_camAngley_INSIDE(CameraPtr camera,short fieldang);
extern int
Crou_CalcPlaneArea(BGCheckData *plane,float Lx, float Ly,float Lz);
extern int
Crou_CheckPlaneFace(FVector lookat,FVector position,BGCheckData *plane,short ofs,short OFFCODE);
extern ushort
Crou_Key(ushort key ,ushort trigger,ushort status);
extern int
c_c_achase_f(float *org , float obj , float rate );
extern int
c_c_fchase_s(short *org , short obj , short rate );
extern int
c_fchase_s(short *org , short obj , short rate );
extern int
c_achase_f(float *org , float obj , float rate );
extern int
c_achase_s(short *org , short obj , short rate );
extern int
c_fchase_f(float *org , float obj , float rate );
extern short
c_Fchase_s(short org , short obj , short rate );
extern float
c_Achase_f(float org , float obj , float rate );
extern short
c_Achase_s(short org , short obj , short rate );
extern float
c_Fchase_f(float org , float obj , float rate );
extern void
c_achase_FVector(FVector org , FVector obj , float ratex,float ratey,float ratez );
extern void
c_c_achase_FVector(FVector org , FVector obj , float ratex,float ratey,float ratez );
extern void
c_achase_SVector(SVector org , SVector obj , short ratex,short ratey,short ratez );
//extern void
//c_fchase_FVector(FVector org , FVector obj , float ratex,float ratey,float ratez );
extern void
Crou_roffs2pos( FVector pos, FVector ofs , FVector org , SVector angle);
extern void
Crou_roffs2posvalue( FVector pos,FVector org, SVector angle,float x,float y,float z);
//extern void
//Crou_roffs2obj( FVector pos,StrategyRecord *stp, float ofsx,float ofsy,float ofsz);
//extern void
//c_fchase_SVector(SVector org , SVector obj , short ratex,short ratey,short ratez );
extern short
Crou_CalcAnglex(FVector center, FVector point);
extern short
Crou_CalcAngley(FVector center, FVector point);
extern void
Crou_CalcAngle(FVector center, FVector point,short *angx,short *angy);
extern float
Crou_CalcDistXZ(FVector center, FVector point);
extern float
Crou_CalcDist (FVector center, FVector point);
//extern void
//Crou_RotatePos(FVector pos, FVector org , short anglex ,short angley);
extern void
Crou_YRotatePos(FVector pos, FVector pnt , short angley);
extern void
Crou_XRotatePos(FVector pos, FVector pnt , short anglex);
extern void
Crou_Set_ViewshakeX(short angle,short angledec,short freqvel);
extern void
Crou_Set_ViewshakeY(short angle,short angledec,short freqvel);
extern void
Crou_Set_ViewshakeZ(short angle,short angledec,short freqvel);
extern void
Crou_Set_ViewshakingX(short angle,short angledec,short freqvel,float offdist,float x,float y,float z);
extern void
Crou_Set_ViewshakingY(short angle,short angledec,short freqvel,float offdist,float x,float y,float z);
static void
Crou_ViewshakeX(FVector position,FVector lookat);
static void
Crou_ViewshakeY(FVector position,FVector lookat);
static void
Crou_ViewshakeZ(short *rotz);
extern void
Crou_Viewswing(FVector position,FVector lookat);
extern void
Viewswing(uchar mode);
extern short
Crou_ViewLong(CameraPtr camera, float distoff);
extern void
Crou_SE_ViewDdisable(void);
extern void
Crou_SE_ViewLRdisable(void);
extern void
Crou_SE_ViewUDLRdisable(void);
extern void
Crou_SetDemoMode(CameraPtr camera,uchar mode);
extern void
Crou_MidPnt(FVector pos0,FVector pos1,FVector pos2,float rate);
extern uchar
Crou_DemoMode(CameraPtr camera);
extern void
Crou_camBlockofs(float x,float y,float z);
extern void
Crou_traceCamHeight(CameraPtr camera,float height,float rate);
extern void
Crou_test_campos(FVector position ,SVector angle,float vx,float vy,float vz);
extern void
Crou_ViewMode(CameraPtr camera);
extern short
Crou_CameraWizard(CameraPtr camera);
extern void
Crou_WaterWallCheck(FVector position,FVector oldpos);
extern void
Crou_ChengeGameMode_test(CameraPtr camera);
extern void
Crou_InitFixCampos(short mode);
//extern void
//Crou_TurnDemo(CameraPtr camera , FVector lookat , FVector position ,float MIN);
extern int
Crou_CalcWallRoty(CameraPtr camera ,FVector position,short *angley,short ofs);
//extern int
//Crou_CalcWallRotx(CameraPtr camera,short *anglex);
extern short
Crou_Inbet(FVector ipos,FVector ilook,FVector position,FVector lookat,FVector Oposition,FVector Olookat,short pan);
extern void
Crou_marioBG(C_marioBGInfoPtr m);
extern void
Crou_InitRailCamera(CameraPtr camera,RaildatPtr ptr);
//extern int
//Crou_Dospline(FVector pos,SplinedatPtr ptr,short *pointer,float *T);
extern int
Crou_DosplineZ(FVector pos,SplinedatPtrZ ptr,short *pointer,float *T);
//extern void
//Crou_SetRandom_FVector(FVector pos,float Rx,float Ry,float Rz);
extern void
Crou_SetRandom_SVector(SVector pos,short Rx,short Ry,short Rz);
//camdemo.c
extern void
DoDemoCamera( CameraPtr camera );
extern int
DoDemoRou(short (*prog)(CameraPtr camera) ,CameraPtr camera,short StartTime ,short EndTime);
extern int
DoProduce(int code, short time);
extern Raildat RD6_Mainroom[];
//zoom.c
extern ulong
ZoomControl(int code, MapNode *node, void *data);
extern ulong
ZoomControl_Dungeon(int code, MapNode *node, void *data);
extern void
SetZoomMode(uchar mode);
extern void
Zoomshake(uchar mode);
extern void
Zoomshaking(uchar mode,float x,float y,float z);
extern void
Zrou_Set_Zoomshake(short angle,short angledec,short freqvel);
// windemo.c
extern
uchar wintbl[27][4];
extern
uchar pauseinfo[19];
// BATTLE
extern SplinedatZ spBattleP[];
extern SplinedatZ spBattleL[];
// MOUNTAIN
extern SplinedatZ spMountainP[];
extern SplinedatZ spMountainL[];
//WaterDungeon
extern SplinedatZ spWaterDungeonP[];
extern SplinedatZ spWaterDungeonL[];
// Snow Slider
extern SplinedatZ spSnowsliderP[];
extern SplinedatZ spSnowsliderL[];
// HorrorHouse
extern SplinedatZ spHorrorHouseP[];
extern SplinedatZ spHorrorHouseL[];
// HorrorDungeon
extern SplinedatZ spHorrorDungeonP[];
extern SplinedatZ spHorrorDungeonL[];
// Hanacyan
extern SplinedatZ spHanacyanP[];
extern SplinedatZ spHanacyanL[];
// ChikaLava
extern SplinedatZ spChikaLavaP[];
extern SplinedatZ spChikaLavaL[];
// Sabaku
extern SplinedatZ spSabakuP[];
extern SplinedatZ spSabakuL[];
// WaterLand
extern SplinedatZ spWaterLandP[];
extern SplinedatZ spWaterLandL[];
// Snowman
extern SplinedatZ spSnowmanP[];
extern SplinedatZ spSnowmanL[];
// Pool
extern SplinedatZ spPoolP[];
extern SplinedatZ spPoolL[];
// Donkey
extern SplinedatZ spDonkeyP[];
extern SplinedatZ spDonkeyL[];
// Big world
extern SplinedatZ spBigWorldP[];
extern SplinedatZ spBigWorldL[];
// Clock
extern SplinedatZ spClockP[];
extern SplinedatZ spClockL[];
// Rainbow
extern SplinedatZ spRainbowP[];
extern SplinedatZ spRainbowL[];
// Suisou
extern SplinedatZ spSuisouP[];
extern SplinedatZ spSuisouL[];
// Fall
extern SplinedatZ spFallP[];
extern SplinedatZ spFallL[];
// Submarine
extern SplinedatZ spSubmarineP[];
extern SplinedatZ spSubmarineL[];
// Yukiyama
extern SplinedatZ spYukiyamaP[];
extern SplinedatZ spYukiyamaL[];
// kobject.c
extern unsigned long e_opening_jugem[];
extern unsigned long e_ending_bird[];
extern unsigned long e_ending_bird2[];
extern unsigned long e_opening_peach[];
extern unsigned long e_opening_jugem[];
extern unsigned long e_ENDB_peach[];
extern unsigned long e_ENDB_director[];
extern unsigned long e_demo_producer[];
#if CAMDEBUGSW
extern unsigned long e_tool_jugem[];
#endif
#endif