Add rayman2 source files

This commit is contained in:
2024-09-18 02:33:44 +08:00
parent bcc093f8ed
commit fb036c54fd
14339 changed files with 2596224 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
/*ANNECY CT 20/02/98{*/
/*=========================================================================
* Anim.h : Contain the CPA's animation functions.
*
*
* Version 0.0
* Creation date 20/02/98
* Revision date
*
* That file needs to be compatible for all platforms.
*=======================================================================*/
#ifndef _ANIM_H_
#define _ANIM_H_
/******************************************/
#if _MSC_VER >= 1000
#pragma once
#endif /* _MSC_VER >= 1000 */
/******************************************/
/*
* To export code.
*/
#undef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else /* CPA_WANTS_IMPORT */
#define CPA_EXPORT
#endif /* CPA_WANTS_IMPORT */
#ifndef __ANIM_S_H__
typedef struct tdstAnim3d_ tdstAnim3d;
#endif /*AR980313 to avoid redefinition*/
#if defined(__cplusplus)
extern "C"
{
#endif /* __cplusplus */
/*extern CPA_EXPORT void fn_vFreeJustStructAnim(tdstAnim3d * p_stAnim);*/
/*extern CPA_EXPORT void fn_vFreeSubStructAnim(tdstAnim3d * p_stAnim);*/
extern CPA_EXPORT void ANI_fn_vFreeze(HIE_tdxHandleToSuperObject hSuperObjPerso);
extern CPA_EXPORT void ANI_fn_vUnFreeze(HIE_tdxHandleToSuperObject hSuperObjPerso);
extern CPA_EXPORT tdstAnim3d * fn_p_stLoadAnimationFile(char * szFileName,struct tdstFamilyList_ *p_stFamily);
#if defined(__cplusplus)
}
#endif /* __cplusplus */
#endif
/*ENDANNECY CT}*/

View File

@@ -0,0 +1,80 @@
/* ***********************************************************************************/
/* * "a3x_cach.h" **/
/* * Written by : S<>bastien Rubens **/
/* * Tabulations : 4 char **/
/* ***********************************************************************************/
#ifndef A3X_CACH_H
#define A3X_CACH_H
/* ***********************************************************************************/
typedef struct tdstA3dHeader_
{
unsigned short uwNumOfCacheEntry;
unsigned short uwCacheList;
} tdstA3dHeader;
typedef struct tdstCacheLine_
{
signed long slCacheValue;
unsigned short uwNumOfA3dHeader;
unsigned short uwNumOfMemBloc;
unsigned short uwPrev;
unsigned short uwNext;
} tdstCacheLine;
extern unsigned short *p_uwLastA3dGENERAL;
extern unsigned long *p_ulAnimOffsets;
extern char *p_cLoadAnimBuf;
extern unsigned short uwMaxInTabFrame3d;
extern unsigned short uwMaxInTabElement3d;
typedef struct tdstOutputCacheLine_
{ void *p_vSuperObject;
tdstAnim3d *p_stAnim3d;
tdstFrame3d *p_stFrame3d;
tdstElement3d *p_stElement3d;
long lNumOfLastFrame;
MTH3D_tdstMatrix stAngularSpeedMatrix;
} tdstOutputCacheLine;
#ifndef A3X_CACH_C
/* ***********************************************************************************/
extern tdstA3dGENERAL *fn_p_GetA3dGENERAL( unsigned short uwNumOfA3dGENERAL,
unsigned long ulFrameNumber );
extern void fn_v_InitCache( void );
extern tdstOutputCacheLine *fn_p_GetOutputCacheEntry( unsigned short _uwNumOfA3dGENERAL,
unsigned long _ulFrame,
void *_p_vSuperObject );
extern tdstShortA3dGENERAL *fn_p_ReadShortAnimFromROM( unsigned short _uwNumOfIntAnim );
/*-----------------------------------------------------------------------------
* Name : fn_vInitROMLoad
*-----------------------------------------------------------------------------
* Description : Initialise the ROM loading system for the animation
* (Real time load or use memory extension)
*-----------------------------------------------------------------------------
* Input :
* Output :
*-----------------------------------------------------------------------------*/
extern void fn_vInitROMLoad(void);
/* Global variables used by the load functions*/
extern char* g_p_cROMAnimBlocStart;
extern char* g_p_cROMAnimBlocStop;
extern int g_bRealTimeAnimationLoad;
extern char *p_cCompressedAnimBuf;
/* ***********************************************************************************/
#endif
#endif

View File

@@ -0,0 +1,478 @@
/* ***********************************************************************************/
/* * "a3x_glob.h" **/
/* * Written by : S<>bastien Rubens **/
/* * Tabulations : 4 char **/
/* ***********************************************************************************/
#ifndef A3X_GLOB_H
#define A3X_GLOB_H
#include "specif\a3x_pref.h"
/* ***********************************************************************************/
/* Main Defines*/
#define KillChannels
/* ***********************************************************************************/
/* Defines*/
#define SEB_Invalid 0xFFFF
#define xZero ((SEB_xReal) 0.0)
#define xOne ((SEB_xReal) 1.0)
#define xHalfOne ((SEB_xReal) 0.5)
/*#define xEps ((SEB_xReal) 0.0001)*/
/*#define xOneSubEps ((SEB_xReal) 0.9999)*/
#define xHalfPi ((SEB_xReal) 1.570796326795)
#define xPi ((SEB_xReal) 3.14159265359)
#define xTwoPi ((SEB_xReal) 6.28318530718)
#define xExpandValue ((SEB_xReal)3.05185094759971922971282082583e-5)
#define xCompactValue 32767.0f
#define lEps 1
#define lOne 32767
#define lOneSubEps 32766
#define lDecSin 3L
#define lNbSin 8192L /* Size of sinus table*/
#define lNbSinDiv2 (lNbSin >> 1)
#define lNbSinDiv4 (lNbSin >> 2)
#define lNbSin34 (lNbSinDiv4 * 3)
#define lMaskNbSin (lNbSin - 1)
/* ***********************************************************************************/
#define SEB_xMaskQuatOri 0x0001
#define SEB_xMaskQuatSca 0x0002
#define SEB_xMaskScaleValues 0x0004
#define SEB_xMaskPosition 0x0008
#define SEB_xMaskAllLow 0x000F
#define SEB_xMaskIdQuatOri 0x0010
#define SEB_xMaskIdQuatSca 0x0020
#define SEB_xMaskIdScaleValues 0x0040
#define SEB_xMaskLastKey 0x0080
#define SEB_xMaskZeroAngCentre 0x0100
#define SEB_xTypeWrapLastKey 0x0200
#define SEB_xTypeChangeOfHierarchy 0x0400
#define SEB_xTypeHierarchized 0x0800
#define SEB_xTypeSoundEvent 0x1000
/* ***********************************************************************************/
/* Types definitions*/
/* ***********************************************************************************/
/* ----------------------------------------------------------------------------------*/
/* Matrices, vectors and quaternions definitions*/
/* ----------------------------------------------------------------------------------*/
typedef SEB_xReal tdxMatrix33[3][3];
typedef SEB_xReal tdxVector3[3];
typedef SEB_xReal tdxQuater4[4];
typedef unsigned long tdxULongVector3[3];
typedef signed short tdxSShortQuater4[4];
typedef char tdFileName[256];
/* ----------------------------------------------------------------------------------*/
/* Stack definition*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstStackInfos_ {
unsigned long ulPosAlloc;
unsigned long ulStackPos;
unsigned long ulMaxPos;
unsigned long ulResetPos;
} tdstStackInfos;
/* ----------------------------------------------------------------------------------*/
/* Cutted animations definition*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstCuttedAnim_ {
unsigned short uwStartFrame;
unsigned short uwEndFrame;
unsigned short uwPrevAnim;
unsigned short uwNextAnim;
unsigned short uwMaxNumberOfElements;
unsigned short uwAlign;
} tdstCuttedAnim;
/* ----------------------------------------------------------------------------------*/
/* NTTO*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileNTTO_ {
#ifndef U64
unsigned short uwTypeOfObject; /* + hierarchized object info !*/
unsigned short ucNumberInTable; /* temporary a short AR9810*/
unsigned char ucTransparency;
#else
unsigned short uwTypeOfObject; /* + hierarchized object info !*/
unsigned char ucNumberInTable;
unsigned char ucTransparency;
#endif
} tdstFileNTTO;
typedef struct tdstNTTO_ {
#ifndef U64
unsigned short uwTypeOfObject; /* + hierarchized object info !*/
unsigned short ucNumberInTable; /* temporary a short AR9810*/
unsigned char ucTransparency;
#else
unsigned short uwTypeOfObject; /* + hierarchized object info !*/
unsigned char ucNumberInTable;
unsigned char ucTransparency;
#endif
} tdstNTTO;
/* ----------------------------------------------------------------------------------*/
/* Hierarchy*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileHierarchy_ {
unsigned short uwChild;
unsigned short uwFather;
} tdstFileHierarchy;
typedef struct tdstBinHierarchy_ {
unsigned short uwChild;
unsigned short uwFather;
} tdstBinHierarchy;
typedef struct tdstHierarchy_ {
unsigned short uwChild;
unsigned short uwFather;
} tdstHierarchy;
/* ----------------------------------------------------------------------------------*/
/* Only Frame*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileOnlyFrame_ {
unsigned short uwNumOfAngularSpeedQuat;
unsigned short uwNumOfSpeedVector;
unsigned short uwHierarchyNbCouples;
unsigned short uwNumOfHierarchyCouples;
unsigned short uwNumOfSavedFrame;
unsigned short uwAlign;
} tdstFileOnlyFrame;
typedef struct tdstBinOnlyFrame_ {
signed long slNumOfAngularSpeedQuat;
signed long slNumOfSpeedVector;
unsigned short uwHierarchyNbCouples;
unsigned short uwNumOfSavedFrame;
signed long slNumOfHierarchyCouples;
tdxQuater4 tdxAngularSpeedQuat; /* only for binarisation*/
tdxVector3 tdxSpeedVector; /* only for binarisation*/
} tdstBinOnlyFrame;
typedef struct tdstOnlyFrame_ {
unsigned short uwNumOfAngularSpeedQuat;
unsigned short uwNumOfSpeedVector;
unsigned short uwHierarchyNbCouples;
unsigned short uwNumOfFirstHierarchyCouple;
unsigned short uwNumOfSavedFrame;
/* unsigned short uwAlign; // AR9811 To save memory...*/
} tdstOnlyFrame;
/* ----------------------------------------------------------------------------------*/
/* Channel*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileChannel_ {
unsigned short uwNumberOfKeys;
unsigned short uwChannelNumber;
unsigned short uwNumOfLocalPivotPos;
unsigned short uwAlign;
} tdstFileChannel;
typedef struct tdstBinChannel_ {
unsigned short uwNumberOfKeys;
unsigned short uwChannelNumber;
signed long slNumOfLocalPivotPos;
/* signed long slNumOfFrameNTTO; // in tdstBinFrame*/
signed long slNumOfFrames;
/* signed short slNumOfKeyFrame; // in tdstBinFrame*/
unsigned short uwUsedChannel; /* only for binarisation*/
unsigned short uwGenerateChannel; /* only for binarisation*/
tdxVector3 a3_xLocalPivotPos; /* only for binarisation*/
} tdstBinChannel;
typedef struct tdstChannel_ {
unsigned short uwNumberOfKeys;
unsigned short uwChannelNumber;
unsigned short uwNumOfLocalPivotPos;
unsigned short uwNumOfFirstFrame;
unsigned long ulNumOfFirstFrameKF;
unsigned short uwNumOfFirstKeyFrame;
/* unsigned short uwAlign; // AR9811 To save memory...*/
} tdstChannel;
/* ----------------------------------------------------------------------------------*/
/* Frames KF*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFrameKF_ {
unsigned short uwNumOfKeyFrame;
/* unsigned short uwAlign; //AR9808 Too much memory lost*/
} tdstFrameKF;
/* ----------------------------------------------------------------------------------*/
/* Frame*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileFrame_ {
/* signed short swNumberInTable;*/
/* unsigned short uwTypeOfObject; // + hierarchized object info !*/
unsigned short uwNumOfNTTO;
/* unsigned short uwAlign; //AR9808 Too much memory lost*/
} tdstFileFrame;
typedef struct tdstBinFrame_ {
signed short swNumberInTable;
unsigned short uwTypeOfObject;
unsigned short uwFrameNumber;
unsigned char ucTransparency;
unsigned char ucAlign;
tdxQuater4 a4_xQuatOri; /* Orientation of quaternion*/
tdxQuater4 a4_xQuatSca; /* Orientation of scale*/
tdxVector3 a3_xScaleValues; /* Scaling values*/
tdxVector3 a3_xPosition; /* Channel position*/
tdxVector3 a3_xWorldPivotPosition; /* Pivot position in world axes*/
SEB_xReal xDistMaster;
SEB_xReal xInterpolationParameter;
unsigned short uwMask; /* Interpolation mask to speed up calculation*/
unsigned short uwAttribute; /* Key attribute*/
unsigned short uwChildrenInHierarchy; /* only for binarisation*/
signed long slNumOfNTTO;
signed long slNumOfQuatOri;
signed long slNumOfQuatSca;
signed long slNumOfScaleValues;
signed long slNumOfPosition;
} tdstBinFrame;
typedef struct tdstFrame_ {
/* signed short swNumberInTable;*/
/* unsigned short uwTypeOfObject; // + hierarchized object info !*/
/* unsigned short uwNumOfNTTO;*/
unsigned short uwNumOfNTTO;
/* unsigned short uwAlign; //AR9808 Too much memory lost*/
} tdstFrame;
/* ----------------------------------------------------------------------------------*/
/* Key Frame*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileKeyFrame_ {
unsigned short uwFrameNumber;
unsigned short uwMask;
unsigned short uwNumOfQuatOri;
unsigned short uwNumOfQuatSca;
unsigned short uwNumOfScaleValues;
unsigned short uwNumOfPosition;
signed short swInterpolationParameter;
} tdstFileKeyFrame;
typedef struct tdstKeyFrame_ {
tdxVector3 a3_xWorldPivotPosition;
SEB_xReal xDistMaster;
unsigned short uwFrameNumber;
unsigned short uwMask;
unsigned short uwNumOfQuatOri;
unsigned short uwNumOfQuatSca;
unsigned short uwNumOfScaleValues;
unsigned short uwNumOfPosition;
unsigned short uwAngQuatOri;
unsigned short uwAngQuatSca;
unsigned short uwAngObjCentre;
signed short swInterpolationParameter;
} tdstKeyFrame;
/* ----------------------------------------------------------------------------------*/
/* A3D General*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileA3dAnimationGENERAL_ {
unsigned short uwAnimationSpeed;
unsigned short uwNumberOfVectors;
unsigned short uwNumberOfQuaternions;
unsigned short uwNumberOfHierarchies;
unsigned short uwNumberOfSavedNTTO;
unsigned short uwNumberOfSavedFrames;
unsigned short uwNumberOfChannels;
unsigned short uwNumberOfFrames;
unsigned short uwNumberOfKeyFrames;
unsigned short uwNumberOfEvents;
unsigned short uwNumOfFirstPosition;
unsigned short uwStartFrame;
unsigned short uwEndFrame;
unsigned short uwFakeAnimSpeed;
unsigned short uwFlags;
unsigned short uwNumOfAnimationTranslationOffset;
unsigned short uwNumOfAnimationRotationOffset;
unsigned short uwNumberOfMorphData;
} tdstFileA3dAnimationGENERAL;
/* For fast load (reduced structure)*/
typedef struct tdstShortA3dGENERAL_
{
unsigned short uwNumberOfFrames;
unsigned short uwFrameRate;
unsigned short uwMaxNumberOfElements;
unsigned short uwNumberOfEvents;
unsigned short uwNumberOfMorphData;
unsigned short uwAlign;
tdxVector3 a3_xAnimationTranslationOffset;
tdxSShortQuater4 a4_uwAnimationRotationOffset; /* Can be Eliminated... See later*/
} tdstShortA3dGENERAL;
typedef struct tdstBinA3dAnimationGENERAL_ {
unsigned short uwAnimationSpeed;
unsigned short uwNumberOfSavedVectors;
unsigned short uwNumberOfSavedQuaternions;
unsigned short uwNumberOfHierarchies;
unsigned short uwNumberOfSavedNTTO;
unsigned short uwNumberOfSavedFrames;
unsigned short uwNumberOfChannels;
unsigned short uwNumberOfFrames;
unsigned short uwNumberOfKeyFrames;
unsigned short uwNumberOfEvents;
unsigned short uwNumberOfMorphData;
unsigned short uwAlign;
unsigned short uwStartFrame;
unsigned short uwEndFrame;
unsigned short uwFlags;
unsigned short uwFakeAnimSpeed;
signed long slNumOfAnimationTranslationOffset;
signed long slNumOfAnimationRotationOffset;
signed long slNumOfPositions;
signed long slNumOfSavedVectors;
signed long slNumOfSavedQuaternions;
signed long slNumOfHierarchies;
signed long slNumOfSavedNTTO;
signed long slNumOfOnlyFrames;
signed long slNumOfChannels;
signed long slNumOfEvents;
signed long slNumOfMorphData;
/* ----------------*/
signed long slNumOfFramesNTTO;
/* Before optimisation*/
unsigned short uwNumberOfVectors;
unsigned short uwNumberOfQuaternions;
signed long slNumOfVectors;
signed long slNumOfQuaternions;
tdxVector3 uwAnimationTranslationOffset;
tdxQuater4 uwAnimationRotationOffset;
} tdstBinA3dAnimationGENERAL;
typedef struct tdstA3dGENERAL_ {
unsigned short uwAnimationSpeed;
unsigned short uwNumberOfVectors;
unsigned short uwNumberOfQuaternions;
unsigned short uwNumberOfHierarchies;
unsigned short uwNumberOfNTTO;
unsigned short uwNumberOfSavedFrames;
unsigned short uwNumberOfChannels;
unsigned short uwNumberOfFrames;
unsigned short uwNumberOfKeyFrames;
unsigned short uwNumberOfEvents;
unsigned short uwNumOfFirstPosition;
unsigned short uwStartFrame;
unsigned short uwEndFrame;
unsigned short uwFakeAnimSpeed;
unsigned short uwFlags;
unsigned short uwNumOfAnimationTranslationOffset;
unsigned short uwNumOfAnimationRotationOffset;
unsigned short uwNumberOfMorphData;
unsigned short uwNumOfFirstVector;
unsigned short uwNumOfFirstQuaternion;
unsigned short uwNumOfFirstHierarchy;
unsigned short uwNumOfFirstNTTO;
unsigned short uwNumOfFirstOnlyFrame;
unsigned short uwNumOfFirstChannel;
unsigned short uwNumOfFirstEvent;
unsigned short uwNumOfFirstMorphData;
} tdstA3dGENERAL;
/* ----------------------------------------------------------------------------------*/
/* Morph Data*/
/* ----------------------------------------------------------------------------------*/
typedef struct tdstFileMorphData_ {
unsigned char ucTarget;
unsigned char ucMorphingAmount;
unsigned short uwChannelNumber;
unsigned short uwFrameNumber;
unsigned short uwAlign; /* Usefull for storage structures AR9809*/
} tdstFileMorphData; /*AR9803 Written into binary file*/
typedef struct tdstBinMorphData_ {
unsigned char ucTarget;
unsigned char ucMorphingAmount;
unsigned short uwChannelNumber;
unsigned short uwFrameNumber;
unsigned short uwAlign;
} tdstBinMorphData; /*AR9803 Filled by scripts*/
/* ----------------------------------------------------------------------------------*/
/* Event definition*/
/* ----------------------------------------------------------------------------------*/
#define A3i_Version 0x1110 /* 1.17 */
/* AR9809 Now, this structure is common (event loaded the same way than PC)*/
/* Storage structure*/
typedef struct tdstFileEvent_ {
unsigned short usEventNumberInTBL;
unsigned short uwFrameNumber;
unsigned short uwChannelNumber;
unsigned short uwAlign;
} tdstFileEvent;
/* Binarisation structure*/
typedef struct tdstBinEvent_ {
unsigned short usEventNumberInTBL;
unsigned short uwFrameNumber;
unsigned short uwChannelNumber;
} tdstBinEvent;
/* ***********************************************************************************/
#endif

View File

@@ -0,0 +1,125 @@
/* ***********************************************************************************/
/* * "a3x_int.h" **/
/* * Written by : S<>bastien Rubens **/
/* * Tabulations : 4 char **/
/* ***********************************************************************************/
#ifndef A3X_INT_H
#define A3X_INT_H
/* ***********************************************************************************/
enum { eQX, eQY, eQZ, eQW };
#ifndef A3X_INT_C
/* ***********************************************************************************/
/* Precalculations*/
extern void fn_v_InitSinTab( void );
extern signed short ax_SinTab[];
extern tdxQuater4 a4_xQuater1;
/* ***********************************************************************************/
/* Matrices tests*/
extern unsigned short fn_uw_IsDiagonale( tdxMatrix33 _a3a3_xMtx );
extern unsigned short fn_uw_IsOrthogonale( tdxMatrix33 _a3a3_xMtx );
extern unsigned short fn_uw_IsOrthonormee( tdxMatrix33 _a3a3_xMtx );
extern unsigned short fn_uw_IsUnitQuat( tdxQuater4 _a4_xQuat );
extern unsigned short fn_uw_AreSameMatrix( tdxMatrix33 _a3a3_xMtx1,
tdxMatrix33 _a3a3_xMtx2 );
extern unsigned short fn_uw_AreSameQuat( tdxQuater4 _a4_xQuat1,
tdxQuater4 _a4_xQuat2 );
extern unsigned short fn_uw_AreSameVect( tdxVector3 _a3_xVect1,
tdxVector3 _a3_xVect2 );
extern unsigned short fn_uw_CompQuat( tdxQuater4 _a4_xQuat1,
tdxQuater4 _a4_xQuat2 );
extern unsigned short fn_uw_CompVect( tdxVector3 _a3_xVect1,
tdxVector3 _a3_xVect2 );
/* ***********************************************************************************/
/* Miscellaneous matrices operations*/
extern void fn_v_SetIdMatrix( tdxMatrix33 _a3a3_xMatrix );
extern void fn_v_SetZeroVector( tdxVector3 _a3_xVector );
extern void fn_v_SetOneVector( tdxVector3 _a3_xVector );
extern void fn_v_SetIdQuater( tdxQuater4 _a4_xQuater );
extern void fn_v_ExpandQuat( tdxQuater4 _a4_xQuatD,
tdxSShortQuater4 _a4_xQuatS );
extern void fn_v_CopyQuat( tdxQuater4 _a4_xQuatD,
tdxQuater4 _a4_xQuatS );
extern void fn_v_CopyVect( tdxVector3 _a3_xVectD,
tdxVector3 _a3_xVectS );
extern void fn_v_CopyMatrix( tdxMatrix33 _a3a3_xMtxD,
tdxMatrix33 _a3a3_xMtxS );
extern void fn_v_MatrixToVecDia( tdxVector3 _a3_xVec,
tdxMatrix33 _a3a3_xMtx );
extern void fn_v_TranMatrix( tdxMatrix33 _a3a3_xMtxD,
tdxMatrix33 _a3a3_xMtxS );
extern void fn_v_TranMatrixOne( tdxMatrix33 _a3a3_xMtxD );
extern unsigned short fn_uw_AngleBetweenVect( tdxVector3 _a3_xVec1,
tdxVector3 _a3_xVec2 );
extern unsigned short fn_uw_AngleBetweenQuat( tdxQuater4 _a4_xQuat1,
tdxQuater4 _a4_xQuat2 );
extern SEB_xReal fn_x_VectorLength( tdxVector3 _a3_xVect );
extern void fn_v_NormalizeVector( tdxVector3 _a3_xVect );
extern SEB_xReal fn_x_NormalizeVector( tdxVector3 _a3_xVect );
extern SEB_xReal fn_x_QuaterLength( tdxQuater4 _a4_xQuat );
extern SEB_xReal fn_x_NormalizeQuater( tdxQuater4 _a4_xQuat );
/* ***********************************************************************************/
/* Matrices computations*/
extern void fn_v_MatrixByVector( tdxVector3 _a3_xVecD,
tdxMatrix33 _a3a3_xMtxS,
tdxVector3 _a3_xVecS );
extern void fn_v_DiaByMatrix( tdxVector3 _a3a3_xMtxD,
tdxVector3 _a3_xVecS,
tdxMatrix33 _a3a3_xMtxS );
extern void fn_v_MatrixByDia( tdxMatrix33 _a3a3_xMtxD,
tdxMatrix33 _a3a3_xMtxS,
tdxVector3 _a3_xVecS );
extern void fn_v_MultMatrix( tdxMatrix33 _a3a3_xMtxR,
tdxMatrix33 _a3a3_xMtx1,
tdxMatrix33 _a3a3_xMtx2 );
extern void fn_v_InvRotDiaRot( tdxMatrix33 _a3a3_xMtxD,
tdxMatrix33 _a3a3_xMtxS,
tdxVector3 _a3_xVecS );
/* ***********************************************************************************/
/* Matrices / Quaternions conversions*/
extern void fn_v_QuatToMatrix( tdxMatrix33 _a3a3_xMtx,
tdxQuater4 _a4_xQuat );
extern void fn_v_MatrixToQuat( tdxQuater4 _a4_xQuat,
tdxMatrix33 _a3a3_xMtx );
/* ***********************************************************************************/
/* Interpolations computations*/
extern void fn_v_InterpolVect( tdxVector3 _a3_xVecD,
tdxVector3 _a3_xVecS1,
tdxVector3 _a3_xVecS2,
register SEB_xReal _xT );
extern void fn_v_InterpolQuat( tdxQuater4 _a4_xQuatD,
tdxQuater4 _a4_xQuatS1,
tdxQuater4 _a4_xQuatS2,
register SEB_xReal _xT );
extern void fn_v_InterpolQuatWithOmega( tdxQuater4 _a4_xQuatD,
tdxQuater4 _a4_xQuatS1,
tdxQuater4 _a4_xQuatS2,
register SEB_xReal _xT,
register signed short _swOmega );
/* ***********************************************************************************/
#endif
#endif

View File

@@ -0,0 +1,84 @@
/* ***********************************************************************************/
/* * "a3x_intn.h" **/
/* * Written by : S<>bastien Rubens **/
/* * Tabulations : 4 char **/
/* ***********************************************************************************/
#ifndef A3X_INTN_H
#define A3X_INTN_H
#define C_uwAnimNotInterpolated 0xFFFF
#ifndef A3X_INTN_C
/* ***********************************************************************************/
/* Interpolations computations*/
extern void fn_v_CalculateGeneral( tdstAnim3d *_p_stAnim3d,
unsigned long _ulFrame );
extern tdstEvent *fn_v_GetEventsAddress( tdstAnim3d *_p_stAnim3d,
unsigned long _ulFrame,
tdxHandleToObjectsTablesList _h_ObjectsTablesListElement);/*AR9809 Parameter necessary for U64*/
extern tdstFrame3d *fn_p_GetFramesAddress( tdstAnim3d *_p_stAnim,
unsigned short _uwNumFrame,
unsigned long _ulFrame,
void *p_stSuperObject );
/* ****************************************************************** fn_vUpdateFrame*/
/* Update Frame structure if it wasn't - but matrix isn't update*/
/* Set Linear and Angular Speed (Alloc or Free Matrix) */
/* Set Hierarchy*/
/* Fill Element3D Array : ElementNuber,ElementType,ActiveStatus,ChannelNumber*/
/* */
/* 17/07/98 - Carlos Torres*/
/* ***********************************************************************************/
extern void fn_vUpdateFrame(void * _p_stSuperObject,
tdstFrame3d * _p_stFrame,
tdstAnim3d * _p_stAnim3d,
unsigned short _uwFrame);
/* ************************************************************ fn_vUpdateFrameMatrix*/
/* Update Frame if it wasn't update*/
/* And Update Matrix in Channel Array */
/* if they weren't updated*/
/* or if bolean ForceUpdate is TRUE*/
/* */
/* 17/07/98 - Carlos Torres*/
/* ***********************************************************************************/
extern void fn_vUpdateFrameMatrix(void * _p_stSuperObject,
tdstFrame3d * _p_stFrame,
tdstAnim3d * _p_stAnim3d,
unsigned short _uwFrame,
unsigned char ucForceUpdate,
tdstAChannel * d_stChannelArray);
/* ****************************************************** fn_p_stGetLinearSpeedVector*/
/* Return the Linear Speed Vector */
/* the vector returned is a reference so*/
/* DON'T Modify it or Free it*/
/* if there is no speed, return NULL*/
/* reference remain valid until animation is free*/
/* */
/* 20/07/98 - Carlos Torres*/
/* ***********************************************************************************/
extern MTH3D_tdstVector * fn_p_stGetLinearSpeedVector(tdstAnim3d * _p_stAnim3d,unsigned short _uwFrame);
/* ***************************************************** fn_p_stGetAngularSpeedMatrix*/
/* Return the Angular Speed Matrix */
/* Fill the Matrix if exist and return pointer */
/* If no angular speed return NULL*/
/* The matrix pass in parameter must be allocate by the calling function*/
/* */
/* 20/07/98 - Carlos Torres*/
/* ***********************************************************************************/
extern MTH3D_tdstMatrix * fn_p_stGetAngularSpeedMatrix(tdstAnim3d * _p_stAnim3d,
unsigned short _uwFrame,
MTH3D_tdstMatrix * p_stMatrix);
#ifdef U64
/*AR9902 Function to get the hierarchy couples of an animation even if it isn't loaded into the cache anymore*/
extern tdstCouple* fn_p_stGetOldHieCouples(tdstAnim3d *p_stOldAnim,
unsigned short uwOldFrameNumber);
#endif /*U64*/
#endif
#endif

View File

@@ -0,0 +1,22 @@
/* ***********************************************************************************/
/* * "a3x_load.h" **/
/* * Written by : S<>bastien Rubens **/
/* * Tabulations : 4 char **/
/* ***********************************************************************************/
#ifndef A3X_LOAD_H
#define A3X_LOAD_H
#ifndef A3X_LOAD_C
/* ***********************************************************************************/
extern unsigned short fn_uw_LoadAnimV6 ( void *_p_vStartFile );
extern void fn_v_LoadCachedAnimV6 ( char *_p_cDestMem,
void *_p_vStartFile,
unsigned long _ulMaxlength );
/* ***********************************************************************************/
#endif
#endif

View File

@@ -0,0 +1,128 @@
/* ***********************************************************************************/
/* * "a3x_mem.h" **/
/* * Written by : S<>bastien Rubens **/
/* * Tabulations : 4 char **/
/* ***********************************************************************************/
#ifndef A3X_MEM_H
#define A3X_MEM_H
#include "a3x_glob.h"
/* ***********************************************************************************/
/* Defines*/
enum
{ eStackA3dGENERAL,
eStackVertexes,
eStackQuaternions,
eStackHierarchies,
eStackNTTO,
eStackOnlyFrames,
eStackChannels,
eStackFrames,
eStackFramesKF,
eStackKeyFrames,
eStackEvents,
eStackMorphData,
/* the following stack are not affected by fn_v_UnclearPreviousLoadedAnims*/
/*eStackFrame3d, */
/*eStackElement3d,*/
eStackNbMax
};
/* ***********************************************************************************/
/* Defines*/
#define M_v_ResetOneStack( uwNumStack ) \
tdstStacks[ (uwNumStack) ].ulPosAlloc= \
tdstStacks[ (uwNumStack) ].ulStackPos= \
tdstStacks[ (uwNumStack) ].ulResetPos
/* ***********************************************************************************/
/* Externs*/
extern tdstStackInfos tdstStacks[];
/*extern tdstAnimLights stAnimLights;*/
extern tdstA3dGENERAL *p_stA3dGENERAL;
extern tdxVector3 *p_a3_xVectors;
extern tdxSShortQuater4 *p_a4_xQuaternions;
extern tdstHierarchy *p_stHierarchies;
extern tdstNTTO *p_stNTTO;
extern tdstOnlyFrame *p_stOnlyFrames;
extern tdstChannel *p_stChannels;
extern tdstFrame *p_stFrames;
extern tdstFrameKF *p_stFramesKF;
extern tdstKeyFrame *p_stKeyFrames;
extern tdstEvent *p_stEvents;
extern tdstMorphData *p_stMorphData; /*AR9803*/
/*extern tdstFrame3d *p_stFrame3d;*/
/*extern tdstElement3d **p_p_stElement3d;*/
extern MTH3D_tdstMatrix *p_stAngularSpeedMatrix;
extern tdstPLA_Hierarchy *p_stHierarchy;
extern tdstElement3d *p_stElement3d;
extern POS_tdstCompletePosition *p_stPosMatrix;
#ifdef U64
extern tdstCuttedAnim *p_stCuttedAnim;
#endif
#ifndef A3X_MEM_C
/* ***********************************************************************************/
extern unsigned long fn_ul_GetStackAlloc( unsigned short _uwNumStack );
extern unsigned long fn_ul_GetStackPos( unsigned short _uwNumStack );
extern void fn_v_AllocateOnStack( unsigned short uwNumStack,
unsigned short uwWantedSize );
extern unsigned long fn_ul_AllocateOnStack( unsigned short _uwNumStack,
unsigned short _uwWantedSize );
extern void fn_v_DeAllocateOnStack( unsigned short _uwNumStack,
unsigned short _uwSize );
/* ************************************************** fn_v_UnclearPreviousLoadedAnims*/
/* Allow to keep the N First Anims when clear*/
/* Must be call after loading the N anims*/
/* 03/07/98 Carlos Torres*/
/* ***********************************************************************************/
extern void fn_v_UnclearPreviousLoadedAnims( void );
/* ************************************************************ fn_v_ClearLoadedAnims*/
/* Clear Loaded Anims depending on parameter ucClearAll*/
/* False : Until the position set by fn_v_UnclearPreviousLoadedAnims*/
/* True : ALL anims*/
/* 03/07/98 Carlos Torres*/
/* ***********************************************************************************/
extern void fn_v_ClearLoadedAnims(unsigned char ucClearAll);
/* **************************************************************** fn_v_InitInterpol*/
/* Make allocation and init structure for anim management*/
/* Must be called only once*/
/* 03/07/98 Carlos Torres*/
/* ***********************************************************************************/
extern void fn_v_InitInterpol( void );
/* **************************************************************** fn_vSetStackSize*/
/* Set the stack size */
/* Must be called only once for all stack to configure it*/
/**/
/* 27/10/98 Carlos Torres*/
/* ***********************************************************************************/
extern void fn_vSetStackSize(unsigned short uwNumStack,unsigned long ulSize);
#ifndef RETAIL
/* ***************************************************************** fn_vAnimStackLog*/
/* Make a log of Memory used for each stack in an open file*/
/**/
/* 11/12/98 Carlos Torres*/
/* ***********************************************************************************/
extern void fn_vAnimStackLog(FILE * fLogFile);
#endif /* RETAIL */
/* ***********************************************************************************/
#endif
#endif

View File

@@ -0,0 +1,53 @@
/* ***********************************************************************************/
/* * "a3x_pref.h" **/
/* * Written by : S<>bastien Rubens **/
/* * Tabulations : 4 char **/
/* ***********************************************************************************/
#ifndef A3X_PREF_H
#define A3X_PREF_H
/* ***********************************************************************************/
/* Main Defines*/
#define PC
#define NoInvalid
#define DIR_EXE "x:\\cpa\\exe\\main\\"
#define DIR_FAMILIES "gamedata\\World\\Levels\\_common\\Families"
#define DIR_ANIMS "World\\graphics\\anims"
#define DIR_DATA "GameData"
#define REL_DIR_FAMILY "World\\Levels\\_common\\Families"
/*#define A3xDebug // A3x debug version ?*/
/*#define A3X_CUT // Cutted animations*/
/*#define MaxRAMSizeOfAnim 10240 // 10 Ko*/
/*#define A3X_AcpLight // If you want a light version of ACP structures*/
#define A3X_PC /* If you are on PC computer (nothing else)*/
#ifndef A3X_PC /* do not use with PC*/
#define A3X_N64 /* We are on N64 ?*/
#endif
#ifdef A3X_BINARISATION
#define SEB_xReal double /* For binarisation*/
#else
#define SEB_xReal float /* For realtime*/
#endif
/*#define A3X_CacheIsUsed // If you use cache*/
#ifndef A3X_CacheIsUsed /* do not use with cache !*/
/*ANNECY TQ 22/07/98{*/
/* We no longer use the static tables*/
/*#define A3X_StaticTables // If you use static tables (or alloc tables)*/
/*ENDANNECY TQ}*/
#endif
/* ***********************************************************************************/
#endif

View File

@@ -0,0 +1,10 @@
#ifdef _DEBUG
#define _DEBUG_STRING_FOR_PLA_
#endif
/******************************************/
#if _MSC_VER >= 1000
#pragma once
#endif /* _MSC_VER >= 1000 */
/******************************************/
#define LEN_DEBUG_STRING 80

View File

@@ -0,0 +1,178 @@
/*=========================================================================
* PlayAnim.h : Contain the CPA's animations player functions.
*
*
* Version 0.0
* Creation date 21/10/96 Sebastien DAVID
* Revision date
*
* That file needs to be compatible for all platforms.
*
* (c) Ubi Studios 1996
*=======================================================================*/
#ifndef _PLAYANIM_H_
#define _PLAYANIM_H_
/******************************************/
#if _MSC_VER >= 1000
#pragma once
#endif /* _MSC_VER >= 1000 */
/******************************************/
#include "GAM\STRUCTUR\anim_s.h"
#if defined(__cplusplus)
extern "C"
{
#endif /* __cplusplus */
#include "GAM/Header.h"
/*============*/
/* CONSTANTES */
/*============*/
#define PLA_C_NbClocks 16
/*ANNECY CT 17/02/98{*/
#define PLA_C_wRandomFrame -32768
/*ENDANNECY CT}*/
/*====================*/
/* EXTERNs of GLOBALs */
/*====================*/
/**** Put here all globals variables : ****/
/**** EXTERN typeofvar variable; ****/
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
EXTERN short PLA_g_a_wClock[PLA_C_NbClocks];
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
#define __PLA_NB_MAX_SUPOBJ__ 512L /* used in release to allocate heap, and in debug to set limit*/
#define __PLA_LIM_SUPOBJ_ALLOC__ 512L /* used in debug to allocate heap*/
/*===========*/
/* FONCTIONS */
/*===========*/
/* Olivier Didelot le 1 juillet 1998*/
/*void PLA_fn_vDesInitAllChildOfCharacterByEngineobject(struct tdstEngineObject_ * p_stEngineObject);*/
extern tdstFrame3d *fn_p_GetFramesAddress(tdstAnim3d *_p_stAnim3d, unsigned short _uwNumFrame, unsigned long _ulFrame,void *p_stSuperObject);
extern ACP_tdxBool PLA_fn_bDoAnimPlayerForCharacter(HIE_tdxHandleToSuperObject p_stSuperObject, ACP_tdxBool bNoDisplay , ACP_tdxBool _bHandleSkippedEventsIfRelevant);
extern CPA_EXPORT void PLA_fn_vInitAllChildInHeapNewAnim(HIE_tdxHandleToSuperObject p_stSuperObject
, struct tdstAnim3d_ *p_stCurrentAnim
, unsigned short _uwFrameNumber );
extern CPA_EXPORT void PLA_fn_vDesInitAllChildOfCharacter(HIE_tdxHandleToSuperObject p_stSuperObject,struct tdstEngineObject_ * p_stObject);
extern void PLA_fn_vRefreshGlobalMatrixUnderCharacter(HIE_tdxHandleToSuperObject _hSprObj);
extern void PLA_fn_vRefreshGlobalMatrixOfAnimsHierarchy(HIE_tdxHandleToSuperObject _hSprObj);
extern CPA_EXPORT ACP_tdxBool PLA_fn_bSetNewStateWithRandom(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_WantedState);
extern CPA_EXPORT ACP_tdxBool PLA_fn_bSetNewState(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_WantedState, ACP_tdxBool _bForce , ACP_tdxBool _bHandleSkippedEventsIfRelevant);
/*ANNECY CT 17/02/98{*/
extern CPA_EXPORT void PLA_fn_vSetCurrFrame(HIE_tdxHandleToSuperObject p_stSuperObject,short _wFrame);
extern CPA_EXPORT unsigned short PLA_fn_uwGetNbFrameInCurrAnim(HIE_tdxHandleToSuperObject p_stSuperObject);
extern CPA_EXPORT unsigned short PLA_fn_uwGetCurrFrameOfAnim(HIE_tdxHandleToSuperObject p_stSuperObject);
/*ENDANNECY CT}*/
/*ANNECY CT 06/02/98{*/
extern CPA_EXPORT BOOL PLA_fn_bSetNewStateFluid(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_WantedState);
/*ENDANNECY CT}*/
extern CPA_EXPORT BOOL PLA_fn_bInitNewStateWithRandom(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_WantedState);
extern CPA_EXPORT BOOL PLA_fn_vInitNewState(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_State);
extern CPA_EXPORT BOOL PLA_fn_bTestNewState(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_WantedState);
extern CPA_EXPORT BOOL PLA_fn_bTestCurrentAction(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_FirsStateOfAction);
extern CPA_EXPORT void PLA_fn_vModifyCurrentState(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState h_State);
/* tmp DVD*/
extern void PLA_fn_vInitNewAction(HIE_tdxHandleToSuperObject p_stSuperObject,unsigned short wAction);
void PLA_fn_vSetNewSubAnim(HIE_tdxHandleToSuperObject p_stSuperObject
,unsigned char ucElement3D
,tdxHandleToState h_TmpState);
void PLA_fn_vKillSubAnim(HIE_tdxHandleToSuperObject p_stSuperObject);
void PLA_fn_vAllocateSubAnimObjHeap(void);
extern void PLA_fn_vCreateSupObjHeap(void);
/*ANNECY BBB: fonctions priv<69>es qui n'ont rien <20> foutre ici!*/
/*unsigned long PLA_fn_ulFindNextFreeSupObj(void);*/
unsigned long PLA_fn_vInitNewSubAnimInHeap( unsigned char ucElement
, struct tdstState_ *p_stCurrentState );
/*void PLA_fn_vDesInitOneSubAnimInHeap(struct tdstSubAnim3d_ *p_stSubAnim);*/
void PLA_fn_vInitControlMatrix(HIE_tdxHandleToSuperObject p_stSuperObject);
/* void PLA_fn_vAbsoluteTranslationOfModule( HIE_tdxHandleToSuperObject p_stSuperObject
, MTH3D_tdstVector *p_stControlTranslationVertex ); */
/* tmp DVD*/
extern BOOL PLA_fn_bTestIfEndOfAction(HIE_tdxHandleToSuperObject p_stSuperObject);
BOOL PLA_fn_bTestIfEndOfAnim(HIE_tdxHandleToSuperObject p_stSuperObject);
/* Access Function to Speed. CGHT 12/02/97*/
struct MTH3D_tdstVector_ * PLA_fn_stGetLinearSpeedVector(HIE_tdxHandleToSuperObject p_stSuperObject,short sLastFrame);
struct MTH3D_tdstMatrix_ * PLA_fn_stGetAngularSpeedMatrix(HIE_tdxHandleToSuperObject p_stSuperObject,short sLastFrame);
void PLA_fn_vComputeNextFrame(HIE_tdxHandleToSuperObject p_stSuperObject);
ACP_tdxBool PLA_fn_bSkipCurrentFrame(HIE_tdxHandleToSuperObject p_stSuperObject);
/* MR1306*/
void PLA_fn_vMoveTakenObject(HIE_tdxHandleToSuperObject p_stSuperObject);
extern CPA_EXPORT void PLA_fn_vDoFrame(tdstAnim3d *p_stCurrentAnim,unsigned short uwCurrentFrame, HIE_tdxHandleToSuperObject p_stSuperObject);
extern CPA_EXPORT void PLA_fn_vOverWriteMatrixWithUCC(HIE_tdxHandleToSuperObject p_stSuperObject);
extern CPA_EXPORT void PLA_fn_vUpdateTransparencyForModules(HIE_tdxHandleToSuperObject p_stSuperObject) ;
/* MR3108*/
/*extern CPA_EXPORT tdstAnimLights *PLA_fn_pstGetLightsOfAnim(HIE_tdxHandleToSuperObject hCharacter);*/
extern void fn_vRemoveAllAnimLightsFromSectorList(HIE_tdxHandleToSuperObject hCharacter);
/* ONLY FOR EDITOR*/
extern CPA_EXPORT BOOL PLA_fn_bDoFirstInitOfAnimPlayerForCharacter(HIE_tdxHandleToSuperObject p_stSuperObject, tdstAnim3d *p_stNewanim);
extern CPA_EXPORT void PLA_fn_bDoOffsetFirstInitForCharacter(HIE_tdxHandleToSuperObject p_stSuperObject);
/*----------------*/
/*ANNECY BBB: fonctions priv<69>es qui n'ont rien <20> foutre ici!*/
/*void PLA_fn_vCreateMatrixHeap(void);*/
/*unsigned long PLA_fn_ulFindNextFreeMatrix(void);*/
extern CPA_EXPORT void GAM_fn_vAddMorphData(tdstAnim3d *_p_stAnim, unsigned long _ulChannelNumber,
unsigned short _uwFrameNumber,unsigned char _ucMorphingAmount,unsigned char _ucTarget);
/*AR980325 For PC compilation*/
tdstFrame3d *fn_p_GetFramesAddress(tdstAnim3d *_p_stAnim3d, unsigned short _uwNumFrame, unsigned long _ulFrame,void *p_stSuperObject);
unsigned char GAM_fn_ucGetMorphAmount(tdstAnim3d *_p_stAnim, unsigned long _ulChannelNumber, unsigned short _uwFrameNumber) ;
unsigned char GAM_fn_ucGetMorphTarget(tdstAnim3d *_p_stAnim, unsigned long _ulChannelNumber, unsigned short _uwFrameNumber) ;
void PLA_fn_vForceRegenerationWhenBlockInNoState_EndOfAction(HIE_tdxHandleToSuperObject p_stSuperObject); /*AR9805*/
void PLA_fn_vForceRegenerationWhenSkip(HIE_tdxHandleToSuperObject p_stSuperObject); /*AR9805*/
#ifdef ACTIVE_EDITOR
void fn_vCheckModuleAccessGam(HIE_tdxHandleToSuperObject hPerso, unsigned char cChannel);
#endif
/*AR9806 New heap management by gizmo*/
void PLA_fn_vInitMatrixHeap(void);
void PLA_fn_vCreateMatrixHeap(void);
void PLA_fn_vInitSupObjHeap(void);
void PLA_fn_vCreateSupObjHeap(void);
void PLA_fn_vInitHeaps(void);
void PLA_fn_vCreateAndInitHeaps(void);
#if defined(__cplusplus)
}
#endif /* __cplusplus */
#endif /* _PLAYANIM_H_ */

View File

@@ -0,0 +1,144 @@
/*=========================================================================
* PlayEvts.h : This module contain all functions used to play events
* This is a part of the Game project.
*
* Version 1.0
* Creation date 6/11/96
* Revision date
*
* That file needs to be compatible for all platforms.
*
* (c) Ubi Studios 1996
*=======================================================================*/
#if !defined(__PLAYEVTS_H__)
#define __PLAYEVTS_H__
/******************************************/
#if _MSC_VER >= 1000
#pragma once
#endif /* _MSC_VER >= 1000*/
/******************************************/
#include "GAM/Header.h"
#define C_ucNormal 0
#define C_ucReverse 1
#define C_ucStopEvent 2
void fn_vInitAllEvents(HIE_tdxHandleToSuperObject p_stSuperObject,unsigned short uwFirstFrame);
void fn_vDesInitAllEvents(HIE_tdxHandleToSuperObject p_stSuperObject,tdxHandleToState hNextState,BOOL bStopEvents);
void fn_vPlayEventsSinceLastOneNoLoop(HIE_tdxHandleToSuperObject p_stSuperObject );
void fn_vPlayLastEventsBeforeRestart(HIE_tdxHandleToSuperObject p_stSuperObject );
void fn_vPlayEvent( struct tdstEvent_ * p_stEvent, unsigned char ucMode ,HIE_tdxHandleToSuperObject p_stSuperObject);
unsigned short fn_uwGetNbEngineFrameSinceLastMechEvent(HIE_tdxHandleToSuperObject p_stSuperObject);
/*-----------------------------------------------------------------------------
* Description : Get the type of an event (V5 or V6 format)
*-----------------------------------------------------------------------------
* Input : _p_stEvent : pointer to the event
* Output : the type
*-----------------------------------------------------------------------------
* Creation date : Jan 98 Author : Alain Robin
*---------------------------------------------------------------------------*/
unsigned char GAM_fn_ucGetTypeOfEvent(tdstEvent* _p_stEvent);
tdstEvent *fn_p_GetEventsAddress(tdstAnim3d *_p_stAnim3d,
unsigned long _ulFrame,
tdxHandleToObjectsTablesList _h_ObjectsTablesListElement); /*AR9809 Parameter necessary for U64*/
/*-----------------------------------------------------------------------------
* Description : Get the pointed event of an event (V5 or V6 format)
*-----------------------------------------------------------------------------
* Input : _p_stEvent : pointer to the event
* Output : the type
*-----------------------------------------------------------------------------
* Creation date : Jan 98 Author : Alain Robin
*---------------------------------------------------------------------------*/
void* GAM_fn_p_xGetEventOfEvent(tdstEvent* _p_stEvent);
/*-----------------------------------------------------------------------------
* Description : Get the address pointed event of an event (V5 or V6 format)
*-----------------------------------------------------------------------------
* Input : _p_stEvent : pointer to the event
* Output : the address
*-----------------------------------------------------------------------------
* Creation date : Jan 98 Author : Alain Robin
*---------------------------------------------------------------------------*/
void** GAM_fn_p_xGetAdressOfEventOfEvent(tdstEvent* _p_stEvent);
/*-----------------------------------------------------------------------------
* Description : Set the pointed event of an event (V5 or V6 format)
*-----------------------------------------------------------------------------
* Input : _p_stEvent : pointer to the animation event
* _p_xRealEvent : pointed event
* Output :
*-----------------------------------------------------------------------------
* Creation date : Jan 98 Author : Alain Robin
*---------------------------------------------------------------------------*/
void GAM_fn_vSetEventOfEvent(tdstEvent* _p_stEvent,void* _p_xRealEvent);
/*-----------------------------------------------------------------------------
* Description : Get the first call field of an event (V5 or V6 format)
*-----------------------------------------------------------------------------
* Input : _p_stEvent : pointer to the event
* Output : the first call
*-----------------------------------------------------------------------------
* Creation date : Jan 98 Author : Alain Robin
*---------------------------------------------------------------------------*/
unsigned char GAM_fn_ucGetFirstCallOfEvent(tdstEvent* _p_stEvent);
/*-----------------------------------------------------------------------------
* Description : Get the first call field of an event (V5 or V6 format)
*-----------------------------------------------------------------------------
* Input : _p_stEvent : pointer to the event
* _ucFirstCall : The first call field
* Output :
*-----------------------------------------------------------------------------
* Creation date : Jan 98 Author : Alain Robin
*---------------------------------------------------------------------------*/
void GAM_fn_vSetFirstCallOfEvent(tdstEvent* _p_stEvent,unsigned char _ucFirstCall);
/*-----------------------------------------------------------------------------
* Description : Get the period field of an event (V5 or V6 format)
*-----------------------------------------------------------------------------
* Input : _p_stEvent : pointer to the event
* Output : the period
*-----------------------------------------------------------------------------
* Creation date : Jan 98 Author : Alain Robin
*---------------------------------------------------------------------------*/
unsigned char GAM_fn_ucGetPeriodOfEvent(tdstEvent* _p_stEvent);
/*-----------------------------------------------------------------------------
* Description : Get the first call field of an event (V5 or V6 format)
*-----------------------------------------------------------------------------
* Input : _p_stEvent : pointer to the event
* _ucPeriod : The period
* Output :
*-----------------------------------------------------------------------------
* Creation date : Jan 98 Author : Alain Robin
*---------------------------------------------------------------------------*/
void GAM_fn_vSetPeriodOfEvent(tdstEvent* _p_stEvent,unsigned char _ucPeriod);
/*-----------------------------------------------------------------------------
* Description : Get the binary event id field of an event (V5 or V6 format)
*-----------------------------------------------------------------------------
* Input : _p_stEvent : pointer to the event
* Output : the period
*-----------------------------------------------------------------------------
* Creation date : Jan 98 Author : Alain Robin
*---------------------------------------------------------------------------*/
unsigned long GAM_fn_ulGetBinaryEventIdOfEvent(tdstEvent* _p_stEvent);
/*-----------------------------------------------------------------------------
* Description : Get the first call field of an event (V5 or V6 format)
*-----------------------------------------------------------------------------
* Input : _p_stEvent : pointer to the event
* _ulBinaryEventId : The binary event id
* Output :
*-----------------------------------------------------------------------------
* Creation date : Jan 98 Author : Alain Robin
*---------------------------------------------------------------------------*/
void GAM_fn_vSetBinaryEventIdOfEvent(tdstEvent* _p_stEvent,unsigned long _ulBinaryEventId);
#endif /* __PLAYEVTS_H__ */