охи, ахи и жалобы на судьбинушку горькую были и будут всегда...
для начала, достаточно написать простейше:
1. автозаброс блока данных в карту
2. поворот принятых массивов точек
3. сортировка в лоб
4. вывод полигонов на экран
все неоднократно отвелосипедено в демках
добавить еще заброс в карту внутренних процедур от пользователя для генераций / обработки текстур в самой карте ...
и - уперед, "даже распоследние буржуи на 48к бейсике" могут бацать игры, демки с 3D объектами и окружением...
дальше, по желанию, уже допиливать, ускорять, понтоваться заменами сортировок ради 5 процентного ускорения...![]()
Вывод графики - далеко не самая сложная часть игры. Это на 48K это была самая сложная часть, и то не всегда. А на АТМ нет никаких проблем ни с памятью, ни со скоростью, ни с лучом.
У тебя есть две экранных области. Пока одна видна, ты заполняешь другую. Потом видна другая и ты заполняешь первую. Переключаются 3-м битом порта #7ffd, как и на 128K.
Одна экранная область лежит в 1 и 5 страницах, другая в 3 и 7 страницах. Ты можешь подключить страницу в любую четверть памяти Z80. Для этого есть порты #3ff7, #7ff7, #bff7 и #fff7. Туда надо писать номер страницы XOR #7f. Содержимое младших битов порта #7ffd при этом игнорируется.
Каждая экранная область в режиме EGA делится на 4 части по 8000 (40*200) байт. В одной части лежат пиксели X mod 7 = 0,1, в другой 2,3, в третьей 4,5, в четвёртой 6,7. Таким образом, полный столбец всегда целиком доступен через элементарный ADD HL,DE (DE=40).
В каждом байте лежит 2 пиксела: %RLRRRLLL (представь, что это байт атрибутов).
Каждый из 16 цветов можно задать. Для этого надо выставить на бордере нужный номер цвета (цвета 8..15 задаются через порт #f6) и потом записать в порт #ff значение для этого цвета в формате %grbG11RB.
---------- Post added at 14:07 ---------- Previous post was at 14:02 ----------
Каких данных и в каком формате?
Ты целиком уровень с монстрами собрался в карту закидывать?
Всех полигонов уровня?
Опять всех?
Администратор сетевого сообщества nedoPC.org
Урал 8/64К, Sp2000, ZX48K+, ZX16K (спалил), TS1000 (американский ZX81), TS2068, Дельта-С, 20 лет собираю ATM Turbo 2+
Неспектрумы: Электроника МК-85 и МК-85М, ПК-01 Львов, БК-0011, Вектор-06Ц, Лик (спец), Апогеи, Radio-86RK SRAM 32K & 128K (всё ещё собираю)
Страдает. Звук засран и видео дёргается. И запускается минуту, а то и больше. И жужжит.
>>1. автозаброс блока данных в карту
>Каких данных и в каком формате?
всех нужных объектов.
3 координаты на точку.
текстуры.
пользовательские процедуры.
>>2. поворот принятых массивов точек
>Ты целиком уровень с монстрами собрался в карту закидывать?
для демок / игр - объекты.
можно вращать не все, а выбранный набор.
в чем проблема?
>>3. сортировка в лоб
>Всех полигонов уровня?
карта занимается выводом пачек повернутых объектов.
для строгающих очередной вульф, пущай отдельно рассчитывают массив расположения объектов, например.
вращая карточкой же.
>>4. вывод полигонов на экран
>Опять всех?
это уже как будет угодно заклинателю.
по списку нужных / рассчитанных / повернутых объектов.
на выбор.
все это детали, которые решает конкретный реализатор карточки при ее создании.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)