Важная информация

User Tag List

Страница 1 из 56 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 560

Тема: Радиолюбительский компьютер "LEVEL"

  1. #1
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    66
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию Радиолюбительский компьютер "LEVEL"

    Когда-то давно я переделал игру ZOO от Специалиста на Радио-86РК. Графика заменялась на переключаемый шрифт с тайлами игры. Появилась идея сделать в новом компьютере символьный режим с загружаемыми шрифтами с регулируемой шириной 4-16 точек и выводом на монитор VGA NHD 640*360.

    Это позволит запускать после доработки мониторы Радио-86РК, Орион-128, Специалист, IS-DOS, CPM для быстрого вывода текста на VGA монитор.

    По видеокарте найдены оптимальные по возможностям, сложности и скорости режимы. Решено отображать одновременно символьный и графический режимы с разрешением 640*360 точек. Символьный режим с аппаратным скроллингом позволит быстро выводить текст и фон из тайлов в играх. Графический режим имеет блиттер для быстрого рисования следующего кадра игры и два переключаемых буфера для устранения мерцаний. В каждом режиме точки могут располагаться на двух уровнях. При этом чередуются символьные и графические уровни, у каждого уровня свои палитры. Для экономии места под тайлы и спрайты в одном байте располагается две точки.

    Символьный режим имеет размер буфера 256 строк по 256 символов. Символы отображаются автоматически из буфера символов. Скроллинг с шагом 2 точки. Для скроллинга указать начало окна - номер первой строки и столбца в буфере, первой строки и столбца в символе. При скроллинге по-горизонтали с шагом 2 точки 640 точек будут сдвинуты за 5.33 секунд. Для больших пространств из символов по мере движения добавлять в буфер новые символы.

    Графический режим без скроллинга. Два переключаемых экрана. Рисовать спрайты с шагом 2 точки с помощью блиттера. Для указания координат спрайта добавить старший байт для x. Если рисовать спрайты в пределах 512 точек, а справа расположить рамку шириной 640-512=128 точек, то достаточно будет в старший байт записать 0 и использовать однобайтовые координаты. Для рамки записать в старший байт 1.

    СИМВОЛЫ/ТАЙЛЫ.

    Четыре шрифта можно прошить во FLASH 128 K для возможности вывода текста сразу после включения компьютера. 16 загружаемых шрифтов можно записать в SRAM 512 K. Это позволит использовать набор из 4K тайлов для фона в играх.

    На каждый символ дополнительно есть байт атрибута. 3 бита - номер палитры, 1 бит - тип шрифта (прошитый/загружаемый), 4 бита - номер шрифта.

    ДВУХУРОВНЕВЫЕ ТАЙЛЫ.

    На точку 4 бита: 3 бита - номер цвета и 1 бит - уровень. В одном символе можно разместить точки фона, например, стены, и объекта на переднем плане - ящика, столба, камня. Между двумя уровнями символов разместить уровень графики. Также один уровень графики выше.

    УРОВНИ И ЦВЕТА:

    0 - стены, лес
    1 - движущиеся объекты, выстрелы
    2 - ящики, столбы, камни
    3 - рамка, индикаторы

    0 Символы 8 цветов
    1 Графика 15 цветов + прозрачный
    2 Символы 8 цветов
    3 Графика 15 цветов + прозрачный

    У каждого уровня свои 8 палитр.

    У символов 2 точки в байте: 3 бита - номер цвета и 1 бит - уровень.
    Атрибут тайла: 3 бита - палитра, 1 бит - тип шрифта, 4 бита - номер шрифта (1xxx - живые тайлы).

    ЖИВЫЕ ТАЙЛЫ:

    В играх нужно изображать огонь, воду, вращающиеся монетки и другие живые тайлы. Поэтому половину символов из 4К использовать под них. Каждый живой тайл состоит из 16 обычных символов, которые будут меняться автоматически через каждые 133 мс (8 кадров 60 Гц). Цикл движения будет около двух секунд. Всего живых тайлов будет 2K/16=128.

    СПРАЙТЫ.

    Спрайты рисуются в графическом режиме с помощью блиттера. Графический режим с двумя переключаемыми буферами для быстрого обновления изображения без мерцания.

    В основной памяти спрайт хранится по 2 точки в байте:
    4 бита - номер цвета, 1111 - прозрачный

    Каждая точка в графическом режиме в видеокарте представляется одним байтом:
    1 бит - номер уровня
    3 бита - номер палитры
    4 бита - номер цвета

    При рисовании спрайта в графическом режиме выбрать нужный уровень и палитру.

    Спрайты разных уровней можно накладывать с учетом прозрачности. Начинать рисование со спрайтов низшего уровня, затем более высокого. На мониторе видна будет непрозрачная точка с наивысшим уровнем.

    Для палитры две микросхемы по 32 К.

    Размеры символов: 4, 6, 8, 10, 12, 14, 16 точек. Для 80 символов в строке ширина символа 8 точек, для 64 символов в строке ширина 10 точек, для 40 символов в строке ширина 16 точек. В байте шрифта 2 точки по 4 бита.

    При выводе слова на монитор достаточно установить шрифт, цвет, номер строки, номер столбца. Затем записывать в один порт все символы слова или предложения (OTIR). При записи символа в порт символа в буфер символа записывается символ, автоматически записывается атрибут из регистров шрифта и палитры, а затем увеличивается номер столбца.

    Начало отображаемого окна через запись в порты: начальная строка, начальный столбец, начальная строка в символе, начальный столбец в символе.
    Размер символа устанавливается через запись в порты: первая отображаемая строка символа (0-12), первый отображаемый столбец символа (0-12).

    Полосы параллакса можно представить как прозрачные ленты с рисунками, которые уложены внахлест и могут независимо двигаться по-горизонтали.

    Чтобы при скроллинге не записывать смещение для каждой строки используем старший бит начального столбца в символе как переключатель записи. Если он нулевой - загрузить новое значение в счетчики из памяти. Если 1 - загрузить в счетчики значение из регистров как у предыдущей строки.

    Таким образом, для смещения с учетом параллакса во время кадрового гасящего импульса нужно обновлять смещение только для верхних и средних строк каждой полосы параллакса. У строк ниже будет такое же смещение, так как в старшие биты для них мы запишем единицы.

    Строк VGA 360. Упростим запись смещения. Будет одно смещение у двух строк. Всего 180 пар. Хватит одного байта для адресации памяти.

    Слои дальнего фона с параллаксом сделать простыми. Всего по 256 символов в каждом слое. Всего по одной палитре на слой. На точку 15 цветов плюс прозрачный. Смещение по-вертикали общее на оба слоя. Размер буферов символов по 256 столбцов символов и 128 строк.

    VGA выход выбран с разверткой NHD 640*360.
    Разрешение 640*360 точек.
    Частота кварца 20 МГц выбрана для упрощения вывода на VGA NHD. Z80 на 5 МHz.

    Планируется модель памяти с четырьмя окнами.
    Адреса портов должны быть восьмибитные с полной дешифрацией. Избегать комбинирования битов нескольких регистров управления в один порт. Для упрощения каждый параметр записывать в отдельный порт с восьмибитным адресом. Так проще и быстрее.

    Текущая конструкция модульного компьютера.
    На рисунке изображена кросс-плата с 8 разъемами PBD-80. Модули размером 183*122 мм предполагается устанавливать горизонтально на разных уровнях. Большой размер модулей для большого количества микросхем логики в DIP корпусах. Между модулями стойки на 20 мм.
    Последний раз редактировалось zx-kit; 11.03.2023 в 21:21.
    "L-256"

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    66
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    второй (текстовый) режим можно использовать для вывода огрубленной графики если знакогенератор заполнить не "рисунками символов", а чанками - типа как псевдографика, но по факту просто набор разнообразно заполненных точками знакомест (при знакогенераторе в 256 символов и знакоместе 8х8 размер чанка составит 2х2 точки, т.е. огрубление всего то в 2 раза). При этом для вывода такой графики получается существенное преимущество: каждый кадр требует модификации в N раз меньшего объема ОЗУ (N=количеству строк в знакоместе), что уже наконец то даст нам возможность поиграть в DOOM на Корвете.
    Не хватит комбинаций битов в одном байте. В символе может быт только 8 чанков. Поэтому их размеры будут больше. Наверно символьный экран лучше сделать в разрешении 640х350 85 Hz и размер символа 8х14 точек. А рисовать проще в графическом режиме 320x240 с адресацией типа Ориона и Специалиста, но с адреса 0, двумя экранами и режиме рисования одним цветом + прозрачный.
    - - - Добавлено - - -


    Адреса включения-выключения - это что имеется в виду? Начальный адрес текстового экрана в ОЗУ SRAM-ины? Если это оно, то это очень нужная фича, т.к. позволит иметь несколько планов/экранов между которыми можно моментально переключаться - хоть для "рисования", хоть для работы нескольких консолей (т.е. нескольких приложений - каждое со своей консолью), если это не оно, то многоэкранный текстовый мод нужно добавить. Также, если такое возможно (например если в видеоадапторе стоит микроконтроллер как у Freddy) не был бы лишним скроллинг задаваемого пользователем окна (для каждого экрана - свой размер окна) во все стороны.

    Хост будет иметь возможность писать/читать непосредственно в видеоОЗУ, или он его будет позиционируемо заполнять через некий канал ввода (как например терминальных вариантов)?
    Надо определить адреса видеоОЗУ для хранения символов. Ориентировочно в области 0000-3FFF. Можно разместить 4 области по 4К для символьных экранов с атрибутами. В знакогенераторе можно записать сразу две кодировки KOI-8 и CP-1251. Насчет скроллинга - это займет много микросхем. В ОЗУ видеокарты можно будет только писать. На чтение она невидима, читаются данные из ПЗУ.
    "L-256"

  4. #3
    Master Аватар для s_kosorev
    Регистрация
    19.06.2014
    Адрес
    г. Харьков, Украина
    Сообщений
    731
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zst Посмотреть сообщение
    Не хватит комбинаций битов в одном байте.
    11-12 битные байты использовать.
    Цитата Сообщение от zst Посмотреть сообщение
    Надо определить адреса видеоОЗУ для хранения символов.
    Предлагаю адрес 1000, удобно запомнить, удобство очень важно.
    Цитата Сообщение от zst Посмотреть сообщение
    В знакогенераторе можно записать сразу две кодировки KOI-8 и CP-1251.
    UTF-32 самый удобный способ. Любой символ можно указать, всегда 32 бита, будет быстро работать

  5. #4
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    66
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Оба типа экранов, графический и символьный, будут начинаться с адреса 0000H. Все только на запись. Графических 2 экрана, символьных 4 экрана. Номер отображаемого экрана выбирать записью числа в соответствующий регистр.

    Для графического экрана младший байт указывает смещение байта от верхней границы экрана. Старший байт - смещение байта от левой границы экрана. То есть, чтобы перейти к байту вниз надо увеличить на единицу младший байт адреса. Для перехода к байту справа надо увеличить старший байт адреса.

    Для символьного экрана младший байт будет указывать номер строки символов, старший байт - номер столбца.

    Лучше сделать выбор кодировки символов. Можно сделать несколько шрифтов и кодировок. Для знакогенератора будет FLASH 128К x 8 бит. Один шрифт займет 256 * 16 = 4Кбайта. Всего можно зашить до 32 шрифтов. Текущий шрифт выбирать записью числа в соответствующий регистр. Символы будут рисоваться текущим цветом. В текущем цвете 4 бита на RGBI PAPER и 4 бита на RGBI INK.
    Последний раз редактировалось zx-kit; 29.12.2017 в 00:37.
    "L-256"

  6. #5
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    cp/m - даст "быстрый старт" изза наличия кучи СТАРОГО софта, но всеравно проиграет тому что уже есть на MSX и новейших msxdos... Отсюда вопрос - а будет ли новый комп круче чем MSX2+ ? Думаю сделать такой будет довольно трудно, в основном изза эффективности v9958 (у которого отдельная шина для видеопамяти и структура экрана спрайтово-тайловая).

    Если брать ZX-SPECTRUM за некий минимально приемлемый стандарт динамики в играх (что явно не так, потому что на спекки нехватает скорости для портирования игр с полной перерисовкой экрана, типа как в boulder dash или river ride), то можно заключить что для 7кб экрана нужно около 3.5 mhz (z80). Для нового компа надо обеспечить как минимум в 2 раза большую скорость (это 7mhz для экрана в 7кб, а лучше 14mhz, но тут уже встанет вопрос о скорости памяти, прикольно лепить из "советских" микрух но они тормозные, а ставить импортный sram "неспортивно"). Есть вариант ити путем "тайлов и спрайтов" по типу ПК8002 Эльф (что по сути v9938 на рассыпухе), это проверенный подход использующийся в c64,nes,msx,sega... он за счет усложнения схемы позволит оставить проц на тех же 3.5 mhz, правда 3D игры типа elite от него ничего не получат. Есть еще мульти-процессорность, сделать в компе несколько шин (типа как в ук-нц) и выделить отдельный и максимально разогнанный z80 для рисования графики который будет устраивать "гонки с лучем" как в atari2600, его будет тормозить видеоконтроллер (а вообще для графики надо бы шото пожирнее, например 16bit как в pcengine). По идее можно иметь и больше шин, например 2 отдельных процессора для 2-х равных частей экрана и 4 паралельных шины (одна для видео-контроллера, 2 для граф. процессоров и одна для основного cp/m процессора). Ну в общем ... тут надо пробовать, возможно сначала промоделировать в самописной программе или vhdl. Если делать "абы как" то выйдет очередной орион-128.

  7. #6
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    66
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    С MSX+ не знаком. Видеорежимы планируются быстрее, чем у Спектрума:

    2 экрана вместо одного с возможностью выбора, на каком рисовать, а какой отображать.
    В видеокарту надо только писать, что экономит время.
    Вместо операций чтение + чтение +"AND"+запись+ чтение + чтение +"ОR"+ запись у Спектрума в новой видеокарте надо только чтение + запись + чтение + запись.

    Адресация экранов линейная, как у Ориона, но лучше, так как начало с адреса 0000.
    Можно в адреса ПЗУ и видеокарты включить ОЗУ.
    Освобождается 7 Кб на месте старого экрана Спектрума.
    Не надо заполнять область атрибутов - атрибут один, текущий.
    Рисуется как в Спектруме сразу по 8 точек на байт, но есть выбор - рисовать двумя цветами или одним + прозрачный.
    Z80 на частоте 6 MHz. Хотя теоретически можно и 20 MHz поставить.
    То есть можно обновить весь экран за 1-2 кадра и переключить без мерцания.

    Видеопамять придется брать статику на 10 ns в корпусе SOJ. Это связано с частотой чтения из видеопамяти 25 MHz при выводе точек на VGA монитор с частотой 12.5 MHz. То есть память нужна быстрее, чем 40 ns.
    Для адапатации игр Спектрума будут использоваться часть экрана размером 256х192. Для новых игр можно рисовать на всем экране 320х240.
    Последний раз редактировалось zx-kit; 07.01.2022 в 16:07.
    "L-256"

  8. #7
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,050
    Спасибо Благодарностей отдано 
    1,067
    Спасибо Благодарностей получено 
    257
    Поблагодарили
    124 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Думаю, что крутизна должна быть умеренная. От острова ZX128 до острова CHELYABINSK должен быть один шаг в лучшую сторону. Чтобы имеющийся софт легко перешагнул. Чтобы имеющиеся программисты легко перешагнули.

    Ещё важные критерии: Надёжность, дешевизна, полнота и понятность документации, возможность самостоятельной независимой сборки.
    Продуманность системы слотов в материнке. Разьём должен позволять разрабатывать широкий спектр карт.
    Продуманность базовой модели. Что на материнке, какие карты вставлены.
    Маркетинг.


    Другие критерии:
    Можно-ли будет сделать карту с доп ОЗУ управляемую, как на известных клонах.
    Можно-ли сделать карту ПЗУ, которое-бы работало, пока картриджа нету.
    Размеры и вес корпуса. Энергопотребление. Помехозащищённость. Красота.

  9. #8
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    66
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Как раз получается один шаг для улучшения графики в лучшую сторону без потери скорости. Почти как в Орионе, Только проще и удобнее. Если получится, большинство микросхем будет в корпусах DIP. Слоты я решил DIN-64. Сигналы надо обсуждать. По два контакта будут на +5V, +3V3, GND. Шину адреса и данных наверно полностью. А вот остальные сигналы надо уточнить. На материнке предполагаетс только видеокарта, так как она будет из большого количества микросхем и на модуль не влезет. Еще может схема включения БП ATX на АТМЕГЕ.
    Модули - RAM, картриджа, клавиатуры,.. на отдельных платах.
    "L-256"

  10. #9
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,050
    Спасибо Благодарностей отдано 
    1,067
    Спасибо Благодарностей получено 
    257
    Поблагодарили
    124 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Процессор-то на материнке? Видеопамять на материнке?

  11. #10
    Guru Аватар для zx-kit
    Регистрация
    11.04.2009
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,603
    Записей в дневнике
    15
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    66
    Поблагодарили
    52 сообщений
    Mentioned
    1 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Процессор Z80 на 6 MHz в корпусе DIP-40 на отдельном модуле с генератором на кварце 12 MHz, делителем до 6 MHz, подтяжкой шины данных к +5V. 8 резисторов по 10К. На этом же модуле надо поставить буферы шин адреса и управления. Возможно для шины данных тоже. Надо уточнять схему.

    Основное ОЗУ на отдельном модуле. В базовом варианте 2 микросхемы SRAM по 32 К в корпусах DIP-24.

    ВидеоОЗУ, ОЗУ символьного экрана, возможно ОЗУ палитры, FLASH знакогенератора на материнской плате.

    Арбитра шины как в ZX-BUS не будет. Чтобы избежать конфликтов на шине данных каждый модуль соединяется с шиной данных защитными резисторами по 470 Ом. За каждым устройством закрепляется определенный адрес с полной дешифрацией младшего байта. Порт FE наверно останется как у Спектрума для совместимсти. Возможно AY, КEMPSTON тоже.

    AY + BEEPER на отдельном модуле. Вместо AY лучше поставить микросхему MP3.

    Для расширения ОЗУ через окно 0000-3FFF будет новый регистр номера страницы. Возможно как в ATM или другом компьютере.

    При установке Z80 на другую частоту надо поменять кварц и делители. Если в другом корпусе, то надо делать новый модуль процессора.

    Корпус MIDI ATX c 7 отверстиями для модулей.

    Вместо картриджа можно будет поставить обычное ПЗУ BASIC в таком же картридже, т.е. ПЗУ внешнее, сменное. Для загрузки игр не надо будет никаких нажатий кнопок - просто включить питание компьютера. Разъем для картриджа типа SL-40 на передней панели корпуса.
    Последний раз редактировалось zx-kit; 29.12.2017 в 12:12.
    "L-256"

Страница 1 из 56 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Радиолюбительский компьютер "LEVEL"
    от zx-kit в разделе Для начинающих
    Ответов: 501
    Последнее: 30.04.2020, 09:46
  2. PUZZNIC+Level Editor 2016
    от Yuri80 в разделе Игры
    Ответов: 3
    Последнее: 01.05.2016, 13:55
  3. Радиолюбительский компьютер "СПЕКТР" - схема, плата
    от idc в разделе Несортированное железо
    Ответов: 0
    Последнее: 02.08.2011, 13:31
  4. Level 5
    от Arlekin в разделе Игры
    Ответов: 7
    Последнее: 29.09.2006, 17:24

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •