📄 mqpat.blt
字号:
void
MQGC::PatternSetupSolid( GPEBltParms *pBltParms, ULONG *ulCmd )
{
// NO NEED to set pattern offset since it is a solid pattern anyway
if ( m_pSrc->Format() == gpe1Bpp )
{
geWAITCMDFIFO( 3 );
geREG(MONO_PATTERN0, 0xFFFFFFFFUL);
geREG(MONO_PATTERN1, 0xFFFFFFFFUL);
geREG(PAT_FG_COLOR, m_ulSolidColor);
*ulCmd |= MONO_PATTERN;
}
else
{
geWAITCMDFIFO( 1 );
geREG(PAT_FG_COLOR, m_ulSolidColor);
*ulCmd |= MONO_PATTERN | MONO_SOLID;
}
}
#ifdef MPATBLT_ON
void
MQGC::PatternSetup1BPP( GPEBltParms *pBltParms, ULONG *ulCmd )
{
// Set Pattern Offset
m_ulDestXY |=
((((m_ulDestXY & 0x0FFFUL) - pBltParms->pptlBrush->x)
& 0x7UL) << 13)
| (((((m_ulDestXY >> 16) & 0x0FFFUL) - pBltParms->pptlBrush->y)
& 0x7UL) << 29);
geWAITCMDFIFO( 4 );
geREG(MONO_PATTERN0, *m_lpPattern);
geREG(MONO_PATTERN1, *(m_lpPattern+1));
geREG(PAT_FG_COLOR, *(m_pLookup+1));
geREG(PAT_BG_COLOR, *m_pLookup);
*ulCmd |= MONO_PATTERN;
}
#endif //MPATBLT_ON
#ifdef CHECK_8BPP
void
MQGC::PatternSetup8BPP( GPEBltParms *pBltParms, ULONG *ulCmd )
{
ULONG idx,max;
DEBUGMSG(GPE_ZONE_MQEMUL1,(TEXT(">> PATTERN BLT8\r\n")));
m_ulDestXY |=
((((m_ulDestXY & 0x0FFFUL) - pBltParms->pptlBrush->x)
& 0x7UL) << 13)
| (((((m_ulDestXY >> 16) & 0x0FFFUL) - pBltParms->pptlBrush->y)
& 0x7UL) << 29);
max = COLOR_PATTERN + (16 * uBUSW);
geWAITFULLCMDFIFO;
for( idx = COLOR_PATTERN; idx < max; idx += uBUSW )
geREG(idx, *m_lpPattern++);
}
#endif //CHECK_8BPP
#ifdef CHECK_16BPP
void
MQGC::PatternSetup16BPP( GPEBltParms *pBltParms, ULONG *ulCmd )
{
ULONG idx,regmax;
DEBUGMSG(GPE_ZONE_MQEMUL1,(TEXT(">> PATTERN BLT16\r\n")));
// Set Pattern Offset
m_ulDestXY |=
((((m_ulDestXY & 0x0FFFUL) - pBltParms->pptlBrush->x)
& 0x7UL) << 13)
| (((((m_ulDestXY >> 16) & 0x0FFFUL) - pBltParms->pptlBrush->y)
& 0x7UL) << 29);
#ifdef CHECK_CMDFIFO
regmax = COLOR_PATTERN;
idx = regmax;
for (ULONG Max = 2 ; Max > 0; Max--)
{
geWAITFULLCMDFIFO;
for(regmax += (16 * uBUSW); idx < regmax; idx += uBUSW )
geREG(idx, *m_lpPattern++);
}
#else //CHECK_CMDFIFO
regmax = COLOR_PATTERN + (32 * uBUSW);
for( idx = COLOR_PATTERN; idx < regmax; idx += uBUSW )
geREG(idx, *m_lpPattern++);
#endif //CHECK_CMDFIFO
}
#endif //CHECK_16BPP
#ifdef CHECK_24BPP
//Not supported!!!
void
MQGC::PatternSetup24BPP( GPEBltParms *pBltParms, ULONG *ulCmd )
{
}
#endif //CHECK_24BPP
#ifdef CHECK_32BPP
void
MQGC::PatternSetup32BPP( GPEBltParms *pBltParms, ULONG *ulCmd )
{
ULONG idx,regmax;
DEBUGMSG(GPE_ZONE_MQEMUL1,(TEXT(">> PATTERN BLT32\r\n")));
#ifdef CHECK_CMDFIFO
regmax = COLOR_PATTERN;
idx = regmax;
for (ULONG Max = 2 ; Max > 0; Max--)
{
geWAITFULLCMDFIFO;
for(regmax += (16 * uBUSW); idx < regmax; idx += uBUSW )
geREG(idx, *m_lpPattern++);
}
#else //CHECK_CMDFIFO
regmax = COLOR_PATTERN + (32 * uBUSW);
for( idx = COLOR_PATTERN; idx < regmax; idx += uBUSW )
geREG(idx, *m_lpPattern++);
#endif //CHECK_CMDFIFO
}
#endif //CHECK_32BPP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -