📄 halsurf.cpp
字号:
{
// If the hardware can't handle something then do the following.
lpUOData->ddRVal = DDERR_NOOVERLAYHW;
return DDHAL_DRIVER_HANDLED;
}
// 5520 can't handle bigger than 384 source images.
//if((SrcWidth > 384) && (pDriverData->SysInfo1.CoreLogic == SYSINFO1_CORE_5520))
//{
// // If the hardware can't handle something then do the following.
// lpUOData->ddRVal = DDERR_NOOVERLAYHW;
// return DDHAL_DRIVER_HANDLED;
//}
#ifdef HWTEST
// Go wack a pattern into the overlay surface for Hardware Turnon
LoadTestPattern(&VidCfg, SrcHeight, (DWORD)lpUOData->lpDDSrcSurface->lpGbl->lPitch,
lpUOData->lpDDSrcSurface->lpGbl->fpVidMem);
#endif
}
//jp if emma dvd playing, disable 420 format, and change vid_fmt to Y0CbY1Cr
if(OverlayData.VidFormat == EMMA) {
VidCfg &= ~VC_VCFG_420_MODE;
VidCfg &= 0xfffffff3;
VidCfg |= 0x00000008;
}
// End hardware state change (Latch data on next VSYNC)
RETAILMSG(0,(TEXT("End load = %08x\r\n"),VidCfg));
EndLoad(VidCfg);
/*
* color key?
*/
if(lpUOData->dwFlags & DDOVER_KEYSRCOVERRIDE)
{
ColorKey = lpUOData->overlayFX.dckSrcColorkey.dwColorSpaceLowValue;
SetChromaKey(ColorKey, pDriverData->dwBpp);
}
else if(lpUOData->dwFlags & DDOVER_KEYDESTOVERRIDE)
{
if(lpUOData->dwFlags & DDOVER_DDFX)
{
ColorKey = lpUOData->overlayFX.dckDestColorkey.dwColorSpaceLowValue;
}
else
{
ColorKey = lpUOData->lpDDDestSurface->ddckCKDestOverlay.dwColorSpaceLowValue;
}
//DPF( "Dest ColorKey = %08lx", ColorKey);
SetChromaKey(ColorKey, pDriverData->dwBpp);
}
// else if(lpUOData->dwFlags & DDOVER_DDFX)
else
{
SetChromaKey(0, 0);
}
testvalue = MEM_READ_32(pDriverData->RegLinear, VC_VID_CFG);
MEM_WRITE_32(pDriverData->RegLinear, VC_VID_CFG, 0);
MEM_WRITE_32(pDriverData->RegLinear, VC_VID_CFG, testvalue);
// modifying registers to make toast app work.
/* testvalue2 = MEM_READ_32(pDriverData->RegLinear, 0x8320);
testvalue2 &= 0x003fffff;
testreg2 = (DWORD)(pDriverData->FbLinear);
testreg2 += testvalue2;
for (testreg2; testreg2 < (pDriverData->FbLinear+testvalue2+0x4800); testreg2+=16)
{
testvalue4 = *((DWORD *)(testreg2));
testvalue5 = *((DWORD *)(testreg2 + 4));
testvalue6 = *((DWORD *)(testreg2 + 8));
testvalue7 = *((DWORD *)(testreg2 + 12));
RETAILMSG(1,(TEXT("%08x :: %08x %08x %08x %08x\r\n"),testreg2, testvalue4, testvalue5, testvalue6, testvalue7));
// *((DWORD *)(testreg2)) = 0x5555aaaa;
}
*/
/* testvalue = MEM_READ_32(pDriverData->RegLinear, VC_VID_CFG);
// testvalue &= 0x0f;
testvalue = 0x480c6883;
MEM_WRITE_32(pDriverData->RegLinear, VC_VID_CFG, testvalue);
// testvalue = MEM_READ_32(pDriverData->RegLinear, 0x10004);
// testvalue = 0x803100ef;
// MEM_WRITE_32(pDriverData->RegLinear, 0x10004, testvalue);
// testvalue = MEM_READ_32(pDriverData->RegLinear, 0x10018);
// testvalue = 0x00fcfcfc;
// MEM_WRITE_32(pDriverData->RegLinear, 0x10018, testvalue);
// testvalue = 0x00001008;
// MEM_WRITE_32(pDriverData->RegLinear, 0x10028, testvalue);
// testvalue = 0x00e20000;
// MEM_WRITE_32(pDriverData->RegLinear, 0x10c04, testvalue);
// testvalue = MEM_READ_32(pDriverData->RegLinear, 0x10014);
// RETAILMSG(1,(TEXT("0x10014 = %08x\r\n"),testvalue));
// MEM_WRITE_32(pDriverData->RegLinear, 0x10014, 0);
// testvalue = MEM_READ_32(pDriverData->RegLinear, 0x10004);
// RETAILMSG(1,(TEXT("0x10014 = %08x\r\n"),testvalue));
testvalue = 0x1008;
MEM_WRITE_32(pDriverData->RegLinear, 0x10028, testvalue);
// MEM_WRITE_32(pDriverData->RegLinear, 0x10c04, 0x0e20000);
// MEM_WRITE_32(pDriverData->RegLinear, 0x10c2c, 0x04);
MEM_WRITE_32(pDriverData->RegLinear, 0x8300, 0x4758);
testvalue = MEM_READ_32(pDriverData->RegLinear, 0x8304);
testvalue = 0x10006543;
MEM_WRITE_32(pDriverData->RegLinear, 0x8304, testvalue);
testvalue = 0x0002106f;
MEM_WRITE_32(pDriverData->RegLinear, 0x8308, testvalue);
testvalue = 0x0023004;
MEM_WRITE_32(pDriverData->RegLinear, 0x830c, testvalue);
testvalue = MEM_READ_32(pDriverData->RegLinear, 0x8328);
testvalue &=0x0000ffff;
testvalue |= 0x01230000;
MEM_WRITE_32(pDriverData->RegLinear, 0x8328, testvalue);
testvalue = MEM_READ_32(pDriverData->RegLinear, 0x8320);
testvalue &= 0xfffffff0;
MEM_WRITE_32(pDriverData->RegLinear, 0x8320, testvalue);
MEM_WRITE_32(pDriverData->RegLinear, 0x8300, 0);
*/
/* testreg=0x10000;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg = 0x10800;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg = 0x10c00;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg = 0x8300;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
testreg += 4;
testvalue = MEM_READ_32(pDriverData->RegLinear, testreg);
RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
*/
lpUOData->ddRVal = DD_OK;
return DDHAL_DRIVER_HANDLED;
} /* UpdateOverlay32 */
DWORD WINAPI HalSetOverlayPosition( LPDDHAL_SETOVERLAYPOSITIONDATA lpSOPData )
{
//DebugBreak();
// DEBUGENTER( HalSetOverlayPosition );
// RETAILMSG(1,(TEXT("HalSetOverlayPosition %X, %X\r\n"), lpSOPData->lXPos, lpSOPData->lYPos));
/*
typedef struct _DDHAL_SETOVERLAYPOSITIONDATA
{
LPDDRAWI_DIRECTDRAW_GBL lpDD; // driver struct
LPDDRAWI_DDRAWSURFACE_LCL lpDDSrcSurface; // src surface
LPDDRAWI_DDRAWSURFACE_LCL lpDDDestSurface;// dest surface
LONG lXPos; // x position
LONG lYPos; // y position
HRESULT ddRVal; // return value
LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition;
// PRIVATE: ptr to callback
} DDHAL_SETOVERLAYPOSITIONDATA;
*/
// Implementation
DWORD VidCfg;
/*
* NOTES:
*
* This callback is invoked to set an overlay position
*/
//DPF( "SET OVERLAY POSITION" );
//DPF( "Overlay surface = %08lx", lpSOPData->lpDDSrcSurface );
//DPF( "(%ld,%ld)", lpSOPData->lXPos, lpSOPData->lYPos );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -