/*
 * 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 <graphics.h>
#include <gfx.h>
#include <conio.h>

#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;
}
