You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
3.0 KiB
136 lines
3.0 KiB
|
8 years ago
|
static inline void asm_cel_light_edge(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src);
|
||
|
|
static inline void asm_cel_light_square(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src);
|
||
|
|
static inline void asm_trans_light_cel_0_2(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src);
|
||
|
|
static inline void asm_trans_light_edge_0_2(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src);
|
||
|
|
static inline void asm_trans_light_square_0_2(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src);
|
||
|
|
static inline void asm_trans_light_cel_1_3(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src);
|
||
|
|
static inline void asm_trans_light_edge_1_3(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src);
|
||
|
|
static inline void asm_trans_light_square_1_3(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src);
|
||
|
|
static inline void asm_trans_light_mask(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src, unsigned int mask);
|
||
|
|
|
||
|
|
static inline void asm_cel_light_edge(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src)
|
||
|
|
{
|
||
|
|
unsigned char l = w >> 1;
|
||
|
|
|
||
|
|
if ( w & 1 )
|
||
|
|
{
|
||
|
|
dst[0] = tbl[src[0]];
|
||
|
|
src++;
|
||
|
|
dst++;
|
||
|
|
}
|
||
|
|
if ( l & 1 )
|
||
|
|
{
|
||
|
|
dst[0] = tbl[src[0]];
|
||
|
|
dst[1] = tbl[src[1]];
|
||
|
|
src += 2;
|
||
|
|
dst += 2;
|
||
|
|
}
|
||
|
|
|
||
|
|
asm_cel_light_square(l >> 1, tbl, dst, src);
|
||
|
|
}
|
||
|
|
|
||
|
|
static inline void asm_cel_light_square(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src)
|
||
|
|
{
|
||
|
|
for ( ; w; --w )
|
||
|
|
{
|
||
|
|
dst[0] = tbl[src[0]];
|
||
|
|
dst[1] = tbl[src[1]];
|
||
|
|
dst[2] = tbl[src[2]];
|
||
|
|
dst[3] = tbl[src[3]];
|
||
|
|
src += 4;
|
||
|
|
dst += 4;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static inline void asm_trans_light_cel_0_2(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src)
|
||
|
|
{
|
||
|
|
if ( !(w & 1) )
|
||
|
|
{
|
||
|
|
asm_trans_light_edge_1_3(w >> 1, tbl, dst, src);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
src++;
|
||
|
|
dst++;
|
||
|
|
asm_trans_light_edge_0_2(w >> 1, tbl, dst, src);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static inline void asm_trans_light_edge_0_2(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src)
|
||
|
|
{
|
||
|
|
unsigned char l = w >> 1;
|
||
|
|
|
||
|
|
if ( w & 1 )
|
||
|
|
{
|
||
|
|
dst[0] = tbl[src[0]];
|
||
|
|
src += 2;
|
||
|
|
dst += 2;
|
||
|
|
}
|
||
|
|
if ( l )
|
||
|
|
{
|
||
|
|
asm_trans_light_square_0_2(l, tbl, dst, src);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static inline void asm_trans_light_square_0_2(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src)
|
||
|
|
{
|
||
|
|
for ( ; w; --w )
|
||
|
|
{
|
||
|
|
dst[0] = tbl[src[0]];
|
||
|
|
dst[2] = tbl[src[2]];
|
||
|
|
src += 4;
|
||
|
|
dst += 4;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static inline void asm_trans_light_cel_1_3(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src)
|
||
|
|
{
|
||
|
|
if ( !(w & 1) )
|
||
|
|
{
|
||
|
|
asm_trans_light_edge_0_2(w >> 1, tbl, dst, src);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
dst[0] = tbl[src[0]];
|
||
|
|
src++;
|
||
|
|
dst++;
|
||
|
|
asm_trans_light_edge_1_3(w >> 1, tbl, dst, src);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static inline void asm_trans_light_edge_1_3(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src)
|
||
|
|
{
|
||
|
|
unsigned char l = w >> 1;
|
||
|
|
|
||
|
|
if ( w & 1 )
|
||
|
|
{
|
||
|
|
dst[1] = tbl[src[1]];
|
||
|
|
src += 2;
|
||
|
|
dst += 2;
|
||
|
|
}
|
||
|
|
if ( l )
|
||
|
|
{
|
||
|
|
asm_trans_light_square_1_3(l, tbl, dst, src);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static inline void asm_trans_light_square_1_3(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src)
|
||
|
|
{
|
||
|
|
for ( ; w; --w )
|
||
|
|
{
|
||
|
|
dst[1] = tbl[src[1]];
|
||
|
|
dst[3] = tbl[src[3]];
|
||
|
|
src += 4;
|
||
|
|
dst += 4;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static inline void asm_trans_light_mask(unsigned char w, BYTE *tbl, BYTE *&dst, BYTE *&src, unsigned int mask)
|
||
|
|
{
|
||
|
|
for ( ; w; --w, src++, dst++, mask *= 2 )
|
||
|
|
{
|
||
|
|
if ( mask & 0x80000000 )
|
||
|
|
dst[0] = tbl[src[0]];
|
||
|
|
}
|
||
|
|
}
|