zst, карта должна поддерживать все имеющиеся стандарты. Основных два TS-Conf и ZX Spectrum Next. Пилить ещё стандарты нет особо смысла, т.к. софта не будет.
zst, карта должна поддерживать все имеющиеся стандарты. Основных два TS-Conf и ZX Spectrum Next. Пилить ещё стандарты нет особо смысла, т.к. софта не будет.
Lethargeek, пиши по теме. Я понял, что блиттер решает все проблемы, но тут разрабатывается новый игровой ретро компьютер на микросхемах логики и кэш-памяти в корпусах DIP и быстром микропроцессоре на частоте 20/33 MHz.
В одном режиме компьютер будет совместим с играми ZX Spectrum, доработанными для устранения клешинга.
В другом для программирования своих игр изображение фона строится тайлами, типа как в NES и SEGA, а спрайты будут рисоваться в спрайтовом слое командами LDIR.
В третьем режиме - текстовые программы с символьным экраном 30х80 символов.
Вот и советуй именно по выбранным способам изображения. Только давай без голословной критики. Подскажи, как улучшить, что добавить и почему ? Или не пиши. У тебя есть своя тема по видеокарте. Там и обсуждай свой блиттер. Посмотрим, что скажут другие.
Текущий вариант конструкции и шин.
Кросс-плата из двух рядов по 8 гнезд DIN-64. Габариты ориентировочно 170х210 мм. В каждом ряду своя шина с буферизацией. Все линии шин подтянуты к +5В через резисторы 10 кОм.
Первая шина для устройств ввода-вывода и модулей памяти. Буферы шины адреса и двунаправленный на шину данных.
Вторая шина для графических модулей. Через отдельные буферы шина адреса и шина данных только на вывод. И дополнительные сигналы - синхроимпульсы, цвет точки с текущего слоя и т.п.
Большинство модулей рассчитано на платы размерами max 100х100 мм с одним разъемом DIN-64.
Модуль процессора особенный с двумя разъемами. С него через буферы идут сигналы на обе шины. На плате также также будет коммутатор памяти, который для ускорения работы подключается к процессору напрямую без буферов. Также на плате будут располагаться дешифраторы портов ввода, вывода и двунаправленных. Сигналы выбора портов будут идти на общую шину. На модулях будут располагаться только основные микросхемы без дешифраторов. Это позволит упростить модули и сделать возможность перепрограммирования адресов путем замены модуля процессора.
Детали постепенно собираются. Вот что уже есть:
Z80 20 MHz PLCC-44 с панелькой.
Z180 33 MHz PLCC-68 с панелькой.
К1533ИР32 и другая логика.
Панельки для КЭШ.
Разъемы DIN-64.
Макетки.
Кварцы на 12, 14, 16 MHz.
FLASH 128 Кбайт 70 ns DIP-32 с панелью ZIP-32.
В пути:
Кэш-память 32K*8 в узких DIP-28.
Генераторы 25.175 MHz.
Последний раз редактировалось zx-kit; 15.02.2018 в 05:47.
"L-256"
zst, как насчет добавить в схему DataGear? Уже считай стандарт DMA на спектруме. Например в Next он уже интегрирован. Для фирменных машин существует в виде платы вставляемой в слот процессора.
С моей точки зрения, три вышеописанных режима это свойства видеокарты (прошу прощения, что опять встреваю с видео). По-моему тут у вас в проекте ключевая ошибка - вы жестко "наградили" компьютер тремя режимами без возможности избежать их или расширить каким либо образом.
Мои соображения (раз критикую, то разумеется и предлагаю) - оставить компу комповое, а видеокарту вынести совсем в отдельное устройство, жестоко замапленное на #4000-#5980 (стандартный zx VRAM).
Таким образом можно подойти к разработке итеративным путем - сначала реализовать на отдельной плате стандартный zx видеорежим (к примеру 0), затем в другом устройстве реализовать и нулевой и первый (текстовый 80х25), затем в следующем устройстве реализовать нулевой, первый и второй режим (256х192 / 24bpp к примеру).
Как реализовать нулевой режим я писать не буду - там простой маппинг на стандартную видеопамять спектрума (для совместимости), он же является основным.
Режим #01 я описал вкраце тут. Поясню почему там фигурирует видеопамять, хотя вроде бы можно и без нее обойтись. По моим соображениям она нужна (и в небольшом количестве для этого режима) для того, что бы можно было забросить в видеокарту произвольные изображения в стандартном спектрумовском формате (1 байт на 8 точек + 1 байт на цвет точки и фона), через порты например, предварительно пометив нужную область в символьной области памяти #4000-#47D0 нулями, что бы видеокарта не формировала из этих знакомест символы на экране.
Режим #02 может выглядеть аналогично - управляющая область памяти в #4000-#5980 где расположены структуры объектов (как в режиме #01 там расположены коды символов и их цвет).
Структура объекта "тайл", к примеру может быть выровненной до 32 байт и в упрощенном виде выглядеть так:
что дает 192 (при выравнивании 32 байта на одну структуру) одновременно отрисовываемых видеокартой объекта с Z-сортировкой по порядку расположения в памяти (т.е. описатель тайла заднего плана должен быть расположен в памяти раньше, чем описатель тайла ближнего плана, а герой где то посередине).Код:objID db #00,#00 - ID объекта для его отрисовки objX db #00,#00 - X-координата объекта objY db #00,#00 - Y-координата объекта ... и так далее
Растр объектов заранее должен быть загружен в память видеокарты (через те же порты к примеру, в понятном видеокарте формате). Своей памяти на борту карты при 256х192/24bpp должно быть около мегабайта, что в общем то и не так много.
Объектами может служить тайл, спрайт, источник частиц, что то еще, что поддержит прошивка видеокарты.
В режиме #02 описал вполне себе суровый 2D ускоритель, который не занимает ни байта в памяти стандартного спектрума. В момент загрузки программы графика забрасывается в память карты, а затем управляется описателями структур через стандартную область памяти.
Последний раз редактировалось Dr.Potapov; 15.02.2018 в 13:13.
Именно по теме я и пишу. В чём здесь "но"? Да тем более на логике будет проще запилить единственный механизм, а не свалку нескольких разнородных.
Я тебе именно по ним советую так не делать. Или не морочить людей хотя бы, будто бы так хочешь им жизнь облегчить.
Вот что за беспощадное стремление добавлять? Чтоб улучшить, иногда нужно не добавить, нужно убрать. И не раз уже писал тебе, почему.
Так я здесь никаких своих подробностей не давал. О(б)суждаю строго твои решения.
Прихожу без разрешения, сею смерть и разрушение...
Ты слыхал как грузится Flyshark ?! нет, совсем не тот, что на дискете...а Flyshark, тот самый блин Flyshark...тот ,что был когда то на кассете...
zx spectrum 48 issuse 6a, Ленинград-1, zx spectum 128 +2 grey,Пентагон-128, ZXM-Phoenix 5.02 ( assembly)
Видеокарта будет состоять из нескольких плат.
0. Плата развертки VGA 640x480 60 Hz. На ней формирователь синхроимпульсов, смеситель слоев, палитры для всех слоев, VIDEODAC VGA.
1. Метеор. 4 бита на цвет точки.
2. Символьный экран 30х80 символов.
3. Спрайтовый слой. 8 бит на точку.
4-6. Три одинаковых тайловых слоя. 8 бит на точку с картой тайлов и аппаратным скроллингом.
7. Может быть стандартный экран ZX Spectrum с клешингом.
Их можно разрабатывать отдельно и добавлять постепенно.
- - - Добавлено - - -
Да не нужен один механизм. Для каждого вида изображения нужен свой, оптимальный. Для тайлов нужна карта и аппаратный скроллинг, а не блиттер. Для символьного экрана другой механизм с заданием цвета отдельными атрибутами и увеличением кодов вправо для печати командой LDIR. Для устранения клешинга запись по 8 точек с учетом прозрачного.
- - - Добавлено - - -
Может DMA в Z180 подойдет ?
Последний раз редактировалось zx-kit; 16.02.2018 в 01:55.
"L-256"
Если он справляется с любым случаем - нужен он, а не нужны все "оптимальные" остальные. Свалка "оптимальных" - неоптимальна.
Ну и сколько у нас "видов изображения"? Ты уже изучил все ретроигры на всех платформах?
Тайлы (кандалы для художника и кодера) не нужны, а значит, и для них ничего не нужно.
Ископаемый костыль для получения избыточной скорости. Вот зачем успевать в кадре символов печатать намного больше, чем их помещается на экране
Пачкой ldi? О последствиях ты не подумал, конечно же. Только вот в оригинале байты спрайта идти будут не в том порядке, то есть их придётся переставлять, фактически нарисовать заново, а раз так, то зачем отдельным способом выводить и готовить графику под этот лишний отдельный способ?
Прихожу без разрешения, сею смерть и разрушение...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)