Add rayman2 source files
This commit is contained in:
134
Rayman_X/cpa/tempgrp/GliGlou/Drivers/KAMUI/Acces_KAMUI.c
Normal file
134
Rayman_X/cpa/tempgrp/GliGlou/Drivers/KAMUI/Acces_KAMUI.c
Normal file
@@ -0,0 +1,134 @@
|
||||
#include <kamui.h>
|
||||
/* GET*/
|
||||
#define GetX(a) a.fX
|
||||
#define GetY(a) a.fY
|
||||
#define GetZ(a) a.fZ
|
||||
#define GetPackedColor(a) *(unsigned long *)&a.uBaseRGB
|
||||
#define GetU(a) a.fU
|
||||
#define GetV(a) a.fV
|
||||
/* SET*/
|
||||
#define SetX(a,b) a.fX = b
|
||||
#define SetY(a,b) a.fY = b
|
||||
#define SetZ(a,b) a.fZ = b
|
||||
#define SetPackedColor(a,b) *(unsigned long *)&a.uBaseRGB = b
|
||||
#define SetPackedSpecular(a,b)
|
||||
#define SetU(a,b) a.fU = b
|
||||
#define SetV(a,b) a.fV = b
|
||||
#define SetU_Cpy(a,b) *(unsigned long *)&a.fU = *(unsigned long *)&b
|
||||
#define SetV_Cpy(a,b) *(unsigned long *)&a.fV = *(unsigned long *)&b
|
||||
|
||||
/* GLOBALS*/
|
||||
#define GLI_tdScreenVertx KMVERTEX_03
|
||||
extern KMVERTEXBUFFDESC VertexBufferDesc;
|
||||
KMVERTEX_03 CurrentDestXYZ[4];
|
||||
|
||||
/* Special functions*/
|
||||
#define GLI_M_RestoreCW()\
|
||||
{\
|
||||
CurrentDestXYZ[0].ParamControlWord = \
|
||||
CurrentDestXYZ[1].ParamControlWord = \
|
||||
CurrentDestXYZ[3].ParamControlWord = KM_VERTEXPARAM_NORMAL;\
|
||||
CurrentDestXYZ[2].ParamControlWord = KM_VERTEXPARAM_ENDOFSTRIP;\
|
||||
}\
|
||||
|
||||
static void GLI_BeforeDraw()
|
||||
{
|
||||
GLI_M_RestoreCW();
|
||||
};
|
||||
|
||||
|
||||
#define GLI_AfterDraw()
|
||||
|
||||
static void GLI_DrawQuad(void)
|
||||
{
|
||||
kmSetVertex(&VertexBufferDesc,&CurrentDestXYZ[0],KM_VERTEXTYPE_03,sizeof(CurrentDestXYZ[1]));
|
||||
kmSetVertex(&VertexBufferDesc,&CurrentDestXYZ[1],KM_VERTEXTYPE_03,sizeof(CurrentDestXYZ[1]));
|
||||
kmSetVertex(&VertexBufferDesc,&CurrentDestXYZ[3],KM_VERTEXTYPE_03,sizeof(CurrentDestXYZ[1]));
|
||||
kmSetVertex(&VertexBufferDesc,&CurrentDestXYZ[2],KM_VERTEXTYPE_03,sizeof(CurrentDestXYZ[1]));
|
||||
}
|
||||
/* Draw Triangle*/
|
||||
GLI_FuncNodeBegin(GLI_vDrawTriangle)
|
||||
{
|
||||
kmSetVertex(&VertexBufferDesc,&CurrentDestXYZ[0],KM_VERTEXTYPE_03,3*sizeof(CurrentDestXYZ[0]));
|
||||
}
|
||||
|
||||
void GLI_vDrawZSortedTriangle(void *p_3Point)
|
||||
{
|
||||
}
|
||||
void GLI_vDrawZSortedQuad(void *p_3Point)
|
||||
{
|
||||
}
|
||||
|
||||
void GLI_vAddDrawFunc()
|
||||
{
|
||||
GLI_M_AddFunc(GLI_vDrawTriangle);
|
||||
}
|
||||
|
||||
|
||||
/* GLI_BIG_GLOBALS -> lClippingModeMask*/
|
||||
void GLI_ReComputeClippingMask()
|
||||
{
|
||||
*(float *)&fX_CMP_Optimize = 640.0f;
|
||||
*(float *)&fY_CMP_Optimize = 480.0f;
|
||||
*(float *)&fXMin_CLIP_Optimize = 100.0f;
|
||||
*(float *)&fYMin_CLIP_Optimize = 50.0f;
|
||||
*(float *)&fXMax_CLIP_Optimize = 540.0f;
|
||||
*(float *)&fYMax_CLIP_Optimize = 430.0f;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**********************************************************************************************/
|
||||
/* Name: GLI_DRV_vSendSpriteToClip*/
|
||||
/* Goal: draw a sprite*/
|
||||
/* Code: Philippe Vimont */
|
||||
/* OPTIMMIZED : No*/
|
||||
/**********************************************************************************************/
|
||||
|
||||
void GLI_DRV_vSendSpriteToClip
|
||||
(
|
||||
GLI_tdstAligned2DVector *a4_st2DVertex ,
|
||||
MTH_tdxReal xZ ,
|
||||
GLI_tdstInternalGlobalValuesFor3dEngine *p_stGlobaleMT)
|
||||
{
|
||||
GLI_BeforeDraw();
|
||||
GLI_M_InitSprite();
|
||||
SetU(CurrentDestXYZ[0],0.0f);
|
||||
SetV(CurrentDestXYZ[0],1.0f);
|
||||
SetU(CurrentDestXYZ[1],1.0f);
|
||||
SetV(CurrentDestXYZ[1],1.0f);
|
||||
SetU(CurrentDestXYZ[2],1.0f);
|
||||
SetV(CurrentDestXYZ[2],0.0f);
|
||||
SetU(CurrentDestXYZ[3],0.0f);
|
||||
SetV(CurrentDestXYZ[3],0.0f);
|
||||
GLI_DrawQuad();
|
||||
GLI_AfterDraw();
|
||||
}
|
||||
|
||||
/**********************************************************************************************/
|
||||
/* Name: GLI_DRV_vSendSpriteToClipWithUV 1.0*/
|
||||
/* Goal: */
|
||||
/* Code: Philippe Vimont / 1.0*/
|
||||
/* REM: */
|
||||
/* OPTIMMIZED : No*/
|
||||
/**********************************************************************************************/
|
||||
void GLI_DRV_vSendSpriteToClipWithUV
|
||||
(
|
||||
GLI_tdstAligned2DVector *a4_st2DVertex ,
|
||||
MTH_tdxReal *a8_stUVVertex,
|
||||
MTH_tdxReal xZ ,
|
||||
GLI_tdstInternalGlobalValuesFor3dEngine *p_stGlobaleMT)
|
||||
{
|
||||
GLI_BeforeDraw();
|
||||
GLI_M_InitSprite();
|
||||
SetU(CurrentDestXYZ[2],a8_stUVVertex[4]);
|
||||
SetV(CurrentDestXYZ[2],a8_stUVVertex[4+1]);
|
||||
SetU(CurrentDestXYZ[3],a8_stUVVertex[6]);
|
||||
SetV(CurrentDestXYZ[3],a8_stUVVertex[6+1]);
|
||||
SetU(CurrentDestXYZ[0],a8_stUVVertex[0]);
|
||||
SetV(CurrentDestXYZ[0],a8_stUVVertex[0+1]);
|
||||
SetU(CurrentDestXYZ[1],a8_stUVVertex[2]);
|
||||
SetV(CurrentDestXYZ[1],a8_stUVVertex[2+1]);
|
||||
GLI_DrawQuad();
|
||||
GLI_AfterDraw();
|
||||
}
|
374
Rayman_X/cpa/tempgrp/GliGlou/Drivers/KAMUI/Domat_KAMUI.c
Normal file
374
Rayman_X/cpa/tempgrp/GliGlou/Drivers/KAMUI/Domat_KAMUI.c
Normal file
@@ -0,0 +1,374 @@
|
||||
/******************************************************************************************
|
||||
FILE : CLIPDomat.C
|
||||
|
||||
VERS : 1.00 \ Marc Villemain - version directX5
|
||||
0.00 \ Philippe Vimont
|
||||
|
||||
DATE : 15.05.97
|
||||
Select materials
|
||||
|
||||
*******************************************************************************************/
|
||||
#include "Gli_st.h"
|
||||
#include "GLI_Defn.h"
|
||||
#include "polygon.h"
|
||||
#include "mater_st.h"
|
||||
#include "light_st.h"
|
||||
#include "PvObj_st.h"
|
||||
#include "ScrVert.h"
|
||||
#include "Liste.h"
|
||||
#include "SelecTex.h"
|
||||
#include "watrplan.h"
|
||||
#include "proj.h"
|
||||
#include "vpt3D.h"
|
||||
#include "camera.h"
|
||||
#include "material.h"
|
||||
#include "texture.h"
|
||||
#include "GliBench.h
|
||||
#include <kamui.h>
|
||||
#include "GLI_interface.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
#ifdef ZARMA
|
||||
}
|
||||
#endif
|
||||
extern KMVERTEXBUFFDESC VertexBufferDesc;
|
||||
/*extern long GLD_RenderingCounter;*/
|
||||
|
||||
extern KMVERTEX_03 CurrentDestXYZ[4];
|
||||
extern long TRYIT;
|
||||
|
||||
extern GLI_tdxValue xZFogDepth;
|
||||
/*extern GEO_tdstColor stColorDepthCuing;*/
|
||||
/*extern float xZDepthStart,xZDepthEnd,xZDepthConstant;*/
|
||||
/*extern float xFogIntensityStart;*/
|
||||
/*extern float xFogIntensityEnd;*/
|
||||
/*extern GLI_tdxValue xDepthStartSave,xZDepthEndSave;*/
|
||||
extern KMSURFACEDESC stSpecialTexture;
|
||||
extern KMSURFACEDESC stSpecialTexture20;
|
||||
extern KMSURFACEDESC stSpecialTexture21;
|
||||
extern KMVERTEXCONTEXT stRenderingContex;
|
||||
void GLI_fnSwitchTwiddled(short *p_Texture , long size );
|
||||
|
||||
short VignetteBuffer[1024L * 1024L];
|
||||
/*static long bisready = 0;*/
|
||||
/*void ZZZGLI_ZOOOOOOOOOOOORRRRRRGGGLL();*/
|
||||
#define GLI_M_ChangeRenderingParrameter( Renderingflag, Renderingvar, Renderingval) \
|
||||
{\
|
||||
if (stRenderingContex . Renderingvar != (Renderingval))\
|
||||
{\
|
||||
stRenderingContex . RenderState |= (Renderingflag);\
|
||||
stRenderingContex . Renderingvar = (Renderingval);\
|
||||
}\
|
||||
}
|
||||
|
||||
|
||||
void GLI_BigInitKamuiRendering(GLI_tdstInternalGlobalValuesFor3dEngine *p_stGlobaleMT)
|
||||
{
|
||||
memset( &stRenderingContex, 0, sizeof(stRenderingContex)); /* Crear Context*/
|
||||
stRenderingContex . RenderState = KM_DEPTHMODE | KM_CULLINGMODE | KM_SCREENCOORDINATION | KM_SHADINGMODE | KM_MODIFIER | KM_ZWRITEDISABLE | KM_SRCBLENDINGMODE | KM_DSTBLENDINGMODE| KM_SRCSELECT | KM_DSTSELECT| KM_FOGMODE | KM_USESPECULAR| KM_USEALPHA | KM_IGNORETEXTUREALPHA| KM_FLIPUV | KM_CLAMPUV| KM_FILTERMODE | KM_SUPERSAMPLE | KM_MIPMAPDADJUST | KM_TEXTURESHADINGMODE| KM_PARAMTYPE | KM_LISTTYPE | KM_COLORTYPE | KM_USESPECULAR| KM_UVFORMAT;
|
||||
stRenderingContex . ParamType = KM_POLYGON;
|
||||
stRenderingContex . ListType = KM_OPAQUE_POLYGON;
|
||||
stRenderingContex . ColorType = KM_PACKEDCOLOR;/*KM_FLOATINGCOLOR;*/
|
||||
stRenderingContex . bUseSpecular = FALSE;/*TRUE;*/
|
||||
stRenderingContex . UVFormat = KM_32BITUV;
|
||||
stRenderingContex . DepthMode = KM_GREATER;
|
||||
stRenderingContex . CullingMode = KM_NOCULLING;
|
||||
stRenderingContex . ScreenCoordination = KM_SCREEN;/*KM_PROJECTIVE;//KM_SCREEN;*/
|
||||
stRenderingContex . ShadingMode = KM_NOTEXTUREGOURAUD;
|
||||
stRenderingContex . SelectModifier = KM_NOMODIFIER;
|
||||
stRenderingContex . bZWriteDisable = FALSE;
|
||||
stRenderingContex . SRCBlendingMode = KM_ONE;
|
||||
stRenderingContex . DSTBlendingMode = KM_ZERO;
|
||||
stRenderingContex . bSRCSel = FALSE;
|
||||
stRenderingContex . bDSTSel = FALSE;
|
||||
stRenderingContex . FogMode = KM_NOFOG;
|
||||
stRenderingContex . FogMode = KM_FOGTABLE;
|
||||
stRenderingContex . bUseSpecular = FALSE;
|
||||
stRenderingContex . bUseAlpha = FALSE;
|
||||
stRenderingContex . FlipUV = KM_NOFLIP;
|
||||
stRenderingContex . ClampUV = KM_CLAMP_UV;/*KM_NOCLAMP;*/
|
||||
stRenderingContex . FilterMode = KM_BILINEAR;/*KM_POINT_SAMPLE;*/
|
||||
stRenderingContex . bSuperSample = FALSE;
|
||||
stRenderingContex . MipMapAdjust = 0x00000003;
|
||||
stRenderingContex . TextureShadingMode = KM_MODULATE_ALPHA;
|
||||
stRenderingContex . bColorClamp = FALSE;
|
||||
stRenderingContex . PaletteBank = 0;
|
||||
stRenderingContex . fFaceColorAlpha = 1.0f;
|
||||
stRenderingContex . fFaceColorRed = 1.0f;
|
||||
stRenderingContex . fFaceColorGreen = 1.0f;
|
||||
stRenderingContex . fFaceColorBlue = 1.0f;
|
||||
stRenderingContex . fOffsetColorAlpha = 1.0f;
|
||||
stRenderingContex . fOffsetColorRed = 1.0f;
|
||||
stRenderingContex . fOffsetColorGreen = 1.0f;
|
||||
stRenderingContex . fOffsetColorBlue = 1.0f;
|
||||
kmProcessVertexRenderState(&stRenderingContex);
|
||||
}
|
||||
|
||||
void GLI_INTERFACE_FUNC(GLI_vDoTextureSelection)(GLI_tdstInternalGlobalValuesFor3dEngine *p_stGlobaleMT)
|
||||
{
|
||||
static bFirst = 0;
|
||||
|
||||
if (*GLD_p_lRenderingCounter != p_stGlobaleMT->GLD_RenderingCounter)
|
||||
{
|
||||
p_stGlobaleMT->GLD_RenderingCounter = *GLD_p_lRenderingCounter;
|
||||
}
|
||||
if (!bFirst)
|
||||
{
|
||||
bFirst = 1;
|
||||
GLI_BigInitKamuiRendering(p_stGlobaleMT);
|
||||
}
|
||||
stRenderingContex . RenderState = 0;
|
||||
|
||||
if (GLI_BIG_GLOBALS->xFogIsOn)
|
||||
{
|
||||
if ( GLI_BIG_GLOBALS->p_stLastComputedFog != GLI_BIG_GLOBALS->p_stActiveFog )
|
||||
{
|
||||
GLI_vSetFogParams( GLI_BIG_GLOBALS->p_stActiveFog );
|
||||
GLI_BIG_GLOBALS->p_stLastComputedFog = GLI_BIG_GLOBALS->p_stActiveFog;
|
||||
}
|
||||
|
||||
GLI_M_ChangeRenderingParrameter(KM_FOGMODE , FogMode , KM_FOGTABLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
GLI_M_ChangeRenderingParrameter(KM_FOGMODE , FogMode , KM_NOFOG);
|
||||
}
|
||||
|
||||
|
||||
if (p_stGlobaleMT -> lCurrentDrawMask & GLI_C_lIsTestingBackface)
|
||||
{
|
||||
if (p_stGlobaleMT -> lCurrentDrawMask & GLI_C_lNotInvertBackfaces)
|
||||
{
|
||||
GLI_M_ChangeRenderingParrameter(KM_CULLINGMODE , CullingMode ,KM_CULLCW);
|
||||
}
|
||||
else
|
||||
{
|
||||
GLI_M_ChangeRenderingParrameter(KM_CULLINGMODE , CullingMode ,KM_CULLCCW);
|
||||
}
|
||||
}
|
||||
else
|
||||
GLI_M_ChangeRenderingParrameter(KM_CULLINGMODE , CullingMode ,KM_NOCULLING);
|
||||
|
||||
if (GLI_BIG_GLOBALS->lAMirrorIsDetected & 2)
|
||||
{
|
||||
GLI_M_ChangeRenderingParrameter(KM_FILTERMODE , FilterMode , KM_POINT_SAMPLE);
|
||||
GLI_M_ChangeRenderingParrameter(KM_SHADINGMODE , ShadingMode ,KM_TEXTUREGOURAUD);
|
||||
if ((!(p_stGlobaleMT -> lCurrentDrawMask & GLI_C_lIsNotGrided)) && (p_stGlobaleMT->xGlobalAlpha < 0.98f))
|
||||
{
|
||||
GLI_M_ChangeRenderingParrameter(KM_LISTTYPE , ListType ,KM_TRANS_POLYGON);
|
||||
GLI_M_ChangeRenderingParrameter(KM_SRCBLENDINGMODE , SRCBlendingMode ,KM_SRCALPHA);
|
||||
GLI_M_ChangeRenderingParrameter(KM_DSTBLENDINGMODE , DSTBlendingMode ,KM_INVSRCALPHA);
|
||||
GLI_M_ChangeRenderingParrameter(KM_USEALPHA , bUseAlpha , TRUE);
|
||||
GLI_M_ChangeRenderingParrameter(KM_SRCBLENDINGMODE , SRCBlendingMode ,KM_ONE);
|
||||
GLI_M_ChangeRenderingParrameter(KM_DSTBLENDINGMODE , DSTBlendingMode ,KM_ONE);
|
||||
GLI_M_ChangeRenderingParrameter(KM_USEALPHA , bUseAlpha , FALSE);
|
||||
} else {
|
||||
GLI_M_ChangeRenderingParrameter(KM_LISTTYPE , ListType ,KM_OPAQUE_POLYGON);
|
||||
GLI_M_ChangeRenderingParrameter(KM_SRCBLENDINGMODE , SRCBlendingMode ,KM_ONE);
|
||||
GLI_M_ChangeRenderingParrameter(KM_DSTBLENDINGMODE , DSTBlendingMode ,KM_ZERO);
|
||||
GLI_M_ChangeRenderingParrameter(KM_USEALPHA , bUseAlpha , FALSE);
|
||||
}
|
||||
stRenderingContex . pTextureSurfaceDesc = &stSpecialTexture;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((p_stGlobaleMT -> p_stCurrentTexture != NULL) && (p_stGlobaleMT -> p_stCurrentTexture -> bIsAvailable))
|
||||
{
|
||||
GLI_M_ChangeRenderingParrameter(KM_FILTERMODE , FilterMode , KM_BILINEAR);
|
||||
GLI_M_ChangeRenderingParrameter(KM_SHADINGMODE , ShadingMode ,KM_TEXTUREGOURAUD);
|
||||
if ((p_stGlobaleMT -> p_stCurrentTexture -> lTextureCaps & (GLI_C_lAlphaTexture | GLI_C_lNZTexture | GLI_C_lAddTransparencyTexture) )
|
||||
|| ((!(p_stGlobaleMT -> lCurrentDrawMask & GLI_C_lIsNotGrided)) && (p_stGlobaleMT->xGlobalAlpha < 0.98f)))
|
||||
{
|
||||
GLI_M_ChangeRenderingParrameter(KM_LISTTYPE , ListType ,KM_TRANS_POLYGON);
|
||||
if (p_stGlobaleMT -> p_stCurrentTexture -> lTextureCaps & GLI_C_lAddTransparencyTexture)
|
||||
{
|
||||
GLI_M_ChangeRenderingParrameter(KM_SRCBLENDINGMODE , SRCBlendingMode ,KM_ONE);
|
||||
GLI_M_ChangeRenderingParrameter(KM_DSTBLENDINGMODE , DSTBlendingMode ,KM_ONE);
|
||||
GLI_M_ChangeRenderingParrameter(KM_USEALPHA , bUseAlpha , FALSE);
|
||||
} else {
|
||||
GLI_M_ChangeRenderingParrameter(KM_SRCBLENDINGMODE , SRCBlendingMode ,KM_SRCALPHA);
|
||||
GLI_M_ChangeRenderingParrameter(KM_DSTBLENDINGMODE , DSTBlendingMode ,KM_INVSRCALPHA);
|
||||
GLI_M_ChangeRenderingParrameter(KM_USEALPHA , bUseAlpha , TRUE);
|
||||
}
|
||||
} else
|
||||
{
|
||||
GLI_M_ChangeRenderingParrameter(KM_LISTTYPE , ListType ,KM_OPAQUE_POLYGON);
|
||||
GLI_M_ChangeRenderingParrameter(KM_SRCBLENDINGMODE , SRCBlendingMode ,KM_ONE);
|
||||
GLI_M_ChangeRenderingParrameter(KM_DSTBLENDINGMODE , DSTBlendingMode ,KM_ZERO);
|
||||
GLI_M_ChangeRenderingParrameter(KM_USEALPHA , bUseAlpha , FALSE);
|
||||
}
|
||||
|
||||
switch (p_stGlobaleMT -> p_stCurrentTexture -> ucCylingMode)
|
||||
{
|
||||
case 0:
|
||||
GLI_M_ChangeRenderingParrameter(KM_CLAMPUV , ClampUV ,KM_CLAMP_UV);
|
||||
break;
|
||||
case GLI_C_lCylingUV:
|
||||
GLI_M_ChangeRenderingParrameter(KM_CLAMPUV , ClampUV ,KM_NOCLAMP);
|
||||
break;
|
||||
case GLI_C_lCylingU:
|
||||
GLI_M_ChangeRenderingParrameter(KM_CLAMPUV , ClampUV ,KM_CLAMP_U);
|
||||
break;
|
||||
case GLI_C_lCylingV:
|
||||
GLI_M_ChangeRenderingParrameter(KM_CLAMPUV , ClampUV ,KM_CLAMP_V);
|
||||
break;
|
||||
}
|
||||
/* STRIPS BUG*/
|
||||
/* GLI_M_ChangeRenderingParrameter(KM_CLAMPUV , ClampUV ,KM_NOCLAMP);*/
|
||||
stRenderingContex . pTextureSurfaceDesc = p_stGlobaleMT -> p_stCurrentTexture -> p_stSpecParam;
|
||||
} else
|
||||
{
|
||||
GLI_M_ChangeRenderingParrameter(KM_SHADINGMODE , ShadingMode ,KM_NOTEXTUREGOURAUD);
|
||||
GLI_M_ChangeRenderingParrameter(KM_LISTTYPE , ListType ,KM_TRANS_POLYGON);
|
||||
GLI_M_ChangeRenderingParrameter(KM_SRCBLENDINGMODE , SRCBlendingMode ,KM_SRCALPHA);
|
||||
GLI_M_ChangeRenderingParrameter(KM_DSTBLENDINGMODE , DSTBlendingMode ,KM_INVSRCALPHA);
|
||||
GLI_M_ChangeRenderingParrameter(KM_USEALPHA , bUseAlpha , TRUE);
|
||||
p_stGlobaleMT-> p_stCurrentTexture = NULL;
|
||||
}
|
||||
}
|
||||
kmProcessVertexRenderState(&stRenderingContex);
|
||||
kmSetVertexRenderState(&stRenderingContex);
|
||||
kmStartVertexStrip/*Direct*/(&VertexBufferDesc);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern GLI_tdstInternalGlobalValuesFor3dEngine *GLI_BIG_GLOBALS;
|
||||
extern KMVERTEXBUFFDESC VertexBufferDesc;
|
||||
void GLI_vWaitEndOfRendering();
|
||||
void GLI_vWaitEndOfVertexTransfert();
|
||||
void GLI_vWaitEndOfVSync();
|
||||
void GLI_DRV_vWrite16bBitmapToBackBuffer( void *_p_vSourceBuffer, long _lWidth, long _lHeight, long _lDestLeft, long _lDestTop, long _lDestRight, long _lDestBottom )
|
||||
{
|
||||
KMVERTEX_03 gld_CurrentDestXYZ[4];
|
||||
GLI_tdstInternalGlobalValuesFor3dEngine *p_stGlobaleMT;
|
||||
static bFirst = 0;
|
||||
|
||||
p_stGlobaleMT = GLI_BIG_GLOBALS;
|
||||
|
||||
if (!bFirst)
|
||||
{
|
||||
GLI_BigInitKamuiRendering(p_stGlobaleMT);
|
||||
}
|
||||
bFirst++;
|
||||
|
||||
if ((bFirst & 0x1F) ) /* == QUADRUPLE SPEED!!*/
|
||||
{
|
||||
/* GLI_vWaitEndOfVSync();
|
||||
GLI_vWaitEndOfRendering();*/
|
||||
GLD_MDRV_vBlitStretched16b( 512,512,VignetteBuffer ,512,_lWidth,_lHeight,_p_vSourceBuffer);
|
||||
kmLoadTexture(&stSpecialTexture,(void *)VignetteBuffer,FALSE,FALSE);
|
||||
}/* */
|
||||
/* GLI_vWaitEndOfVSync();*/
|
||||
|
||||
/* return;*/
|
||||
|
||||
/* ------------------------ BEURK ---------------------------------*/
|
||||
stRenderingContex . RenderState = 0;
|
||||
GLI_M_ChangeRenderingParrameter(KM_SHADINGMODE , ShadingMode ,KM_TEXTUREGOURAUD);
|
||||
GLI_M_ChangeRenderingParrameter(KM_LISTTYPE , ListType ,KM_OPAQUE_POLYGON);
|
||||
GLI_M_ChangeRenderingParrameter(KM_SRCBLENDINGMODE , SRCBlendingMode ,KM_ONE);
|
||||
GLI_M_ChangeRenderingParrameter(KM_DSTBLENDINGMODE , DSTBlendingMode ,KM_ZERO);
|
||||
GLI_M_ChangeRenderingParrameter(KM_USEALPHA , bUseAlpha , FALSE);
|
||||
GLI_M_ChangeRenderingParrameter(KM_CLAMPUV , ClampUV ,KM_CLAMP_UV);
|
||||
GLI_M_ChangeRenderingParrameter(KM_CLAMPUV , ClampUV ,KM_CLAMP_UV);
|
||||
GLI_M_ChangeRenderingParrameter(KM_FILTERMODE , FilterMode , KM_POINT_SAMPLE);
|
||||
GLI_M_ChangeRenderingParrameter(KM_FOGMODE , FogMode , KM_NOFOG);
|
||||
stRenderingContex . pTextureSurfaceDesc = &stSpecialTexture;/* */
|
||||
kmProcessVertexRenderState(&stRenderingContex);
|
||||
kmSetVertexRenderState(&stRenderingContex);
|
||||
kmStartVertexStrip/*Direct*/(&VertexBufferDesc);
|
||||
/* ------------------------ End BEURK ------------------------------*/
|
||||
gld_CurrentDestXYZ[0] . fX = 0.0f;
|
||||
gld_CurrentDestXYZ[0] . fY = 0.0f;
|
||||
gld_CurrentDestXYZ[1] . fX = 0.0f;
|
||||
gld_CurrentDestXYZ[1] . fY = 480.0f;
|
||||
gld_CurrentDestXYZ[2] . fX = 640.0f;
|
||||
gld_CurrentDestXYZ[2] . fY = 480.0f;
|
||||
gld_CurrentDestXYZ[3] . fX = 640.0f;
|
||||
gld_CurrentDestXYZ[3] . fY = 0.0f;
|
||||
gld_CurrentDestXYZ[0] . fU = 0.0f;
|
||||
gld_CurrentDestXYZ[0] . fV = 0.0f;
|
||||
gld_CurrentDestXYZ[1] . fU = 0.0f;
|
||||
gld_CurrentDestXYZ[1] . fV = 1.0f;
|
||||
gld_CurrentDestXYZ[2] . fU = 1.0f;
|
||||
gld_CurrentDestXYZ[2] . fV = 1.0f;
|
||||
gld_CurrentDestXYZ[3] . fU = 1.0f;
|
||||
gld_CurrentDestXYZ[3] . fV = 0.0f;
|
||||
*(unsigned long *)&gld_CurrentDestXYZ[0].uBaseRGB =
|
||||
*(unsigned long *)&gld_CurrentDestXYZ[1].uBaseRGB =
|
||||
*(unsigned long *)&gld_CurrentDestXYZ[2].uBaseRGB =
|
||||
*(unsigned long *)&gld_CurrentDestXYZ[3].uBaseRGB = 0xffffffff;
|
||||
gld_CurrentDestXYZ[0] . fZ =
|
||||
gld_CurrentDestXYZ[1] . fZ =
|
||||
gld_CurrentDestXYZ[2] . fZ =
|
||||
gld_CurrentDestXYZ[3] . fZ =1.0f;
|
||||
gld_CurrentDestXYZ[0].ParamControlWord =
|
||||
gld_CurrentDestXYZ[1].ParamControlWord =
|
||||
gld_CurrentDestXYZ[3].ParamControlWord =
|
||||
KM_VERTEXPARAM_NORMAL;
|
||||
gld_CurrentDestXYZ[2].ParamControlWord = KM_VERTEXPARAM_ENDOFSTRIP;
|
||||
kmSetVertex(&VertexBufferDesc,&gld_CurrentDestXYZ[0],KM_VERTEXTYPE_03,sizeof(gld_CurrentDestXYZ[1]));
|
||||
kmSetVertex(&VertexBufferDesc,&gld_CurrentDestXYZ[1],KM_VERTEXTYPE_03,sizeof(gld_CurrentDestXYZ[1]));
|
||||
kmSetVertex(&VertexBufferDesc,&gld_CurrentDestXYZ[3],KM_VERTEXTYPE_03,sizeof(gld_CurrentDestXYZ[1]));
|
||||
kmSetVertex(&VertexBufferDesc,&gld_CurrentDestXYZ[2],KM_VERTEXTYPE_03,sizeof(gld_CurrentDestXYZ[1]));
|
||||
}
|
||||
|
||||
|
||||
float GLI_km_IndexTableToOoZ(long index)
|
||||
{
|
||||
return (float)( pow ( 2.0f , (index >> 4)) * (float)((index & 0x0f) + 16) / 16.0f);
|
||||
}
|
||||
|
||||
void GLI_INTERFACE_FUNC(GLI_vSetFogParams) ( tdstFogParams *_p_stFogParams )
|
||||
{
|
||||
long i;
|
||||
float km_FogTable[256], RealZ , fCoef;
|
||||
float fStart, fEnd ;
|
||||
KMPACKEDARGB kmColor;
|
||||
GLI_tdxValue xBlendStart, xBlendEnd;
|
||||
|
||||
|
||||
kmSetFogDensity(0xFF08);
|
||||
|
||||
/* xZDepthEndSave = _p_stFogParams->xDepthEnd;*/
|
||||
xDepthStartSave = _p_stFogParams->xDepthStart;
|
||||
xBlendStart = _p_stFogParams->xBlendStart / 255.0f;
|
||||
xBlendEnd = _p_stFogParams->xBlendEnd / 255.0f;
|
||||
|
||||
fStart = _p_stFogParams->xDepthStart;
|
||||
fEnd = _p_stFogParams->xDepthEnd;
|
||||
fCoef = 1.0f / ( fEnd - fStart );
|
||||
|
||||
for (i = 0 ; i < 256 ; i++)
|
||||
{
|
||||
RealZ = GLI_km_IndexTableToOoZ(i) / 512.0f;
|
||||
RealZ = GLI_C_xZClippingNear / RealZ;
|
||||
/* realZ == Now Real Depth, not 1/W !!!*/
|
||||
/* les salaud!!!*/
|
||||
if (RealZ < fStart)
|
||||
km_FogTable[i] = xBlendStart;
|
||||
else
|
||||
{
|
||||
if (RealZ > fEnd)
|
||||
km_FogTable[i] = xBlendEnd;
|
||||
else
|
||||
{
|
||||
km_FogTable[i] = ( RealZ - fStart ) * fCoef;
|
||||
km_FogTable[i] *= xBlendEnd - xBlendStart;
|
||||
km_FogTable[i] += xBlendStart;
|
||||
}
|
||||
}
|
||||
}
|
||||
kmSetFogTable((PKMFLOAT)km_FogTable);
|
||||
*(long *)&kmColor = RGB_MAKE((long)( _p_stFogParams->stColor.xR * 255.f),(long)(_p_stFogParams->stColor.xG * 255.f),(long)(_p_stFogParams->stColor.xB * 255.f));
|
||||
kmSetFogTableColor(kmColor);
|
||||
}
|
||||
/*EVL*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
306
Rayman_X/cpa/tempgrp/GliGlou/Drivers/KAMUI/HdwTx_KMU.c
Normal file
306
Rayman_X/cpa/tempgrp/GliGlou/Drivers/KAMUI/HdwTx_KMU.c
Normal file
@@ -0,0 +1,306 @@
|
||||
|
||||
/*
|
||||
Tested with LINT
|
||||
*/
|
||||
|
||||
/**************
|
||||
TEXTURE.C
|
||||
Ver 1.0
|
||||
***************/
|
||||
#include "GLD.h"
|
||||
#include "GEO.h"
|
||||
#include "TEX.h"
|
||||
#include "gli_st.h"
|
||||
#include "textu_st.h"
|
||||
#include "texture.h"
|
||||
#include <string.h>
|
||||
#ifdef KAMUI
|
||||
#include <kamui.h>
|
||||
#endif
|
||||
#include "GLI_interface.h"
|
||||
|
||||
unsigned long ulTotalUsedMemory;
|
||||
unsigned long ulAgpUsedMemory;
|
||||
|
||||
extern unsigned long GLI_gsCurrentMemoryChannel;
|
||||
extern unsigned long gs_lRGBBitCount;
|
||||
extern long gs_lTreeOfNamesNumberOfLastLetter;
|
||||
extern long gs_lNumberOfTextureToCreate;
|
||||
extern long gs_lLastIdxInDEFTableOfTextures;
|
||||
extern long lNbTextureFormat;
|
||||
extern long lCurrentTextureFormat;
|
||||
|
||||
/*extern long gs_aDEFTableOfTextureMemoryChannels[ C_lMaxNumberOfTexture ];*/
|
||||
extern unsigned char *gs_aCurrentTextures;
|
||||
/*extern GLI_tdstTexture *gs_aDEFTableOfTextureAlreadyRead [ C_lMaxNumberOfTexture ];*/
|
||||
extern unsigned char g_ucGliModuleId;
|
||||
/*extern void *GLI_gs_p_ConvertBufferMipMapping;*/
|
||||
|
||||
short TEXTURETWIDDLED[1024L*1024L];
|
||||
|
||||
static unsigned long GLI_a256FastTwiddledTable[256];
|
||||
/*unsigned long GLI_a256FastTwiddledTableD4[256];*/
|
||||
|
||||
long GLI_fnLinear2CasseTete(unsigned long lLinear , long lPitch)
|
||||
{
|
||||
unsigned long lreturnvalue = 0;
|
||||
unsigned long CMPX = 1;
|
||||
while (lLinear != 0)
|
||||
{
|
||||
if (lLinear & 128) lreturnvalue += CMPX<<3;
|
||||
if (lLinear & 64) lreturnvalue += lPitch<<3;
|
||||
if (lLinear & 32) lreturnvalue += CMPX<<2;
|
||||
if (lLinear & 16) lreturnvalue += lPitch<<2;
|
||||
if (lLinear & 8) lreturnvalue += CMPX<<1;
|
||||
if (lLinear & 4) lreturnvalue += lPitch<<1;
|
||||
if (lLinear & 2) lreturnvalue += CMPX;
|
||||
if (lLinear & 1) lreturnvalue += lPitch;
|
||||
CMPX<<=4;
|
||||
lPitch<<=4;
|
||||
lLinear >>= 8;
|
||||
}
|
||||
return lreturnvalue;
|
||||
}
|
||||
|
||||
void GLI_InitTwiddlingTable(long largeur)
|
||||
{
|
||||
long i;
|
||||
for (i = 0 ; i < 256 ; i++ )
|
||||
GLI_a256FastTwiddledTable[i] = GLI_fnLinear2CasseTete(i, largeur);
|
||||
}
|
||||
|
||||
void GLI_fnSwitchTwiddled(short *p_Texture , long size )
|
||||
{
|
||||
unsigned long xcounter, SizeXSize , SizeXSizeD8;
|
||||
short *Pdest ;
|
||||
unsigned long *GLI_a256FastTwiddledTableLocal;
|
||||
static long largeur = 0;
|
||||
short *p_TextureLocal,*p_DestLast;
|
||||
Pdest = TEXTURETWIDDLED;
|
||||
if (size != largeur)
|
||||
{
|
||||
GLI_InitTwiddlingTable(size);
|
||||
largeur = size;
|
||||
}
|
||||
SizeXSize = size * size;
|
||||
if (!(SizeXSize & 0xFF))
|
||||
{
|
||||
SizeXSizeD8 = SizeXSize >> 8;
|
||||
for (xcounter = 0 ; xcounter < SizeXSizeD8 ; xcounter ++ )
|
||||
{
|
||||
p_TextureLocal = p_Texture + (GLI_a256FastTwiddledTable[xcounter & 0xFF]<<4);
|
||||
p_TextureLocal += GLI_a256FastTwiddledTable[(xcounter>>8) & 0xFF]<<8;
|
||||
p_DestLast = Pdest + 256;
|
||||
GLI_a256FastTwiddledTableLocal = GLI_a256FastTwiddledTable;
|
||||
while (Pdest < p_DestLast)
|
||||
*(Pdest++)= *(p_TextureLocal + *(GLI_a256FastTwiddledTableLocal++));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
xcounter = SizeXSize ;
|
||||
for ( xcounter = 0 ; xcounter < SizeXSize ; xcounter++ )
|
||||
*(Pdest++)= *(p_Texture +
|
||||
GLI_a256FastTwiddledTable[xcounter & 0xFF] +
|
||||
(GLI_a256FastTwiddledTable[(xcounter>>8) & 0xFF]<<4) +
|
||||
(GLI_a256FastTwiddledTable[(xcounter>>16) & 0xFF]<<8));
|
||||
}
|
||||
memcpy( p_Texture, TEXTURETWIDDLED , SizeXSize<<1);
|
||||
}
|
||||
|
||||
|
||||
/*void GLI_xLoadTextureInTexelField(GLI_tdstTexture *p_stTexture, long *p_lTexelField);*/
|
||||
/*void GLI_vDivideBitmapSurfaceBy2NonZero (unsigned long *p_Source,unsigned long *p_Dest,long lWidthSurfSouce, long lLenghtSurfSouce);*/
|
||||
/*void GLI_vDivideBitmapSurfaceBy2 (unsigned long *p_Source,unsigned long *p_Dest,long lWidthSurfSouce, long lLenghtSurfSouce);*/
|
||||
/*long GLI_lComputeTexturesSize();*/
|
||||
|
||||
|
||||
|
||||
#ifdef KAMUI
|
||||
unsigned long GLI_lCorrectOffset(unsigned long lHeight)
|
||||
{
|
||||
long lReturnValue, LHeightLoc;
|
||||
lReturnValue = 0;
|
||||
LHeightLoc = lHeight;
|
||||
while (LHeightLoc)
|
||||
{
|
||||
LHeightLoc>>=1;
|
||||
lReturnValue += LHeightLoc * LHeightLoc;
|
||||
}
|
||||
return (lReturnValue + 1);
|
||||
}
|
||||
|
||||
void GLI_KamuiComputeMipMapping(void *p_SRC ,unsigned long Size ,KMTEXTURETYPE mode)
|
||||
{
|
||||
unsigned short *p_Local,*p_Local1;
|
||||
unsigned long *p_Local2;
|
||||
unsigned long *p_MEMCPY1 , *p_MEMCPY2 ,LocalSize;
|
||||
unsigned long SizeXSize, SizeXSizeLocal , ulLocalColor;
|
||||
p_Local = (unsigned short *)p_SRC;
|
||||
SizeXSize = Size * Size;
|
||||
p_Local1 = p_Local + GLI_lCorrectOffset(Size);
|
||||
p_MEMCPY1 = (unsigned long *)p_Local1;
|
||||
p_MEMCPY2 = (unsigned long *)p_Local;
|
||||
LocalSize = SizeXSize>>1;
|
||||
p_MEMCPY1 += LocalSize;
|
||||
p_MEMCPY2 += LocalSize;
|
||||
while (LocalSize--)
|
||||
{
|
||||
*(--p_MEMCPY1) = *(--p_MEMCPY2);
|
||||
}
|
||||
/* return;// */
|
||||
/* memcpy( p_Local1 , p_Local , SizeXSize<<1);*/
|
||||
Size >>= 1;
|
||||
while (Size)
|
||||
{
|
||||
SizeXSize >>= 2;
|
||||
SizeXSizeLocal = SizeXSize;
|
||||
p_Local1 = p_Local + GLI_lCorrectOffset(Size);
|
||||
(unsigned short *)p_Local2 = p_Local1 + SizeXSize;
|
||||
switch (mode)
|
||||
{
|
||||
case KM_TEXTURE_RGB565:
|
||||
while (SizeXSizeLocal--)
|
||||
{
|
||||
ulLocalColor = ((*(p_Local2) & 0x0000001f) << 1) + ((*(p_Local2) & 0x000007e0) << 3) + ((*(p_Local2) & 0x0000f800) << 6) + ((*(p_Local2) & 0x001f0000) >> 15) + ((*(p_Local2) & 0x07e00000) >> 13) + ((*(p_Local2) & 0xf8000000) >> 10);
|
||||
p_Local2++;
|
||||
ulLocalColor += ((*(p_Local2) & 0x0000001f) << 1) + ((*(p_Local2) & 0x000007e0) << 3) + ((*(p_Local2) & 0x0000f800) << 6) + ((*(p_Local2) & 0x001f0000) >> 15) + ((*(p_Local2) & 0x07e00000) >> 13) + ((*(p_Local2) & 0xf8000000) >> 10);
|
||||
ulLocalColor <<= 8;
|
||||
ulLocalColor = (ulLocalColor & 0xf8000000) | ((ulLocalColor & 0x00f80000)<<3) | ((ulLocalColor & 0x0000f800)<<5);
|
||||
*(p_Local1++) = (unsigned short)(ulLocalColor>>16);
|
||||
p_Local2++;
|
||||
}
|
||||
break;
|
||||
case KM_TEXTURE_ARGB4444:
|
||||
while (SizeXSizeLocal--)
|
||||
{
|
||||
ulLocalColor = ((*(p_Local2) & 0x0000000F) << 2 ) + ((*(p_Local2) & 0x000000F0) << 6 ) + ((*(p_Local2) & 0x00000F00) << 10) + ((*(p_Local2) & 0x0000f000) << 14) + ((*(p_Local2) & 0x000F0000) >> 14) + ((*(p_Local2) & 0x00F00000) >> 10) + ((*(p_Local2) & 0x0F000000) >> 6 ) + ((*(p_Local2) & 0xf0000000) >> 2 );
|
||||
p_Local2++;
|
||||
ulLocalColor += ((*(p_Local2) & 0x0000000F) << 2 ) + ((*(p_Local2) & 0x000000F0) << 6 ) + ((*(p_Local2) & 0x00000F00) << 10) + ((*(p_Local2) & 0x0000f000) << 14) + ((*(p_Local2) & 0x000F0000) >> 14) + ((*(p_Local2) & 0x00F00000) >> 10) + ((*(p_Local2) & 0x0F000000) >> 6 ) + ((*(p_Local2) & 0xf0000000) >> 2 );
|
||||
ulLocalColor = (ulLocalColor & 0xf0000000) | ((ulLocalColor & 0x00f00000)<<4) | ((ulLocalColor & 0x0000f000)<<8) | ((ulLocalColor & 0x000000f0)<<12);
|
||||
*(p_Local1++) = (unsigned short)(ulLocalColor>>16);
|
||||
p_Local2++;
|
||||
}
|
||||
break;
|
||||
case KM_TEXTURE_ARGB1555:
|
||||
while (SizeXSizeLocal--)
|
||||
{
|
||||
ulLocalColor = ((*(p_Local2) & 0x0000001F) << 1 ) + ((*(p_Local2) & 0x000003E0) << 4 ) + ((*(p_Local2) & 0x00007C00) << 7 ) + ((*(p_Local2) & 0x00008000) << 14) + ((*(p_Local2) & 0x001F0000) >> 15) + ((*(p_Local2) & 0x03E00000) >> 12) + ((*(p_Local2) & 0x7C000000) >> 9 ) + ((*(p_Local2) & 0x80000000) >> 2 ) ;
|
||||
p_Local2++;
|
||||
ulLocalColor += ((*(p_Local2) & 0x0000001F) << 1 ) + ((*(p_Local2) & 0x000003E0) << 4 ) + ((*(p_Local2) & 0x00007C00) << 7 ) + ((*(p_Local2) & 0x00008000) << 14) + ((*(p_Local2) & 0x001F0000) >> 15) + ((*(p_Local2) & 0x03E00000) >> 12) + ((*(p_Local2) & 0x7C000000) >> 9 ) + ((*(p_Local2) & 0x80000000) >> 2 ) ;
|
||||
ulLocalColor = (ulLocalColor & 0x80000000) | ((ulLocalColor & 0x00f80000)<<7) | ((ulLocalColor & 0x0000f800)<<10) | ((ulLocalColor & 0x000000f8)<<13);
|
||||
*(p_Local1++) = (unsigned short)(ulLocalColor>>16);
|
||||
p_Local2++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
Size >>= 1;
|
||||
}
|
||||
}
|
||||
void GLI_DRV_vDownLoadTextures(long bRestore, long _lTextureMode, BOOL bReloading )
|
||||
{
|
||||
long lTextureCounter;
|
||||
KMTEXTURETYPE nTextureType;
|
||||
GLI_tdstTexture *p_stTexture;
|
||||
for (lTextureCounter = 0; lTextureCounter < GLI_C_lNBMaxOfTextures ; lTextureCounter ++)
|
||||
if (gs_aDEFTableOfTextureMemoryChannels[lTextureCounter] != GLI_TEXIsUnallocated )
|
||||
{
|
||||
p_stTexture = gs_aDEFTableOfTextureAlreadyRead[lTextureCounter];
|
||||
while (p_stTexture != NULL)
|
||||
{
|
||||
p_stTexture -> bIsAvailable = 0;
|
||||
GLI_MDRV_xLoadTextureInTexelField(p_stTexture, GLI_gs_p_ConvertBufferMipMapping,TRUE);
|
||||
if (p_stTexture -> lTextureCaps & GLI_C_lNZTexture)
|
||||
{
|
||||
GLI_MDRV_vCompressTex1555 ( p_stTexture , GLI_gs_p_ConvertBufferMipMapping);
|
||||
nTextureType = KM_TEXTURE_ARGB1555;
|
||||
} else
|
||||
{
|
||||
if ((p_stTexture -> lTextureCaps & GLI_C_lAlphaTexture) == 0)
|
||||
{
|
||||
GLI_MDRV_vCompressTex565 ( p_stTexture , GLI_gs_p_ConvertBufferMipMapping);
|
||||
nTextureType = KM_TEXTURE_RGB565;
|
||||
} else
|
||||
{
|
||||
|
||||
GLI_MDRV_vCompressTex4444 ( p_stTexture , GLI_gs_p_ConvertBufferMipMapping);
|
||||
nTextureType = KM_TEXTURE_ARGB4444;
|
||||
}
|
||||
}
|
||||
p_stTexture-> p_stSpecParam = malloc(sizeof(KMSURFACEDESC));
|
||||
|
||||
GLI_fnSwitchTwiddled(GLI_gs_p_ConvertBufferMipMapping , p_stTexture->lHeight );
|
||||
if (p_stTexture ->lNumberOfLod)
|
||||
{
|
||||
GLI_KamuiComputeMipMapping(GLI_gs_p_ConvertBufferMipMapping ,p_stTexture->lHeight , nTextureType);
|
||||
nTextureType |= KM_TEXTURE_TWIDDLED_MM;
|
||||
} else
|
||||
nTextureType |= KM_TEXTURE_TWIDDLED;
|
||||
if (kmCreateTextureSurface((KMSURFACEDESC * )p_stTexture-> p_stSpecParam,p_stTexture->lHeight,p_stTexture->lWidth,nTextureType) == KMSTATUS_SUCCESS)
|
||||
{
|
||||
kmLoadTexture((KMSURFACEDESC * )p_stTexture-> p_stSpecParam,GLI_gs_p_ConvertBufferMipMapping,FALSE,FALSE);
|
||||
p_stTexture->bIsAvailable = 1;
|
||||
}
|
||||
p_stTexture = p_stTexture -> p_NextLodOfTexture;
|
||||
p_stTexture = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
----------------------------------------------------------------------------------------
|
||||
Description : get total memory size available for texture
|
||||
----------------------------------------------------------------------------------------
|
||||
*/
|
||||
long GLI_DRV_lGetHardwareTotalTextureMemorySize(long _lTextureMode)
|
||||
{
|
||||
return (6388608L);
|
||||
}
|
||||
|
||||
/**********************************************************************************************/
|
||||
/* Name: GLI_DRV_lGetHardwareMaxTextureSize() 1.0*/
|
||||
/* OPTIMMIZED : No*/
|
||||
/**********************************************************************************************/
|
||||
long GLI_DRV_lGetHardwareMaxTextureSize(void)
|
||||
{
|
||||
return (1024);
|
||||
}
|
||||
|
||||
/**********************************************************************************************/
|
||||
/* Name: GLI_DRV_lIsHardwareAcceptNonSquaredTextures() 1.0*/
|
||||
/* OPTIMMIZED : No*/
|
||||
/**********************************************************************************************/
|
||||
long GLI_DRV_lIsHardwareAcceptNonSquaredTextures(void)
|
||||
{
|
||||
return (0);
|
||||
}
|
||||
|
||||
void GLI_DRV_vUnLoadTextures()
|
||||
{
|
||||
long lTextureCounter;
|
||||
|
||||
GLI_tdstTexture *p_stTexture;
|
||||
|
||||
for ( lTextureCounter = 0 ; lTextureCounter < C_lMaxNumberOfTexture ;lTextureCounter ++)
|
||||
{
|
||||
if (gs_aDEFTableOfTextureMemoryChannels[lTextureCounter] != GLI_TEXIsUnallocated )
|
||||
{
|
||||
p_stTexture = gs_aDEFTableOfTextureAlreadyRead[lTextureCounter];
|
||||
if (p_stTexture != NULL)
|
||||
{
|
||||
if (p_stTexture->bIsAvailable)
|
||||
{
|
||||
kmFreeTexture((KMSURFACEDESC * )p_stTexture-> p_stSpecParam);
|
||||
free (p_stTexture-> p_stSpecParam);
|
||||
p_stTexture->bIsAvailable = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
164
Rayman_X/cpa/tempgrp/GliGlou/Drivers/KAMUI/Init_KAMUI.c
Normal file
164
Rayman_X/cpa/tempgrp/GliGlou/Drivers/KAMUI/Init_KAMUI.c
Normal file
@@ -0,0 +1,164 @@
|
||||
/*
|
||||
Tested with LINT
|
||||
*/
|
||||
#include <KAMUI.H>
|
||||
#include "init_gli.h"
|
||||
#include "gli_st.h"
|
||||
#include "GLI_Defn.h"
|
||||
#include "light_st.h"
|
||||
#include "PvObj_st.h"
|
||||
#include "GLI_interface.h"
|
||||
|
||||
KMVERTEXBUFFDESC VertexBufferDesc;
|
||||
KMSURFACEDESC PrimarySurfaceDesc; /* Primary frame buffer*/
|
||||
KMSURFACEDESC BackSurfaceDesc; /* Back-buffer frame buffer*/
|
||||
KMSURFACEDESC stSpecialTexture;
|
||||
KMSURFACEDESC stSpecialTexture20;
|
||||
KMSURFACEDESC stSpecialTexture21;
|
||||
KMVERTEXCONTEXT stRenderingContex;
|
||||
|
||||
extern short TEXTURETWIDDLED[];
|
||||
|
||||
extern volatile long gsbIsRender;
|
||||
#define GLI_C_SiSeOFVertexBuffer (512288)
|
||||
extern GLI_tdstInternalGlobalValuesFor3dEngine *GLI_BIG_GLOBALS;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
void GLI_vEndOfRenderingCallback(void *pnull)
|
||||
{
|
||||
gsbIsRender &= 0xFFFFFFFF - 1;
|
||||
}
|
||||
|
||||
void GLI_vEndOfVertexTransfertCallback(void *pnull)
|
||||
{
|
||||
gsbIsRender &= 0xFFFFFFFF - 2;
|
||||
}
|
||||
|
||||
void GLI_vWaitEndOfVertexTransfert()
|
||||
{
|
||||
while (gsbIsRender & 2) {};
|
||||
}
|
||||
|
||||
void GLI_vWaitEndOfRendering()
|
||||
{
|
||||
while (gsbIsRender & 1) {};
|
||||
}
|
||||
|
||||
void GLI_vEndOfVSyncCallback(void *pnull)
|
||||
{
|
||||
gsbIsRender &= ~4;
|
||||
}
|
||||
|
||||
void GLI_vWaitEndOfVSync()
|
||||
{
|
||||
gsbIsRender |= 4;
|
||||
while (gsbIsRender & 4) {};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Global initialisation.*/
|
||||
void GLI_DRV_xInitDriver( HWND _hWnd, BOOL _bFullScreen, long _lWidth, long _lHeight, long _lBpp )
|
||||
{
|
||||
kmInitDevice(KM_VGA);
|
||||
kmSetDisplayMode( KM_DSPMODE_VGA,KM_DSPBPP_RGB565,FALSE,TRUE);
|
||||
kmCreateFrameBufferSurface(&PrimarySurfaceDesc,640,480,FALSE,FALSE);
|
||||
kmCreateFrameBufferSurface(&BackSurfaceDesc,640,480,FALSE,FALSE);
|
||||
kmCreateVertexBuffer(&VertexBufferDesc, GLI_C_SiSeOFVertexBuffer , 0 , GLI_C_SiSeOFVertexBuffer , 0);
|
||||
kmActivateFrameBuffer( &PrimarySurfaceDesc,&BackSurfaceDesc,FALSE,TRUE);
|
||||
kmSetStrideWidth(512);
|
||||
kmCreateTextureSurface(&stSpecialTexture,512,512, KM_TEXTURE_STRIDE | KM_TEXTURE_RGB565);
|
||||
#define WATERSIZE 256L
|
||||
kmCreateTextureSurface(&stSpecialTexture20,WATERSIZE ,WATERSIZE, KM_TEXTURE_TWIDDLED | KM_TEXTURE_ARGB4444);
|
||||
kmSetEORCallback(GLI_vEndOfRenderingCallback,NULL);
|
||||
kmSetEndOfVertexCallback(GLI_vEndOfVertexTransfertCallback,NULL);
|
||||
kmSetVSyncCallback(GLI_vEndOfVSyncCallback,NULL);
|
||||
memset( &stRenderingContex, 0, sizeof(stRenderingContex));
|
||||
}
|
||||
|
||||
/* Temporary function.*/
|
||||
/*
|
||||
long GLI_INTERFACE_FUNC(GLI_DRV_lWhatIsGli)(void)
|
||||
{
|
||||
return GLI_C_VersionGlide;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
void GLI_DRV_vCloseDriver ()
|
||||
{
|
||||
}
|
||||
|
||||
/* Return version number.*/
|
||||
/*
|
||||
long GLI_INTERFACE_FUNC(GLI_lGetNumOfVersion)(void)
|
||||
{
|
||||
return 0;//g_stCurLLInterface.iMode;
|
||||
}
|
||||
*/
|
||||
|
||||
/* Return a pointer on the text version of GLI engine.*/
|
||||
/*unsigned char *GLI_INTERFACE_FUNC(GLI_ucGetTextOfVersion)(void)
|
||||
{
|
||||
return NULL;//g_stCurLLInterface.ucTextMode;
|
||||
}
|
||||
*/
|
||||
|
||||
/* Erase a rectangular region of Z buffer.*/
|
||||
void GLI_INTERFACE_FUNC(GLI_DRV_vClearZBufferRegion)(long lXStart,long lXEnd,long lYStart,long lYEnd)
|
||||
{
|
||||
/* g_stCurLLInterface.p_fnClearZBufferRegion(lXStart,lXEnd,lYStart,lYEnd);*/
|
||||
if (!bDrawMirrorSymetric)
|
||||
GLI_BIG_GLOBALS->lDisplayMenuIsDetected = 1;
|
||||
}
|
||||
void GLI_INTERFACE_FUNC(GLI_vBeginDrawingTexturedMirrors)(void)
|
||||
{
|
||||
GLI_BIG_GLOBALS->bDrawMirrorSymetric = 1;
|
||||
}
|
||||
void GLI_INTERFACE_FUNC(GLI_vBeginDrawingTexturedMirrorsSurfaces)()
|
||||
{
|
||||
/*kmSetFramebufferTexture(&TexSurfaceDesc2);*/
|
||||
GLI_BIG_GLOBALS->lAMirrorIsDetected = 3;
|
||||
/* GLI_vWaitEndOfRendering();*/
|
||||
/* GLI_vWaitEndOfVSync();*/
|
||||
/* kmRenderTexture(&stSpecialTexture);*/
|
||||
/* GLI_vWaitEndOfRendering();*/
|
||||
/* GLI_vWaitEndOfVSync();*/
|
||||
/* kmFlipFrameBuffer();// */
|
||||
/* GLI_vWaitEndOfRendering();*/
|
||||
/* Now Draw The reversed World . It will be displayed with Frame later.*/
|
||||
/* GLI_vWaitEndOfRendering();*/
|
||||
}
|
||||
void
|
||||
GLI_INTERFACE_FUNC(GLI_vEndDrawingTexturedMirrors)()
|
||||
{
|
||||
GLI_BIG_GLOBALS->lAMirrorIsDetected &= 1;
|
||||
GLI_BIG_GLOBALS->bDrawMirrorSymetric = 0;
|
||||
}
|
||||
|
||||
/*extern long GLI_xIsGliInit();*/
|
||||
void GLI_INTERFACE_FUNC(GLI_DRV_vFlipDevice)(long lNbFrames)
|
||||
{
|
||||
if (!GLI_MDRV_xIsGliInit())
|
||||
return;
|
||||
|
||||
GLI_BIG_GLOBALS->lDisplayMenuIsDetected = 0;
|
||||
GLI_BIG_GLOBALS->lAMirrorIsDetected = 0;
|
||||
gsbIsRender |= 3;
|
||||
kmFlipFrameBuffer();/* */
|
||||
kmRender/*Direct*/();
|
||||
}
|
||||
|
||||
void GLI_INTERFACE_FUNC(GLI_DRV_vClearDevice)(BOOL ZBuffer, BOOL ColorBuffer, unsigned long Color)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
Reference in New Issue
Block a user