Code: Select all
__inline__ void draw_fix(u16 code, u16 colour, u16 sx, u16 sy, u16 * palette, char * fix_memory)
{
u8 y;
u32 mydword;
u32 * fix=(u32*)&(fix_memory[code<<5]);
u16 * dest;
u16 * paldata=&palette[colour];
u16 col;
for(y=0;y<8;y++)
{
dest = video_line_ptr[sy+y]+sx;
mydword = *fix++;
col = (mydword>> 0)&0x0f; if (col) dest[0] = paldata[col];
col = (mydword>> 4)&0x0f; if (col) dest[1] = paldata[col];
col = (mydword>> 8)&0x0f; if (col) dest[2] = paldata[col];
col = (mydword>>12)&0x0f; if (col) dest[3] = paldata[col];
col = (mydword>>16)&0x0f; if (col) dest[4] = paldata[col];
col = (mydword>>20)&0x0f; if (col) dest[5] = paldata[col];
col = (mydword>>24)&0x0f; if (col) dest[6] = paldata[col];
col = (mydword>>28)&0x0f; if (col) dest[7] = paldata[col];
}
}
Code: Select all
INLINE void draw_fix(u16 code, u16 colour, u16 sx, u16 sy, u16 * palette, char * fix_memory){
unsigned short *br;
unsigned short *secondthing;
u32 * fix=(u32*)&(fix_memory[code<<5]);
draw_font(*br, secondthing, fix);
u16 * paldata=&palette[colour];
u16 * dest;
u8 y;
for(y=0;y<8;y++)
{
dest = video_line_ptr[sy+y]+sx;
if(br[0]) dest[0] = paldata[br[0]];
if(br[1]) dest[1] = paldata[br[1]];
if(br[2]) dest[2] = paldata[br[2]];
if(br[3]) dest[3] = paldata[br[3]];
if(br[4]) dest[4] = paldata[br[4]];
if(br[5]) dest[5] = paldata[br[5]];
if(br[6]) dest[6] = paldata[br[6]];
if(br[7]) dest[7] = paldata[br[7]];
br+=8;
}
}
static __inline__ void draw_font(unsigned short *br, unsigned short *paldata, unsigned *gfxdata)
{
int y;
for(y=0;y<8;y++) {
register unsigned int myword = gfxdata[0];
br[0]=paldata[(myword)&0xf];
br[1]=paldata[(myword>>4)&0xf];
br[2]=paldata[(myword>>8)&0xf];
br[3]=paldata[(myword>>12)&0xf];
br[4]=paldata[(myword>>16)&0xf];
br[5]=paldata[(myword>>20)&0xf];
br[6]=paldata[(myword>>24)&0xf];
br[7]=paldata[(myword>>28)&0xf];
br+=8;
gfxdata++;
}
}