cd8d566d82
Порт PoP на Sprinter. Текущий PoC — applications/PoP/roomtest/: комната 1 (фон-композиция тайлов) + Kid с управлением на raw-клавиатуре и коллизией с картой. - roomtest — pop_bg (фон), pop_kid (спрайты Kid, column-major флип, seqtbl-анимация), pop_ctrl (порт control() PoP на held-state kbd_raw), pop_map (коллизия seg004/005: бег/стоп у стены, падение/приземление, отскок seq_47, вертикальный прыжок K4.1). MEMORY=small (DATA сразу за CODE, ~23КБ кода не лезет в huge). - toolchain (PoP) — pop_pack_kid/pop_pack_bg/render_room/extract — распаковка res-графики MSDOS в атласы + композиция комнат. - toolchain/ (корень) — make_hdd.sh (быстрый HDD-тест вместо FDD), png_strip.py / room_compose.py (ассет-пайплайн). - docs — PORT_PLAN, KID_PLAN, форматы ресурсов (Apple II / MSDOS / DAT). - bgtest/coltest/poc — ранние PoC (фон, коллизия, первый прототип). .gitignore: build-артефакты applications/*/*/*; исключены внешние референс-репозитории (SDLPoP/mininim/PR/Apple-II — свои git-клоны) и оригинальные game-данные MSDOS/ (копирайт, только для реверса форматов). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
65 lines
2.4 KiB
C
65 lines
2.4 KiB
C
/*
|
|
* 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;
|
|
}
|