/* * coltest.c — прототип K2a: проверка вертикального accel-COPY * (gfx_blit_cols) + прозрачности 0xFF + горизонтального флипа. * * Спрайт 16x24 column-major, АСИММЕТРИЧНЫЙ: * левые 8 колонок: верх (row<12) = ПРОЗРАЧНО (0xFF), низ = БЕЛЫЙ (1) * правые 8 колонок: КРАСНЫЙ (2) * На синем фоне (3). Ожидаем на MAME: * normal @ (50,100): слева бело-снизу+прозрачно-сверху, справа красный; * flip @(120,100): ЗЕРКАЛО — слева красный, справа бело+прозрачно-сверху; * в прозрачных местах виден СИНИЙ фон. */ #include #include #include #define W 16 #define H 24 static unsigned char spr[4 + W * H]; int main(void) { int col, row; spr[0] = W; spr[1] = 0; spr[2] = H; spr[3] = 0; for (col = 0; col < W; col++) for (row = 0; row < H; row++) { /* ФИНАЛ: АСИММЕТРИЧНЫЙ — лево верх прозрачно / низ белый, * право красное. normal: лево бело+прозрач-верх, право красн; * flip: ЗЕРКАЛО (лево красн, право бело+прозрач-верх). */ unsigned char v; if (col < 8) v = (row < 12) ? 0xFF : 1; else v = 2; spr[4 + col * H + row] = v; } initgraph(); gfx_set_draw_page(0); gfx_set_visible_page(0); gfx_pal_set(0, 1, 255, 255, 255); /* белый */ gfx_pal_set(0, 2, 224, 32, 32); /* красный */ gfx_pal_set(0, 3, 32, 48, 200); /* синий фон */ gfx_pal_set(0, 255, 0, 224, 0); /* ДИАГ: 0xFF как ЗЕЛЁНЫЙ цвет (bank NORMAL) */ gfx_pal_sync(); setfillstyle(SOLID_FILL, 3); bar(0, 0, 319, 255); setcolor(1); outtextxy(40, 80, "normal"); outtextxy(110, 80, "flip"); gfx_set_bank(GFX_BANK_TRANSPARENT); /* ДИАГ: 0x58 подавление 0xFF (с тенью) */ gfx_blit_cols(50, 100, spr, 0); /* обычный */ gfx_blit_cols(120, 100, spr, 1); /* зеркало */ gfx_set_bank(GFX_BANK_NORMAL); while (!kbhit()) gfx_wait_vsync(); closegraph(); return 0; }