📄 bits.txt
字号:
#ifndef ASM_TILES
// C Version of draw_tile
static int draw_tile(struct bmap *bm,struct dgen_sinfo *si,int ox,int oy,unsigned tile)
{
int tile_off,pal_off;
int p1,p0,fx,fy,x,y;
// shift by eight for messy border
ox+=8; oy+=8;
if (ox<0) return 1;
if (ox>=(320+8)) return 1;
if (oy<0) return 1;
if (oy>=(224+8)) return 1;
if ((si->vdp_reg[12]&6)==6) // interlace mode
tile_off=(tile&0x7ff)<<6;
else
tile_off=(tile&0x7ff)<<5;
p0=(tile&0x2000)?1:0;
p1=(tile&0x4000)?1:0;
pal_off=(p1*2+p0)*16;
fy=(tile&0x1000)?1:0;
fx=(tile&0x0800)?1:0;
for (y=0;y<8;y++)
{
unsigned char b;
int col; int tx;
tx=x;
for (x=0;x<8;x+=2)
{
b =si->vram[(tile_off++)&0xffff];
if (bm->bpp<=8)
{
col=pal_off+(b>>4);
if (b>>4)
*((unsigned char *)(bm->data+(oy+(fy?(7-y):y))*bm->pitch+1*(ox+(fx?(7-x+0):(x+0)))))=col&63;
col=pal_off+(b&15);
if (b&15)
*((unsigned char *)(bm->data+(oy+(fy?(7-y):y))*bm->pitch+1*(ox+(fx?(7-x-1):(x+1)))))=col&63;
}
else if (bm->bpp<=16)
{
col=pal_off+(b>>4);
if (b>>4)
*((unsigned short *)(bm->data+(oy+(fy?(7-y):y))*bm->pitch+2*(ox+(fx?(7-x+0):(x+0)))))=highpal[col&63];
col=pal_off+(b&15);
if (b&15)
*((unsigned short *)(bm->data+(oy+(fy?(7-y):y))*bm->pitch+2*(ox+(fx?(7-x-1):(x+1)))))=highpal[col&63];
}
else if (bm->bpp<=24)
{
int clr,cr,cg,cb; unsigned char *pix;
col=pal_off+(b>>4); clr=highpal[col&63];
cr=clr>>16; cg=clr>>8; cb=clr; cr&=0xff; cg&=0xff; cb&=0xff;
if (b>>4)
{
pix=(bm->data+(oy+(fy?(7-y):y))*bm->pitch+3*(ox+(fx?(7-x+0):(x+0))));
pix[0]=cb; pix[1]=cg; pix[2]=cr;
}
col=pal_off+(b&15); clr=highpal[col&63];
cr=clr>>16; cg=clr>>8; cb=clr; cr&=0xff; cg&=0xff; cb&=0xff;
if (b&15)
{
pix=(bm->data+(oy+(fy?(7-y):y))*bm->pitch+3*(ox+(fx?(7-x-1):(x+1))));
pix[0]=cb; pix[1]=cg; pix[2]=cr;
}
}
else if (bm->bpp<=32)
{
col=pal_off+(b>>4);
if (b>>4)
*((unsigned int *)(bm->data+(oy+(fy?(7-y):y))*bm->pitch+4*(ox+(fx?(7-x+0):(x+0)))))=highpal[col&63];
col=pal_off+(b&15);
if (b&15)
*((unsigned int *)(bm->data+(oy+(fy?(7-y):y))*bm->pitch+4*(ox+(fx?(7-x-1):(x+1)))))=highpal[col&63];
}
}
if ((si->vdp_reg[12]&3)==3) tile_off+=4;
}
return 0;
}
#endif
/*
if (bmp_depth>=32)
{
if ( !fx && !fy ) draw_tile_32 (dest,lpitch,tilep,highpal+pal_off);
if ( fx && !fy ) draw_tile_32_hf (dest,lpitch,tilep,highpal+pal_off);
if ( !fx && fy ) draw_tile_32_vf (dest,lpitch,tilep,highpal+pal_off);
if ( fx && fy ) draw_tile_32_hf_vf(dest,lpitch,tilep,highpal+pal_off);
}
else if (bmp_depth>=24)
{
if ( !fx && !fy ) draw_tile_24 (dest,lpitch,tilep,highpal+pal_off);
if ( fx && !fy ) draw_tile_24_hf (dest,lpitch,tilep,highpal+pal_off);
if ( !fx && fy ) draw_tile_24_vf (dest,lpitch,tilep,highpal+pal_off);
if ( fx && fy ) draw_tile_24_hf_vf(dest,lpitch,tilep,highpal+pal_off);
}
else if (bmp_depth>=15)
{
if ( !fx && !fy ) draw_tile_16 (dest,lpitch,tilep,highpal+pal_off);
if ( fx && !fy ) draw_tile_16_hf (dest,lpitch,tilep,highpal+pal_off);
if ( !fx && fy ) draw_tile_16_vf (dest,lpitch,tilep,highpal+pal_off);
if ( fx && fy ) draw_tile_16_hf_vf(dest,lpitch,tilep,highpal+pal_off);
}
else if (bmp_depth>=8)
{
if ( !fx && !fy ) draw_tile_8 (dest,lpitch,tilep,highpal+pal_off);
if ( fx && !fy ) draw_tile_8_hf (dest,lpitch,tilep,highpal+pal_off);
if ( !fx && fy ) draw_tile_8_vf (dest,lpitch,tilep,highpal+pal_off);
if ( fx && fy ) draw_tile_8_hf_vf(dest,lpitch,tilep,highpal+pal_off);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -