/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////*****************************************************************************************************////////////////
///////////////** 																									**///////////////
//////////////**								~ Zoo Engine (Moteur 3D pour SCOL) ~								 **//////////////
/////////////**											  ~ version 1.0 ~											  **/////////////
/////////////**																										  **/////////////
//////////////**										par Pacôme DANHIEZ		  									 **//////////////
///////////////** 																									**///////////////
////////////////*****************************************************************************************************////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///																																  ///
///		FICHIER :	Surface.cpp																									  ///
///																																  ///
///		NATURE	:	Définition des fonctions SCOL et gestion des tables de hachage												  ///
///																																  ///
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "../winuser.h"
#include <string.h>






//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3create														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [Chn I I I I I] S3d
int ZMX3create(mmachine m)
{
	MMpull(m);
    MMpull(m);
    MMpull(m);
    MMpull(m);
    MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3createSession														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [Chn] S3d
int ZMX3createSession(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3destroy
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d] I
int ZM3destroy(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3freeMemory
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d] I
int ZM3freeMemory(mmachine m)
{
    MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3reset
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d] I
int ZM3reset(mmachine m)
{
    MMset(m,0,NIL);
	return 0;
}



#define		TYP_ENGINE_HARDWARE		0
#define		TYP_ENGINE_SOFTWARE		1


//////////////////////////////////////////////////////////////////////////////////////////////
///		_ZGETengineState
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[] I
int _ZGETengineState(mmachine m)
{
	MMpush(m, NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_ZCRsurface														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[Chn I I] ObjSurface
int _ZCRsurface(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		_ZCRfullscreenSurface
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[Chn I I] ObjSurface
int _ZCRfullscreenSurface(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_GETwindowFromFullscreenSurface
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[ObjSurface] ObjWin
int _ZGETwindowFromFullscreenSurface (mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3getDeviceList
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[] [[S S] r1]
int ZMX3getDeviceList(mmachine m)
{
	MMpush(m, NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_GETsurfaceState
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[] I
int _ZGETsurfaceState(mmachine m)
{
	MMpush(m, NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_ZDSsurface														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[ObjSurface] I
int _ZDSsurface (mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_ZFILLsurface														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[ObjSurface I] ObjSurface
int _ZFILLsurface (mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_ZGetsurfaceSize
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[ObjSurface] [I I]
int _ZGETsurfaceSize (mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_ZBLTsurface														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [ObjWin I I ObjSurface I I I I] ObjWin
int _ZBLTsurface (mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_ZBLTsurfaceFullScreen														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [ObjSurface] ObjWin
int _ZBLTsurfaceFullScreen (mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}





//////////////////////////////////////////////////////////////////////////////////////////////
///		_ZBitmap2Surface														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[ObjSurface I I ObjBitmap I I I I I] ObjSurface
int _ZBitmap2Surface (mmachine m)
{
		MMpull(m);
		MMpull(m);
		MMpull(m);
		MMpull(m);
		MMpull(m);
		MMpull(m);
		MMpull(m);
		MMpull(m);
		MMset(m,0,NIL);
		return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_ZSurface2Bitmap														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[ObjBitmap I I ObjSurface I I I I I] ObjBitmap
int _ZSurface2Bitmap (mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_ZSurface2Surface														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[ObjSurface I I ObjSurface I I I I I] ObjSurface
int _ZSurface2Surface (mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZTest
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [I] I
int ZTest(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3isValidObj
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] I
int ZM3isValidObj(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////																											   ////
///												GESTION DES OBJETS													///
////																											   ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////////////////////////////////////////
////																				   ////
///								GESTION HIERARCHIQUE									///
////																				   ////
///////////////////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3load														
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d S H3d] I
int ZM3load(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3loadString														
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d S H3d] I
int ZM3loadString(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createShell
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d] H3d
int ZM3createShell(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3delObj														
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] I
int ZM3delObj(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3copyObj														
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] H3d
int ZM3copyObj(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObj
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d S] H3d
int ZM3getObj(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3objName														
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] S
int ZM3objName(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getFather
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] H3d
int ZM3getFather(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getFirstSon
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] H3d
int ZM3getFirstSon(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getBrother														
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] H3d
int ZM3getBrother(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3bigFather
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] H3d
int ZM3bigFather(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3isFather
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d H3d] I

///////// ATTENTION !!! FONCTION QUI CHIE LA MORT !!! RENVOIT "true" si pere==fils !!!!!! //////////
int ZM3isFather(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3unLink
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] I
int ZM3unLink(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3link														
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d H3d] I
int ZM3link(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3renameObj
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d S] I
int ZM3renameObj(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3listOfBigFathers
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d] [H3d r1]
int ZM3listOfBigFathers(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}






//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjType
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] I
int ZM3getObjType(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}








///////////////////////////////////////////////////////////////////////////////////////////
////																				   ////
///								GESTION GEOMETRIQUE										///
////																				   ////
///////////////////////////////////////////////////////////////////////////////////////////




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setObjRange
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [I I]] I
int ZM3setObjRange(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setObjRangeF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [F F]] I
int ZM3setObjRangeF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjRange
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [I I]
int ZM3getObjRange(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjRangeF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [F F]
int ZM3getObjRangeF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setObjVec
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [I I I]] I
int ZM3setObjVec(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setObjVecF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [F F F]] I
int ZM3setObjVecF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjVec
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [I I I]
int ZM3getObjVec(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjVecF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [F F F]
int ZM3getObjVecF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setObjAng
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [I I I]] I
int ZM3setObjAng(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setObjAngF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [F F F]] I
int ZM3setObjAngF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjAng
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [I I I]
int ZM3getObjAng(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjAngF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [F F F]
int ZM3getObjAngF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setObjScale
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d I] I
int ZM3setObjScale(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setObjScaleF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d F] I
int ZM3setObjScaleF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjScale
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] I
int ZM3getObjScale(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjScaleF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] F
int ZM3getObjScaleF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3movObj
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [I I I]] I
int ZM3movObj(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3movObjF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [F F F]] I
int ZM3movObjF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3rotateObj
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [I I I]] I
int ZM3rotateObj(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3rotateObjF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [F F F]] I
int ZM3rotateObjF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3movObjExt
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [I I I]] I
int ZM3movObjExt(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3movObjExtF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [F F F]] I
int ZM3movObjExtF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3rotateObjExt
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [I I I]] I
int ZM3rotateObjExt(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3rotateObjExtF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [F F F]] I
int ZM3rotateObjExtF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}






//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3calcMat
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] I
int ZM3calcMat(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjVecRender
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [I I I]
int ZM3getObjVecRender(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjVecRenderF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [F F F]
int ZM3getObjVecRenderF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjMatrixRender
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [[I I I] [I I I] [I I I]]
int ZM3getObjMatrixRender(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getObjMatrixRenderF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [[F F F] [F F F] [F F F]]
int ZM3getObjMatrixRenderF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getCamera
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [[I I] [I I] [I I I]]
int ZM3getCamera(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setCamera
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [[I I] [I I] [I I I]] ] I
int ZM3setCamera(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3calcPosRef
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d H3d] [[I I I] [[I I I][I I I][I I I]]]
int ZM3calcPosRef(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3calcPosRefF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d H3d] [[F F F] [[F F F][F F F][F F F]]]
int ZM3calcPosRefF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3angularFromMatrix
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [ [[I I I][I I I][I I I]] ]	[I I I]
int ZM3angularFromMatrix(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3angularFromMatrixF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [ [[F F F][F F F][F F F]] ]	[F F F]
int ZM3angularFromMatrixF(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getRadius
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] I
int ZM3getRadius(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getRadiusF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] F
int ZM3getRadiusF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3calcProj
//////////////////////////////////////////////////////////////////////////////////////////////
//	fun [S3d H3d H3d] [I I I I]
//	calcule la projection d'un objet sur une camera (x,y) ecran et z
//	le rayon apparent, et pose NIL sur la pile si objet invisible ou erreur
int ZM3calcProj(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3calcProjF
//////////////////////////////////////////////////////////////////////////////////////////////
//	fun [S3d H3d H3d] [I I F F]
//	calcule la projection d'un objet sur une camera (x,y) ecran et z
//	le rayon apparent, et pose NIL sur la pile si objet invisible ou erreur
int ZM3calcProjF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3areMeshesCulled
//////////////////////////////////////////////////////////////////////////////////////////////
//	Cette fonction n'est utilisable qu'après un rendu à l'écran : elle utilise la camera qui a permis le rendu
//
//	fun [S3d H3d [H3d r1]] [I r1]
//
int ZM3areMeshesCulled(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}
// fun [S3d H3d [H3d r1]] [I r1]
int ZM3isMeshCulledByOthers(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3angularTarget
//////////////////////////////////////////////////////////////////////////////////////////////
//	fun [[I I I] [I I I]] [I I I]
int ZM3angularTarget(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3angularTargetF
//////////////////////////////////////////////////////////////////////////////////////////////
//	fun [[F F F] [F F F]] [F F F]
int ZM3angularTargetF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getGlobalVec
//////////////////////////////////////////////////////////////////////////////////////////////
//	fun [S3d H3d [I I I]] [I I I]
int ZM3getGlobalVec(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getGlobalVecF
//////////////////////////////////////////////////////////////////////////////////////////////
//	fun [S3d H3d [F F F]] [F F F]
int ZM3getGlobalVecF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}











///////////////////////////////////////////////////////////////////////////////////////////
////																				   ////
///								GESTION TOPOLOGIQUE										///
////																				   ////
///////////////////////////////////////////////////////////////////////////////////////////



// fun [S3d] [H3d r1]
int ZM3listALLtopos(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}

// fun [S3d S] H3d
int ZM3getTopo(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createTopo														
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d] H3d
int ZM3createTopo(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3cleanTopo
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] I
int ZM3cleanTopo(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoCount
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] I
int ZM3topoCount(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoAddFace
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [I I I] [[I I][I I][I I]] [[I I][I I][I I]] HMat3d] I
//
//	Attention !! Le sens direct n'est ici pas respecté pour le passage des params en SCOL !!
//
int ZM3topoAddFace(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoAddFaceF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [I I I] [[F F][F F][F F]] [[F F][F F][F F]] HMat3d] I
//
//	Attention !! Le sens direct n'est ici pas respecté pour le passage des params en SCOL !!
//
int ZM3topoAddFaceF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setFaceVertRef
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I [I I I]] I
int ZM3setFaceVertRef(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getFaceVertRef
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I] [I I I]
int ZM3getFaceVertRef(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setFaceMaterial
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I HMat3d] I
int ZM3setFaceMaterial(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getFaceMaterial
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I] HMat3d
int ZM3getFaceMaterial(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setFaceTexCoord
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I I [[I I][I I][I I]] ] I
int ZM3setFaceTexCoord(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setFaceTexCoordF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I I [[F F][F F][F F]] ] I
int ZM3setFaceTexCoordF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getFaceTexCoord
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I I] [[I I][I I][I I]]
int ZM3getFaceTexCoord(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getFaceTexCoordF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I I] [[F F][F F][F F]]
int ZM3getFaceTexCoordF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3listOfPolygons
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d] [[HMat3d [[I I I] r1]] r1]
int ZM3listOfPolygons(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3listOfPolygonsF
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d] [[HMat3d [[I F F] r1]] r1]
int ZM3listOfPolygonsF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setPolygons
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d [[HMat3d [[I I I] r1]] r1]] I
int ZM3setPolygons(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setPolygonsF
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d [[HMat3d [[I F F] r1]] r1]] I
int ZM3setPolygonsF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3deltaPolygons
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d [[HMat3d [[I I I] r1]] r1]] I
int ZM3deltaPolygons(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3deltaPolygonsF
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d [[HMat3d [[I F F] r1]] r1]] I
int ZM3deltaPolygonsF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3morphPolygons
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d [[HMat3d [[I I I] r1]] r1] [[HMat3d [[I I I] r1]] r1] I] I
int ZM3morphPolygons(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3morphPolygonsF
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d [[HMat3d [[I F F] r1]] r1] [[HMat3d [[I F F] r1]] r1] F] I
int ZM3morphPolygonsF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


 
//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoAddVertex
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [I I I]] I
int ZM3topoAddVertex(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoAddVertexF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [F F F]] I
int ZM3topoAddVertexF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoAddVertices
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [[I I I] r1]] I
int ZM3topoAddVertices(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoAddVerticesF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [[F F F] r1]] I
int ZM3topoAddVerticesF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3listOfVertices
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d] [[I I I] r1]
int ZM3listOfVertices(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3listOfVerticesF
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d] [[F F F] r1]
int ZM3listOfVerticesF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoSetVertex
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I [I I I]] I
int ZM3topoSetVertex(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoSetVertexF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I [F F F]] I
int ZM3topoSetVertexF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoGetVertex
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I] [I I I]
int ZM3topoGetVertex(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoGetVertexF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I] [F F F]
int ZM3topoGetVertexF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setVertices
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [[I I I] r1]] I
int ZM3setVertices(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setVerticesF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [[F F F] r1]] I
int ZM3setVerticesF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3deltaVertex
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I [I I I]] I
int ZM3deltaVertex(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3deltaVertexF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I [I I I]] I
int ZM3deltaVertexF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3deltaVertices
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [[I I I] r1]] I
int ZM3deltaVertices(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3deltaVerticesF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [[F F F] r1]] I
int ZM3deltaVerticesF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3morphVertex
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I [I I I] [I I I] I] I
int ZM3morphVertex(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3morphVertexF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I [F F F] [F F F] F] I
int ZM3morphVertexF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3morphVertices
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [[I I I] r1] [[I I I] r1] I] I
int ZM3morphVertices(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3morphVerticesF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [[F F F] r1] [[F F F] r1] F] I
int ZM3morphVerticesF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3listOfColorVertices
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d I] [I r1]
int ZM3listOfColorVertices(mmachine m)
{

	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoSetColorVertex
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I I I] I
int ZM3topoSetColorVertex(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3topoGetColorVertex
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I I] I
int ZM3topoGetColorVertex(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setColorVertices
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I [I r1]] I
int ZM3setColorVertices(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3convVrt
//////////////////////////////////////////////////////////////////////////////////////////////
//	fun [S3d H3d H3d [I I I]] [I I I]
int ZM3convVrt(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3convVrtF
//////////////////////////////////////////////////////////////////////////////////////////////
//	fun [S3d H3d H3d [F F F]] [F F F]
int ZM3convVrtF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3convVec
//////////////////////////////////////////////////////////////////////////////////////////////
//	fun [S3d H3d H3d [I I I]] [I I I]
int ZM3convVec(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3convVecF
//////////////////////////////////////////////////////////////////////////////////////////////
//	fun [S3d H3d H3d [F F F]] [F F F]
int ZM3convVecF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}















///////////////////////////////////////////////////////////////////////////////////////////
////																				   ////
///									GESTION DE MESH										///
////																				   ////
///////////////////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createMesh
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] H3d
int ZM3createMesh(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3meshSetMultiTopo
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d [[H3d I] r1]] I
int ZM3meshSetMultiTopo(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3meshGetMultiTopo
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] [[H3d I] r1]
int ZM3meshGetMultiTopo(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3meshGetActiveTopo
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] H3d
int ZM3meshGetActiveTopo(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3meshSetTopology
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d H3d] I
int ZM3meshSetTopology(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3meshGetTopology
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] H3d
int ZM3meshGetTopology(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3meshSetType
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I] I
int ZM3meshSetType(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3meshGetType
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] I
int ZM3meshGetType(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3distance
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d H3d] I
int ZM3distance(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3save
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d I] S
int ZM3save(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3recListOfMaterials
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] [HMat3d r1]
int ZM3recListOfMaterials(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////																											   ////
///												GESTION DES MATERIAUX												///
////																											   ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3listALLMaterials
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d] [HMat3d r1]
int ZM3listALLMaterials(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}





//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createMaterial
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d S] HMat3d
int ZM3createMaterial(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getMat
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d S] HMat3d
int ZM3getMat(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3materialName
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] S
int ZM3materialName(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3renameMat
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d S] I
int ZM3renameMat(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3fillMat
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] I
int ZM3fillMat(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3fillMatObj
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] I
int ZM3fillMatObj(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3recursFillMatObj
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] I
int ZM3recursFillMatObj(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getType
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] I
int ZM3getType(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getRealType
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] I
int ZM3getRealType(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setType
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d I] I
int ZM3setType(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getMaterialFlat
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] I
int ZM3getMaterialFlat(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setMaterialFlat
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d I] I
int ZM3setMaterialFlat(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getMaterialTransparency
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] I
int ZM3getMaterialTransparency(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setMaterialTransparency
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d I] I
int ZM3setMaterialTransparency(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getMaterialColor
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d I] I
int ZM3getMaterialColor (mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setMaterialColor
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d I I] I
int ZM3setMaterialColor(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3textureFromMaterial
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] HTx3d
int ZM3textureFromMaterial(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3textureBISFromMaterial
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] HTx3d
int ZM3textureBISFromMaterial(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3chgMaterialTexture
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d HTx3d] I
int ZM3chgMaterialTexture(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3chgMaterialTextureBIS
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d HTx3d] I
int ZM3chgMaterialTextureBIS(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getMaterialMultitex
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] I
int ZM3getMaterialMultitex(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setMaterialMultitex
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d I] I
int ZM3setMaterialMultitex(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setMaterialAmbient
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d I] I
int ZM3setMaterialAmbient(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getMaterialAmbient
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] [I I I]
int ZM3getMaterialAmbient(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setMaterialDiffuse
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d I] I
int ZM3setMaterialDiffuse(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getMaterialDiffuse
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] [I I I]
int ZM3getMaterialDiffuse(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setMaterialSpecular
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d I] I
int ZM3setMaterialSpecular(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getMaterialSpecular
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] [I I I]
int ZM3getMaterialSpecular(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3materialCount
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] I
int ZM3materialCount(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3listOfMaterials
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d] [HMat3d r1]
int ZM3listOfMaterials(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3copyObjMaterial
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d HMat3d] HMat3d
int ZM3copyObjMaterial(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3copyMaterial
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d S] HMat3d
int ZM3copyMaterial(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3chgObjMaterial
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d HMat3d HMat3d] I
int ZM3chgObjMaterial(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3shiftTextureXY
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d HMat3d I I] I
int ZM3shiftTextureXY(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3shiftTextureXYF
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d H3d HMat3d F F] I
int ZM3shiftTextureXYF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3saveMat
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] S
int ZM3saveMat(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////																											   ////
///												GESTION DES TEXTURES												///
////																											   ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



// fun [S3d I] I
int ZM3textureSetGeneralDefaultType(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}

// fun [S3d HTx3d I] I
int ZM3textureSetType(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}

// fun [S3d HTx3d] I
int ZM3textureGetType(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3listALLTextures
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d] [HTx3d r1]
int ZM3listALLTextures(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getTexture
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d S] HTX3d
int ZM3getTexture(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3textureName
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HTx3d] S
int ZM3textureName(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3renameTexture
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HTx3d S] I
int ZM3renameTexture(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3textureCount
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HTx3d] I
int ZM3textureCount(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3copyMaterialTexture
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HMat3d] HTx3d
int ZM3copyMaterialTexture(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3isTextureFilled
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HTx3d] I
int ZM3isTextureFilled(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3fillTexture
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HTx3d] I
int ZM3fillTexture(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}





//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3freeTexture
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HTx3d] I
int ZM3freeTexture(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getTransparencyColor
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HTx3d] I
int ZM3getTransparencyColor(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setTransparencyColor
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d HTx3d I] I
int ZM3setTransparencyColor(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createTexture
//////////////////////////////////////////////////////////////////////////////////////////////
/// fun [S3d S] HTx3d
int ZM3createTexture(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////																											   ////
///												GESTION DE RENDU													///
////																											   ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3hardware
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [] I
int ZMX3hardware(mmachine m)
{
	MMpush(m,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3renderEx
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d ObjSurface H3d I I I] [H3d HMat3d I I I I I]
// -> [objet3D  Materiau  nbFace  U  V  Z  dist]
int ZMX3renderEx(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3renderExF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d ObjSurface H3d I I I] [H3d HMat3d I F F F F]
// -> [objet3D  Materiau  nbFace  U  V  Z  dist]
int ZMX3renderExF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3Render														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d ObjSurface H3d I I I] H3d
int ZMX3Render(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3RenderM													
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d ObjSurface H3d I I I] [H3d HMat3d]
int ZMX3RenderM(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3wire
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d ObjSurface H3d I I I] [H3d HMat3d]
int ZMX3wire(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3wirem
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d ObjSurface H3d I I I] [H3d HMat3d]
int ZMX3wirem(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3wireOrtho
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d ObjSurface H3d I I I] [H3d HMat3d]
int ZMX3wireOrtho(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3RenderInfo
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d I I] [H3d HMat3d I I I]
int ZMX3RenderInfo(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3RenderInfoF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d I I] [H3d HMat3d F F F]
int ZMX3RenderInfoF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3blitTexture
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d HTx3d ObjBitmap8] I
int ZM3blitTexture(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3blitTexture16
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d HTx3d ObjBitmap] I
int ZM3blitTexture16(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3filter
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [ObjBitmap S] ObjBitmap
int ZM3filter(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3nbVisiblePoly
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d] I
int ZM3nbVisiblePoly(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3nbUsedPolygons
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d] I
int ZM3nbUsedPolygons(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////																											   ////
///												GESTION DES COLLISIONS												///
////																											   ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createSphere
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d I] H3d
int ZM3createSphere(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createSphereF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d F] H3d
int ZM3createSphereF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createObb
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d [I I I]] H3d
int ZM3createObb(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createObbF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d [F F F]] H3d
int ZM3createObbF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3calcObb
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [[I I I] [I I I]]
int ZM3calcObb(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3calcObbF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [[F F F] [F F F]]
int ZM3calcObbF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3firstRadius
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] I
int ZM3firstRadius(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3firstRadiusF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] F
int ZM3firstRadiusF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3testInter
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d H3d] [H3d H3d]
int ZM3testInter(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3testColl
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d H3d [I I I] I] [H3d H3d [I I I] [I I I]]
int ZM3testColl(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3testCollF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d H3d [F F F] F] [H3d H3d [F F F] [F F F]]
int ZM3testCollF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createExactModel
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] I
int ZM3createExactModel(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3destroyExactModel 
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] I
int ZM3destroyExactModel(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3testExactInter
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d H3d] I
int ZM3testExactInter(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3testExactColl
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d H3d [F F F]] [F F F]
int ZM3testExactColl(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////																											   ////
///												GESTION DES ANIMATIONS												///
////																											   ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setAnimKey
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d I] I
int ZM3setAnimKey(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setAnimKeyF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d F] I
int ZM3setAnimKeyF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setAnimKey2
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d I I I] I
int ZM3setAnimKey2(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setAnimKey2F
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d F F F] I
int ZM3setAnimKey2F(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3applyAnimKey
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d H3d I I] I
int ZM3applyAnimKey(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3applyAnimKeyF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d H3d F I] I
int ZM3applyAnimKeyF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3applyAnimKey2
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d H3d H3d I I I I] I
int ZM3applyAnimKey2(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3applyAnimKey2F
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d H3d H3d F F F I] I
int ZM3applyAnimKey2F(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}




//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getAnimLength
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] I
int ZM3getAnimLength(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////																											   ////
///												GESTION DES LUMIERES												///
////																											   ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createLight
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d I I I I I I] H3d
int ZM3createLight(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getLight
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [I I I I I I]
int ZM3getLight(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setLight
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [I I I I I I]] I
int ZM3setLight(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createColorLight
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d I I I I I I I] H3d
int ZM3createColorLight(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getColorLight
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [I I I I I I I]
int ZM3getColorLight(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setColorLight
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d I I I I I I I] I
int ZM3setColorLight(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}













///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////																											   ////
///												GESTION DES SPRITES													///
////																											   ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createSprite
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d I I HMat3d I]
int ZM3createSprite(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3createSpriteF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d F F HMat3d I]
int ZM3createSpriteF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setSprite
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d I I HMat3d I] I
int ZM3setSprite(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setSpriteF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d F F HMat3d I] I
int ZM3setSpriteF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getSprite
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [I I HMat3d I]
int ZM3getSprite(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getSpriteF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [F F HMat3d I]
int ZM3getSpriteF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setSpriteTexCoord
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [[I I] r1] [[I I] r1]] I
int ZM3setSpriteTexCoord(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setSpriteTexCoordF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [[F F] r1] [[F F] r1]] I
int ZM3setSpriteTexCoordF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getSpriteTexCoord
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [[I I] r1] [[I I] r1]]
int ZM3getSpriteTexCoord(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getSpriteTexCoordF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [[F F] r1] [[F F] r1]]
int ZM3getSpriteTexCoordF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setSpriteVrtColors
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d [I r1] [I r1]] I
int ZM3setSpriteVrtColors(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getSpriteVrtColors
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] [[I r1] [I r1]]
int ZM3getSpriteVrtColors(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setSpriteAngle
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d I] I
int ZM3setSpriteAngle(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3setSpriteAngleF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d F] I
int ZM3setSpriteAngleF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getSpriteAngle
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] I
int ZM3getSpriteAngle(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3getSpriteAngleF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d H3d] F
int ZM3getSpriteAngleF(mmachine m)
{
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_SDRAWrectangle														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [ObjSurface I I I I I I I I I] ObjSurface
int ZSDRAWrectangle (mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_SDRAWline														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[ObjSurface I I I I I I I] ObjSurface
int ZSDRAWline (mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}


//////////////////////////////////////////////////////////////////////////////////////////////
///		_SDRAWcircle														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[ObjSurface I I I I I I I I] ObjSurface
int ZSDRAWcircle (mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_SDRAWtext														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[ObjSurface ObjFont I I I I S] ObjSurface
int ZSDRAWtext (mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		_SDRAWpoly														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[ObjSurface I tab[I I] I I I I I] ObjSurface
int ZSDRAWpoly (mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		M3interpVec														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[[I I I] [I I I] I] [I I I]
int M3interpVec(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		M3interpVecF														
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[[F F F] [F F F] F] [F F F]
int M3interpVecF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		M3interpAng													
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[[I I I] [I I I] I] [I I I]
int M3interpAng(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		M3interpAngF
//////////////////////////////////////////////////////////////////////////////////////////////
// fun[[F F F] [F F F] F] [F F F]
int M3interpAngF(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



// fun [] [S S S S]
int ZM3videoInfos(mmachine m)
{
	MMpush(m,NIL);
	return 0;
}







///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////																											   ////
///												ANCIENNES FONCTIONS													///
////																											   ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


	
//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3initialize
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [I I I I I I] S3d
int ZM3initialize(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3desalloc
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d] I
int ZM3desalloc(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}







//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3scanline
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d ObjBitmap H3d I I I] H3d
int ZM3scanline(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3scanlineM													
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d ObjBitmap H3d I I I] [H3d HMat3d]
int ZM3scanlineM(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3scanlineInfo
//////////////////////////////////////////////////////////////////////////////////////////////
// fun [S3d ObjBitmap H3d I I] [H3d HMat3d I I I]
int ZM3scanlineInfo(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZM3textureTotalSize
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d] I
int ZM3textureTotalSize(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		ZMX3TestSurfaceZbuf
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [ObjSurface] I
int ZMX3TestSurfaceZbuf(mmachine m)
{
	MMset(m,0,NIL);
	return 0;
}



//////////////////////////////////////////////////////////////////////////////////////////////
///		M3setRenderCallback
//////////////////////////////////////////////////////////////////////////////////////////////
///	fun [S3d H3d fun [H3d] [[[[F F F] I I] r1] [[HMat3d I F F F F I F F F F I F F F F] r1]]] H3d
int M3setRenderCallback(mmachine m)
{
	MMpull(m);
	MMpull(m);
	MMset(m,0,NIL);
	return 0;
}









///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////																											   ////
///										DECLARATION DES FONCTIONS POUR SCOL											///
////																											   ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////




#define NbZooPKG	322


//////////////////////////////////////////////////////////////////////////////////////////////
///		Definition des noms de fonction SCOL
//////////////////////////////////////////////////////////////////////////////////////////////
char	*ZooName[NbZooPKG] =
{
	// ----------> Callback de rendu <-----------
	"CB_NOCHANGE",
	"M3setRenderCallback",

	"MX3TestSurfaceZbuf",

	"ZTest",
	"M3isValidObj",


	// ----------> Anciennes fonctions <-----------
	"S3d",
	"H3d",
	"M3initialize",
	"M3desalloc",
	"HMat3d",
	"HTx3d",
	"M3scanlineInfo",
	"M3updateTexture",
	"M3importTexture",
	"M3updateTexture16",
	"M3importTexture16",
	"M3scanline",
	"M3scanlinem",
	"M3textureTotalSize",


	// -----------> Gestion de session <-----------
	"SURFACE_FULLSCREEN", "SURFACE_WINDOWED", "SURFACE_NULL",
	"M3create",
	"MX3create",
	"MX3createSession",
	"M3destroy",
	"M3freeMemory",
	"M3reset",
	"ENGINE_HARDWARE", "ENGINE_SOFTWARE",
	"_GETengineState",
	"_CRsurface",
	"_CRfullscreenSurface",
	"_GETwindowFromFullscreenSurface",
	"_GETsurfaceState",
	"_DSsurface",
	"_FILLsurface",
	"_GETsurfaceSize",
	"_BLTsurface",
	"_BLTsurfaceFullScreen",
	"_Bitmap2Surface",
	"_Surface2Bitmap",
	"_Surface2Surface",


	// -----------> Gestion des objets <-----------

	// ---> Gestion hierarchique <---
	"M3_MESH","M3_CAM","M3_LIGHT","M3_SHELL","M3_TOPO",
	"M3_COLL","M3_SPRITE","M3_ANIM","M3_COLOR_LIGHT","M3_PARTICLE",
	"M3_LISTENER","M3_SOUND",

	"M3load",
	"M3loadString",
	"M3createShell",
	"M3delObj",
	"M3copyObj",
	"M3getObj",
	"M3objName",
	"M3getFather",
	"M3getFirstSon",
	"M3getBrother",
	"M3bigFather",
	"M3isFather",
	"M3unLink",
	"M3link",
	"M3renameObj",
	"M3listOfBigFathers",
	"M3getObjType",

	// ----> Gestion géométrique <----
	"RANGE_INFINITY",
	"RANGE_INFINITY_F",
	"M3setObjRange",
	"M3getObjRange",
	"M3setObjRangeF",
	"M3getObjRangeF",
	"M3setObjVec",
	"M3setObjVecF",
	"M3getObjVec",
	"M3getObjVecF",
	"M3setObjAng",
	"M3setObjAngF",
	"M3getObjAng",
	"M3getObjAngF",
	"M3setObjScale",
	"M3setObjScaleF",
	"M3getObjScale",
	"M3getObjScaleF",
	"M3movObj",
	"M3movObjF",
	"M3rotateObj",
	"M3rotateObjF",
	"M3movObjExt",
	"M3movObjExtF",
	"M3rotateObjExt",
	"M3rotateObjExtF",
	"M3calcMat",
	"M3getObjVecRender",
	"M3getObjVecRenderF",
	"M3getObjMatrixRender",
	"M3getObjMatrixRenderF",
	"M3getCamera",
	"M3setCamera",
	"M3calcPosRef",
	"M3calcPosRefF",
	"M3angularFromMatrix",
	"M3angularFromMatrixF",
	"M3getRadius",
	"M3getRadiusF",
	"M3calcProj",
	"M3calcProjF",
	"M3areMeshesCulled",
	"M3isMeshCulledByOthers",
	"M3angularTarget",
	"M3angularTargetF",
	"M3getGlobalVec",
	"M3getGlobalVecF",

	// ----> Gestion topologique <----
	"M3listALLtopos",
	"M3getTopo",
	"M3createTopo",
	"M3cleanTopo",
	"M3topoCount",
	"M3topoAddFace",
	"M3topoAddFaceF",
	"M3setFaceVertRef",
	"M3getFaceVertRef",
	"M3setFaceMaterial",
	"M3getFaceMaterial",
	"M3setFaceTexCoord",
	"M3setFaceTexCoordF",
	"M3getFaceTexCoord",
	"M3getFaceTexCoordF",
	"M3listOfPolygons",
	"M3listOfPolygonsF",
	"M3setPolygons",
	"M3setPolygonsF",
	"M3deltaPolygons",
	"M3deltaPolygonsF",
	"M3morphPolygons",
	"M3morphPolygonsF",
	"M3topoAddVertex",
	"M3topoAddVertexF",
	"M3topoAddVertices",
	"M3topoAddVerticesF",
	"M3listOfVertices",
	"M3listOfVerticesF",
	"M3topoSetVertex",
	"M3topoSetVertexF",
	"M3topoGetVertex",
	"M3topoGetVertexF",
	"M3setVertices",
	"M3setVerticesF",
	"M3deltaVertex",
	"M3deltaVertexF",
	"M3deltaVertices",
	"M3deltaVerticesF",
	"M3morphVertex",
	"M3morphVertexF",
	"M3morphVertices",
	"M3morphVerticesF",
	"M3listOfColorVertices",
	"M3topoSetColorVertex",
	"M3topoGetColorVertex",
	"M3setColorVertices",
	"M3convVrt",
	"M3convVrtF",
	"M3convVec",
	"M3convVecF",

	// ------> Gestion de mesh <------
	"MESH_STATIC",
	"MESH_MULTI_TOPO",
	"MESH_NOT_CLICKABLE",
	"M3createMesh",
	"M3meshSetMultiTopo",
	"M3meshGetMultiTopo",
	"M3meshGetActiveTopo",
	"M3meshSetTopology",
	"M3meshGetTopology",
	"M3meshSetType",
	"M3meshGetType",
	"M3distance",
	"M3save",
	"M3recListOfMaterials",



	// ---------> Gestion des Materiaux <----------
	"MAT_COLOR1","MAT_COLOR2","MAT_COLOR_VERTEX",
	"MAT_TEXTURED","MAT_TEXTURED_BIS",
	"MAT_LIGHT","MAT_GOURAUD",
	"MAT_TRANSP","MAT_ENV",

	"M3listALLMaterials",
	"M3createMaterial",
	"M3getMat",
	"M3materialName",
	"M3renameMat",
	"M3fillMat",
	"M3fillMatObj",
	"M3recursFillMatObj",
	"M3getType",
	"M3getRealType",
	"M3setType",
	"M3getMaterialFlat",
	"M3setMaterialFlat",
	"M3getMaterialTransparency",
	"M3setMaterialTransparency",
	"M3getMaterialColor",
	"M3setMaterialColor",
	"M3textureFromMaterial",
	"M3textureBISFromMaterial",
	"M3chgMaterialTexture",
	"M3chgMaterialTextureBIS",
	"M3getMaterialMultitex",
	"M3setMaterialMultitex",
	"M3setMaterialAmbient",
	"M3getMaterialAmbient",
	"M3setMaterialDiffuse",
	"M3getMaterialDiffuse",
	"M3setMaterialSpecular",
	"M3getMaterialSpecular",
	"M3materialCount",
	"M3listOfMaterials",
	"M3copyObjMaterial",
	"M3copyMaterial",
	"M3chgObjMaterial",
	"M3shiftTextureXY",
	"M3shiftTextureXYF",
	"M3saveMat",
	"M3saveMaterial",



	// ---------> Gestion des Textures <----------
	"TEX_MIPMAP",
	"M3textureSetGeneralDefaultType",
	"M3textureSetType",
	"M3textureGetType",
	"M3listALLTextures",
	"M3getTexture",
	"M3textureName",
	"M3renameTexture",
	"M3textureCount",
	"M3copyMaterialTexture",
	"M3isTextureFilled",
	"M3fillTexture",
	"M3freeTexture",
	"M3getTransparencyColor",
	"M3setTransparencyColor",
	"M3createTexture",



	// ------------> Gestion de Rendu <------------
	"MX3hardware",
	"MX3getDeviceList",
	"MX3renderEx",
	"MX3renderExF",
	"MX3render",
	"MX3renderm",
	"MX3wire",
	"MX3wirem",
	"MX3wireOrtho",
	"MX3renderInfo",
	"MX3renderInfoF",
	"M3blitTexture",
	"M3blitTexture16",
	"M3filter",
	"M3nbVisiblePoly",
	"M3nbUsedPolygons",



	// ---------> Gestion des Collisions <---------
	"M3createSphere",
	"M3createObb",
	"M3calcObb",
	"M3firstRadius",
	"M3testInter",
	"M3testColl",
	"M3testCollF",

	"M3createExactModel",
	"M3destroyExactModel",
	"M3testExactInter",
	"M3testExactColl",



	// ---------> Gestion des Animations <---------
	"ANIM_POS","ANIM_ANG","ANIM_TOP",
	"M3setAnimKey",
	"M3setAnimKeyF",
	"M3setAnimKey2",
	"M3setAnimKey2F",
	"M3applyAnimKey",
	"M3applyAnimKeyF",
	"M3applyAnimKey2",
	"M3applyAnimKey2F",
	"M3getAnimLength",



	// ----------> Gestion des Lumières <----------
	"LIGHT_AMBIENT","LIGHT_PARA","LIGHT_OMNI","LIGHT_SPOT",
	"M3createLight",
	"M3getLight",
	"M3setLight",
	"M3createColorLight",
	"M3getColorLight",
	"M3setColorLight",



	// ----------> Gestion des Sprites <-----------
	"M3createSprite",
	"M3createSpriteF",
	"M3setSprite",
	"M3setSpriteF",
	"M3getSprite",
	"M3getSpriteF",
	"M3setSpriteTexCoord",
	"M3setSpriteTexCoordF",
	"M3getSpriteTexCoord",
	"M3getSpriteTexCoordF",
	"M3setSpriteVrtColors",
	"M3getSpriteVrtColors",
	"M3setSpriteAngle",
	"M3setSpriteAngleF",
	"M3getSpriteAngle",
	"M3getSpriteAngleF",



	// ----------> Opérations diverses <-----------
	"_SDRAWrectangle",
	"_SDRAWline",
	"_SDRAWcircle",
	"_SDRAWtext",
	"_SDRAWpoly",
	"M3interpVec",
	"M3interpVecF",
	"M3interpAng",
	"M3interpAngF",
	"M3videoInfos"
};



//////////////////////////////////////////////////////////////////////////////////////////////
///		Definition des pointeurs sur fonctions
//////////////////////////////////////////////////////////////////////////////////////////////
int (*ZooFunc[NbZooPKG])(mmachine m)=
{
	// ----------> Callback de rendu <-----------
	(int (*)(struct Mmachine *))NIL,
	M3setRenderCallback,

	ZMX3TestSurfaceZbuf,									// MX3TestSurfaceZbuf

	ZTest,
	ZM3isValidObj,


	// ----------> Anciennes fonctions <-----------
	NULL,													// S3d
	NULL,													// H3d
	ZM3initialize,											// M3initialize
	ZM3desalloc,											// M3desalloc
	NULL,													// HMat3d
	NULL,													// HTx3d
	ZM3scanlineInfo,										// M3scanlineInfo
	ZM3blitTexture,											// M3updateTexture
	ZM3blitTexture,											// M3importTexture
	ZM3blitTexture16,										// M3updateTexture16
	ZM3blitTexture16,										// M3importTexture16
	ZM3scanline,											// M3scanline
	ZM3scanlineM,											// M3scanlinem
	ZM3textureTotalSize,									// M3textureTotalSize


	// -----------> Gestion de session <-----------
	(int (*)(struct Mmachine *))0,(int (*)(struct Mmachine *))2,(int (*)(struct Mmachine *))4,					// SURFACE_FULLSCREEN	SURFACE_WINDOWED	SURFACE_NULL
	ZMX3create,												// M3create
	ZMX3create,												// MX3create
	ZMX3createSession,										// MX3createSession
	ZM3destroy,												// M3destroy
	ZM3freeMemory,											// M3freeMemory
	ZM3reset,												// M3reset
	(int (*)(struct Mmachine *))0,(int (*)(struct Mmachine *))2,	// ENGINE_HARDWARE     ENGINE_SOFTWARE
	_ZGETengineState,										// _GETengineState
	_ZCRsurface,											// _CRsurface 
	_ZCRfullscreenSurface,									// _CRfullscreenSurface
	_ZGETwindowFromFullscreenSurface,						// _GETwindowFromFullscreenSurface
	_ZGETsurfaceState,										// _GETsurfaceState
	_ZDSsurface,											// _DSsurface
	_ZFILLsurface,											// _FILLsurface
	_ZGETsurfaceSize,										// _GETsurfaceSize
	_ZBLTsurface,											// _BLTsurface
	_ZBLTsurfaceFullScreen,									// _BLTsurfaceFullScreen
	_ZBitmap2Surface,										// _Bitmap2Surface
	_ZSurface2Bitmap,										// _Surface2Bitmap
	_ZSurface2Surface,										// _Surface2Surface


	// -----------> Gestion des objets <-----------

	// ---> Gestion hierarchique <---
	(int (*)(struct Mmachine *))0,
	(int (*)(struct Mmachine *))2,(int (*)(struct Mmachine *))4,(int (*)(struct Mmachine *))6,(int (*)(struct Mmachine *))20,					// M3_MESH   M3_CAM      M3_LIGHT   M3_SHELL
	(int (*)(struct Mmachine *))8,(int (*)(struct Mmachine *))10,(int (*)(struct Mmachine *))12,				// M3_COLL   M3_SPRITE   M3_ANIM
	(int (*)(struct Mmachine *))100,(int (*)(struct Mmachine *))14,														// M3_COLOR_LIGHT		M3_PARTICLE
	(int (*)(struct Mmachine *))110, (int (*)(struct Mmachine *))120,													// M3_LISTENER	M3_SOUND

	ZM3load,												// M3load
	ZM3loadString,											// M3loadString
	ZM3createShell,											// M3createShell
	ZM3delObj,												// M3delObj
	ZM3copyObj,												// M3copyObj
	ZM3getObj,												// M3getObj
	ZM3objName,												// M3objName
	ZM3getFather,											// M3getFather
	ZM3getFirstSon,											// M3getFirstSon
	ZM3getBrother,											// M3getBrother
	ZM3bigFather,											// M3bigFather
	ZM3isFather,											// M3isFather
	ZM3unLink,												// M3unLink
	ZM3link,												// M3link
	ZM3renameObj,											// M3renameObj
	ZM3listOfBigFathers,									// M3listOfBigFathers
	ZM3getObjType,											// M3getObjType

	// ----> Gestion géométrique <----
	(int (*)(struct Mmachine *)) (-20),				// RANGE_INFINITY
	(int (*)(struct Mmachine *)) (-20),				// RANGE_INFINITY_F
	ZM3setObjRange,											// M3setObjRange
	ZM3getObjRange,											// M3getObjRange
	ZM3setObjRangeF,										// M3setObjRangeF
	ZM3getObjRangeF,										// M3getObjRangeF
	ZM3setObjVec,											// M3setObjVec
	ZM3setObjVecF,											// M3setObjVecF
	ZM3getObjVec,											// M3getObjVec
	ZM3getObjVecF,											// M3getObjVecF
	ZM3setObjAng,											// M3setObjAng
	ZM3setObjAngF,											// M3setObjAngF
	ZM3getObjAng,											// M3getObjAng
	ZM3getObjAngF,											// M3getObjAngF
	ZM3setObjScale,											// M3setObjScale
	ZM3setObjScaleF,										// M3setObjScaleF
	ZM3getObjScale,											// M3getObjScale
	ZM3getObjScaleF,										// M3getObjScaleF
	ZM3movObj,												// M3movObj
	ZM3movObjF,												// M3movObjF
	ZM3rotateObj,											// M3rotateObj
	ZM3rotateObjF,											// M3rotateObjF
	ZM3movObjExt,											// M3movObjExt
	ZM3movObjExtF,											// M3movObjExtF
	ZM3rotateObjExt,										// M3rotateObjExt
	ZM3rotateObjExtF,										// M3rotateObjExtF
	ZM3calcMat,												// M3calcMat
	ZM3getObjVecRender,										// M3getObjVecRender
	ZM3getObjVecRenderF,									// M3getObjVecRenderF
	ZM3getObjMatrixRender,									// M3getObjMatrixRender
	ZM3getObjMatrixRenderF,									// M3getObjMatrixRenderF
	ZM3getCamera,											// M3getCamera
	ZM3setCamera,											// M3setCamera
	ZM3calcPosRef,											// M3calcPosRef
	ZM3calcPosRefF,											// M3calcPosRefF
	ZM3angularFromMatrix,									// M3angularFromMatrix
	ZM3angularFromMatrixF,									// M3angularFromMatrixF
	ZM3getRadius,											// M3getRadius
	ZM3getRadiusF,											// M3getRadiusF
	ZM3calcProj,											// M3calcProj
	ZM3calcProjF,											// M3calcProjF
	ZM3areMeshesCulled,										// M3areMeshesCulled
	ZM3isMeshCulledByOthers,								// M3isMeshCulledByOthers
	ZM3angularTarget,										// M3angularTarget
	ZM3angularTargetF,										// M3angularTargetF
	ZM3getGlobalVec,										// M3getGlobalVec
	ZM3getGlobalVecF,										// M3getGlobalVecF

	// ----> Gestion topologique <----
	ZM3listALLtopos,										// M3listALLtopos
	ZM3getTopo,												// M3getTopo
	ZM3createTopo,											// M3createTopo
	ZM3cleanTopo,											// M3cleanTopo
	ZM3topoCount,											// M3topoCount
	ZM3topoAddFace,											// M3topoAddFace
	ZM3topoAddFaceF,										// M3topoAddFaceF
	ZM3setFaceVertRef,										// M3setFaceVertRef
	ZM3getFaceVertRef,										// M3getFaceVertRef
	ZM3setFaceMaterial,										// M3setFaceMaterial
	ZM3getFaceMaterial,										// M3getFaceMaterial
	ZM3setFaceTexCoord,										// M3setFaceTexCoord
	ZM3setFaceTexCoordF,									// M3setFaceTexCoordF
	ZM3getFaceTexCoord,										// M3getFaceTexCoord
	ZM3getFaceTexCoordF,									// M3getFaceTexCoordF
	ZM3listOfPolygons,										// M3listOfPolygons
	ZM3listOfPolygonsF,										// M3listOfPolygonsF
	ZM3setPolygons,											// M3setPolygons
	ZM3setPolygonsF,										// M3setPolygonsF
	ZM3deltaPolygons,										// M3deltaPolygons
	ZM3deltaPolygonsF,										// M3deltaPolygonsF
	ZM3morphPolygons,										// M3morphPolygons
	ZM3morphPolygonsF,										// M3morphPolygonsF
	ZM3topoAddVertex,										// M3topoAddVertex
	ZM3topoAddVertexF,										// M3topoAddVertexF
	ZM3topoAddVertices,										// M3topoAddVertices
	ZM3topoAddVerticesF,									// M3topoAddVerticesF
	ZM3listOfVertices,										// M3listOfVertices
	ZM3listOfVerticesF,										// M3listOfVerticesF
	ZM3topoSetVertex,										// M3topoSetVertex
	ZM3topoSetVertexF,										// M3topoSetVertexF
	ZM3topoGetVertex,										// M3topoGetVertex
	ZM3topoGetVertexF,										// M3topoGetVertexF
	ZM3setVertices,											// M3setVertices
	ZM3setVerticesF,										// M3setVerticesF
	ZM3deltaVertex,											// M3deltaVertex
	ZM3deltaVertexF,										// M3deltaVertexF
	ZM3deltaVertices,										// M3deltaVertices
	ZM3deltaVerticesF,										// M3deltaVerticesF
	ZM3morphVertex,											// M3morphVertex
	ZM3morphVertexF,										// M3morphVertexF
	ZM3morphVertices,										// M3morphVertices
	ZM3morphVerticesF,										// M3morphVerticesF
	ZM3listOfColorVertices,									// M3listOfColorVertices
	ZM3topoSetColorVertex,									// M3topoSetColorVertex
	ZM3topoGetColorVertex,									// M3topoGetColorVertex
	ZM3setColorVertices,									// M3setColorVertices
	ZM3convVrt,												// M3convVrt
	ZM3convVrtF,											// M3convVrtF
	ZM3convVec,												// M3convVec
	ZM3convVecF,											// M3convVecF

	// ------> Gestion de mesh <------
	(int (*)(struct Mmachine *))2,					// MESH_STATIC
	(int (*)(struct Mmachine *))4,					// MESH_MULTI_TOPO
	(int (*)(struct Mmachine *))8,					// MESH_NOT_CLICKABLE
	ZM3createMesh,											// M3createMesh
	ZM3meshSetMultiTopo,									// M3meshSetMultiTopo
	ZM3meshGetMultiTopo,									// M3meshGetMultiTopo
	ZM3meshGetActiveTopo,									// M3meshGetActiveTopo
	ZM3meshSetTopology,										// M3meshSetTopology
	ZM3meshGetTopology,										// M3meshGetTopology
	ZM3meshSetType,											// M3meshSetType
	ZM3meshGetType,											// M3meshGetType
	ZM3distance,											// M3distance
	ZM3save,												// M3save
	ZM3recListOfMaterials,									// M3recListOfMaterials



	// ---------> Gestion des Materiaux <----------
	(int (*)(struct Mmachine *))512,(int (*)(struct Mmachine *))64,(int (*)(struct Mmachine *))128,	// MAT_COLOR1     MAT_COLOR2   MAT_COLOR_VERTEX  
	(int (*)(struct Mmachine *))2,(int (*)(struct Mmachine *))256,											// MAT_TEXTURED   MAT_TEXTURED_BIS  
	(int (*)(struct Mmachine *))16,(int (*)(struct Mmachine *))4,											// MAT_LIGHT	  MAT_GOURAUD
	(int (*)(struct Mmachine *))8,(int (*)(struct Mmachine *))32,										// MAT_TRANSP	  MAT_ENV


	ZM3listALLMaterials,									// M3listALLMaterials
	ZM3createMaterial,										// M3createMaterial
	ZM3getMat,												// M3getMat
	ZM3materialName,										// M3materialName
	ZM3renameMat,											// M3renameMat
	ZM3fillMat,												// M3fillMat
	ZM3fillMatObj,											// M3fillMatObj
	ZM3recursFillMatObj,									// M3recursFillMatObj
	ZM3getType,												// M3getType
	ZM3getRealType,											// M3getRealType
	ZM3setType,												// M3setType
	ZM3getMaterialFlat,										// M3getMaterialFlat
	ZM3setMaterialFlat,										// M3setMaterialFlat
	ZM3getMaterialTransparency,								// M3getMaterialTransparency
	ZM3setMaterialTransparency,								// M3getMaterialTransparency
	ZM3getMaterialColor,									// M3getMaterialColor
	ZM3setMaterialColor,									// M3setMaterialColor
	ZM3textureFromMaterial,									// M3textureFromMaterial
	ZM3textureBISFromMaterial,								// M3textureBISFromMaterial
	ZM3chgMaterialTexture,									// M3chgMaterialTexture
	ZM3chgMaterialTextureBIS,								// M3chgMaterialTextureBIS
	ZM3getMaterialMultitex,									// M3getMaterialMultitex
	ZM3setMaterialMultitex,									// M3setMaterialMultitex
	ZM3setMaterialAmbient,									// M3setMaterialAmbient
	ZM3getMaterialAmbient,									// M3getMaterialAmbient
	ZM3setMaterialDiffuse,									// M3setMaterialDiffuse
	ZM3getMaterialDiffuse,									// M3getMaterialDiffuse
	ZM3setMaterialSpecular,				 					// M3setMaterialSpecular
	ZM3getMaterialSpecular,									// M3getMaterialSpecular
	ZM3materialCount,										// M3materialCount
	ZM3listOfMaterials,										// M3listOfMaterials
	ZM3copyObjMaterial,										// M3copyObjMaterial
	ZM3copyMaterial,										// M3copyMaterial
	ZM3chgObjMaterial,										// M3chgObjMaterial
	ZM3shiftTextureXY,										// M3shiftTextureXY
	ZM3shiftTextureXYF,										// M3shiftTextureXYF
	ZM3saveMat,												// M3saveMat
	ZM3saveMat,												// M3saveMaterial




	// ---------> Gestion des Textures <----------
	(int (*)(struct Mmachine *))4,					// TEX_MIPMAP
	ZM3textureSetGeneralDefaultType,						// M3textureSetGeneralDefaultType
	ZM3textureSetType,										// M3textureSetType
	ZM3textureGetType,										// M3textureGetType
	ZM3listALLTextures,										// M3listALLTextures
	ZM3getTexture,											// M3getTexture
	ZM3textureName,											// M3textureName
	ZM3renameTexture,										// M3renameTexture
	ZM3textureCount,										// M3textureCount
	ZM3copyMaterialTexture,									// M3copyMaterialTexture
	ZM3isTextureFilled,										// M3isTextureFilled
	ZM3fillTexture,											// M3fillTexture
	ZM3freeTexture,											// M3freeTexture
	ZM3getTransparencyColor,								// M3getTransparencyColor
	ZM3setTransparencyColor,								// M3setTransparencyColor
	ZM3createTexture,										// M3createTexture




	// ------------> Gestion de Rendu <------------
	ZMX3hardware,											// MX3hardware
	ZMX3getDeviceList,										// MX3getDeviceList
	ZMX3renderEx,											// MX3renderEx
	ZMX3renderExF,											// MX3renderExF
	ZMX3Render,												// MX3dRender
	ZMX3RenderM,											// MX3RenderM
	ZMX3wire,												// MX3wirem
	ZMX3wirem,												// MX3wirem
	ZMX3wireOrtho,											// MX3wireOrtho
	ZMX3RenderInfo,											// MX3RenderInfo
	ZMX3RenderInfoF,										// MX3RenderInfoF
	ZM3blitTexture,											// M3blitTexture
	ZM3blitTexture16,										// M3blitTexture16
	ZM3filter,												// M3filter
	ZM3nbVisiblePoly,										// M3nbVisiblePoly
	ZM3nbUsedPolygons,										// M3nbUsedPolygons




	// ---------> Gestion des Collisions <---------
	ZM3createSphere,										// M3createSphere
	ZM3createObb,											// M3createObb
	ZM3calcObb,												// M3calcObb
	ZM3firstRadius,											// M3firstRadius
	ZM3testInter,											// M3testInter
	ZM3testColl,											// M3testColl
	ZM3testCollF,											// M3testCollF

	ZM3createExactModel,									// M3createExactModel
	ZM3destroyExactModel,									// M3destroyExactModel
	ZM3testExactInter,										// M3testExactInter
	ZM3testExactColl,										// M3testExactColl



	// ---------> Gestion des Animations <---------
	(int (*)(struct Mmachine *))2,(int (*)(struct Mmachine *))4,(int (*)(struct Mmachine *))8,					// ANIM_POS		ANIM_ANG	ANIM_TOP
	ZM3setAnimKey,											// M3setAnimKey
	ZM3setAnimKeyF,											// M3setAnimKeyF
	ZM3setAnimKey2,											// M3setAnimKey2
	ZM3setAnimKey2F,										// M3setAnimKey2F
	ZM3applyAnimKey,										// M3applyAnimKey
	ZM3applyAnimKeyF,										// M3applyAnimKeyF
	ZM3applyAnimKey2,										// M3applyAnimKey2
	ZM3applyAnimKey2F,										// M3applyAnimKey2F
	ZM3getAnimLength,										// M3getAnimLength




	// ----------> Gestion des Lumières <----------
	(int (*)(struct Mmachine *))0,(int (*)(struct Mmachine *))2,(int (*)(struct Mmachine *))4,(int (*)(struct Mmachine *))6,					// LIGHT_AMBIENT	LIGHT_PARA		LIGHT_OMNI		LIGHT_SPOT
	ZM3createLight,											// M3createLight
	ZM3getLight,											// M3getLight
	ZM3setLight,											// M3setLight
	ZM3createColorLight,									// M3createColorLight
	ZM3getColorLight,										// M3getColorLight
	ZM3setColorLight,										// M3setColorLight



	// ----------> Gestion des Sprites <-----------
	ZM3createSprite,										// M3createSprite
	ZM3createSpriteF,										// M3createSpriteF
	ZM3setSprite,											// M3setSprite
	ZM3setSpriteF,											// M3setSpriteF
	ZM3getSprite,											// M3getSprite
	ZM3getSpriteF,											// M3getSpriteF
	ZM3setSpriteTexCoord,									// M3setSpriteTexCoord
	ZM3setSpriteTexCoordF,									// M3setSpriteTexCoordF
	ZM3getSpriteTexCoord,									// M3getSpriteTexCoord
	ZM3getSpriteTexCoordF,									// M3getSpriteTexCoordF
	ZM3setSpriteVrtColors,									// M3setSpriteVrtColors
	ZM3getSpriteVrtColors,									// M3getSpriteVrtColors
	ZM3setSpriteAngle,										// M3setSpriteAngle
	ZM3setSpriteAngleF,										// M3setSpriteAngleF
	ZM3getSpriteAngle,										// M3getSpriteAngle
	ZM3getSpriteAngleF,										// M3getSpriteAngleF





	// ----------> Opérations diverses <-----------
	ZSDRAWrectangle,										// _SDRAWrectangle
	ZSDRAWline,												// _SDRAWline
	ZSDRAWcircle,											// _SDRAWcircle
	ZSDRAWtext,												// _SDRAWtext
	ZSDRAWpoly,												// _SDRAWpoly
	M3interpVec,											// M3interpVec
	M3interpVecF,											// M3interpVecF
	M3interpAng,											// M3interpAng
	M3interpAngF,											// M3interpAngF
	ZM3videoInfos											// M3videoInfos
};



//////////////////////////////////////////////////////////////////////////////////////////////
///		Definition du nombre de paramètres
//////////////////////////////////////////////////////////////////////////////////////////////
int ZooNArg[NbZooPKG]=
{
	// ----------> Callback de rendu <-----------
	TYPVAR,													// 3D_NOCHANGE
	3,														// M3setRenderCallBack

	1,														// MX3TestSurfaceZbuf

	1,
	2,
	
	// ----------> Anciennes fonctions <-----------
	TYPTYPE,												// S3d
	TYPTYPE,												// H3d
	6,														// M3initialize
	1,														// M3desalloc
	TYPTYPE,												// HMat3d
	TYPTYPE,												// HTx3d
	5,														// M3scanlineInfo
	3,														// M3updateTexture
	3,														// M3importTexture
	3,														// M3updateTexture16
	3,														// M3importTexture16
	6,														// M3scanline
	6,														// M3scanlinem
	1,														// M3textureTotalSize


	// -----------> Gestion de session <-----------
	TYPVAR,TYPVAR,TYPVAR,									// SURFACE_FULLSCREEN	SURFACE_WINDOWED	SURFACE_NULL
	6,														// M3create
	6,														// MX3create
	1,														// MX3createSession
	1,														// M3destroy
	1,														// M3freeMemory
	1,														// M3reset
	TYPVAR,TYPVAR,											// ENGINE_HARDWARE     ENGINE_SOFTWARE
	0,														// _GETengineState
	3,														// _CRsurface     
	3,														// _CRfullscreenSurface
	1,														// _GETwindowFromFullscreenSurface
	0,														// _GETsurfaceState
	1,														// _DSsurface
	2,														// _FILLsurface
	1,														// _GETsurfaceSize
	8,														// _BLTsurface  
	1,														// _BLTsurfaceFullScreen
	9,														// _Bitmap2Surface  
	9,														// _Surface2Bitmap  
	9,														// _Surface2Surface 

	
	// -----------> Gestion des objets <-----------

	// ---> Gestion hierarchique <---
	TYPVAR,TYPVAR,TYPVAR,TYPVAR,TYPVAR,						// M3_MESH   M3_CAM      M3_LIGHT   M3_SHELL		M3_TOPO
	TYPVAR,TYPVAR,TYPVAR,TYPVAR,TYPVAR,						// M3_COLL   M3_SPRITE   M3_ANIM	M3_COLOR_LIGHT	M3_PARTICLE
	TYPVAR,TYPVAR,											// M3_LISTENER	M3_SOUND

	3,														// M3load
	3,														// M3loadString
	1,														// M3createShell
	2,														// M3delObj
	2,														// M3copyObj
	2,														// M3getObj
	2,														// M3objName
	2,														// M3getFather
	2,														// M3getFirstSon
	2,														// M3getBrother
	2,														// M3bigFather
	3,														// M3isFather
	2,														// M3unLink
	3,														// M3link
	3,														// M3renameObj
	1,														// M3listOfBigFathers
	2,														// M3getObjType

	// ----> Gestion géométrique <----
	TYPVAR,													// RANGE_INFINITY
	TYPVAR,													// RANGE_INFINITY_F
	3,														// M3setObjRange
	2,														// M3getObjRange
	3,														// M3setObjRangeF
	2,														// M3getObjRangeF
	3,														// M3setObjVec
	3,														// M3setObjVecF
	2,														// M3getObjVec
	2,														// M3getObjVecF
	3,														// M3setObjAng
	3,														// M3setObjAngF
	2,														// M3getObjAng
	2,														// M3getObjAngF
	3,														// M3setObjScale
	3,														// M3setObjScaleF
	2,														// M3getObjScale
	2,														// M3getObjScaleF
	3,														// M3movObj
	3,														// M3movObjF
	3,														// M3rotateObj
	3,														// M3rotateObjF
	3,														// M3movObjExt
	3,														// M3movObjExtF
	3,														// M3rotateObjExt
	3,														// M3rotateObjExtF
	2,														// M3calcMat
	2,														// M3getObjVecRender
	2,														// M3getObjVecRenderF
	2,														// M3getObjMatrixRender
	2,														// M3getObjMatrixRenderF
	2,														// M3getCamera
	3,														// M3setCamera
	3,														// M3calcPosRef
	3,														// M3calcPosRefF
	1,														// M3angularFromMatrix
	1,														// M3angularFromMatrixF
	2,														// M3getRadius
	2,														// M3getRadiusF
	3,														// M3calcProj
	3,														// M3calcProjF
	3,														// M3areMeshesCulled
	3,														// M3isMeshCulledByOthers
	2,														// M3angularTarget
	2,														// M3angularTargetF
	3,														// M3getGlobalVec
	3,														// M3getGlobalVecF



	// ----> Gestion topologique <----
	1,														// M3listALLtopos
	2,														// M3getTopo
	1,														// M3createTopo
	2,														// M3cleanTopo
	2,														// M3topoCount
	6,														// M3topoAddFace
	6,														// M3topoAddFaceF
	4,														// M3setFaceVertRef
	3,														// M3getFaceVertRef
	4,														// M3setFaceMaterial
	3,														// M3getFaceMaterial
	5,														// M3setFaceTexCoord
	5,														// M3setFaceTexCoordF
	4,														// M3getFaceTexCoord
	4,														// M3getFaceTexCoordF
	2,														// M3listOfPolygons
	2,														// M3listOfPolygonsF
	3,														// M3setPolygons
	3,														// M3setPolygonsF
	3,														// M3deltaPolygons
	3,														// M3deltaPolygonsF
	5,														// M3morphPolygons
	5,														// M3morphPolygonsF
	3,														// M3topoAddVertex
	3,														// M3topoAddVertexF
	3,														// M3topoAddVertices
	3,														// M3topoAddVerticesF
	2,														// M3listOfVertices
	2,														// M3listOfVerticesF
	4,														// M3topoSetVertex
	4,														// M3topoSetVertexF
	3,														// M3topoGetVertex
	3,														// M3topoGetVertexF
	3,														// M3setVertices
	3,														// M3setVerticesF
	4,														// M3deltaVertex
	4,														// M3deltaVertexF
	3,														// M3deltaVertices
	3,														// M3deltaVerticesF
	6,														// M3morphVertex
	6,														// M3morphVertexF
	5,														// M3morphVertices
	5,														// M3morphVerticesF
	3,														// M3listOfColorVertices
	5,														// M3topoSetColorVertex
	4,														// M3topoGetColorVertexF
	4,														// M3setColorVertices
	4,														// M3convVrt
	4,														// M3convVrtF
	4,														// M3convVec
	4,														// M3convVecF

	// ------> Gestion de mesh <------
	TYPVAR,													// MESH_STATIC
	TYPVAR,													// MESH_MULTI_TOPO
	TYPVAR,													// MESH_NOT_CLICKABLE
	2,														// M3createMesh
	3,														// M3meshSetMultiTopo
	2,														// M3meshGetMultiTopo
	2,														// M3meshGetActiveTopo
	3,														// M3meshSetTopology
	2,														// M3meshGetTopology
	3,														// M3meshSetType
	2,														// M3meshGetType
	3,														// M3distance
	3,														// M3save
	2,														// M3recListOfMaterials



	// ---------> Gestion des Materiaux <----------
	TYPVAR,TYPVAR,TYPVAR,									// MAT_COLOR1     MAT_COLOR2		MAT_COLOR_VERTEX 
	TYPVAR,TYPVAR,											// MAT_TEXTURED   MAT_TEXTURED_BIS  
	TYPVAR,TYPVAR,											// MAT_LIGHT	  MAT_GOURAUD
	TYPVAR,TYPVAR,											// MAT_TRANSP	  MAT_ENV
	
	1,														// M3listALLMaterials
	2,														// M3createMaterial
	2,														// M3getMat
	2,														// M3materialName
	3,														// M3renameMat
	2,														// M3fillMat
	2,														// M3fillMatObj
	2,														// M3recursFillMatObj
	2,														// M3getType
	2,														// M3getRealType
	3,														// M3setType
	2,														// M3getMaterialFlat
	3,														// M3setMaterialFlat
	2,														// M3getMaterialTransparency
	3,														// M3getMaterialTransparency
	3,														// M3getMaterialColor
	4,														// M3setMaterialColor
	2,														// M3textureFromMaterial
	2,														// M3textureBISFromMaterial
	3,														// M3chgMaterialTexture
	3,														// M3chgMaterialTextureBIS
	2,														// M3getMaterialMultitex
	3,														// M3setMaterialMultitex
	3,														// M3setMaterialAmbient
	2,														// M3getMaterialAmbient
	3,														// M3setMaterialDiffuse
	2,														// M3getMaterialDiffuse
	3,														// M3setMaterialSpecular
	2,														// M3getMaterialSpecular
	2,														// M3materialCount
	2,														// M3listOfMaterials
	3,														// M3copyObjMaterial
	3,														// M3copyMaterial
 	4,														// M3chgObjMaterial
	5,														// M3shiftTextureXY
	5,														// M3shiftTextureXYF
	2,														// M3saveMat
	2,														// M3saveMaterial



	// ---------> Gestion des Textures <----------
	TYPVAR,													// TEX_MIPMAP
	2,														// M3textureSetGeneralDefaultType
	3,														// M3textureSetType
	2,														// M3textureGetType
	1,														// M3listALLTextures
	2,														// M3getTexture
	2,														// M3textureName
	3,														// M3renameTexture
	2,														// M3textureCount
	2,														// M3copyMaterialTexture
	2,														// M3isTextureFilled
	2,														// M3fillTexture
	2,														// M3freeTexture
	2,														// M3getTransparencyColor
	3,														// M3setTransparencyColor
	2,														// M3createTexture



	// ------------> Gestion de Rendu <------------
	0,														// MX3hardware
	0,														// MX3getDeviceList
	6,														// MX3renderEx
	6,														// MX3renderExF
	6,														// MX3dRender
	6,														// MX3RenderM
	6,														// MX3wire
	6,														// MX3wirem
	6,														// MX3wireOrtho
	4,														// MX3RenderInfo
	4,														// MX3RenderInfoF
	3,														// M3blitTexture
	3,														// M3blitTexture16
	2,														// M3filter
	1,														// M3nbVisiblePoly
	1,														// M3nbUsedPolygons



	// ---------> Gestion des Collisions <---------
	2,														// M3createSphere
	2,														// M3createObb
	2,														// M3calcObb
	2,														// M3firstRadius
	3,														// M3testInter
	5,														// M3testColl
	5,														// M3testCollF

	2,														// M3createExactModel
	2,														// M3destroyExactModel
	3,														// M3testExactInter
	4,														// M3testExactColl


	// ---------> Gestion des Animations <---------
	TYPVAR,TYPVAR,TYPVAR,									// ANIM_POS		ANIM_ANG	ANIM_TOP
	3,														// M3setAnimKey
	3,														// M3setAnimKeyF
	5,														// M3setAnimKey2
	5,														// M3setAnimKey2F
	5,														// M3applyAnimKey
	5,														// M3applyAnimKeyF
	8,														// M3applyAnimKey2
	8,														// M3applyAnimKey2F
	2,														// M3getAnimLength



	// ----------> Gestion des Lumières <----------
	TYPVAR,TYPVAR,TYPVAR,TYPVAR,							// LIGHT_AMBIENT	LIGHT_PARA		LIGHT_OMNI		LIGHT_SPOT
	7,														// M3createLight
	2,														// M3getLight
	3,														// M3setLight
	8,														// M3createColorLight
	2,														// M3getColorLight
	9,														// M3setColorLight



	// ----------> Gestion des Sprites <-----------
	5,														// M3createSprite
	5,														// M3createSpriteF
	6,														// M3setSprite
	6,														// M3setSpriteF
	2,														// M3getSprite
	2,														// M3getSpriteF
	4,														// M3setSpriteTexCoord
	4,														// M3setSpriteTexCoordF
	2,														// M3getSpriteTexCoord
	2,														// M3getSpriteTexCoordF
	4,														// M3setSpriteVrtColors
	2,														// M3getSpriteVrtColors
	3,														// M3setSpriteAngle
	3,														// M3setSpriteAngleF
	2,														// M3getSpriteAngle
	2,														// M3getSpriteAngleF





	// ----------> Opérations diverses <-----------
	10,														// _SDRAWrectangle
	8,														// _SDRAWline
	9,														// _SDRAWcircle
	7,														// _SDRAWtext
	8,														// _SDRAWpoly
	3,														// M3interpVec
	3,														// M3interpVecF
	3,														// M3interpAng
	3,														// M3interpAngF
	0														// M3videoInfos
};



//////////////////////////////////////////////////////////////////////////////////////////////
///		Definition des grammaires fontionnelles
//////////////////////////////////////////////////////////////////////////////////////////////
char* ZooType[NbZooPKG]=
{
	// ----------> Callback de rendu <-----------
	"[[[[F F F] I I] r1] [[HMat3d I F F F F I F F F F I F F F F] r1]]",			// 3D_NOCHANGE
	"fun [S3d H3d fun [H3d] [[[[F F F] I I] r1] [[HMat3d I F F F F I F F F F I F F F F] r1]]] H3d",		// M3setRenderCallback

	"fun [ObjSurface] I",										// MX3TestSurfaceZbuf

	"fun [I] I",
	"fun [S3d H3d] I",

	// ----------> Anciennes fonctions <-----------
	NULL,														// S3d
	NULL,														// H3d
	"fun [I I I I I I] S3d",									// M3initialize
	"fun [S3d] I",												// M3desalloc
	NULL,														// HMat3d
	NULL,														// HTx3d
	"fun [S3d ObjBitmap H3d I I] [H3d HMat3d I I I]",			// M3scanlineInfo
	"fun [S3d HTx3d ObjBitmap8] I",								// M3updateTexture
	"fun [S3d HTx3d ObjBitmap8] I",								// M3importTexture
	"fun [S3d HTx3d ObjBitmap] I",								// M3updateTexture16
	"fun [S3d HTx3d ObjBitmap] I",								// M3importTexture16
	"fun [S3d ObjBitmap H3d I I I] H3d",						// M3scanline
	"fun [S3d ObjBitmap H3d I I I] [H3d HMat3d]",				// M3scanlinem
	"fun [S3d] I",												// M3textureTotalSize

	
	// -----------> Gestion de session <-----------
	"I","I","I",												// SURFACE_FULLSCREEN	SURFACE_WINDOWED	SURFACE_NULL
	"fun [Chn I I I I I] S3d",									// M3create
	"fun [Chn I I I I I] S3d",									// MX3create
	"fun [Chn] S3d",											// MX3createSession
	"fun [S3d] I",												// M3destroy
	"fun [S3d] I",												// M3freeMemory
	"fun [S3d] I",												// M3reset
	"I","I",													// ENGINE_HARDWARE     ENGINE_SOFTWARE
	"fun [] I",													// _GETengineState
	"fun [Chn I I] ObjSurface",									// _CRsurface
	"fun [Chn I I] ObjSurface",									// _CRfullscreenSurface
	"fun [ObjSurface] ObjWin",									// _GETwindowFromFullscreenSurface
	"fun [] I",													// _GETsurfaceState
	"fun [ObjSurface] I",										// _DSsurface
	"fun [ObjSurface I] ObjSurface",							// _FILLsurface
	"fun [ObjSurface] [I I]",									// _GETsurfaceSize
	"fun [ObjWin I I ObjSurface I I I I] ObjSurface",			// _BLTsurface    
	"fun [ObjSurface] ObjSurface",								// _BLTsurfaceFullScreen
	"fun [ObjSurface I I ObjBitmap I I I I I] ObjSurface",		// _Bitmap2Surface
	"fun [ObjBitmap I I ObjSurface I I I I I] ObjBitmap",		// _Surface2Bitmap
	"fun [ObjSurface I I ObjSurface I I I I I] ObjSurface",		// _Surface2Surface


	// -----------> Gestion des objets <-----------

	// ---> Gestion hierarchique <---
	"I","I","I","I","I",										// M3_MESH   M3_CAM      M3_LIGHT   M3_SHELL		M3_TOPO
	"I","I","I","I","I",										// M3_COLL   M3_SPRITE   M3_ANIM	M3_COLOR_LIGHT	M3_PARTICLE
	"I","I",													// M3_LISTENER	M3_SOUND

	"fun [S3d S H3d] I",										// M3load
	"fun [S3d S H3d] I",										// M3loadString
	"fun [S3d] H3d",											// M3createShell
	"fun [S3d H3d] I",											// M3delObj
	"fun [S3d H3d] H3d",										// M3copyObj
	"fun [S3d S] H3d",											// M3getObj
	"fun [S3d H3d] S",											// M3objName
	"fun [S3d H3d] H3d",										// M3getFather
	"fun [S3d H3d] H3d",										// M3getFirstSon
	"fun [S3d H3d] H3d",										// M3getBrother
	"fun [S3d H3d] H3d",										// M3bigFather
	"fun [S3d H3d H3d] I",										// M3isFather
	"fun [S3d H3d] I",											// M3unLink
	"fun [S3d H3d H3d] I",										// M3link
	"fun [S3d H3d S] I",										// M3renameObj
	"fun [S3d] [H3d r1]",										// M3listOfBigFathers
	"fun [S3d H3d] I",											// M3getObjType

	// ----> Gestion géométrique <----
	"I",														// RANGE_INFINITY
	"F",														// RANGE_INFINITY_F
	"fun [S3d H3d [I I]] I",									// M3setObjRange
	"fun [S3d H3d] [I I]",										// M3getObjRange
	"fun [S3d H3d [F F]] I",									// M3setObjRangeF
	"fun [S3d H3d] [F F]",										// M3getObjRangeF
	"fun [S3d H3d [I I I]] I",									// M3setObjVec
	"fun [S3d H3d [F F F]] I",									// M3setObjVecF
	"fun [S3d H3d] [I I I]",									// M3getObjVec
	"fun [S3d H3d] [F F F]",									// M3getObjVecF
	"fun [S3d H3d [I I I]] I",									// M3setObjAng
	"fun [S3d H3d [F F F]] I",									// M3setObjAngF
	"fun [S3d H3d] [I I I]",									// M3getObjAng
	"fun [S3d H3d] [F F F]",									// M3getObjAngF
	"fun [S3d H3d I] I",										// M3setObjScale
	"fun [S3d H3d F] I",										// M3setObjScaleF
	"fun [S3d H3d] I",											// M3getObjScale
	"fun [S3d H3d] F",											// M3getObjScaleF
	"fun [S3d H3d [I I I]] I",									// M3movObj
	"fun [S3d H3d [F F F]] I",									// M3movObjF
	"fun [S3d H3d [I I I]] I",									// M3rotateObj
	"fun [S3d H3d [F F F]] I",									// M3rotateObjF
	"fun [S3d H3d [I I I]] I",									// M3movObjExt
	"fun [S3d H3d [F F F]] I",									// M3movObjExtF
	"fun [S3d H3d [I I I]] I",									// M3rotateObjExt
	"fun [S3d H3d [F F F]] I",									// M3rotateObjExtF
	"fun [S3d H3d] I",											// M3calcMat
	"fun [S3d H3d] [I I I]",									// M3getObjVecRender
	"fun [S3d H3d] [F F F]",									// M3getObjVecRenderF
	"fun [S3d H3d] [[I I I] [I I I] [I I I]]",					// M3getObjMatrixRender
	"fun [S3d H3d] [[F F F] [F F F] [F F F]]",					// M3getObjMatrixRenderF
	"fun [S3d H3d] [[I I] [I I] [I I I]]",						// M3getCamera
	"fun [S3d H3d [[I I] [I I] [I I I]]] I",					// M3setCamera
	"fun [S3d H3d H3d] [[I I I] [[I I I] [I I I] [I I I]]]",	// M3calcPosRef
	"fun [S3d H3d H3d] [[F F F] [[F F F] [F F F] [F F F]]]",	// M3calcPosRefF
	"fun [[[I I I] [I I I] [I I I]]] [I I I]",					// M3angularFromMatrix
	"fun [[[F F F] [F F F] [F F F]]] [F F F]",					// M3angularFromMatrixF
	"fun [S3d H3d] I",											// M3getRadius
	"fun [S3d H3d] I",											// M3getRadiusF
	"fun [S3d H3d H3d] [I I I I]",								// M3calcProj
	"fun [S3d H3d H3d] [I I F F]",								// M3calcProjF
	"fun [S3d H3d [H3d r1]] [I r1]",							// M3areMeshesCulled
	"fun [S3d H3d [H3d r1]] [I r1]",							// M3isMeshCulledByOthers
	"fun [[I I I] [I I I]] [I I I]",							// M3angularTarget
	"fun [[F F F] [F F F]] [F F F]",							// M3angularTargetF
	"fun [S3d H3d [I I I]] [I I I]",							// M3getGlobalVec
	"fun [S3d H3d [F F F]] [F F F]",							// M3getGlobalVecF

	// ----> Gestion topologique <----
	"fun [S3d] [H3d r1]",										// M3listALLtopos
	"fun [S3d S] H3d",											// M3getTopo
	"fun [S3d] H3d",											// M3createTopo
	"fun [S3d H3d] I",											// M3cleanTopo
	"fun [S3d H3d] I",											// M3topoCount
	"fun [S3d H3d [I I I] [[I I] [I I] [I I]] [[I I] [I I] [I I]] HMat3d] I",			// M3topoAddFace
	"fun [S3d H3d [I I I] [[F F] [F F] [F F]] [[F F] [F F] [F F]] HMat3d] I",			// M3topoAddFaceF
	"fun [S3d H3d I [I I I]] I",								// M3setFaceVertRef
	"fun [S3d H3d I] [I I I]",									// M3getFaceVertRef
	"fun [S3d H3d I HMat3d] I",									// M3setFaceMaterial
	"fun [S3d H3d I] HMat3d",									// M3getFaceMaterial
	"fun [S3d H3d I I [[I I] [I I] [I I]]] I",					// M3setFaceTexCoord
	"fun [S3d H3d I I [[F F] [F F] [F F]]] I",					// M3setFaceTexCoordF
	"fun [S3d H3d I I] [[I I] [I I] [I I]]",					// M3getFaceTexCoord
	"fun [S3d H3d I I] [[F F] [F F] [F F]]",					// M3getFaceTexCoordF
	"fun [S3d H3d] [[HMat3d [[I I I] r1]] r1]",					// M3listOfPolygons
	"fun [S3d H3d] [[HMat3d [[I F F] r1]] r1]",					// M3listOfPolygonsF
	"fun [S3d H3d [[HMat3d [[I I I] r1]] r1]] I",				// M3setPolygons
	"fun [S3d H3d [[HMat3d [[I F F] r1]] r1]] I",				// M3setPolygonsF
	"fun [S3d H3d [[HMat3d [[I I I] r1]] r1]] I",				// M3deltaPolygons
	"fun [S3d H3d [[HMat3d [[I F F] r1]] r1]] I",				// M3deltaPolygonsF
	"fun [S3d H3d [[HMat3d [[I I I] r1]] r1] [[HMat3d [[I I I] r1]] r1] I] I",			// M3morphPolygons
	"fun [S3d H3d [[HMat3d [[I F F] r1]] r1] [[HMat3d [[I F F] r1]] r1] F] I",			// M3morphPolygonsF
	"fun [S3d H3d [I I I]] I",									// M3topoAddVertex
	"fun [S3d H3d [F F F]] I",									// M3topoAddVertexF
	"fun [S3d H3d [[I I I] r1]] I",								// M3topoAddVertices
	"fun [S3d H3d [[F F F] r1]] I",								// M3topoAddVerticesF
	"fun [S3d H3d] [[I I I] r1]",								// M3listOfVertices
	"fun [S3d H3d] [[F F F] r1]",								// M3listOfVerticesF
	"fun [S3d H3d I [I I I]] I",								// M3topoSetVertex
	"fun [S3d H3d I [F F F]] I",								// M3topoSetVertexF
	"fun [S3d H3d I] [I I I]",									// M3topoGetVertex
	"fun [S3d H3d I] [F F F]",									// M3topoGetVertexF
	"fun [S3d H3d [[I I I] r1]] I",								// M3setVertices
	"fun [S3d H3d [[F F F] r1]] I",								// M3setVerticesF
	"fun [S3d H3d I [I I I]] I",								// M3deltaVertex
	"fun [S3d H3d I [F F F]] I",								// M3deltaVertexF
	"fun [S3d H3d [[I I I] r1]] I",								// M3deltaVertices
	"fun [S3d H3d [[F F F] r1]] I",								// M3deltaVerticesF
	"fun [S3d H3d I [I I I] [I I I] I] I",						// M3morphVertex
	"fun [S3d H3d I [F F F] [F F F] F] I",						// M3morphVertexF
	"fun [S3d H3d [[I I I] r1] [[I I I] r1] I] I",				// M3morphVertices
	"fun [S3d H3d [[F F F] r1] [[F F F] r1] F] I",				// M3morphVerticesF
	"fun [S3d H3d I] [I r1]",									// M3listOfColorVertices
	"fun [S3d H3d I I I] I",									// M3topoSetColorVertex
	"fun [S3d H3d I I] I",										// M3topoGetColorVertexF
	"fun [S3d H3d I [I r1]] I",									// M3setColorVertices
	"fun [S3d H3d H3d [I I I]] [I I I]",						// M3convVrt
	"fun [S3d H3d H3d [F F F]] [F F F]",						// M3convVrtF
	"fun [S3d H3d H3d [I I I]] [I I I]",						// M3convVec
	"fun [S3d H3d H3d [F F F]] [F F F]",						// M3convVecF

	// ------> Gestion de mesh <------
	"I",														// MESH_STATIC
	"I",														// MESH_MULTI_TOPO
	"I",														// MESH_NOT_CLICKABLE
	"fun [S3d H3d] H3d",										// M3createMesh
	"fun [S3d H3d [[H3d I] r1]] I",								// M3meshSetMultiTopo
	"fun [S3d H3d] [[H3d I] r1]",								// M3meshGetMultiTopo
	"fun [S3d H3d] H3d",										// M3meshGetActiveTopo
	"fun [S3d H3d H3d] I",										// M3meshSetTopology
	"fun [S3d H3d] H3d",										// M3meshGetTopology
	"fun [S3d H3d I] I",										// M3meshSetType
	"fun [S3d H3d] I",											// M3meshGetType
	"fun [S3d H3d H3d] I",										// M3distance
	"fun [S3d H3d I] S",										// M3save
	"fun [S3d H3d] [HMat3d r1]",								// M3recListOfMaterials



	// ---------> Gestion des Materiaux <----------
	"I","I","I",												// MAT_COLOR1     MAT_COLOR2		MAT_COLOR_VERTEX 
	"I","I",													// MAT_TEXTURED   MAT_TEXTURED_BIS  
	"I","I",													// MAT_LIGHT	  MAT_GOURAUD
	"I","I",													// MAT_TRANSP	  MAT_ENV

	"fun [S3d] [HMat3d r1]",									// M3listALLMaterials
	"fun [S3d S] HMat3d",										// M3createMaterial
	"fun [S3d S] HMat3d",										// M3getMat
	"fun [S3d HMat3d] S",										// M3materialName
	"fun [S3d HMat3d S] I",										// M3renameMat
	"fun [S3d HMat3d] I",										// M3fillMat
	"fun [S3d H3d] I",											// M3fillMatObj
	"fun [S3d H3d] I",											// M3recursFillMatObj
	"fun [S3d HMat3d] I",										// M3getType
	"fun [S3d HMat3d] I",										// M3getRealType
	"fun [S3d HMat3d I] I",										// M3setType
	"fun [S3d HMat3d] I",										// M3getMaterialFlat
	"fun [S3d HMat3d I] I",										// M3setMaterialFlat
	"fun [S3d HMat3d] I",										// M3getMaterialTransparency
	"fun [S3d HMat3d I] I",										// M3setMaterialTransparency
	"fun [S3d HMat3d I] I",										// M3getMaterialColor
	"fun [S3d HMat3d I I] I",									// M3setMaterialColor
	"fun [S3d HMat3d] HTx3d",									// M3textureFromMaterial
	"fun [S3d HMat3d] HTx3d",									// M3textureBISFromMaterial
	"fun [S3d HMat3d HTx3d] I",									// M3chgMaterialTexture
	"fun [S3d HMat3d HTx3d] I",									// M3chgMaterialTextureBIS
	"fun [S3d HMat3d] I",										// M3getMaterialMultitex
	"fun [S3d HMat3d I] I",										// M3setMaterialMultitex
	"fun [S3d HMat3d I] I",										// M3setMaterialAmbient
	"fun [S3d HMat3d] I",										// M3getMaterialAmbient
	"fun [S3d HMat3d I] I",										// M3setMaterialDiffuse
	"fun [S3d HMat3d] I",										// M3getMaterialDiffuse
	"fun [S3d HMat3d I] I",										// M3setMaterialSpecular
	"fun [S3d HMat3d] I",										// M3getMaterialSpecular
	"fun [S3d HMat3d] I",										// M3materialCount
	"fun [S3d H3d] [HMat3d r1]",								// M3listOfMaterials
	"fun [S3d H3d HMat3d] HMat3d",								// M3copyObjMaterial
	"fun [S3d HMat3d S] HMat3d",								// M3copyMaterial
	"fun [S3d H3d HMat3d HMat3d] I",							// M3chgObjMaterial
	"fun [S3d H3d HMat3d I I] I",								// M3shiftTextureXY
	"fun [S3d H3d HMat3d F F] I",								// M3shiftTextureXYF
	"fun [S3d HMat3d] S",										// M3saveMat
	"fun [S3d HMat3d] S",										// M3saveMaterial



	// ---------> Gestion des Textures <----------
	"I",														// TEX_MIPMAP
	"fun [S3d I] I",											// M3textureSetGeneralDefaultType
	"fun [S3d HTx3d I] I",										// M3textureSetType
	"fun [S3d HTx3d] I",										// M3textureGetType
	"fun [S3d] [HTx3d r1]",										// M3listALLTextures
	"fun [S3d S] HTx3d",										// M3getTexture
	"fun [S3d HTx3d] S",										// M3textureName
	"fun [S3d HTx3d S] I",										// M3renameTexture
	"fun [S3d HTx3d] I",										// M3textureCount
	"fun [S3d HMat3d] HTx3d",									// M3copyMaterialTexture
	"fun [S3d HTx3d] I",										// M3isTextureFilled
	"fun [S3d HTx3d] I",										// M3fillTexture
	"fun [S3d HTx3d] I",										// M3freeTexture
	"fun [S3d HTx3d] I",										// M3getTransparencyColor
	"fun [S3d HTx3d I] I",										// M3setTransparencyColor
	"fun [S3d S] HTx3d",										// M3createTexture



	// ------------> Gestion de Rendu <------------
	"fun [] I",													// MX3hardware
	"fun [] [[S S] r1]",										// MX3getDeviceList
	"fun [S3d ObjSurface H3d I I I] [H3d HMat3d I I I I I]",	// MX3renderEx
	"fun [S3d ObjSurface H3d I I I] [H3d HMat3d I F F F F]",	// MX3renderExF
	"fun [S3d ObjSurface H3d I I I] H3d",						// MX3dRender
	"fun [S3d ObjSurface H3d I I I] [H3d HMat3d]",				// MX3RenderM
	"fun [S3d ObjSurface H3d I I I] [H3d HMat3d]",				// MX3wire
	"fun [S3d ObjSurface H3d I I I] [H3d HMat3d]",				// MX3wirem
	"fun [S3d ObjSurface H3d I I I] [H3d HMat3d]",				// MX3wireOrtho
	"fun [S3d H3d I I] [H3d HMat3d I I I]",						// MX3RenderInfo
	"fun [S3d H3d I I] [H3d HMat3d F F F]",						// MX3RenderInfoF
	"fun [S3d HTx3d ObjBitmap8] I",								// M3blitTexture
	"fun [S3d HTx3d ObjBitmap] I",								// M3blitTexture16
	"fun [ObjBitmap S] ObjBitmap",								// M3filter
	"fun [S3d] I",												// M3nbVisiblePoly
	"fun [S3d] I",												// M3nbUsedPolygons



	// ---------> Gestion des Collisions <---------
	"fun [S3d I] H3d",											// M3createSphere
	"fun [S3d [I I I]] H3d",									// M3createObb
	"fun [S3d H3d] [[I I I] [I I I]]",							// M3calcObb
	"fun [S3d H3d] I",											// M3firstRadius
	"fun [S3d H3d H3d] [H3d H3d]",								// M3testInter
	"fun [S3d H3d H3d [I I I] I] [H3d H3d [I I I] [I I I]]",	// M3testColl
	"fun [S3d H3d H3d [F F F] F] [H3d H3d [F F F] [F F F]]",	// M3testCollF

	"fun [S3d H3d] I",											// M3createExactModel
	"fun [S3d H3d] I",											// M3destroyExactModel
	"fun [S3d H3d H3d] I",										// M3testExactInter
	"fun [S3d H3d H3d [F F F]] [F F F]",						// M3testExactColl



	// ---------> Gestion des Animations <---------
	"I","I","I",												// ANIM_POS		ANIM_ANG	ANIM_TOP
	"fun [S3d H3d I] I",										// M3setAnimKey
	"fun [S3d H3d F] I",										// M3setAnimKeyF
	"fun [S3d H3d I I I] I",									// M3setAnimKey2
	"fun [S3d H3d F F F] I",									// M3setAnimKey2F
	"fun [S3d H3d H3d I I] I",									// M3applyAnimKey
	"fun [S3d H3d H3d F I] I",									// M3applyAnimKeyF
	"fun [S3d H3d H3d H3d I I I I] I",							// M3applyAnimKey2
	"fun [S3d H3d H3d H3d F F F I] I",							// M3applyAnimKey2F
	"fun [S3d H3d] I",											// M3getAnimLength



	// ----------> Gestion des Lumières <----------
	"I","I","I","I",											// LIGHT_AMBIENT	LIGHT_PARA		LIGHT_OMNI		LIGHT_SPOT
	"fun [S3d I I I I I I] H3d",								// M3createLight
	"fun [S3d H3d] [I I I I I I]",								// M3getLight
	"fun [S3d H3d [I I I I I I]] I",							// M3setLight
	"fun [S3d I I I I I I I] H3d",								// M3createColorLight
	"fun [S3d H3d] [I I I I I I I]",							// M3getColorLight
	"fun [S3d H3d I I I I I I I] I",							// M3setColorLight



	// ----------> Gestion des Sprites <-----------
	"fun [S3d I I HMat3d I] H3d",								// M3createSprite
	"fun [S3d F F HMat3d I] H3d",								// M3createSpriteF
	"fun [S3d H3d I I HMat3d I] I",								// M3setSprite
	"fun [S3d H3d F F HMat3d I] I",								// M3setSpriteF
	"fun [S3d H3d] [I I HMat3d I]",								// M3getSprite
	"fun [S3d H3d] [F F HMat3d I]",								// M3getSpriteF
	"fun [S3d H3d [[I I] r1] [[I I] r1]] I",					// M3setSpriteTexCoord
	"fun [S3d H3d [[F F] r1] [[F F] r1]] I",					// M3setSpriteTexCoordF
	"fun [S3d H3d] [[[I I] r1] [[I I] r1]]",					// M3getSpriteTexCoord
	"fun [S3d H3d] [[[F F] r1] [[F F] r1]]",					// M3getSpriteTexCoordF
	"fun [S3d H3d [I r1] [I r1]] I",							// M3setSpriteVrtColors
	"fun [S3d H3d] [[I r1] [I r1]]",							// M3getSpriteVrtColors
	"fun [S3d H3d I] I",										// M3setSpriteAngle
	"fun [S3d H3d F] I",										// M3setSpriteAngleF
	"fun [S3d H3d] I",											// M3getSpriteAngle
	"fun [S3d H3d] F",											// M3getSpriteAngleF



	// ----------> Opérations diverses <-----------
	"fun [ObjSurface I I I I I I I I I] ObjSurface",			// _SDRAWrectangle
	"fun [ObjSurface I I I I I I I] ObjSurface",				// _SDRAWline
	"fun [ObjSurface I I I I I I I I] ObjSurface",				// _SDRAWcircle
	"fun [ObjSurface ObjFont I I I I S] ObjSurface",			// _SDRAWtext
	"fun [ObjSurface I tab[I I] I I I I I] ObjSurface",			// _SDRAWpoly
	"fun [[I I I] [I I I] I] [I I I]",							// M3interpVec
	"fun [[F F F] [F F F] F] [F F F]",							// M3interpVecF
	"fun [[I I I] [I I I] I] [I I I]",							// M3interpAng
	"fun [[F F F] [F F F] F] [F F F]",						// M3interpAngF
	"fun [] [S S S S]"											// M3videoInfos
};





  





///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////																											   ////
///											FONCTIONS D'APPEL DE LA DLL												///
////																											   ////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



extern "C" int SCOLloadZooEngine(mmachine m)
{
	int k;

	k = PKhardpak(m, "ZooEngine", NbZooPKG, ZooName, ZooFunc, ZooNArg, ZooType);

	return k;
}
