Mercurial > mm7
diff Render.h @ 0:9c0607679772
init
author | Ritor1 |
---|---|
date | Sat, 12 Jan 2013 09:45:18 +0600 |
parents | |
children | 3b4f8bd48e3b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Render.h Sat Jan 12 09:45:18 2013 +0600 @@ -0,0 +1,506 @@ +#pragma once +#include <stdio.h> + +#include "lib\legacy_dx\d3d.h" +#include "OSAPI.h" + +#include "Sprites.h" +#include "VectorTypes.h" + +struct stru148; +struct Texture; +struct RGBTexture; +struct RenderBillboardTransform_local0; +struct ODMFace; + + +/* 119 */ +#pragma pack(push, 1) +struct RenderVertexSoft +{ + inline RenderVertexSoft(): + flt_2C(0.0f) + {} + + Vec3_float_ vWorldPosition; + Vec3_float_ vWorldViewPosition; + float vWorldViewProjX; + float vWorldViewProjY; + float flt_20; + float u; + float v; + float flt_2C; +}; +#pragma pack(pop) + + + +/* 112 */ +#pragma pack(push, 1) +struct RenderVertexD3D3 +{ + Vec3_float_ pos; + float rhw; + unsigned int diffuse; + unsigned int specular; + Vec2_float_ texcoord; +}; + + + +/* 161 */ +#pragma pack(push, 1) +struct RenderBillboard +{ + int field_0; + int field_4; + float fov_x; + float fov_y; + int sZValue; + int field_14; + unsigned __int16 uHwSpriteID; + __int16 uPalette; + __int16 uIndoorSectorID; + __int16 field_1E; + __int16 some_x; + __int16 some_y; + __int16 some_z; + __int16 uScreenSpaceX; + __int16 uScreenSpaceY; + unsigned __int16 uPaletteSubindex; + unsigned int uTintColor; + SpriteFrame *pSpriteFrame; +}; +#pragma pack(pop) + + +#pragma pack(push, 1) +struct RenderD3D__DevInfo +{ + unsigned int bIsDeviceCompatible; + char *pName; + char *pDescription; + GUID *pGUID; + unsigned int uCaps; + char *pDriverName; + char *pDeviceDesc; + char *pDDraw4DevDesc; + GUID *pDirectDrawGUID; + int uVideoMem; +}; +#pragma pack(pop) + + + +#pragma pack(push, 1) +struct RenderD3D_D3DDevDesc +{ + int field_0; + int field_4; + int field_8; + int field_C; + int field_10; + char *pDriverName; + char *pDeviceDesc; + char *pDDraw4DevDesc; + GUID *pGUID; + unsigned int uVideoMem; +}; +#pragma pack(pop) + + + + + + + + + +/* 280 */ +#pragma pack(push, 1) +struct HWLTexture +{ + inline HWLTexture(): + field_0(0), field_4(0), field_8(0), + field_C(0), field_10(0), field_14(0) + {} + + int field_0; + int field_4; + int field_8; + int field_C; + int field_10; + int field_14; + int field_18; + int field_1C; + int field_20; + int field_24; + unsigned int uWidth; + unsigned int uHeight; + int field_30; + int field_34; + unsigned __int16 *pPixels; +}; +#pragma pack(pop) + + +/* 185 */ +#pragma pack(push, 1) +struct RenderHWLContainer +{ + RenderHWLContainer(); + bool Load(const wchar_t *pFilename); + bool Release(); + + HWLTexture *LoadTexture(const char *pName, int bMipMaps); + + FILE *pFile; + uint uSignature; + unsigned int uDataOffset; + unsigned int uNumItems; + char *pSpriteNames[50000]; + int pSpriteOffsets[50000]; + int bDumpDebug; + int field_61A94_scale_hwls_to_half; +}; +#pragma pack(pop) + + + +/* 242 */ +#pragma pack(push, 1) +struct RenderBillboardD3D +{ + enum OpacityType: unsigned __int32 + { + Transparent = 0, + Opaque_1 = 1, + Opaque_2 = 2, + Opaque_3 = 3, + InvalidOpacity = 0xFFFFFFFF + }; + + IDirect3DTexture2 *pTexture; + unsigned int uNumVertices; + RenderVertexD3D3 pQuards[4]; + float flt_88; + OpacityType uOpacity; + int field_90; + int sZValue; + unsigned int uParentBillboardID; +}; +#pragma pack(pop) + + + + +#pragma pack(push, 1) +struct RenderD3D_aux +{ + RenderD3D__DevInfo *pInfo; + RenderD3D_D3DDevDesc *ptr_4; +}; +#pragma pack(pop) + + + +/* 183 */ +#pragma pack(push, 1) +struct RenderD3D +{ + RenderD3D(); + + static bool DoesRaiseExceptions(); + + void GetAvailableDevices(RenderD3D__DevInfo **pOutDevices); + void Release(); + bool CreateDevice(unsigned int uDeviceID, int bWindowed, HWND hWnd); + unsigned int GetDeviceCaps(); + void ClearTarget(unsigned int bClearColor, unsigned int uClearColor, unsigned int bClearDepth, float z_clear); + void Present(bool bForceBlit); + bool CreateTexture(unsigned int uTextureWidth, unsigned int uTextureHeight, IDirectDrawSurface4 **pOutSurface, IDirect3DTexture2 **pOutTexture, bool bAlphaChannel, bool bMipmaps, unsigned int uMinDeviceTexDim); + void HandleLostResources(); + + + unsigned int bWindowed; + int field_4; + int field_8; + HWND hWindow; + int field_10; + int field_14; + int field_18; + RenderD3D__DevInfo *pAvailableDevices; + IDirectDraw4 *pHost; + IDirect3D3 *pDirect3D; + IUnknown *pUnk; + IDirectDrawSurface4 *pBackBuffer; + IDirectDrawSurface4 *pFrontBuffer; + IDirectDrawSurface4 *pZBuffer; + IDirect3DDevice3 *pDevice; + IDirect3DViewport3 *pViewport; + int field_40; + int field_44; + char pErrorMessage[48]; + char field_78[208]; +}; +#pragma pack(pop) + + +/* 182 */ +#pragma pack(push, 1) +struct Render +{ + Render(); + ~Render(); + + static Render *Create() {return new Render;} + + bool Initialize(bool bWindowed, uint uDefaultDevice, + bool bColoredLights, uint uDetailLevel, uint bTinting); + + static void __fastcall SetPixel(struct Vec2_int_ *pTargetXY, unsigned __int16 uColor); + + bool IsColorKeySupported(IDirectDraw4 *); + void _49EBF1(); + void ClearBlack(); + void PresentBlackScreen(); + void SavePCXScreenshot(); + void _49F1BC(const char *a1); + int _49F5A2(int a2, int a3, int a4, void *Dst, int a6, int a7); + FILE *SavePCXImage(const char *Filename, char *a3, int a4, int a5); + void ClearTarget(unsigned int uColor); + void Release2(); + void Present(); + void _49FD3A(); + void CreateZBuffer(); + void Release(); + void CreateSomeTexture(); + bool InitializeFullscreen(HWND hWnd); + bool SwitchToWindow(HWND hWnd); + char Line2D(unsigned int uX, unsigned int uY, unsigned int uZ, unsigned int uW, unsigned __int16 uColor); + void ClearZBuffer(int a2, int a3); + void Clip_v2(unsigned int uX, unsigned int uY, unsigned int uZ, unsigned int uW); + void ParseTargetPixelFormat(); + bool LockSurface_DDraw4(IDirectDrawSurface4 *pSurface, DDSURFACEDESC2 *pDesc, unsigned int uLockFlags); + bool LockSurface_DDraw2(IDirectDrawSurface2 *pSurface, DDSURFACEDESC *pDesc, unsigned int uLockFlags); + void CreateDirectDraw(); + void SetDirectDrawCooperationMode(HWND hWnd, bool bFullscreen); + void SetDirectDrawDisplayMode(unsigned int uWidth, unsigned int uHeight, unsigned int uBPP); + void CreateFrontBuffer(); + void CreateBackBuffer(); + void CreateDirectDrawPrimarySurface(); + void CreateClipper(HWND a2); + void GetTargetPixelFormat(DDPIXELFORMAT *pOut); + void LockRenderSurface(void **pOutSurfacePtr, unsigned int *pOutPixelsPerRow); + bool UsingDirect3D(); + void UnlockBackBuffer(); + void LockFrontBuffer(void **pOutSurface, unsigned int *pOutPixelsPerRow); + void UnlockFrontBuffer(); + void RestoreFrontBuffer(); + HRESULT _4A184C(); + void PresentRect(RECT *a2, RECT *a3); + void BltToFront(RECT *pDstRect, IDirectDrawSurface *pSrcSurface, RECT *pSrcRect, unsigned int uBltFlags); + void BltBackToFontFast(int a2, int a3, RECT *a4); + unsigned int Billboard_ProbablyAddToListAndSortByZOrder(unsigned int a1); + unsigned int GetBillboardDrawListSize(); + unsigned int GetParentBillboardID(unsigned int uBillboardID); + void BeginSceneD3D(); + void DrawBillboards_And_MaybeRenderSpecialEffects_And_EndScene(); + unsigned int GetActorTintColor(float a2, int a3, int a4, int a5, RenderBillboard *a6); + void DrawPolygon(unsigned int uNumVertices, stru148 *a3, ODMFace *a4, IDirect3DTexture2 *pTexture); + void DrawTerrainPolygon(unsigned int uNumVertices, stru148 *a4, IDirect3DTexture2 *a5, int a6, int a7); + void DrawFan(unsigned int uNumVertices, stru148 *a3, IDirect3DTexture2 *a4); + void _4A2ED5(signed int a2, stru148 *a3, IDirect3DTexture2 *pHwTex); + void DrawIndoorPolygon(unsigned int uNumVertices, struct BLVFace *a3, IDirect3DTexture2 *pHwTex, Texture *pTex, int uPackedID, unsigned int uColor, int a8); + void MakeParticleBillboardAndPush_BLV(RenderBillboardTransform_local0 *a2, IDirect3DTexture2 *a3, unsigned int uDiffuse, int angle); + void MakeParticleBillboardAndPush_ODM(RenderBillboardTransform_local0 *a2, IDirect3DTexture2 *a3, unsigned int uDiffuse, int angle); + void TransformBillboard(RenderBillboardTransform_local0 *a2, Sprite *pSprite, int a1a, RenderBillboard *pBillboard); + void DrawBillboard_Indoor(RenderBillboardTransform_local0 *pSoftBillboard, Sprite *a3, int uPaletteSubindex); + int MakeParticleBillboardAndPush_BLV_Software(int screenSpaceX, int screenSpaceY, int z, int lightColor, int a6); + void DrawProjectile(float srcX, float srcY, float a3, float a4, float dstX, float dstY, float a7, float a8, IDirect3DTexture2 *a9); + void _4A4CC9(struct stru6_stru1_indoor_sw_billboard *a1, int a2); + bool LoadTexture(const char *pName, unsigned int bMipMaps, IDirectDrawSurface4 **pOutSurface, IDirect3DTexture2 **pOutTexture); + HWLTexture *MoveSpriteToDevice(Sprite *pSprite); + void BeginScene(); + void EndScene(); + unsigned int _4A52F1(unsigned int this_, float a3); + void Clip(unsigned int uX, unsigned int uY, unsigned int uZ, unsigned int uW); + void ResetClip(); + void DrawTextureRGB(unsigned int uOutX, unsigned int uOutY, RGBTexture *a4); + void _4A5D33(unsigned int a2, unsigned int a3, int a4, int a5, RGBTexture *pTexture); + void DrawTextureIndexed(unsigned int uX, unsigned int uY, Texture *a4); + void _4A601E(signed int a2, signed int a3, Texture *pTexture, int a5); + void _4A612A(signed int uOutX, unsigned int uOutY, Texture *pTexture, int zVal); + void DrawTextureTransparent(unsigned int uX, unsigned int uY, Texture *pTexture); + void _4A63E6(unsigned int a2, unsigned int a3, Texture *a4, Texture *a5, int a6, int a7, int a8); + void _4A65CC(unsigned int x, unsigned int y, Texture *a4, Texture *a5, int a6, int a7, int a8); + void _4A6776(unsigned int a2, unsigned int a3, Texture *a4); + void DrawTransparentGreenShade(signed int a2, signed int a3, Texture *pTexture); + void _4A6A68(unsigned int a2, unsigned int a3, Texture *a4, __int16 height); + void DrawTextPalette(int x, int y, int a4, int a5, unsigned int uFontHeight, unsigned __int16 *pPalette, int a8); + void DrawText(signed int uOutX, signed int uOutY, unsigned __int8 *pFontPixels, unsigned int uCharWidth, unsigned int uCharHeight, unsigned __int16 *pFontPalette, unsigned __int16 uFaceColor, unsigned __int16 uShadowColor); + void FillRectFast(unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight, unsigned int uColor16); + int _4A6DF5(unsigned __int16 *pBitmap, unsigned int uBitmapPitch, struct Vec2_int_ *pBitmapXY, unsigned __int16 *pTarget, unsigned int uTargetPitch, Vec4_int_ *a7); + void _4A6E7E(unsigned int a2, unsigned int a3, Texture *a4); + char DrawBuildingsD3D(); + struct BSPModel *DrawBuildingsSW(); + int OnOutdoorRedrawSW(); + void DrawSkyD3D(); + int DrawSkySW(struct Span *a1, stru148 *a2, int a3); + void DrawDecorations(); + void DrawLayingItems_Shooting_Magic_ODM(); + void TransformBillboardsAndSetPalettesODM(); + float DrawBezierTerrain(); + void DrawTerrainD3D(int a1, int edx0, int a3); + void DrawTerrainSW(int a1, int a2, int a3); + __int16 ExecOutdoorDrawSW(); + void ChangeBetweenWinFullscreenModes(); + void DrawBillboardList_BLV(); + + + unsigned int bUserDirect3D; + unsigned int bStartInWindow; + unsigned int uDesiredDirect3DDevice; + unsigned int uAcquiredDirect3DDevice; + int field_10; + int field_14; + int field_18_locked_pitch; + int field_1C_clipx; + int field_20_clipy; + int field_24_clipz; + int field_28_clipw; + __int16 field_2C[65536]; + __int16 field_2002C[65536]; + int field_4002C; + int field_40030; + int *pActiveZBuffer; + int *pDefaultZBuffer; + int field_4003C; + int field_40040; + int field_40044; + int field_40048; + int field_4004C; + HWND hWnd; + int field_40054; + unsigned int bWindowMode; + int field_4005C[11]; + RenderD3D *pRenderD3D; + IDirectDraw4 *pDirectDraw4; + IDirectDrawSurface4 *pFrontBuffer4; + IDirectDrawSurface4 *pBackBuffer4; + IDirectDrawSurface4 *pColorKeySurface4; + IDirectDraw2 *pDirectDraw2; + IDirectDrawSurface2 *pFrontBuffer2; + IDirectDrawSurface2 *pBackBuffer2; + IDirectDrawSurface2 *pSomeSurface2; + DDPIXELFORMAT ddpfPrimareSuface; + unsigned int uTargetRBits; + unsigned int uTargetGBits; + unsigned int uTargetBBits; + unsigned int uTargetRMask; + unsigned int uTargetGMask; + unsigned int uTargetBMask; + unsigned int uNumSceneBegins; + int *ptr_400E8; + unsigned __int16 *pTargetSurface; + unsigned int uTargetSurfacePitch; + unsigned int uClipY; + unsigned int uClipX; + unsigned int uClipW; + unsigned int uClipZ; + unsigned int bClip; + unsigned int bColorKeySupported; + unsigned int uNumD3DSceneBegins; + int field_40110; + RenderHWLContainer pD3DBitmaps; + RenderHWLContainer pD3DSprites; + unsigned int bUseColoredLights; + unsigned int bRequiredTextureStagesAvailable; + unsigned int bTinting; + unsigned int uLevelOfDetail; + unsigned int uMaxDeviceTextureDim; + unsigned int uMinDeviceTextureDim; + int field_10365C; + unsigned int bUsingSpecular; + uint uFogColor; + int field_103668; + unsigned int pHDWaterBitmapIDs[7]; + char field_103688[32]; + int field_1036A8_bitmapid; + int field_1036AC_bitmapid; + IDirectDrawSurface4 *pSurface; + IDirect3DTexture2 *pTexture; + int field_1036B8; + int _gpu_memory_used; + void (__cdecl *pBeforePresentFunction)(); + int field_1036C4; + uint bFogEnabled; + int field_1036CC; + RenderBillboardD3D pBillboardRenderListD3D[1000]; + unsigned int uNumBillboardsToDraw; + int field_129834; + unsigned int uCurrentlyLockedSurfacePitch; + unsigned __int16 *pCurrentlyLockedSurfaceDataPtr; + unsigned __int16 *pCurrentlyLockedSoftSurface; +}; +#pragma pack(pop) + +extern struct IDirectDrawClipper *pDDrawClipper; +extern struct Render *pRenderer; // idb + + + + +/* 248 */ +#pragma pack(push, 1) +struct RenderBillboardTransform_local0 +{ + unsigned __int16 *pTarget; + int *pTargetZ; + int uScreenSpaceX; + int uScreenSpaceY; + int field_10; + int field_14; + char field_18[8]; + unsigned __int16 *pPalette; + unsigned __int16 *pPalette2; + int sZValue; + unsigned int uFlags; + unsigned int uTargetPitch; + unsigned int uViewportX; + unsigned int uViewportY; + unsigned int uViewportZ; + unsigned int uViewportW; + int field_44; + int uParentBillboardID; + int uTintColor; +}; +#pragma pack(pop) + + + + +extern int uNumDecorationsDrawnThisFrame; // weak +extern RenderBillboard pBillboardRenderList[500]; +extern unsigned int uNumBillboardsToDraw; +extern int uNumSpritesDrawnThisFrame; // weak + + + + +extern RenderVertexSoft array_507D30[50]; +extern RenderVertexSoft array_508690[50]; +extern RenderVertexSoft array_508FF0[50]; +extern RenderVertexSoft array_509950[50]; +extern RenderVertexSoft array_50A2B0[50]; +extern RenderVertexSoft array_50AC10[50]; + +extern RenderVertexSoft array_73D150[20]; + +extern RenderVertexD3D3 arary_77E5C8[50]; + +extern RenderVertexSoft *ptr_801A04; +extern RenderVertexSoft *ptr_801A08; + +extern RenderVertexSoft pVerticesSR_801A10[384]; +extern RenderVertexSoft pVerticesSR_806210[384]; \ No newline at end of file