--- xmil/vram/makesub.h 2004/08/08 09:12:06 1.2 +++ xmil/vram/makesub.h 2004/08/20 08:41:41 1.4 @@ -9,9 +9,24 @@ enum { extern "C" { #endif -extern UINT32 to256col[512]; extern const UINT8 x2left[256]; extern const UINT8 x2right[256]; +#define PATx2LEFT(p) x2left[(p)] +#define PATx2RIGHT(p) x2right[(p)] + +#if (!defined(MEMOPTIMIZE)) || (MEMOPTIMIZE == 0) // x86 +extern UINT32 to256col0[8][512]; +#define TO256COLL(d, b) (to256col0[b][d*2+0]) +#define TO256COLR(d, b) (to256col0[b][d*2+1]) +#elif (MEMOPTIMIZE == 1) // for Mac +extern UINT32 to256col1[512]; +#define TO256COLL(d, b) (to256col1[d*2+0] << b) +#define TO256COLR(d, b) (to256col1[d*2+1] << b) +#else // other +extern const UINT32 to256col2[16]; +#define TO256COLL(d, b) (to256col2[(d >> 4)] << b) +#define TO256COLR(d, b) (to256col2[(d & 15)] << b) +#endif void makesub_initialize(void); @@ -45,13 +60,21 @@ void makechr16(UINT8 *dst, UINT pos, UIN // ---- make mixer -void makemix_txt(UINT8 *dst, UINT align, const UINT8 *txt, UINT count); -void makemix_mix(UINT8 *dst, UINT align, - const UINT8 *txt, const UINT8 *grp, UINT count); -void makemix_doubler(UINT8 *dst, UINT count, UINT32 skipline); -void makemix_remcpy(UINT8 *dst, UINT pos, UINT count); -void makemix_ul20(UINT8 *dst, UINT pos, UINT32 skipline); -void makemix_ul10(UINT8 *dst, UINT pos, UINT32 skipline); +void makemix_mixtext(UINT8 *dst, UINT align, const UINT8 *txt, UINT count); +void makemix_mixgrph(UINT8 *dst, UINT align, const UINT8 *grp, UINT count); + +void makemix_settext(UINT8 *dst, UINT align, const UINT8 *txt, UINT count); +void makemix_ul20(UINT8 *dst, UINT pos); +void makemix_ul10(UINT8 *dst, UINT pos); + +void makemix_cpy200(UINT8 *dst, UINT pos, UINT count); +void makemix_cpy400(UINT8 *dst, UINT pos, UINT count); + +// void makemix_txt(UINT8 *dst, UINT align, const UINT8 *txt, UINT count); +// void makemix_mix(UINT8 *dst, UINT align, +// const UINT8 *txt, const UINT8 *grp, UINT count); +// void makemix_doubler(UINT8 *dst, UINT count, UINT32 skipline); +// void makemix_remcpy(UINT8 *dst, UINT pos, UINT count); // ---- make screens @@ -73,10 +96,3 @@ void width80x10h(void); // 80x10 } #endif - -#define PATx2LEFT(p) x2left[(p)] -#define PATx2RIGHT(p) x2right[(p)] - -#define TO256COLL(d, b) (to256col[d*2+0] << b) -#define TO256COLR(d, b) (to256col[d*2+1] << b) -