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

📄 l2_lcdtv.new

📁 dz3000_51.0.0.4.rar
💻 NEW
📖 第 1 页 / 共 3 页
字号:
//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;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;
	osdhofst = XBYTE[0x2D08]+(XBYTE[0x2D09]<<8)-XBYTE[0x2D07]+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
        }

        MemStretch = tmp;
	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;

	tmp = XBYTE[0x2D20];
	hoffset = ((XBYTE[0x2D08]+(XBYTE[0x2D09]<<8)-2)<<6)/tmp;
	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;
		}
	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<0x2DFF;SRAMAddr++)                   
        	if(XBYTE[SRAMAddr]!=0xAA) status = 1;
        }
        if(bank==1||bank==3)
        {
		XBYTE[0x20E0]=0x00; // Disable CPUSRAMEn
		XBYTE[0x2D2C]=0x03; // SRAM256x9 high byte
		XBYTE[0x20E0]=0x02; // Enable CPUSRAMEn
		for(SRAMAddr=0x2D00;SRAMAddr<0x2DFF;SRAMAddr++)                   
        	XBYTE[SRAMAddr] = 0x00;
		for(SRAMAddr=0x2D00;SRAMAddr<0x2DFF;SRAMAddr++)                   
        	if(XBYTE[SRAMAddr]!=0x00) status = 1;

		for(SRAMAddr=0x2D00;SRAMAddr<0x2DFF;SRAMAddr++)                   
        	XBYTE[SRAMAddr] = 0x01;
		for(SRAMAddr=0x2D00;SRAMAddr<0x2DFF;SRAMAddr++)                   
        	if(XBYTE[SRAMAddr]!=0x01) status = 1;
        }
        if(bank==2||bank==3)
        {
		XBYTE[0x20E0]=0x00; // Disable CPUSRAMEn
		XBYTE[0x2D2C]=0x04; // SRAM256x6
		XBYTE[0x20E0]=0x02; // Enable CPUSRAMEn
		for(SRAMAddr=0x2D00;SRAMAddr<0x2DFF;SRAMAddr++)                   
        	XBYTE[SRAMAddr] = 0x15;
		for(SRAMAddr=0x2D00;SRAMAddr<0x2DFF;SRAMAddr++)                   
        	if(XBYTE[SRAMAddr]!=0x15) status = 1;

		for(SRAMAddr=0x2D00;SRAMAddr<0x2DFF;SRAMAddr++)                   
        	XBYTE[SRAMAddr] = 0x3A;
		for(SRAMAddr=0x2D00;SRAMAddr<0x2DFF;SRAMAddr++)                   
        	if(XBYTE[SRAMAddr]!=0x3A) status = 1;
        }

        // return
        XBYTE[0x20E0]=0x00; // Disable CPUSRAMEn
        MemStretch = tmp;
        return(status);
}
#endif

#ifdef TestModeEn
UCHAR L2_TestLCDTV(UCHAR TestLevel) USING_0
{
        UCHAR status = L2K_SUCCESS;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;
  
        //avoid warning
        UCHAR  Temp0 = TestLevel;

        //body
        //PRINT_L2("        L2_TestLCDTV: Enter\n");
                 
        // return
        //PRINT_L2("        L2_TestLCDTV: Exit\n");
  
        MemStretch = tmp;
        return(status);
}
#endif

// Display zoom in factor
// 0: 1
// 1: 1.25
// 2: 1.5
// 3: 1.75
// 4: 2
UCHAR L2_DisplayZoomIn(UCHAR factor)
{
	USHORT imghsize,imgvsize;
	USHORT hoffset,voffset;
	UCHAR imghzfac, imgvzfac;
	USHORT imggrp,hpixel,vline;
	USHORT dsphsize, dspvsize;
        UCHAR mode;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	mode = XBYTE[0x2D00];
	if(mode<8&mode%2==0)	// NTSC display size
		{dsphsize = 720;dspvsize = 240;}				
	else if(mode<8&mode%2==1) // PAL display size
		{dsphsize = 720;dspvsize = 288;}				
	else if(mode==8)	// UPS051
		{dsphsize = 288;dspvsize = 220;}
	else if(mode==9)	// AU015AN02
		{dsphsize = 312;dspvsize = 220;}
	else if(mode==10)	// EPSON LCD panel
		{dsphsize = 312;dspvsize = 230;}
	else if(mode==11)	// CASIO LCD panel
		{dsphsize = 354;dspvsize = 240;}
	else if(mode==12)	// GiantPlus STN LCD panel
		{
#ifdef STNLCD
                dsphsize = 240;dspvsize = 160;
#endif
#ifdef STNLCD160
                dsphsize = 160;dspvsize = 120;
#endif
                }          
	else if(mode==14)	// PrimeView TFT LCD panel
		{dsphsize = 640;dspvsize = 480;}
	else if(mode==15)	// USER define
		{dsphsize = 800;dspvsize = 600;}

	factor = factor%5;
	if(XBYTE[0x2746]==0x01|XBYTE[0x2748]==0x00){
		imgvsize = (XBYTE[0x2763]<<8)+XBYTE[0x2762];
		imghsize = (XBYTE[0x2761]<<8)+XBYTE[0x2760];
        }
	else{
		imgvsize = (XBYTE[0x2767]<<8)+XBYTE[0x2766];
		imghsize = (XBYTE[0x2765]<<8)+XBYTE[0x2764];
        }

	voffset = (imgvsize/2)*factor/(factor+4);
	hoffset = (imghsize/2)*factor/(factor+4);
	XBYTE[0x2D1C] = voffset/256;    // voffset high byte
	XBYTE[0x2D1B] = voffset%256;    // voffset low byte
	XBYTE[0x2D1E] = hoffset/256;    // hoffset high byte
	XBYTE[0x2D1D] = ((hoffset%256)/2)*2;    // hoffset low byte

	hpixel = (imghsize*4)/(factor+4);
	vline = (imgvsize*4)/(factor+4);
        if(hpixel%16==0)    imggrp = (hpixel >> 4);
        else imggrp = (hpixel >> 4) + 1;
	imgvzfac = ((ULONG)vline*32)/dspvsize;
	imghzfac = ((ULONG)hpixel*128)/dsphsize;
	XBYTE[0x2D19] = imgvzfac;
	XBYTE[0x2D1A] = imghzfac;
	XBYTE[0x2D1F] = imggrp;

	//printf(" imghsize = %X   imgvsize = %x \n",imghsize,imgvsize);
	//printf(" hpixel = %X   vline = %x \n",hpixel,vline);
	//printf("imghzfac=%bx, imgvzfac=%bx, imggrp=%x \n",imghzfac,imgvzfac,imggrp);    

        MemStretch = tmp;
	return 0;
}

⌨️ 快捷键说明

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