Files
Sprinter-SDCC/docs/samples/balls/balls.txt
T
snark13 95c22be9bd libbgi: скролл-примитивы + --w3 + отчёт раскладки памяти
Скролл региона video->video (неактивная страница -> активная, банк 0x50:
копия = скролл + heal цели):
- gfx_scroll_h / _bgi_scroll_rows_raw — горизонтальный, построчно без
  страйдов (~54Т/строку), DI/EI бандами по 16 строк, h=0=>256;
- gfx_scroll_v / _bgi_scroll_cols_raw — верт. И/ИЛИ гориз. за один проход
  без буфера (колонка = accel-burst LD A,A, STOP между read/write делает
  промежуточный OUT Port_Y безопасным), банды по 16 колонок;
- _gfx_addr_shadow_base (адрес неактивной страницы) + gfx_rect_t.
Пример examples/scroll.

check_banks.py + sprinter-cc: отчёт раскладки памяти для ЛЮБОЙ модели
(W1/W2 код/данные, остаток кучи/стека, W3 при --w3, банки при --bank),
не только при --bank.  Док docs/memory-management.md §10.

--w3 (резидентный код окна W3) + сопутствующее: crt0_banked W3_RESIDENT,
mkexe -W, tests/w3probe.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 19:38:00 +03:00

38 lines
2.1 KiB
Plaintext

Демка была написана как альтернатива аналогичной на evo-sdk (язык C) для zx-evo,
но написано на асме. При этом так же пока писал, разбирался в особенностях работы
графических режимов. Содержание архива:
balls.asm - исходник
dss.inc - различные константы
head.inc - заголовок для формирования exe файла
misc.inc - некоторые "прочие" процедурки.
math.inc - математика, причём тормозная (сдёрнутая из исходника либы для HTC)
make.bat - собиралка. Использование как make src_name.
sjasm.exe - компилятор. Этот меня устраивает.
balls.exe - основной exeшник. На экране 32 шарика.
balls64.exe - 64 шарика.
balls128.exe - 128 шариков.
balls225.exe - 225 шариков.
balls.ect - файл с палитрой для шариков. Хранится в формате 32бита. Выдернуто
из заголовка для bmp шариков.
balls.spr - собсвтенно файл с шариками (спрайты). Ранее это был обычный bmp.
bgspr.act - палитра для фоновой картинка. Так же 32бита выдернутые из bmp.
bgspr.spr - фоновая картинка, тоже бывшая bmp.
Спрайт шариков имеет разрешение 64*16 (т.е. 4 шарика в линию, каждый шарик
16*16), каждый шарик по 32 цвета, т.е. сама картнка с шариками 128 цветов.
Фоновая картинка имеет разрешение 320*256, 128 цветов.
Чтобы получить эти файлы я в фотошопе что нужно было вырезал, отмасштабировал,
"перецветовал" в 8бит на точку, 128 цветов. Шарики собирал по отдельности из
фоновой картинки (просто вырезал из оригинального файла "молекулы", масштабировал,
собирал в одну картинку и потом извращался с цветами. Потом выдернул палитру
через winhex для шариков и фона из их bmp файлов, а из самих bmp потом вырезал
весь заголовок, оставив только данные спрайтов.
Можно спокойно подсунуть свои спрайты фона и шариков.
В демке есть процедура переиндексирования цветов. Первым файлом загружается
фоновая картинка и палитра. Цвета в файле имеют индексы от 0 до 7fh.
Шарики загружаются уже после. Поскольку палитра 256 цветов, а первые 128 уже
заняты под фон, то после загрузки спрайта шариков я делаю переиндексацию. Просто
по всему размеру файла если цвет != 0xff, тогда цвет +=128.
за тормоза в математике сильно не пинать!!!