📄 l1_system.c
字号:
}
break;
case 0X0103 : //Video Playback (zoom)
L2_SetFOSDIndex(1, 2, 0X075);
L2_SetFOSDIndex(1, 3, 0X068);
L2_SetFOSDIndex(1, 4, 0X063);
L2_SetFOSDIndex(1, 5, 0X064);
L2_SetFOSDIndex(1, 6, 0X06E);
L2_SetFOSDIndex(1, 8, 0X06F);
L2_SetFOSDIndex(1, 9, 0X06B);
L2_SetFOSDIndex(1,10, 0X060);
L2_SetFOSDIndex(1,11, 0X078);
L2_SetFOSDIndex(1,12, 0X061);
L2_SetFOSDIndex(1,13, 0X060);
L2_SetFOSDIndex(1,14, 0X062);
L2_SetFOSDIndex(1,15, 0X06A);
if(G_PVZFactor==20)
{
L2_SetFOSDIndex(1, 17, 0X079);
L2_SetFOSDIndex(1, 18, 0X06E);
L2_SetFOSDIndex(1, 19, 0X06E);
L2_SetFOSDIndex(1, 20, 0X06C);
}
break;
case 0X0104 : //DSC Playback(zoom)
L2_SetFOSDIndex(1, 2, 0X063);
L2_SetFOSDIndex(1, 3, 0X072);
L2_SetFOSDIndex(1, 4, 0X062);
L2_SetFOSDIndex(1, 6, 0X06F);
L2_SetFOSDIndex(1, 7, 0X06B);
L2_SetFOSDIndex(1, 8, 0X060);
L2_SetFOSDIndex(1, 9, 0X078);
L2_SetFOSDIndex(1,10, 0X061);
L2_SetFOSDIndex(1,11, 0X060);
L2_SetFOSDIndex(1,12, 0X062);
L2_SetFOSDIndex(1,13, 0X06A);
if(G_PBZFactor==20)
{
L2_SetFOSDIndex(1, 15, 0X079);
L2_SetFOSDIndex(1, 16, 0X06E);
L2_SetFOSDIndex(1, 17, 0X06E);
L2_SetFOSDIndex(1, 18, 0X06C);
}
break;
case 0X0105 : //DSC Playback Pan
L2_SetFOSDIndex(1, 2, 0X063);
L2_SetFOSDIndex(1, 3, 0X072);
L2_SetFOSDIndex(1, 4, 0X062);
L2_SetFOSDIndex(1, 6, 0X06F);
L2_SetFOSDIndex(1, 7, 0X06B);
L2_SetFOSDIndex(1, 8, 0X060);
L2_SetFOSDIndex(1, 9, 0X078);
L2_SetFOSDIndex(1,10, 0X061);
L2_SetFOSDIndex(1,11, 0X060);
L2_SetFOSDIndex(1,12, 0X062);
L2_SetFOSDIndex(1,13, 0X06A);
L2_SetFOSDIndex(1, 15, 0X06F);
L2_SetFOSDIndex(1, 16, 0X060);
L2_SetFOSDIndex(1, 17, 0X06D);
break;
case 0X0106 : //Graphic OSD
L2_SetFOSDIndex(1, 2, 0X066);
L2_SetFOSDIndex(1, 3, 0X071);
L2_SetFOSDIndex(1, 4, 0X060);
L2_SetFOSDIndex(1, 5, 0X06F);
L2_SetFOSDIndex(1, 6, 0X067);
L2_SetFOSDIndex(1, 7, 0X068);
L2_SetFOSDIndex(1, 8, 0X062);
L2_SetFOSDIndex(1, 12, 0X06E);
L2_SetFOSDIndex(1, 13, 0X072);
L2_SetFOSDIndex(1, 14, 0X063);
break;
case 0X0107 : //Date Stamp
L2_SetFOSDIndex(1, 2, 0X063);
L2_SetFOSDIndex(1, 3, 0X060);
L2_SetFOSDIndex(1, 4, 0X073);
L2_SetFOSDIndex(1, 5, 0X064);
L2_SetFOSDIndex(1, 9, 0X072);
L2_SetFOSDIndex(1, 10, 0X073);
L2_SetFOSDIndex(1, 11, 0X060);
L2_SetFOSDIndex(1, 12, 0X06C);
L2_SetFOSDIndex(1, 13, 0X06F);
break;
case 0X0108 : //Delete Image
L2_SetFOSDIndex(1, 2, 0X063);
L2_SetFOSDIndex(1, 3, 0X064);
L2_SetFOSDIndex(1, 4, 0X06B);
L2_SetFOSDIndex(1, 5, 0X064);
L2_SetFOSDIndex(1, 6, 0X073);
L2_SetFOSDIndex(1, 7, 0X064);
L2_SetFOSDIndex(1, 11, 0X068);
L2_SetFOSDIndex(1, 12, 0X06C);
L2_SetFOSDIndex(1, 13, 0X060);
L2_SetFOSDIndex(1, 14, 0X066);
L2_SetFOSDIndex(1, 15, 0X064);
break;
case 0X0109 : //Play Audio
L2_SetFOSDIndex(1, 2, 0X06F);
L2_SetFOSDIndex(1, 3, 0X06B);
L2_SetFOSDIndex(1, 4, 0X060);
L2_SetFOSDIndex(1, 5, 0X078);
L2_SetFOSDIndex(1, 9, 0X060);
L2_SetFOSDIndex(1, 10, 0X074);
L2_SetFOSDIndex(1, 11, 0X063);
L2_SetFOSDIndex(1, 12, 0X068);
L2_SetFOSDIndex(1, 13, 0X06e);
break;
case 0X010A : //Record Audio
L2_SetFOSDIndex(1, 2, 0X071);
L2_SetFOSDIndex(1, 3, 0X064);
L2_SetFOSDIndex(1, 4, 0X062);
L2_SetFOSDIndex(1, 5, 0X06e);
L2_SetFOSDIndex(1, 6, 0X071);
L2_SetFOSDIndex(1, 7, 0X063);
L2_SetFOSDIndex(1, 9, 0X060);
L2_SetFOSDIndex(1, 10, 0X074);
L2_SetFOSDIndex(1, 11, 0X063);
L2_SetFOSDIndex(1, 12, 0X068);
L2_SetFOSDIndex(1, 13, 0X06e);
break;
default:
break;
}
//patch4.5@richie@no use mark end
*/
return;
}
//patch4.3@richie@zo0607 begin
//patch5.0@richie@sdram mapping
//patch4.5@richie@smooth zoom
USHORT L1_DisplayZoomIn(UCHAR factor)
{
USHORT imghsize,imgvsize;
USHORT hoffset,voffset;
UCHAR imghzfac, imgvzfac;
USHORT imggrp,hpixel,vline;
USHORT dsphsize, dspvsize;
UCHAR mode;
UCHAR tmp;
//patch4.4@richie@tv begin
//adjust for lcdtv start point
UCHAR tmp1,tmp2;
USHORT lcdtvX0,lcdtvY0;
USHORT lcdtvX1,lcdtvY1;
//patch5.0@richie@sdram mapping
USHORT zoomX;
USHORT factorBuf;//wendy
tmp1 = XBYTE[0x2D09];
tmp2 = XBYTE[0x2D08];
lcdtvX0 = ( ((USHORT)tmp1 << 8) | ((USHORT)tmp2) );
tmp1 = XBYTE[0x2D0B];
tmp2 = XBYTE[0x2D0A];
lcdtvY0 = ( ((USHORT)tmp1 << 8) | ((USHORT)tmp2) );
tmp1 = XBYTE[0x2D0D];
tmp2 = XBYTE[0x2D0C];
lcdtvX1 = ( ((USHORT)tmp1 << 8) | ((USHORT)tmp2) );
tmp1 = XBYTE[0x2D0F];
tmp2 = XBYTE[0x2D0E];
lcdtvY1 = ( ((USHORT)tmp1 << 8) | ((USHORT)tmp2) );
//printf("\nZoom lcdtv = (%d,%d) (%d,%d)\n",lcdtvX0,lcdtvY0,lcdtvX1,lcdtvY1);
//printf("Zoom width = %d,height = %d\n",(lcdtvX1 - lcdtvX0 + 1),(lcdtvY1 - lcdtvY0 + 1));
//patch4.4@richie@tv end
tmp = MemStretch;
MemStretch = 0x01;
mode = XBYTE[0x2D00];
//patch4.4@richie@flip
mode = mode & 0x0F;
if(mode<8&mode%2==0) // NTSC display size
{
//patch4.4@richie@tv begin
//dsphsize = 720;dspvsize = 240;
dsphsize = (lcdtvX1 - lcdtvX0 + 1);
dspvsize = (lcdtvY1 - lcdtvY0 + 1);
//patch4.4@richie@tv end
}
else if(mode<8&mode%2==1) // PAL display size
{
//patch4.4@richie@tv begin
//dsphsize = 720;dspvsize = 288;
dsphsize = (lcdtvX1 - lcdtvX0 + 1);
dspvsize = (lcdtvY1 - lcdtvY0 + 1);
//patch4.4@richie@tv end
}
else if(mode==8) // UPS051 or AU015BL01 or CASIO2G1181 or CASIO2G1163
{
#ifdef UPS051
dsphsize = 288;dspvsize = 220;
#endif
#ifdef AU015BL01
dsphsize = 520;dspvsize = 250;
#endif
// patch 5.2.1_28@mattwang@rename CASIO2G to CASIO2G1181 beg
#ifdef CASIO2G1181 //patch5.2.1@cwh@CASIO2G;2003/09/24
dsphsize = 480;dspvsize = 240;
#endif
// patch 5.2.1_28@mattwang@rename CASIO2G to CASIO2G1181 end
// patch 5.2.1_28@mattwang@add CASIO2G1163 LCD pannel beg
#ifdef CASIO2G1163
// patch 5.2.1_31@mattwang@fix CASIO2G1163 setting beg
dsphsize = 280;dspvsize = 226;//220; // 20040414 mattwang modify
// patch 5.2.1_31@mattwang@fix CASIO2G1163 setting end
#endif
// patch 5.2.1_28@mattwang@add CASIO2G1163 LCD pannel end
}
else if(mode==9) // AU015AN02 or AU015AN04
// patch 5.2.1_33@mattwang@add AU015AN04 LCD pannel beg
{
#ifdef AU015AN02
dsphsize = 312;dspvsize = 220;
#endif
#ifdef AU015AN04
dsphsize = 340;dspvsize = 220;
#endif
}
// patch 5.2.1_33@mattwang@add AU015AN04 LCD pannel end
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
//patch4.2@richie@0523
// patch 5.2.1_32@mattwang@fix STNLCD160 & STNLCD128 setting beg
//dsphsize = 161;dspvsize = 120; // 20040423 mattwang mark
dsphsize = 160;dspvsize = 120; // 20040423 mattwang modify
// patch 5.2.1_32@mattwang@fix STNLCD160 & STNLCD128 setting end
#endif
// patch 5.2.1_30@mattwang@add STNLCD128 LCD pannel beg
#ifdef STNLCD128
dsphsize = 128;dspvsize = 128;
#endif
// patch 5.2.1_30@mattwang@add STNLCD128 LCD pannel end
}
else if(mode==14) // PrimeView TFT LCD panel
{dsphsize = 640;dspvsize = 480;}
else if(mode==15) // USER define
{dsphsize = 800;dspvsize = 600;}
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];
}
//patch5.0@richie@sdram mapping begin
//printf("factor=%bd,imghsize=%d,imgvsize=%d\n",factor,imghsize,imgvsize);
// voffset = (imgvsize/2)*factor/(factor+10);
// hoffset = (imghsize/2)*factor/(factor+10);
// hoffset = (2 * (ULONG)factor);//wendy@2004/8/10
// voffset = ((2 * (ULONG)factor) * (ULONG)imgvsize / (ULONG)imghsize);
factorBuf=(((ULONG)factor-10)*(ULONG)imghsize)/(4*(ULONG)factor);
hoffset = (2 * (ULONG)factorBuf);
voffset = ((2 * (ULONG)factorBuf) * (ULONG)imgvsize / (ULONG)imghsize);
//printf("factor=%bd,hoffset=%d,voffset=%d\n",factor,hoffset,voffset);
// vline = (imgvsize*10)/(factor+10);
// hpixel = (imghsize*10)/(factor+10);
if ( ((voffset * 2) >= imgvsize) || ((hoffset * 2) >= imghsize) )
{
return 0;
}
hpixel = imghsize - (hoffset * 2);
vline = imgvsize - (voffset * 2);
zoomX = (imghsize * 100) / hpixel;
//patch5.0@richie@sdram mapping end
//printf("factor=%bd,hpixel=%d,vline=%d\n",factor,hpixel,vline);
if(hpixel%16==0) imggrp = (hpixel >> 4);
else imggrp = (hpixel >> 4) + 1;
imgvzfac = ((ULONG)vline*(ULONG)32)/(ULONG)dspvsize;
imghzfac = ((ULONG)hpixel*(ULONG)128)/(ULONG)dsphsize;
//printf("factor=%bd,imgvzfac=%bx,imghzfac=%bx\n",factor,imgvzfac,imghzfac);
//printf("factor=%bd,dsphsize=%d,dspvsize=%d\n",factor,dsphsize,dspvsize);
///while ((XBYTE[0x2DA0] & 0x08) == 0x08);
//patch4.4@richie@flip begin
//adjust the flip offset
// printf(" hoffset = %x voffset = %x \n",hoffset,voffset);
// printf(" imghsize = %x imgvsize = %x \n",imghsize,imgvsize);
if ((G_ucFlip & 0x01) != 0)// H-flip
{
hoffset = (imghsize - 1) - hoffset;
XBYTE[0x2D00] |= 0x10;
}
if ((G_ucFlip & 0x02) != 0)// V-flip
{
voffset = (imgvsize - 1) - voffset;
XBYTE[0x2D00] |= 0x20;
XBYTE[0x2D01] |= 0x04;
}
else
{
XBYTE[0x2D01] &= 0xFB;
}
//patch4.4@richie@flip end
// printf(" hoffset = %x voffset = %x \n",hoffset,voffset);
// printf(" imghsize = %x imgvsize = %x \n",imghsize,imgvsize);
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
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================\n",imghzfac,imgvzfac,imggrp);
MemStretch = tmp;
//patch5.0@richie@sdram mapping
G_usZoomX = zoomX;
//patch5.0@richie@sdram mapping
return zoomX;
}
//patch4.3@richie@zo0607 end
//patch4.5@richie@smooth zoom end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -