⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 misc.cpp

📁 SM501基于ARMV4/ARMV4I平台
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	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 + -