📄 misc.cpp
字号:
if ((cjOut >= sizeof(SMIINFO)) && (pvOut != NULL))
{
memset(pvOut,0,sizeof(SMIINFO));
((SMIINFO *)pvOut)->nScreenWidth = m_nScreenWidth;
((SMIINFO *)pvOut)->nScreenHeight = m_nScreenHeight;
((SMIINFO *)pvOut)->nScreenBpp = m_nScreenBpp;
((SMIINFO *)pvOut)->nScreenStride = m_nScreenStride;
((SMIINFO *)pvOut)->nVideoMemorySize = m_nVideoMemorySize;
((SMIINFO *)pvOut)->dwPhysicalModeID = m_dwPhysicalModeID;
((SMIINFO *)pvOut)->nChipID = m_SMISettings.m_nChipID;
((SMIINFO *)pvOut)->nLAWPhysical = m_nLAWPhysical;
((SMIINFO *)pvOut)->pLAW = (DWORD) m_pLAW;
((SMIINFO *)pvOut)->nLFBPhysical = m_nLAWPhysical;
((SMIINFO *)pvOut)->pLFB = (DWORD) m_pLAW;
((SMIINFO *)pvOut)->nREGPhysical = m_nREGPhysical;
((SMIINFO *)pvOut)->pREG = (DWORD) m_pREG;
((SMIINFO *)pvOut)->pMMIO = 0; //(DWORD) m_pMMIO;
((SMIINFO *)pvOut)->pCPR = 0; //(DWORD) m_pCPR;
((SMIINFO *)pvOut)->pDPR = (DWORD) m_pDPR;
((SMIINFO *)pvOut)->pVPR = 0; //(DWORD) m_pVPR;
((SMIINFO *)pvOut)->pSMI = (DWORD) this;
((SMIINFO *)pvOut)->nVersion = (DWORD) ESC_VERSION;
((SMIINFO *)pvOut)->nINTR = (DWORD)m_SMISettings.m_IRQ;
((SMIINFO *)pvOut)->nSMIVersion = (DWORD) SMI_VERSION;
((SMIINFO *)pvOut)->nSMIDate = (DWORD) SMI_DATE;
((SMIINFO *)pvOut)->nPanelSize = (DWORD) ((m_SMISettings.m_dwCyPanel & 0xFFFF) << 16) |
(m_SMISettings.m_dwCxPanel & 0xFFFF);
#ifdef ROTATION_ENABLE
((SMIINFO *)pvOut)->iRotate = ((DMDO_0 | DMDO_90 | DMDO_180 | DMDO_270) << 8) | ((BYTE)m_iRotate);
#endif
((SMIINFO *)pvOut)->nFlag =
#ifdef ENABLE_DIRECT3D
(SMIINFOVGX_D3D) |
#endif
#ifdef ROTATION_ENABLE
(SMIINFOVGX_ROTATION) |
#endif
#ifndef DD_ENABLE
(SMIINFOVGX_NODD) |
#endif
#ifdef MULTIMONEMU_ENABLE
(SMIINFOVGX_MMEMU) |
#endif
#ifdef DISPPERF_ENABLE
(SMIINFOVGX_DISPPERF) |
#endif
0;
/*
((g_bDSTN) ? SMIINFO_DSTN : 0) |
((g_bDualApp) ? SMIINFO_DUALAPP : 0) |
((g_bSwCursor) ? SMIINFO_SWCURSOR : 0) |
((g_bAutoPC) ? SMIINFO_AUTOPC : 0) |
((g_bTruckPC) ? SMIINFO_TRUCKPC : 0) |
((g_bP350) ? SMIINFO_P350 : 0) |
((g_bP480234) ? SMIINFO_P480234 : 0) |
((g_bPTosh400234NT) ? SMIINFO_PTOSH400234NT : 0) |
((g_bPSharp320x240) ? SMIINFO_PSHARP320x240 : 0) |
0;
*/
RetVal = 1;
}
else
{
SetLastError (ERROR_INVALID_PARAMETER);
RetVal = -1;
}
return (ULONG) RetVal;
}
ULONG SMI::HandleSMIRegsCommand(ULONG cjIn, PVOID pvIn, ULONG cjOut, PVOID pvOut)
{
int RetVal = 0; // Not Supported
//PALETTEENTRY pal;
if ((cjOut >= sizeof(SMIREGSOUT)) && (pvOut != NULL) &&
(cjIn >= sizeof(SMIREGSIN)) && (pvIn != NULL))
{
DWORD nCmd = ((SMIREGSIN *)pvIn)->nCmd;
DWORD nIdx = ((SMIREGSIN *)pvIn)->nReg;
DWORD nWrite = ((SMIREGSIN *)pvIn)->nWrite;
DWORD nWrite2 = ((SMIREGSIN *)pvIn)->nWrite2;
RetVal = 1;
if (nCmd & SMIREGS_WAITVBLANK)
{
WaitForVBlank();
}
// Write part
if (nCmd & SMIREGS_WRITE)
{
if (nCmd & SMIREGS_MMIO)
POKE_32(nIdx,nWrite);
//else if (nCmd & SMIREGS_PAL)
//{
// pal.peRed = (UCHAR) ((nWrite << 2) & 0xFC);
// pal.peGreen = (UCHAR) (((nWrite << 2) & 0xFC00) >> 8);
// pal.peBlue = (UCHAR) (((nWrite << 2) & 0xFC0000) >> 16);
// SetPalette(&pal, (UCHAR) nIdx, 1);
//}
else
RetVal = -1;
}
// Read part
if (nCmd & SMIREGS_READ)
{
if (nCmd & SMIREGS_MMIO)
((SMIREGSOUT *)pvOut)->nRead = PEEK_32(nIdx);
/*
else if (nCmd & SMIREGS_PAL)
{
GetPalette(&pal, (UCHAR) nIdx, 1);
((SMIREGSOUT *)pvOut)->nRead = DWORD(pal.peRed >> 2) |
(DWORD(pal.peGreen >> 2) << 8) |
(DWORD(pal.peBlue >> 2) << 16);
}
*/
else
RetVal = -1;
}
if (!(nCmd & SMIREGS_READ) &&
!(nCmd & SMIREGS_WRITE) &&
!(nCmd & SMIREGS_WAITVBLANK))
RetVal = -1;
}
else
{
RetVal = -1;
}
if (RetVal == -1)
SetLastError (ERROR_INVALID_PARAMETER);
return (ULONG) RetVal;
}
ULONG SMI::HandleSMIMiscCommand(ULONG cjIn, PVOID pvIn, ULONG cjOut, PVOID pvOut)
{
int RetVal = 0; // Not Supported
// This is for debugging purposes
#ifdef ALPHA_BLEND_DEMO
RetVal = 1;
if ((PEEK_32(ALPHA_DISPLAY_CTRL) & 0x04) == 0)
EnableAlphaBlend();
else
DisableAlphaBlend();
#endif
/*
m_bSkip = ~m_bSkip;
WaitForVBlank();
DWORD dwtStart = GetTickCount();
for (int i = 0; i < 100; i++)
WaitForVBlank();
DWORD dwtEnd = GetTickCount();
RETAILMSG(1,(_T("Time for 100 VBlank = %d ms"),dwtEnd-dwtStart));
*/
return (ULONG) RetVal;
}
#ifdef ALPHA_BLEND_DEMO
DWORD buf[3800] = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000,
0x7ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0000000, 0xfc003fff,
0xfc0ffc0f, 0xf, 0x0, 0x0, 0xf8000000, 0xfffc01ff, 0x0,
0xf0040000, 0x3f, 0x0, 0x0, 0xffe000, 0x0, 0x0, 0x0, 0x0, 0x0,
0xfc000000, 0xfc00ffff, 0xfc0ffc0f, 0xf, 0x0, 0x0, 0xf8000000,
0xfffe03ff, 0x0, 0xf0070000, 0x3f, 0x0, 0x0, 0xffe000, 0x0, 0x0,
0x0, 0x0, 0x0, 0xfe000000, 0xfc01ffff, 0xfc0ffc0f, 0xf, 0x0,
0x0, 0xf8000000, 0xfffe03ff, 0x0, 0xf007c000, 0x3f, 0x0, 0x0,
0xffe000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff000000, 0xfc03ffff,
0xfc0ffc0f, 0xf, 0x0, 0x0, 0xf8000000, 0xfffe03ff, 0x0,
0xf007f800, 0x3f, 0x0, 0x0, 0xffe000, 0x0, 0x0, 0x0, 0x0, 0x0,
0xff800000, 0xfc03ffff, 0xfc0ffc0f, 0xf, 0x0, 0x0, 0xf8000000,
0xfffe03ff, 0x0, 0xf007fe00, 0x3f, 0x0, 0x0, 0xffe000, 0x0, 0x0,
0x0, 0x0, 0x0, 0xff800000, 0xfc07ffff, 0xfc0ffc0f, 0xf, 0x0,
0x0, 0xf8000000, 0xfffe03ff, 0x0, 0xf007fe00, 0x3f, 0x0, 0x0,
0xffe000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc00000, 0x7ffff, 0xffc00,
0x0, 0x0, 0x0, 0xf8000000, 0xffff07ff, 0x0, 0x7fe00, 0x0, 0x0,
0x0, 0xffe000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc00000, 0xfff83,
0xffc00, 0x0, 0x0, 0x0, 0xf8000000, 0xffff07ff, 0x0, 0x7fe00,
0x0, 0x0, 0x0, 0xffe000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc00000,
0xfff01, 0xffc00, 0xffc0000, 0x7f80000, 0x7f000000, 0xf8000000,
0xffff07ff, 0xff0000, 0x7fe00, 0x1fe00000, 0xfc000000, 0x1,
0xffe000, 0xfe000, 0x1ff80, 0x0, 0x0, 0x0, 0xffc00000,
0xfc0ffe01, 0xfc0ffc0f, 0x7fff000f, 0x3fff0000, 0xffc7fc00,
0xf8000001, 0xffff07ff, 0x7ffe000, 0xf0ffffe0, 0xfffc003f,
0xff1ff000, 0x7, 0x80ffe000, 0x3ff8ff, 0xfffe0, 0x0, 0x0, 0x0,
0xffc00000, 0xfc000001, 0xfc0ffc0f, 0xffffc00f, 0xffffc001,
0xffe7fc00, 0xf8000003, 0xffbf07ef, 0x1ffff800, 0xf0ffffe0,
0xffff003f, 0xff9ff003, 0xf, 0x80ffe000, 0x7ffcff, 0x3ffff8,
0x0, 0x0, 0x0, 0xffc00000, 0xfc000007, 0xfc0ffc0f, 0xffffe00f,
0xffffe003, 0xfff7fc01, 0xf8000007, 0xffbf8fef, 0x3ffffc00,
0xf0ffffe0, 0xffff803f, 0xffdff007, 0x1f, 0x80ffe000, 0xfffeff,
0x7ffffc, 0x0, 0x0, 0x0, 0xff800000, 0xfc0000ff, 0xfc0ffc0f,
0xfffff00f, 0xfffff007, 0xfffffc03, 0xf8000007, 0xffbf8fef,
0x7ffffe00, 0xf0ffffe0, 0xffffc03f, 0xfffff00f, 0x1f,
0x80ffe000, 0xffffff, 0xfffffe, 0x0, 0x0, 0x0, 0xff800000,
0xfc000fff, 0xfc0ffc0f, 0xfffff80f, 0xfffff807, 0xfffffc07,
0xf8000007, 0xffbf8fef, 0xffffff00, 0xf0ffffe0, 0xffffe03f,
0xfffff01f, 0x1f, 0x80ffe000, 0xffffff, 0xffffff, 0x0, 0x0, 0x0,
0xff000000, 0xfc007fff, 0xfc0ffc0f, 0xfe3ff80f, 0xfe1ff80f,
0xfffffc07, 0xf800000f, 0xff9f8fcf, 0xffc3ff00, 0xf0ffffe0,
0xf87fe03f, 0xfffff01f, 0x3f, 0x80ffe000, 0x1ffffff, 0x1ffc7ff,
0x0, 0x0, 0x0, 0xfe000000, 0xfc00ffff, 0xfc0ffc0f, 0xfc0ffc0f,
0xfc0ffc0f, 0xfe3ffc0f, 0xf800000f, 0xff9f8fcf, 0xff81ff80,
0xf0ffffe1, 0xf03ff03f, 0xf8fff03f, 0x3f, 0x80ffe000,
0x81ffc7ff, 0x1ff81ff, 0x0, 0x0, 0x0, 0xfc000000, 0xfc03ffff,
0xfc0ffc0f, 0xf80ffc0f, 0xfc0ffc1f, 0xfc1ffc0f, 0xf800000f,
0xff9fdfcf, 0xff81ff80, 0xf007fe01, 0xf03ff03f, 0xf07ff03f,
0x3f, 0x80ffe000, 0x81ff83ff, 0x3ff01ff, 0x0, 0x0, 0x0,
0xf0000000, 0xfc07ffff, 0xfc0ffc0f, 0xf80ffe0f, 0xf807fc00,
0xfc0ffc1f, 0xf800000f, 0xff9fdfcf, 0xff00ff80, 0xf007fe03,
0xe01ff03f, 0xf03ff07f, 0x3f, 0x80ffe000, 0xc1ff81ff, 0x1f01ff,
0x0, 0x0, 0x0, 0xc0000000, 0xfc0fffff, 0xfc0ffc0f, 0x7fe0f,
0xf807fe00, 0xfc0ffc1f, 0xf800000f, 0xff9fdfcf, 0xff00ffc0,
0xf007fe03, 0xe01ff83f, 0xf03ff07f, 0x3f, 0x80ffe000,
0xc1ff81ff, 0xff, 0x0, 0x0, 0x0, 0x0, 0xfc0ffffe, 0xfc0ffc0f,
0x7fe0f, 0xf807fe00, 0xfc0ffc1f, 0xf800000f, 0xff8fdf8f,
0xff00ffc0, 0xf007fe03, 0xe01ff83f, 0xf03ff07f, 0x3f,
0x80ffe000, 0xc1ff81ff, 0xff, 0x0, 0x0, 0x0, 0x0, 0xfc1fffc0,
0xfc0ffc0f, 0x7fe0f, 0xf807fe00, 0xfc0ffc1f, 0xf800000f,
0xff8fff8f, 0xff00ffc0, 0xf007fe03, 0xe01ff83f, 0xf03ff07f,
0x3f, 0x80ffe000, 0xc1ff81ff, 0xff, 0x0, 0x0, 0x0, 0x0,
0xfc1ffe00, 0xfc0ffc0f, 0x7fe0f, 0xf807fe00, 0xfc0ffc1f,
0xf800000f, 0xff8fff8f, 0xff00ffc0, 0xf007fe03, 0xe01ff83f,
0xf03ff07f, 0x3f, 0x80ffe000, 0xc1ff81ff, 0xff, 0x0, 0x0, 0x0,
0xffc00000, 0xfc1ffc00, 0xfc0ffc0f, 0x7fe0f, 0xf807fe00,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -