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>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
Демка была написана как альтернатива аналогичной на 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.
|
||||
|
||||
за тормоза в математике сильно не пинать!!!
|
||||
Reference in New Issue
Block a user