📄 bbt422.c
字号:
/*===========================================================================
2D Graphics Library
ALL RIGHTS RESERVED, COPYRIGHT (C) FUJITSU LIMITED 1993-2002
LICENSED MATERIAL - PROGRAM PROPERTY OF FUJITSU LIMITED
===========================================================================*/
#include <stdio.h>#include "gl.h"#include "defhook.h"#define BitLen 16#define BitSft 4#define TileMask (TileLen-1)#define TileBpl 64int_GL_bbtileYUV422(GL_WP *gp){ int sbitp,dbitp,words,lines, tj ; BYTE *dadr, *tilep ;#ifndef xNo00010008 long sbase = ( ( gp->bitblt.dx - (gp->bitblt.bx&~1) ) & TileMask) * (BitLen>>3) ;#endif dadr = _AddAdr(gp->hwork.VRAMadr[gp->hwork.page][0],gp->bitblt.doffs) ; dbitp = 0 ; AdjAccAdr32(dadr,dbitp) ; tj = ( gp->bitblt.dy - gp->bitblt.by ) & TileMask ; words = ((gp->bitblt.tx<<BitSft) + dbitp)>>5 ; lines = gp->bitblt.ty ; while(lines-->0){ register DWORD *dst ; register DWORD d, o ; register int tx ; register long soffs ;#ifdef xNo00010008 soffs = ( ( gp->bitblt.dx - gp->bitblt.bx ) & TileMask) * (BitLen>>3) ;#else soffs = sbase ;#endif sbitp = 0 ; AdjAccOffs32(soffs, sbitp) ; tilep = (BYTE *)gp->bitblt.tilep + tj * TileBpl ; tx = gp->bitblt.tx ; dst = (DWORD *)dadr ; if(words>0){ if(dbitp>0){ d = *(DWORD *)(tilep+soffs) ; o = *dst ; soffs += 4 ; if(soffs>=TileBpl) soffs = 0 ; *dst++ = ( d & 0x0000ff00 ) | ( o & 0xff000000 ) | ( ( ( (d&0x00ff00ff)+(o&0x00ff00ff) )>>1)& 0x00ff00ff ) ; tx-- ; } while(tx>=2){ *dst++ = *(DWORD *)(tilep+soffs) ; soffs += 4 ; if(soffs>=TileBpl) soffs = 0 ; tx -= 2 ; } } if(tx>0){ d = *(DWORD *)(tilep+soffs) ; o = *dst ; *dst = ( d & 0xff000000 ) | ( o & 0x0000ff00 ) | ( ( ( (d&0x00ff00ff)+(o&0x00ff00ff) )>>1)& 0x00ff00ff ) ; } tj = (tj+1) & TileMask ; dadr = _AddAdr(dadr,gp->bitblt.dlbytes) ; } return GL_Ok ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -