С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
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.
Именно по теме я и пишу. В чём здесь "но"? Да тем более на логике будет проще запилить единственный механизм, а не свалку нескольких разнородных.
Я тебе именно по ним советую так не делать. Или не морочить людей хотя бы, будто бы так хочешь им жизнь облегчить.
Вот что за беспощадное стремление добавлять? Чтоб улучшить, иногда нужно не добавить, нужно убрать. И не раз уже писал тебе, почему.
Так я здесь никаких своих подробностей не давал. О(б)суждаю строго твои решения.![]()
Прихожу без разрешения, сею смерть и разрушение...
datagear - мусор бесполезный (ну разве что для демо, бред психоделический показать обкуренной тусовке). blitter - это никакое не "ретро", это уже начало эры 2D\3D ускорителей, он требуется когда принято решение "переписать в памяти изображение каждого кадр-а перед показом", это самое решение сразу же увеличивает требование к скорости памяти в 2 ато и 3 и более раз. Тайлы и спрайты на то и выдуманны были чтоб обновлять не кучу мегабайт перед каждым кадром а пару килобайт (и добиваться того же результата). Естественно игры типа gunfright, elite, driller ничего не получат от спрайтов и тайлов, но таких игр на ретро платформах не более 10% было, все остальное спрайтово-тайловое. tsconf,zxnext,spec256,sprinter,retroleum ... все они уже есть, все они уже показали свой НУЛЕВОЙ потенциал, интереса к ним НЕТ и не будет, потому что пользовать частоты в 100mhz, двухпортовую SRAM, тонны LUT-ов и на выхлопе иметь результат хуже чем у atari st "это какой-то позор" (с)швондер. По крайней мере топить за то чтобы вышел еще один fpga монстер в теме про типа-"ретро-комп" этот нонсенс (хотя если там 20ns SRAM, то он НА ПОРЯДОК быстрее чем классическое ретро, пары линеек ру6-х видать было мало, v9990 курит в сторонке).
Последний раз редактировалось bigral; 16.02.2018 в 12:40.
ну и что? чем 1984 тебе не ретро? это если брать только персоналки, а у ксерокса еще до спектрума блиттер был
вовсе нет, хотя даже и на спеке в играх так часто делают
снова нет, хотя сегодня это неважно
разумеется, далеко не того же
путаешь причину и следствие, слабый результат не причина низкого интереса, а следствие нежелания или невозможности запариваться надолго (чего требуют указанные решения)
Прихожу без разрешения, сею смерть и разрушение...
Отца русской демократии zst - спасет только практическая реализация всех (части) своих задумок. Уж по другому никак.
На львиную долю задумок, ответов просто нет![]()
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
Символьный экран надо сделать теневым. Включать только при печати на экран. Возможность включать в любое окно. Но для CP/M желательно использовать окно с адреса 4000H, так как в окне с адреса 0000 область RST, а с адреса 8000H и выше ДОС, которая и печатает на экран. Ориентировочно будет два текстовых режима.
Простой для программиста режим 30 строк по 64 символа. Достоинство — длина строки символов 128 кратна 2 в степени N. Поэтому строки идут друг за другом без пустот. Текст легко редактировать и печатать на экране с помощью команд LDIR. Шрифт более крупный и разборчивый. Так как разрешение монитора 640х480 точек символ будет состоять из 10х16 точек.
Расположение символов в экранном ОЗУ. Байт атрибута, байт символа, байт атрибута, байт символа. Для перехода к символу справа надо увеличить адрес на 2. Для перехода к символу снизу надо увеличить адрес на 128.
Возможно будет и второй режим 30 строк по 80 символов. Текста в строке больше, но он менее разборчивый и труднее обработка строк. Строка не кратна 2 в степени N. Поэтому будут пустые промежутки при длине строки 256 символов. Одной командой LDIR всю страницу уже не напечатать. Так как разрешение монитора 640х480 точек символ будет состоять из 8х16 точек.
Кодировка предположительно КОИ-8 с псевдографикой.
В окне можно разместить 4 страницы по 4 Кбайта. Из страницы в страницу можно будет копировать текст командой LDIR. Текущую отображаемую страницы выбирать записью в дополнительный порт.
Атрибут будет состоять из 4х бит цвета PAPER и 4х бит цвета INK. Для слоя символьного экрана будет своя палитра с возможностью прозрачного цвета.
Для UZIX и текстовых программ с выводом на экран большого количества информации - символьный экран 60х80 символов со шрифтом 8х8 точек.
Наверно надо сделать несколько символьных режимов:
00. 30 строк по 40 символов размером 16х16 точек
01. 30 строк по 64 символа размером 10х16 точек
10. 30 строк по 80 символов размером 8х16 точек
11. 60 строк по 80 символов размером 8х8 точек
Символьный режим 30х40 символов размерами 16х16 подойдет для игр. Этот слой надо сделать самым близким. Если в палитре использовать прозрачный цвет, то текст можно писать поверх фона. Это позволит поверх скроллируемого фона отображать очки, попытки и т. п. информацию.
Если знакогенератор будет загружаемым, то можно в нескольких знакоместах сдвигать стрелку мышки. Печатая эти символы в разных знакоместах можно будет сдвигать стрелку с точностью до точки. Также можно будет запрограммировать значки разной формы.
Если в знакогенераторе будет 2 бита на точку, то можно будет делать шрифты с обводкой, тенью, трехцветные и т. п.
В атрибутах перед шрифтами можно указать инверсию символа, номер цветовой палитры, номер фонта, например, чтобы сделать слово жирным текстом.
Последний раз редактировалось zx-kit; 17.02.2018 в 15:08. Причина: Теперь в планах 4 символьных режима
"L-256"
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)