📄 mqemul2.h
字号:
#ifndef _MQEMUL2_H
#define _MQEMUL2_H
#define IS_ODO 0x01
#define IS_CEPC 0x02
#define IS_WINSDK 0x04
#define IS_EMUL 0x08
#ifdef _USE_MQEMUL
#include <windows.h>
#include <tchar.h>
#endif
//Helpful macro
#if defined( DEBUG ) || defined( _DEBUG )
#ifdef x86
#define MyDebugBreak() _asm {int 3}
#else
#define MyDebugBreak() DebugBreak()
#endif
#else
#define MyDebugBreak()
#endif
#ifdef _WIN32_WCE
#if defined ( SH3 )
#if defined( _MQEMUL ) && defined( _USE_GPE )
//#include "precomp.h" //include iff driver
#endif
#define ETARGET IS_ODO
#elif defined ( _WIN32_WCE_EMULATION )
#define ETARGET IS_EMUL
#else //Must be CEPC
#define ETARGET IS_CEPC
#if defined( _MQEMUL ) && defined( _USE_GPE )
//#include "precomp.h" //include iff driver
#endif
#endif
#endif //_WIN32_WCE
#ifndef ETARGET
#define ETARGET IS_WINSDK
#endif
//Emulation Feature
//Emulated op starts from LSB. Display op starts from MSB
//Note: CE_DRIVER and CE_HARDWARE_OFF flags are checked only after
// none of the BLT_ and LINE_ features are on!!!
#define LINE_ON 0x00000001L
#define LINE_CE_DRIVER 0x00000002L //Whatever in CE Driver. Avail on ODO and CEPC
#define BLT_ROP2 0x00000010L
#define BLT_ROP3 0x00000020L
#define BLT_PATTERN 0x00000040L
#define BLT_RECTFILL 0x00000080L
#define BLT_CE_DRIVER 0x00000100L //Avail on ODO and CEPC
#define BLT_AAFONT 0x00000200L
#define ZOOM_ON 0x80000000L
#define COMPARE_ON 0x40000000L
#define CE_HARDWARE_OFF 0x20000000L //No hardware acceleration is on
//For CEPC, S3 acceleration is turned off.
//Emulation Masks
#define BLT_ON (BLT_ROP2 | BLT_ROP3 | BLT_PATTERN | BLT_RECTFILL | BLT_AAFONT)
#define ALL_OP_ON (ZOOM_ON | COMPARE_ON)
#define ALL_ON (ALL_OP_ON|LINE_ON|BLT_ON|CE_HARDWARE_OFF|BLT_CE_DRIVER|LINE_CE_DRIVER)
//BIU DMA related constants
#define BIU_DMA_GE_ADDR 0
#define BIU_DMA_FB_ADDR 1
#ifndef DLLEXPORT
#define DLLEXPORT _declspec(dllexport)
#endif
#ifndef DLLIMPORT
#define DLLIMPORT _declspec(dllimport)
#endif
#ifdef _MQEMUL
#define DLLDIR DLLEXPORT
#else //_MQEMUL
#define DLLDIR DLLIMPORT
#endif //_MQEMUL
#ifndef _USE_GPE
#define PARAM_BRES_REGULAR 0x0000
#define PARAM_BRES_CE 0x0001
typedef struct BresLineParms_struct //Modified from GPELineParms
{
long xStart;
long yStart;
int cPels;
unsigned long dM;
unsigned long dN;
long llGamma;
int iDir;
LPVOID pDst;
unsigned long ulStride;
unsigned long solidColor;
RECTL *prclClip;
unsigned short mix;
unsigned short nBpp;
unsigned short iParamType;
} BresLineParms, *LPBresLineParms;
#endif //_USE_GPE
#if ETARGET == IS_WINSDK
#define VIDEO_FRONT_INT 0x00000001L
#define VIDEO_BACK_INT 0x00000002L
#define VIDEO_CSC_INT 0x00000004L
#define MAKE_FOURCC( ch0, ch1, ch2, ch3 ) \
( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
#define FOURCC_YUY2 MAKE_FOURCC('Y','U','Y','2')
#define FOURCC_UYVY MAKE_FOURCC('U','Y','V','Y')
#define FOURCC_YVYU MAKE_FOURCC('Y','V','Y','U')
typedef struct tagVideoFileStruct
{
DWORD dwWidth;
DWORD dwHeight;
LONG lPitch;
DWORD dwBytesPerDisplayRow;
DWORD dwDisplayRows;
DWORD dwFourCC;
DWORD dwBitsPerPixel;
} VideoFileStruct, *LPVideoFileStruct;
#endif //IS_WINSDK
#ifdef __cplusplus
extern "C"
{
#endif
//Global exported functions declarations
BOOL DLLDIR WINAPI EmulInitialize( DWORD ulFeatures, HWND hWnd,
DWORD SysMemW=0, DWORD SysMemH=0,
DWORD SysMemBpp=0, DWORD SysMemStride=0);
//#if ETARGET == IS_WINSDK
//BOOL DLLDIR WINAPI EmulLine( long x1, long y1, long x2, long y2, DWORD dwColor,
// USHORT mix, RECTL *prclClip );
//BOOL DLLDIR WINAPI EmulBresLine( LPBresLineParms pLineParm );
//#else //ETARGET == IS_WINSDK
//#ifdef _MQEMUL //include iff drvr
//#ifndef _USE_GPE
//BOOL DLLDIR WINAPI EmulLine( LPBresLineParms pLineParm );
//#else
//BOOL DLLDIR WINAPI EmulLine( GPELineParms *pLineParm );
//#endif //_USE_GPE
//#endif //_MQEMUL
//#endif //ETARGET == IS_WINSDK
BOOL DLLDIR WINAPI EmulTerminate( DWORD ulFeatures );
BOOL DLLDIR WINAPI EmulSetFeature( DWORD dwFeatOn, DWORD dwFeatOff );
BOOL DLLDIR WINAPI EmulSetFeatureValue( DWORD dwFeatureBit, LPVOID lpVal );
BOOL DLLDIR WINAPI EmulGetFeatureValue( DWORD dwFeatureBit, LPVOID lpVal );
BOOL DLLDIR WINAPI EmulDumpScreenBegin( LPTSTR lpFileName, RECT *lpRect, int stride );
BOOL DLLDIR WINAPI EmulDumpScreenSub( LPVOID lpSurf, LPRECT lpRect, int stride );
BOOL DLLDIR WINAPI EmulDumpScreenDone();
BOOL DLLDIR WINAPI EmulCaptureBegin( LPTSTR lpFileName, DWORD, BOOL, LPTSTR );
BOOL DLLDIR WINAPI EmulCaptureDone();
BOOL DLLDIR WINAPI EmulCaptureOpen();
BOOL DLLDIR WINAPI EmulCaptureClose();
BOOL DLLDIR WINAPI EmulCreateSysMem( DWORD width, DWORD height, DWORD bpp, DWORD stride, BYTE initVal=0 );
BOOL DLLDIR WINAPI EmulFreeSysMem();
#if ETARGET == IS_WINSDK
BOOL DLLDIR WINAPI EmulGetSurface( LPVOID );
BOOL DLLDIR WINAPI EmulReleaseSurface( LPVOID );
#endif
BOOL DLLDIR WINAPI StrToHex( TCHAR *lpStr, DWORD *dwValue, int len );
BOOL DLLDIR WINAPI HexToStr( TCHAR *lpStr, DWORD dwValue, int len, BOOL bPrefix );
#ifdef _USE_MQEMUL
//GE Specific.
BOOL DLLDIR WINAPI EmulGeReg( DWORD id, DWORD data );
#if ETARGET == IS_WINSDK
BOOL DLLDIR WINAPI EmulGeInit();
#else
BOOL DLLDIR WINAPI EmulGeInit( LPVOID pDrvSurf, DWORD lStride, int bpp );
#endif
BOOL DLLDIR WINAPI EmulGeTerminate();
BOOL DLLDIR WINAPI EmulGeWaitSrcFIFO( int count );
BOOL DLLDIR WINAPI EmulGeWaitCmdFIFO( int count );
//BIU DMA
BOOL DLLDIR WINAPI EmulBIUDMAWrBuf( DWORD index, DWORD data );
BOOL DLLDIR WINAPI EmulBIUDMARdBuf( DWORD index, DWORD *data );
BOOL DLLDIR WINAPI EmulBIUDMAWrBurst( DWORD address, DWORD count, int addrtype );
BOOL DLLDIR WINAPI EmulBIUDMARdBurst( DWORD address, DWORD count, int addrtype );
//GC Specific
BOOL DLLDIR WINAPI EmulGcReg( DWORD id, DWORD data );
//Video Specific
#if ETARGET == IS_WINSDK
BOOL DLLDIR WINAPI EmulVideoSetFeature( DWORD feature );
BOOL DLLDIR WINAPI EmulVideoGetCoeff( LPBYTE lpVCoeff, LPBYTE lpHCoeff, int *lpMaxVCoeff, int *lpMaxHCoeff );
BOOL DLLDIR WINAPI EmulVideoSetCoeff( LPBYTE lpVCoeff, LPBYTE lpHCoeff, BOOL isDefault, int MaxVCoeff, int MaxHCoeff );
BOOL DLLDIR WINAPI EmulVideoGetCSCMatrix( LPWORD lpwCSC, float *lpfCSC );
BOOL DLLDIR WINAPI EmulVideoSetCSCMatrix( LPWORD lpwCSC, float *lpfCSC, BOOL isDefault );
BOOL DLLDIR WINAPI EmulVideoReadFile( LPTSTR lpFileName, LPVideoFileStruct *lpvfs );
BOOL DLLDIR WINAPI EmulVideoReleaseFile();
//The below func should be removed when Video Input Spec is finalized
BOOL DLLDIR WINAPI EmulVideoSetAdjust( DWORD mode, WORD ygain, WORD cgain, int off, int rotate);
BOOL DLLDIR WINAPI EmulVideoSetFront( DWORD mode, WORD vdec, WORD hdec, WORD hfilter, DWORD hAccIncr, WORD width);
#endif //IS_WINSDK
#endif //_USE_MQEMUL
#ifdef __cplusplus
}
#endif
#endif //_MQEMUL2_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -