95c22be9bd
Скролл региона 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>
38 lines
2.1 KiB
Plaintext
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.
|
|
|
|
за тормоза в математике сильно не пинать!!! |