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

📄 l2_lcdtv.c

📁 dz3000_51.0.0.4.rar
💻 C
📖 第 1 页 / 共 5 页
字号:
	else if(index==4){
		XBYTE[0x2D43] = r/8;	// set R
		XBYTE[0x2D44] = g/8;	// set G
		XBYTE[0x2D45] = b/8;	// set B
        }
	else if(index==5){
		XBYTE[0x2D46] = r/8;	// set R
		XBYTE[0x2D47] = g/8;	// set G
		XBYTE[0x2D48] = b/8;	// set B
        }
	else if(index==6){
		XBYTE[0x2D49] = r/8;	// set R
		XBYTE[0x2D4A] = g/8;	// set G
		XBYTE[0x2D4B] = b/8;	// set B
        }
	else if(index==7){
		XBYTE[0x2D4C] = r/8;	// set R
		XBYTE[0x2D4D] = g/8;	// set G
		XBYTE[0x2D4E] = b/8;	// set B
        }
	else{
		XBYTE[0x2D4F] = r/8;	// set R
		XBYTE[0x2D50] = g/8;	// set G
		XBYTE[0x2D51] = b/8;	// set B
        }

        MemStretch = tmp;
	return LCD_state;
}

//-----------------------------------------------------------------------------
//L2_SetFOSDIndex
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetFOSDIndex(UCHAR y, UCHAR x, USHORT value)
{
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;
	if(x>24 || y>9 || value >511)
		LCD_state = 1;
        else{
                if(value>255){
                        XBYTE[0x2D2C] = 0x03;   // turn on buffer enable
		}
                else{
                        XBYTE[0x2D2C] = 0x02;   // turn on buffer enable
                }
		XBYTE[0x2D2D] = (25*y) + x;	// set buffer address
		XBYTE[0x2D2E] = value;	// set the index
        }

        MemStretch = tmp;
	return LCD_state;
}

//-----------------------------------------------------------------------------
//L2_SetFOSDAttr
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetFOSDAttr(UCHAR y, UCHAR x, UCHAR attr)
{
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	if(x>24 || y>9 || attr>63)
		LCD_state = 1;
	else{
                XBYTE[0x2D2C] = 4;              // turn on buffer enable
		XBYTE[0x2D2D] = (25*y) + x;	// set buffer address
		XBYTE[0x2D2E] = attr;		// set the attribute
	}

        MemStretch = tmp;
        return 0;
}


//-----------------------------------------------------------------------------
//L2_SetFOSDOffset
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetFOSDOffset(UCHAR x, UCHAR y, UCHAR scrll)
{
	USHORT osdhofst;
	UCHAR LCD_state = 0;
        USHORT tmp;
        //patch4.3@yichang@0611 for version B/C chip co-exist
        UCHAR tmp1;

        //patch4.3@yichang@0611 for version B/C chip co-exist
        tmp1 = MemStretch;
        MemStretch = 0x01;


	tmp = XBYTE[0x2D21];
	osdhofst = ((XBYTE[0x2D08]+(XBYTE[0x2D09]<<8)-XBYTE[0x2D07])*tmp/64)+x;

//	printf("osdhofst = %x \n",osdhofst);
	if(x>24 || y>9)
		LCD_state = 1;
	else{
		XBYTE[0x2D31] = scrll;				// set the scrolling vector
		XBYTE[0x2D33] = y;		   			// set vertical offset
		XBYTE[0x2D34] = (osdhofst%256);		// set horizontal offset
		}

        //patch4.3@yichang@0611 for version B/C chip co-exist
        MemStretch = tmp1;
	return 0;
}
//-----------------------------------------------------------------------------
//L2_SetFOSDBGMixlevel
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetFOSDBGMixlevel(UCHAR level)
{
	UCHAR regdata;
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	if(level>7)
		LCD_state = 1;
	else{
		regdata = XBYTE[0x2D35];	// read original value
		XBYTE[0x2D35] = (level*4)+(regdata&0x03);	// set the new blending level
        }

        MemStretch = tmp;
	return LCD_state;
}


//-----------------------------------------------------------------------------
//L2_SetOSDSelWindow
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetOSDSelWindow(USHORT x0, USHORT y0, USHORT x1, USHORT y1, UCHAR color)
{
	UCHAR LCD_state = 0;
	USHORT voffset, hoffset;
	USHORT tmp;
        //patch4.3@yichang@0611 for version B/C chip co-exist
        UCHAR tmp1;

        tmp1 = MemStretch;
        MemStretch = 0x01;

//printf("(%d,%d),(%d,%d),%bd\n",x0,y0,x1,y1,color);

	tmp = XBYTE[0x2D20];
	hoffset = ((XBYTE[0x2D08]+(XBYTE[0x2D09]<<8)-2))*tmp/64;
	voffset = XBYTE[0x2D0a] + (XBYTE[0x2D0b]<<8);
	XBYTE[0x2D10] = (x0+hoffset)%256;	// selwx0
	XBYTE[0x2D11] = (x0+hoffset)/256;	// selwx0
	XBYTE[0x2D12] = (y0+voffset)%256;	// selwy0
	XBYTE[0x2D13] = (y0+voffset)/256;	// selwy0
	XBYTE[0x2D14] = (x1+hoffset)%256;	// selwx1
	XBYTE[0x2D15] = (x1+hoffset)/256;	// selwx1
	XBYTE[0x2D16] = (y1+voffset)%256;	// selwy1
	XBYTE[0x2D17] = (y1+voffset)/256;	// selwy1

//	printf("2d08 = %bx 2d09 = %bx \n",XBYTE[0x2D08],XBYTE[0x2D09]);
//	printf("2d20 = %bx hoffset= %x voffset = %x \n",XBYTE[0x2D20],hoffset,voffset);

	if(color<8){
		XBYTE[0x2D18] = 0x84 + (color*16);	// set select window color
		}
	else if(color==8){
		XBYTE[0x2D18] = 0x00;			// turn off select window
		}
	else if(color==9){	// set select window size
		XBYTE[0x2D18] = 0x8f;			// set select window color
		}
	else if(color==10){	// set select window size
		XBYTE[0x2D18] = 0x8e;			// set select window color
		}
	else{
		LCD_state = 1;
		}

        //patch4.3@yichang@0611 for version B/C chip co-exist
        MemStretch = tmp1;
	return LCD_state;
}


//-----------------------------------------------------------------------------
//L2_SetLCDTVGamma
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetLCDTVGamma(UCHAR* table)
{
	UCHAR i;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;
	for(i=0;i<16;i++)
		XBYTE[0x2D60+i] = table[i];

        MemStretch = tmp;
	return 0;
}

//-----------------------------------------------------------------------------
//L2_TurnOnTVGamma
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_TurnOnTVGamma(UCHAR mode)
{
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;
	if(mode==0){
		XBYTE[0x2D2B] = XBYTE[0x2D2B] & 0xFE;	// turn off Gamma
        }
	else if(mode==1){
		XBYTE[0x2D2B] = XBYTE[0x2D2B] | 0x01;	// turn on Gamma
        }
	else{
		LCD_state = 1;
        }

        MemStretch = tmp;
	return LCD_state;
}

//-----------------------------------------------------------------------------
//L2_DefineColorKey
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_DefineColorKey(UCHAR attrib)
{
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	if(attrib==0){
		XBYTE[0x2D2F] = 0x00;			// turn off color key function
	}
	else{
		XBYTE[0x2D2F] = attrib | 0x80; // set the color key threshold
        }

        MemStretch = tmp;
	return LCD_state;
}

//-----------------------------------------------------------------------------
//L2_CtrlScreen
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_CtrlScreen(UCHAR attrib)
{
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;
//	//printf("L2_CtrlScreen Enter \n");
	if(attrib==0){	// normal display
		XBYTE[0x2D30] = 0x00;
		XBYTE[0x2D01] = XBYTE[0x2D01] | 0x10;
        }
	else if(attrib==1){	// turn on FOSD
		XBYTE[0x2D30] = 0x02;
                XBYTE[0x2D01] = XBYTE[0x2D01] | 0x10;
        }
	else if(attrib==2){	// show BG color
		XBYTE[0x2D30] = 0x01;
		XBYTE[0x2D01] = XBYTE[0x2D01] & 0x0f;
        }
	else if(attrib==3){	// no image
		XBYTE[0x2D01] = XBYTE[0x2D01] & 0x0f;
        }
	else{
		LCD_state = 1;
        }
        MemStretch = tmp;
	return LCD_state;
}

//-----------------------------------------------------------------------------
//L2_ShowFOSDEffect
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_ShowFOSDEffect(UCHAR attrib, UCHAR color)
{
	UCHAR i, j;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	for(j=0;j<10;j++)
		for(i=0;i<25;i++)
		{
			L2_SetFOSDIndex(j, i, j*32+i);
			L2_SetFOSDAttr(j, i, attrib*16+8+color);
		}
	XBYTE[0x2D30] = 0x02;

        MemStretch = tmp;
	return 0;
}

//-----------------------------------------------------------------------------
//L2_SetDisplayOffset
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetDisplayOffset(USHORT xoff, USHORT yoff)
{
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	XBYTE[0x2D1B] = (UCHAR)yoff;
	XBYTE[0x2D1C] = (UCHAR)(yoff>>8);
	XBYTE[0x2D1D] = (UCHAR)xoff;
	XBYTE[0x2D1E] = (UCHAR)(xoff>>8);

        MemStretch = tmp;
	return 0;
}

//-----------------------------------------------------------------------------
// L2_TestTVSRAM
//-----------------------------------------------------------------------------
// return value
// 0: success
// 1: SRAM256x9 low byte error
// 2: SRAM256x9 high byte error
// 3: SRAM256x6 error
#ifdef TestModeEn
UCHAR L2_TestTVSRAM(UCHAR bank)
{
        UCHAR status = L2K_SUCCESS;
        ULONG SRAMAddr;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

        //body
        // TV SRAM Test
        if(bank==0|bank==3)
        {
		XBYTE[0x20E0]=0x00; // Disable CPUSRAMEn
		XBYTE[0x2D2C]=0x02; // SRAM256x9 low byte
		XBYTE[0x20E0]=0x03; // Enable CPUSRAMEn
		for(SRAMAddr=0x2D00;SRAMAddr<0x2DFF;SRAMAddr++)
        	XBYTE[SRAMAddr] = 0x55;
		for(SRAMAddr=0x2D00;SRAMAddr<0x2DFF;SRAMAddr++)
        	if(XBYTE[SRAMAddr]!=0x55) status = 1;
		for(SRAMAddr=0x2D00;SRAMAddr<0x2DFF;SRAMAddr++)
        	XBYTE[SRAMAddr] = 0xAA;
		for(SRAMAddr=0x2D00;SRAMAddr<

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -