📄 halcaps.cpp
字号:
// -----------------------------------------------------------------------------
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) 1997-2000 Microsoft Corporation. All Rights Reserved.
// COPYRIGHT (C) 1999-2000 IGS TECHNOLOGIES, INC. (iGST)
//
// -----------------------------------------------------------------------------
#ifdef DDRAW_ENABLE
#include "headers.h"
// callbacks from the DIRECTDRAW object
DDHAL_DDCALLBACKS cbDDCallbacks = {
sizeof( DDHAL_DDCALLBACKS ), // dwSize
DDHAL_CB32_DESTROYDRIVER | // dwFlags
DDHAL_CB32_CREATESURFACE |
DDHAL_CB32_SETCOLORKEY |
DDHAL_CB32_SETMODE |
DDHAL_CB32_WAITFORVERTICALBLANK |
DDHAL_CB32_CANCREATESURFACE |
DDHAL_CB32_CREATEPALETTE |
DDHAL_CB32_GETSCANLINE |
DDHAL_CB32_SETEXCLUSIVEMODE |
DDHAL_CB32_FLIPTOGDISURFACE |
0,
DDGPEDestroyDriver, // DestroyDriver
DDGPECreateSurface, // CreateSurface
DDGPESetColorKeyDrv, // SetColorKey
DDGPESetMode, // SetMode
HalWaitForVerticalBlank, // WaitForVerticalBlank
DDGPECanCreateSurface, // CanCreateSurface
DDGPECreatePalette, // CreatePalette
0, // GetScanLine
HalSetExclusiveMode, // SetExclusiveMode
DDGPEFlipToGDISurface // FlipToGDISurface
};
// callbacks from the DIRECTDRAWCOLORCONTROL pseudo object
DDHAL_DDCOLORCONTROLCALLBACKS ColorControlCallbacks =
{
sizeof(DDHAL_DDCOLORCONTROLCALLBACKS),
0, // DDHAL_COLOR_COLORCONTROL,
0 // &HalColorControl
};
// callbacks from the DIRECTDRAWEXEBUF psuedo object
DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks = {
sizeof( DDHAL_DDEXEBUFCALLBACKS ), // dwSize
DDHAL_EXEBUFCB32_CANCREATEEXEBUF |
DDHAL_EXEBUFCB32_CREATEEXEBUF |
DDHAL_EXEBUFCB32_DESTROYEXEBUF |
DDHAL_EXEBUFCB32_LOCKEXEBUF |
DDHAL_EXEBUFCB32_UNLOCKEXEBUF, // dwFlags
DDGPECanCreateSurface, // CanCreateExecuteBuffer
DDGPECreateExecuteBuffer, // CreateExecuteBuffer
DDGPEDestroyExecuteBuffer, // DestroyExecuteBuffer
DDGPELock, // Lock
DDGPEUnlock // Unlock
};
// callbacks from the DIRECTDRAWKERNEL psuedo object
DDHAL_DDKERNELCALLBACKS KernelCallbacks =
{
sizeof(DDHAL_DDKERNELCALLBACKS),
// DDHAL_KERNEL_SYNCSURFACEDATA |
// DDHAL_KERNEL_SYNCVIDEOPORTDATA |
0,
// &HalSyncSurfaceData,
// &HalSyncVideoPortData
0
};
// callbacks from the DIRECTDRAWMISCELLANEOUS object
DDHAL_DDMISCELLANEOUSCALLBACKS MiscellaneousCallbacks = {
sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS),
// DDHAL_MISCCB32_GETAVAILDRIVERMEMORY |
// DDHAL_MISCCB32_UPDATENONLOCALHEAP |
// DDHAL_MISCCB32_GETHEAPALIGNMENT |
// DDHAL_MISCCB32_GETSYSMEMBLTSTATUS |
0,
0, //HalGetAvailDriverMemory,
0, //HalUpdateNonLocalHeap,
0, //HalGetHeapAlignment,
0 //HalGetSysmemBltStatus
};
// callbacks from the DIRECTDRAWPALETTE object
DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks = {
sizeof( DDHAL_DDPALETTECALLBACKS ), // dwSize
DDHAL_PALCB32_DESTROYPALETTE | // dwFlags
DDHAL_PALCB32_SETENTRIES |
0,
DDGPEDestroyPalette, // DestroyPalette
DDGPESetEntries // SetEntries
};
// callbacks from the DIRECTDRAWSURFACE object
DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks = {
sizeof( DDHAL_DDSURFACECALLBACKS ), // dwSize
DDHAL_SURFCB32_DESTROYSURFACE | // dwFlags
DDHAL_SURFCB32_FLIP |
DDHAL_SURFCB32_SETCLIPLIST | // neither hardware nor DDGPE support, still need to stub it out
DDHAL_SURFCB32_LOCK |
DDHAL_SURFCB32_UNLOCK |
DDHAL_SURFCB32_BLT | // neither hardware nor DDGPE support
DDHAL_SURFCB32_SETCOLORKEY |
// DDHAL_SURFCB32_ADDATTACHEDSURFACE |
DDHAL_SURFCB32_GETBLTSTATUS | // neither hardware nor DDGPE support
DDHAL_SURFCB32_GETFLIPSTATUS |
// DDHAL_SURFCB32_UPDATEOVERLAY |
// DDHAL_SURFCB32_SETOVERLAYPOSITION |
// DDHAL_SURFCB32_RESERVED4 |
DDHAL_SURFCB32_SETPALETTE |
0,
DDGPEDestroySurface, // DestroySurface
HalFlip, // Flip
HalSetClipList, // HalSetClipList
HalLock, // Lock
DDGPEUnlock, // Unlock
HalBlt, // HalBlt stub, must be present although neither hardware nor DDGPE support
DDGPESetColorKey, // SetColorKey
0, // AddAttachedSurface
HalGetBltStatus, // GetBltStatus
HalGetFlipStatus, // GetFlipStatus
0, // UpdateOverlay
0, // SetOverlayPosition
NULL, // reserved4
DDGPESetPalette, // SetPalette
};
DDHAL_DDHALMEMORYCALLBACKS HalMemoryCallbacks = {
sizeof(DDHAL_DDHALMEMORYCALLBACKS),
// DDHAL_KERNEL_HALGETVIDMEM |
// DDHAL_KERNEL_HALSETSURFACEDESC |
0,
// &HalGetVidMem,
// &HalSetSurfaceDesc
};
const DDKERNELCAPS KernelCaps =
{
sizeof(DDKERNELCAPS),
// DDKERNELCAPS_SKIPFIELDS |
// DDKERNELCAPS_AUTOFLIP |
// DDKERNELCAPS_SETSTATE |
// DDKERNELCAPS_LOCK |
// DDKERNELCAPS_FLIPVIDEOPORT |
// DDKERNELCAPS_FLIPOVERLAY |
// DDKERNELCAPS_FIELDPOLARITY |
0,
// DDIRQ_DISPLAY_VSYNC |
// DDIRQ_VPORT0_VSYNC |
0
};
// For the moment we have only one mode for the primary surface (win32e frame buffer)
DDHALMODEINFO modeInfo[] =
{
// Bits/ Uses -----------MASKS-------------
// width height pitch Pixel Palette Freq Red Green Blue Alpha
{ 320, 240, 640, 16, 0, 60, 0xF800, 0x07E0, 0x001F, 0 },
// { 640, 480, 640, 8, 1, 60, 0, 0, 0, 0 },
// { 640, 480, 1280, 16, 0, 60, 0xF800, 0x07E0, 0x001F, 0 },
// { 320, 240, 320, 8, 1, 60, 0, 0, 0, 0 },
};
#define SCREEN_WIDTH (g_pGPE->ScreenWidth())
#define SCREEN_HEIGHT (g_pGPE->ScreenHeight())
// set up by HalInit
// This global pointer is to be recorded in the DirectDraw structure
DDGPE* g_pGPE = (DDGPE*)NULL;
DDGPESurf* g_pDDrawPrimarySurface = NULL;
// InitDDHALInfo must set up this information
unsigned long g_nVideoMemorySize = 0L;
unsigned char * g_pVideoMemory = NULL; // virtual address of video memory from client's side
EXTERN_C void buildDDHALInfo( LPDDHALINFO lpddhi, DWORD modeidx ) {
memset( lpddhi, 0, sizeof(DDHALINFO) ); // Clear the DDHALINFO structure
((Au1100LCD *)g_pGPE)->GetTicksPerFrame(); // initialize m_dwTicksPerFrame
if( !g_pVideoMemory ) // in case this is called more than once...
{
// g_pGPE and g_pDDrawPrimarySurface were already set up by HalInit
unsigned long VirtVideoMemoryStart;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -