--- xmil/vram/makesub.h 2004/08/18 09:17:56 1.3 +++ xmil/vram/makesub.h 2008/06/02 20:07:32 1.5 @@ -9,14 +9,29 @@ 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); -// ---- make pattern +/* make pattern */ typedef void (*MAKETXTFN)(UINT8 *dst, UINT8 *term, const UINT8 *src); @@ -26,7 +41,7 @@ extern const MAKETXTFN maketxt16fn[16]; extern const MAKETXTFN makepcg16fn[16]; -// ---- make attributes +/* make attributes */ typedef void (*MAKEATRFN)(UINT8 *dst, UINT8 *term); extern const MAKEATRFN makeatr8[16]; @@ -37,13 +52,13 @@ void makeatr_pcg16(UINT8 *dst, UINT cnt, const UINT8 *src, REG8 atr, MAKETXTFN fn); -// ---- make character +/* make character */ void makechr8(UINT8 *dst, UINT pos, UINT count, REG8 udtmp); void makechr16(UINT8 *dst, UINT pos, UINT count, REG8 udtmp); -// ---- make mixer +/* make mixer */ void makemix_mixtext(UINT8 *dst, UINT align, const UINT8 *txt, UINT count); void makemix_mixgrph(UINT8 *dst, UINT align, const UINT8 *grp, UINT count); @@ -55,14 +70,8 @@ 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 +/* make screens */ void width80x25_200l(void); // 80x25 200line void width80x12_200l(void); // 80x12 200line @@ -81,10 +90,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) -