PDA

Просмотр полной версии : Быстрая видеокарта "METEOR-2013"



Страницы : 1 [2] 3 4 5

Valen
18.06.2015, 22:43
Для таких чтений нужно статическую память

Короче не исключаем вариант отката к статике.

---------- Post added at 22:43 ---------- Previous post was at 22:28 ----------


Кто за то, чтобы для ускорения работы до приемлемой скорости размеры спрайтов внутри видеокарты были размером 16х16 точек ?

Т.е. все спрайты, из кусочков 16x16 ?
Хотим обойти одно ограничения и вводим другое.

Больше работы для z80.

Так взял и напечатал большей спрайт и всё,
а тут разбей его на маленькие, координаты посчитай, зашли это в карту.

zx-kit
19.06.2015, 06:02
Короче не исключаем вариант отката к статике.
Может две микросхемы памяти поставить? Для буфера экрана - статику, для буфера спрайтов - SDRAM.



Т.е. все спрайты, из кусочков 16x16 ?
Хотим обойти одно ограничения и вводим другое.

Больше работы для z80.

Так взял и напечатал большей спрайт и всё,
а тут разбей его на маленькие, координаты посчитай, зашли это в карту.
Может видеокарта сама сможет собирать большие спрайты из кусочков по 256 точек. При таком размере пакета чтение из SDRAM максимально быстрое, почти как из статики.

zx-kit
19.06.2015, 10:46
Еще про SDRAM. Можно взять за основу время отображения 8 точек на экране монитора (8/14 MHz = 571 nS). Это составит 8*6=48 тактов частоты 84 MHz:
12 тактов - чтение 8 точек из буфера экрана для отображения на VGA.
12 тактов - чтение 8 точек из буфера спрайтов в ПЛИС.
13 тактов - запись 8 точек из ПЛИС в буфер экрана.
11 тактов - обмен Z80 с видеокартой.

Во время бордера вместо чтения для отображения на VGA выполнять циклы регенерации SDRAM.

Таким образом за время отображения 8 точек VGA у нас копируется 8 точек спрайта. Среднее время копирования одной точки 1/14 MHz.

Время копирования всего экрана 320*240/14 MHz = 5486 uS. Это около 86 строк TV. Всего в кадре TV 312 строк.

Valen
19.06.2015, 12:31
Может две микросхемы памяти поставить?

Я тоже к этому пришел !

Вот так:
Ставим 1 метр статики и вся наша предыдущая схема так и работает, как придумали.

Но ещё дополнительно ставим SDRAM.
Из сдрам можно будет делать блиттинг в статическую память (в буф экрана).

При этом, при блиттинге из сдрам в статику, сдрам будет читаться ПОСЛЕДОВАТЕЛЬНО !

Будет два типа печати спрайтов, разных по скорости, "быстрый" (из статики) и "средний" (из сдрам) .


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

Если проще говорить, то спрайты в статике - это типа как-бы очень "быстрый кэш" спрайтов и какие именно спрайты туда положить, это забота программера.


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

Eagle
19.06.2015, 12:44
А как будет делаться скроллинг фоновой картинки? А если фон будет состоять из нескольких слоёв скроллирующихся с разной скоростью для придания псевдообъёма?

ZX_NOVOSIB
19.06.2015, 14:19
Видеокарта это очень хорошо. Но кто будет писать под неё игры? Не так много людей способных на это. Однако именно с ними и нужно обсуждать все тонкости и премудрости, ведь писать то им, значит им и решать, что лучше и как удобней.

DenisGrachev (http://zx-pk.ru/member.php?u=7109), SaNchez (http://zx-pk.ru/member.php?u=3388), drbars (http://zx-pk.ru/member.php?u=245), Oleg Origin (http://zx-pk.ru/member.php?u=6709) - вот с ними бы неплохо посоветоваться ) Да и с Медноноговым можно было бы, он вроде вконтакте есть, и даже, говорят, вполне общительный.

MVV
19.06.2015, 14:50
Парни, не переизобретайте велосипед, он нафиг такой сейчас никому не нужен. Взять к примеру тот-же FT8xx:


http://www.youtube.com

Ну разве что ещё одна железка на полку :) Делать никто и ничего не будет, кроме автора, это факт. Интерес? Да пофиг, разве что на пати показать да и закинуть в барахолку, и начать делать новую плату исправляя косяки предыдущей. Вот и весь интерес.
Разработчиков железа и программистов, что ещё остались собирать нужно в новую группу, пока не разбежались и совместно решать что делать.

zx-kit
19.06.2015, 16:40
А как будет делаться скроллинг фоновой картинки? А если фон будет состоять из нескольких слоёв скроллирующихся с разной скоростью для придания псевдообъёма?

Спланировать, что нужно изобразить на переднем, среднем и заднем плане. Преобразовать это в последоветельность спрайтов. Каждый кадр вычислять, с какого места изображать каждый план. Сначала напечатать задний план, потом средний, потом передний. Для каждого плана указать координату вывода левого спрайта и номера спрайтов слева-направо. Наверно надо предусмотреть нулевой спрайт, который не печатается, а просто пропускает в буфере экрана место размером со спрайт. Например, в плане могут быть редкие одиночные деревья.

---------- Post added at 18:40 ---------- Previous post was at 18:38 ----------


Парни, не переизобретайте велосипед, он нафиг такой сейчас никому не нужен. Взять к примеру тот-же FT8xx:
Ну разве что ещё одна железка на полку :) Делать никто и ничего не будет, кроме автора, это факт. Интерес? Да пофиг, разве что на пати показать да и закинуть в барахолку, и начать делать новую плату исправляя косяки предыдущей. Вот и весь интерес.
Разработчиков железа и программистов, что ещё остались собирать нужно в новую группу, пока не разбежались и совместно решать что делать.
Что бурчишь ? Присоединяйся к нам. Вместе разработаем новый режим. У тебя есть опыт работы с FPGA и SDRAM. У нас - идеи и желание разрабатывать железки и игры.

Oleg Origin
19.06.2015, 20:53
Видеокарта это очень хорошо. Но кто будет писать под неё игры? ... DenisGrachev, SaNchez, Oleg Origin - вот с ними бы неплохо посоветоваться ...

Поскольку уж меня упомянули, вкратце: я - пас.

Мне интересно писать игры для ZX Spectrum. Интересно писать игры для современных PC под D3D. Для меня это совершенно различные увлечения, никак между собой не связанные. Вряд ли кто-то убедит меня, что мне зачем-либо нужен Spectrum, похожий на PC. Есть множество людей другого мнения, разумеется. Просто обозначил свою позицию. Я из тех, для кого Spectrum - это Sinclair / Amstrad, и даже TR-DOS уже только как исключение.

ZX_NOVOSIB
19.06.2015, 21:00
Oleg Origin,Я тебя понимаю. Меня тоже немного смущает идея сделать из спектрума PC. А вот идея ZX-Poly (http://speccy.info/ZX-Poly) мне очень нравится. Спектрум там не превращается в PC, а просто становится 4-ёх ядерным )) Но дух спектрума сохраняется полностью. А 4 ядра только для устранения клэшинга, и игры переделываются относительно легко, т.е. не переписываются с нуля.

s_kosorev
19.06.2015, 21:19
А 4 ядра только для устранения клэшинга, и игры переделываются относительно легко, т.е. не переписываются с нуля.
Игры никто не переделлывает, это практически 100% факт, так что и замарачиваться нет смысла, делать костыль с теоретической возможностью переделки игр. Если и пределывают то только ремейки

ZX_NOVOSIB
19.06.2015, 22:08
Игры никто не переделывает, это практически 100% фактдык не переделывают, потому что ни у кого этого ZX-Poly нет, нет даже прототипа. Был бы железо, начали бы переделывать под него игры.

s_kosorev
19.06.2015, 22:33
дык не переделывают, потому что ни у кого этого ZX-Poly нет, нет даже прототипа. Был бы железо, начали бы переделывать под него игры.
есть много спектрумов с разными видеорежимами, которые есть у людей на руках, что то не нашел что бы кто то игры переделывал под них. Так что это все отмазки, к тому же есть эмулятор ZX-Poly, тоже не нашел ничего кроме нескольких демок от автора. Более того, на других платформах тоже самое

ZX_NOVOSIB
19.06.2015, 22:53
есть много спектрумов с разными видеорежимами, которые есть у людей на руках, что то не нашел что бы кто то игры переделывал под них.
много? это какие? атм/пентева чтоли? Дык она одна. Игры под неё не переделывают, ибо слишком муторно. ZX-Poly подразумевает, что игру под него во много раз проще переделать чем под атм/пентеву. Ибо там по сути нет видеорежима отличного от стандартного, там стандартный режим, просто выполняется 4-мя процами 4 одинаковых игры, только цвета разные в этих 4 играх. = нет клэшинга

s_kosorev
19.06.2015, 23:01
Ну так стань первым, переведи десяток игр на ZX-Poly
видекарта все равно не сделает из компьютера 4х ядерный, так что тут не место восторжениям ZX-Poly

---------- Post added at 23:01 ---------- Previous post was at 22:59 ----------

вот есть топик про реализацию http://zx-pk.ru/showthread.php?p=794925
поддержи автора, тут про видекарту, а не про компьютер целиком

AndyD
19.06.2015, 23:04
Все железки нужны для паяльщиков и кодеров(разработчикам скилл),первые паяют для пользования труда вторых,а вторые пишут для первых,а так движение больше наверное в сторону демо ,игры наверно для далеких от спеки будут не интересны(хоть 8800 прикрути),а старые спектрумисты больше старые игры любят-на тех железках ,что были когда-то.
В любом случае,нет железки нет желающих писать под нее,а там дело за малым.
Надо пробовать сделать что то новое,я за идею.

zx-kit
22.06.2015, 21:17
Хорошо бы предусмотреть возможность загрузки спрайтов или целой игры с PC. Для отладки.
Вот как сделано на сайте марсоход (http://marsohod.org/index.php/projects/6-ourblog/projects/174-phframe3).

Сигналы, которые идут на HDMI, SD-CARD и другие свободные я бы вынес на разъем. А там свобода выбора будет, что к ним подключать.

zx-kit
23.06.2015, 06:12
MVV, предлагаю параллельно со схемой видеокарты начать совместно разработку режима "METEOR" для ReVeRse.
Как ты писал, будет повод научиться чему-то новому. Предлагаю использовать VERILOG и схемный ввод как на сайте MARSOHOD.

---------- Post added at 08:12 ---------- Previous post was at 06:17 ----------


Не совсем понял, зачем так. Сигнал WR это от Z80 который?

Да, он передает данные от Z80 на FPGA в командах записи и отключается, когда записи нет. Желательно резисторы подтяжки к 3.3V добавить.


Эти магические названия... Может в этом что-то и есть. Я бы проиграл в цвете, звуке, габаритах и новизне... VGA это еще плюс 7 хз откуда выводов, около 15-ти и больше 1% резисторов и большой разъем на плату. Ограничим качество картинки(аналоговая против цифровой) и цвет на 15bpp против 24bpp. Пусть спонсоры решают...
От SCART, на мой взгляд рано отказываться. Много старой техники. И режим 50 Гц не все мониторы показывают. 15 бит также позволяет сделать копирование в два раза быстрее, чем 24 бита при достаточно хорошем качестве изображения.


USB-UART можно добавить...
Чтобы была большая скорость нужна FT2232H. Она дороговатая. Лучше использовать внешний программатор с ней, чем устанавливать на карту. Хотя, может лучше иметь встроенный программатор и порт связи через один шнурок USB. Так сделано в MARSOHOD2.


C HDMI лучше так не шутить...
Чет в сторону BGA начинаю косить... может её...?Да HDMI лучше рядом с FPGA. Но проблема в том, что в картах ZX-BUS разъемы на плату лучше не ставить. Иначе при включенном питании могут сдвинуть карту в слоте ZX-BUS, нарушится контакт и начнутся глюки.

Valen
23.06.2015, 14:45
Нужно, чтобы карта могла сама перешить прошивку для FPGA, без внешних программаторов.
Ошибки (доработки) будут правится в конфиге FPGA достаточное время и юзерам карт, обновлять прошивку тоже нужно будет.

Т.е. на PC запускаем прогу и перешиваем через обычный кабель.
(опционально - перешивка со спектрума)


Насчёт буфера команд.
Буфер команд, вероятно проще в SDRAM засунуть.
(чтобы не тратить набортную FPGA память),
где-то 32КБ, чтоб не переполнился.
Логика переполнения пусть будет, например статусный бит переполнения.

Насчет КА и т.п.
Тут мы не можем простейший блиттер завести ...



Звук думаю тут не лишний, мало ли что, вдруг видео конфиг не сделаем, то хоть TurboSound, SounDrive, GeneralSound, SID... будет?
Позитивное мышление. :)

s_kosorev
23.06.2015, 14:58
Тут мы не можем простейший блиттер завести ...
а нормальный блиттер не только на экране рисовать должен уметь, но и в других Surface, вообще блиттер должен работать с поверхностями и их частями, что бы во внеэкранной области, можно было подготовительные работы проводить, ну банальный пример, старока с жизнями, монетами итд, нужно завести поверность шириной на весь экран, вывести туда текст, нарисовать сердечки итд, потом просто обновлять уровень жизни и скопром на экран выбрасывать

Raydac
23.06.2015, 15:02
видекарта все равно не сделает из компьютера 4х ядерный, так что тут не место восторжениям ZX-Poly

для меня всеж странно смотреть как постоянно предлагается сделать плату по производительности такую же как суперкомпутеры времен начала спектрума, прицепить к ней спектрум и сказать что "так и было" )) какая то мания у народа в этом деле прям, не проще тогда взять старые писишные платы, сделать альтернативный BIOS с зашитым спековским эмулем и эмулируемым видеорежимом?

опыт спринтера в свое время показал что даже сотня проданных железок и еще не угасшая популярность не приводят к тому что кто то начинает писать игры или даже адаптировать, акула капитализма в лице Медноногова поставила в то время условие - проданные 300 компов и только после этого он будет что то адаптировать из своего, а уж спринтер то мог устраивать акробатику в плане графики

советую прежде чем клепать железо, сделать эмуль, это дещево и недолго и служит хорошим proof of concept особенно когда какуюнить игруху под него адаптируешь + отлаживается на порядок проще

MVV
23.06.2015, 15:06
предлагаю параллельно со схемой видеокарты начать совместно разработку режима "METEOR" для ReVeRse.
Для какой из конфигураций?
"METEOR"??? Почему не "болид" тогда? Неудачное название, это даже не объект какой-то там, а явление возникающее при сгорании... Не хотелось бы это явление наблюдать при подключении карты.
Параллельно не потяну, задача хоть и простая, но не из легких. Свои мысли устройства я наглядно изложил здесь (http://zx-pk.ru/showpost.php?p=812525&postcount=105) в виде схемы.

От SCART, на мой взгляд рано отказываться. Много старой техники. И режим 50 Гц не все мониторы показывают. 15 бит также позволяет сделать копирование в два раза быстрее, чем 24 бита при достаточно хорошем качестве изображения.
Для VGA не хватает выводов, разве что 6bpp получится (решается простым переходником HDMI2VGA), выхлоп переходника можно на шурупы, чтобы карта не выпадала и всё хорошо.
Будет 60Гц как у нормальных людей, а 50Гц смотреть и фапать через SCART или S-Video с выхода видео компа, он то у нас будет свободный, я планирую TV подключить двумя шнурками VGA/SCART комп и HDMI для DivGPU или exGPU или как там по понятней карту назвать...

Чтобы была большая скорость нужна FT2232H. Она дороговатая. Лучше использовать внешний программатор с ней, чем устанавливать на карту. Хотя, может лучше иметь встроенный программатор и порт связи через один шнурок USB. Так сделано в MARSOHOD2.
Большая скорость кого/чего? Во первых плохое соотношение цены и функционала. Уже лучше VNC2, дешевле и в разы для этого случая лучше.
Добавил в схему CP2104, раз нужна возможность отладки и загрузки обновлений или обмен данными с PC (USB-UART).

Раз пошла такая пьянка с U16, то мне лучше идти по пути совместимости обвеса и простоты. Т.к. отлаживать видео режим мне придется на U16, соответственно делать новую конфигурацию спека с этим режимом.

s_kosorev
23.06.2015, 15:10
всеж странно смотреть как постоянно предлагается сделать плату по производительности такую же как суперкомпутеры времен начала спектрума
не вижу в этом ничего странного, у меня видеокарта встроенная в процессор, имеет вычислительную мощьность в 20 раз больше чем процессор, меня этот факт не смущает

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

MVV
23.06.2015, 15:36
Raydac, это новая ступень перехода на новое железо, пока в виде карты, так было и на PC с платами с несколькими слотами и процессорами :)
Плохо то, что так никто и не предложил помощь в создании конфигурации ZX-Poly :(

а вот что странно, так это сейчас предлагать видеорежим с 16 цветами, вот уже где несуразность, при современных возможностьях
Я немного наверно перегнул с HDMI, переубеждать никого не намерен, если сторонников не будет, то последнее слово будет за zst, дальше я пас.

zx-kit
23.06.2015, 17:36
для меня всеж странно смотреть как постоянно предлагается сделать плату по производительности такую же как суперкомпутеры времен начала спектрума, прицепить к ней спектрум и сказать что "так и было" )) какая то мания у народа в этом деле прям, не проще тогда взять старые писишные платы, сделать альтернативный BIOS с зашитым спековским эмулем и эмулируемым видеорежимом?

опыт спринтера в свое время показал что даже сотня проданных железок и еще не угасшая популярность не приводят к тому что кто то начинает писать игры или даже адаптировать, акула капитализма в лице Медноногова поставила в то время условие - проданные 300 компов и только после этого он будет что то адаптировать из своего, а уж спринтер то мог устраивать акробатику в плане графики

советую прежде чем клепать железо, сделать эмуль, это дещево и недолго и служит хорошим proof of concept особенно когда какуюнить игруху под него адаптируешь + отлаживается на порядок проще
Обычные Спектрумы уже давно обновились. Пора бы добавить новые графические возможности. Я стараюсь сдерживать товарищей, которые хотят догнать PC и использовать максимум возможностей FPGA. Нужно лишь устранить недостатки стандартного режима с сохранением скорости и простоты. Скорость нужна, так как при увеличении количества цветов резко увеличиваются размеры спрайтов и время на их копирование.

Чтобы сделать режим массовым я предлагаю добавить его в современные девборды, эмуляторы и внешние видеокарты. Я понимаю, что будут писать игры, только если все смогут их посмотреть и поиграть.

Пока никто не предложил добавить режим в эмулятор. Наверно лучше сначала проверить идею на современном компьютере типа ReVeRse.

---------- Post added at 19:36 ---------- Previous post was at 19:26 ----------


Для какой из конфигураций? "METEOR"???

http://s020.radikal.ru/i708/1506/2e/32b290ec548et.jpg (http://s020.radikal.ru/i708/1506/2e/32b290ec548e.jpg)
METEOR - это иностранное название метеорита. Метеориты быстрые. Пару лет назад к нам в Челябинск один такой быстрый метеорит прилетел (https://ru.wikipedia.org/wiki/%D0%A7%D0%B5%D0%BB%D1%8F%D0%B1%D0%B8%D0%BD%D1%81%D 0%BA_%28%D0%BC%D0%B5%D1%82%D0%B5%D0%BE%D1%80%D0%B8 %D1%82%29). И видеорежим получится быстрый.


Параллельно не потяну, задача хоть и простая, но не из легких. Свои мысли устройства я наглядно изложил здесь (http://zx-pk.ru/showpost.php?p=812525&postcount=105) в виде схемы.

Схема в основном устраивает.


Для VGA не хватает выводов, разве что 6bpp получится (решается простым переходником HDMI2VGA), выхлоп переходника можно на шурупы, чтобы карта не выпадала и всё хорошо.

Тогда пусть будет HDMI. Но я придумал как освободить 12 сигналов из ZX-BUS. Если устроит такая схема, то предлагаю параллельно разъему HDMI, используя дополнительные выводы, развести 3 ЦАПа R-2R по 5 бит для VGA. Вывести их на однорядный разъем типа WF-09MR. Тогда можно будет сделать две прошивки на выбор и впаивать нужные разъемы и детали.


Будет 60Гц как у нормальных людей, а 50Гц смотреть и фапать через SCART или S-Video с выхода видео компа, он то у нас будет свободный, я планирую TV подключить двумя шнурками VGA/SCART комп и HDMI для DivGPU или exGPU или как там по понятней карту назвать...

Большая скорость кого/чего? Во первых плохое соотношение цены и функционала. Уже лучше VNC2, дешевле и в разы для этого случая лучше.
Добавил в схему CP2104, раз нужна возможность отладки и загрузки обновлений или обмен данными с PC (USB-UART).

Раз пошла такая пьянка с U16, то мне лучше идти по пути совместимости обвеса и простоты. Т.к. отлаживать видео режим мне придется на U16, соответственно делать новую конфигурацию спека с этим режимом.
UART можно и внешний.
Предлагаю новую конфигурацию назвать "ZX-48К Meteor". Для начала нужно кое-что уточнить. Можно ли в FPGA из 50 MHz сделать 112 ?

s_kosorev
23.06.2015, 17:56
Предлагаю новую конфигурацию назвать "ZX-48К Meteor"
тогда уже ЧЕЛЯБИНСК-2013, эпичнее будет

zx-kit
23.06.2015, 18:02
Метеорами называли корабли, спутники, реактивные истребители:

Метеор — «падающая звезда», атмосферное явление, возникающее при попадании метеорных тел в атмосферу Земли.

«Метеор» — серия советских метеорологических ИСЗ.
«Метеор» — первый вооружённый пароход Черноморского флота России.
«Метеор» — парусная шхуна Балтийского флота России.
«Метеор» — серия советских речных теплоходов.
«Метеор» — немецкое экспедиционное судно.
«Метеор» — семейство советских объективов.
«Метеор» — пьеса Фридриха Дюрренматта.
«Метеор» — мультиспортивный стадион (спорткомплекс) в городе Днепропетровске (Украина).
«Метеор» — многоцелевой стадион (спорткомплекс) в городе Жуковском (Россия).
«Метеор» — российский производитель кварцевых резонаторов.
«Метеор-М» № 1 — российский метеорологический спутник.
Глостер «Метеор» — первый британский реактивный истребитель.

MVV
23.06.2015, 18:05
Чтобы сделать режим массовым я предлагаю добавить его в современные девборды, эмуляторы и внешние видеокарты.
Добавлять то нечего, нет ни концепции, не спецификации... Создавать группу нужно, иначе ничего не выйдет.

Пока никто не предложил добавить режим в эмулятор.
Никто сейчас и не предложит.

Тогда пусть будет HDMI. Но я придумал как освободить 12 сигналов из ZX-BUS.
Я вижу два варианта:
1) добавить регистр 74lvc16374 на шину адреса, выхода на VGA 5:6:5. Если VGA выхлоп или второй монитор не нужен, то не распаивать.
2) FPGA в корпусе BGA.

Предлагаю новую конфигурацию назвать "48К+Meteor". Для начала нужно кое-что уточнить. Можно ли в FPGA из 50 MHz сделать 112 ?
Предлагаю железку назвать DivGPU.
Да, можно.

zx-kit
23.06.2015, 18:27
Предлагаю так соединить буферы 74LVC245, чтобы через один подавать сигналы шины управления. Он будет всегда включен. А выходы остальных соединить параллельно. С FPGA взять 4 сигнала для включения в нужный момент этих трех буферов. Причем на шину данных подать два управляющих сигнала - направление и управлением выходов.

В состоянии ожидания через включенные буферы на FPGA подаются сигналы управления и самые важные линии адреса (A15, A14, A2, A1, A0,,,). Как только на этих выходах появится команда записи/чтения в порт/память Z80 происходит запись этих сигналов в FPGA и включение по-очереди двух остальных буферов, чтобы получить в регистрах FPGA все сигналы ZX-BUS.

Таким образом, нам потребуется 20 ног вместо 32.

Предлагаю проверить работу отдельных схем видеокарты на ReVeRse до разработки плат. Идея такая:

Частота точек на TV 7 МГц, На VGA 14 MГц.
Тактовую частоту FPGA и SDRAM установить 8*14=112 МГц.
Длительность такта около 9 nS.
Режим работы SDRAM 3-3-3, чтение и запись пакетами (BL=8) с автовыключением блока (STR).

Единицу времени назовем квант. Его длительность равна длительности изображения точки на экране TV.
Кванты связаны в тетрады - по 4 кванта подряд.
Максимальный приоритет доступа к SDRAM будет у Z80. В любом кванте он может прочитать или записать байт в SDRAM.
Следующий по приоритету сканер экрана. В течение четырех квантов в одной тетраде он должен прочитать из SDRAM один пакет по 8 точек и сохранить внутри FPGA. Затем вывести на VGA с частотой 14 MHz по 15 битов на цвет. Извините, для 24 бит скорости не хватает.
Затем, в оставшиеся кванты тетрады возможно обращение к SDRAM блиттера.
Во время бордера вместо сканера к SDRAM получает команда регенерации.

Каждый квант состоит из 16 тактовых импульсов. За 14 или 15 тактов можно прочитать или записать пакет из 8 точек.

На основе частоты кванта строится развертка VGA.

s_kosorev
23.06.2015, 18:31
EPM3128 берете, она 5v толерантна, можно свой простокол обмена с FPGA, это же классика, сама Altera рекомендует как IO Extender использовать чипы серии MAX3000
ну рекомендовала когда то

zx-kit
23.06.2015, 19:13
Добавлять то нечего, нет ни концепции, не спецификации... Создавать группу нужно, иначе ничего не выйдет.

Предлагаю железку назвать DivGPU.


Название должно быть связано со скоростью, что-то типа Fast, Speedy, Flying, Rapid, ZX-128K Flash Mode, ZX-48K QuickVideo ...

Ну группа вроде собирается. Предложи, с чего начнем ?

---------- Post added at 20:58 ---------- Previous post was at 20:52 ----------


EPM3128 берете, она 5v толерантна, можно свой простокол обмена с FPGA, это же классика, сама Altera рекомендует как IO Extender использовать чипы серии MAX3000
ну рекомендовала когда то
Они скоро исчезнут. Буферы LVC справятся.

---------- Post added at 21:13 ---------- Previous post was at 20:58 ----------



Большая скорость кого/чего? Во первых плохое соотношение цены и функционала. Уже лучше VNC2, дешевле и в разы для этого случая лучше.
Добавил в схему CP2104, раз нужна возможность отладки и загрузки обновлений или обмен данными с PC (USB-UART).

VNC2 мне больше нравится. Хотя нам надо только 1 вход с UART, может получится наладить обмен с PC через один канал и с USB-FLASH через другой.

Valen
23.06.2015, 19:26
Тогда пусть будет HDMI. Но я придумал как освободить 12 сигналов из ZX-BUS. Если устроит такая схема, то предлагаю параллельно разъему HDMI, используя дополнительные выводы, развести 3 ЦАПа R-2R по 5 бит для VGA.

Ретро видео-карта с цифровым HDMI и c малюсенькой PAL картинкой ?
Для несчастных 312 строк там hdmi не нужен и вывод RGB/композит гораздо более массовая штука.
Но, если уж так приспичело hdmi, тогда паралельно делать RGB и hdmi.

И удачи в покупке переходников на AV, которые не поддерживают 50 Hz.

---------- Post added at 19:26 ---------- Previous post was at 19:15 ----------


Будет 60Гц как у нормальных людей

Мы ж к спектруму девайс обсуждаем. Там 50Гц.

s_kosorev
23.06.2015, 20:38
И удачи в покупке переходников на AV, которые не поддерживают 50 Hz.
Ну так стандартный выход никуда не девается, подключай в AV и еще куда писпичит
Мы ж к спектруму девайс обсуждаем. Там 50Гц.
аналогично п1, лесом 50гц, это для 16цветных ZX-Ploy приемлимо, на HiColor видеокарты нет смысла тащить и этот маразм

Valen
23.06.2015, 21:09
налогично п1, лесом 50гц, это для 16цветных ZX-Ploy приемлимо, на HiColor видеокарты нет смысла тащить и этот маразм

PAL это 50 Гц - 256 видимых строк
NTSC это 60 Гц - 220 видимых строк

Если брать 60Гц и NTSC, туда уже 320x240 не влазит.
Хоть бы тайминги почитали.

---------- Post added at 21:09 ---------- Previous post was at 21:05 ----------


подключай в AV

Чтоб подключить телевизор, ему нужен сигнал одного из стандартных форматов.

s_kosorev
23.06.2015, 21:34
Если брать 60Гц и NTSC, туда уже 320x240 не влазит.
Хоть бы тайминги почитали.
да забыть о TV стандартах как о страшном сне, 60Гц это VGA

---------- Post added at 21:34 ---------- Previous post was at 21:33 ----------


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

zx-kit
23.06.2015, 22:53
Думаю, раз видеокарта задумывалась с названием "METEOR", следует оставить это слово в названиях карты, режима и конфигурации,
добавив второе слово Graphics - по аналогии с "Voodoo Graphics" и "Silicon Graphics":
Видеокарта - "Meteor Graphics"
Видеорежим - тоже "Meteor Graphics"
Конфигурация ReVeRse - "ZX & Meteor Graphics"

---------- Post added at 00:53 ---------- Previous post was at 00:06 ----------

Микросхема ЦАП - дорого. Достаточно два буфера 74LVC и резисторов 1%

MVV
23.06.2015, 22:53
Название должно быть связано со скоростью. Думаю, раз видеокарта задумывалась с названием "METEOR"...
Скучное название, вот Stardust GDC или SolarWind GDC куда круче за METEORизм. Или проще - GDC (Grapfic Display Cart).
Мы ведь не фигню делаем, тогда для полноценного VGA нужно ставить ADV7123.
В общем если клавиатуру и мышь прикрутить, то будет zx-evo, NES, MSX2... в коробке бонусом. Т.е. карта сможет работать самостоятельно как полноценный один из сконфигурированных компов, а также в наличии будут DivMMC, GS, SounDrive, TurboSound... да еще c ZXBus/NemoBus :)

zx-kit
23.06.2015, 22:58
Скучное название, вот Stardust GDC или SolarWind GDC куда круче за METEORизм. Или проще - GDC (Grapfic Display Cart).

Да хорошее у меня название для карты.


Мы ведь не фигню делаем, тогда для полноценного VGA нужно ставить ADV7123.

Видеоцап хорошо, но дорого. Достаточно для 5 битного цвета двух буферов 74LVC (или для экономии ног три регистра) и 1% резисторов


В общем если клавиатуру и мышь прикрутить, то будет zx-evo, NES, MSX2... в коробке бонусом. Т.е. карта сможет работать самостоятельно как полноценный один из сконфигурированных компов, а также в наличии будут DivMMC, GS, SounDrive, TurboSound... да еще c ZXBus/NemoBus :)
Я не против, а почему у Speccy2010 вторую SD-карту припаивать надо ? Желательно предусмотреть 1 вход для загрузки состояния джамперов выбора режима с регистра сдвига.
Если сигналы, которые идут на буферы к ZX-BUS, вывести на гребенки - тогда при желании вместо ZX-BUS туда можно будет что-нибудь добавить типа PS/2 ?

zx-kit
23.06.2015, 23:05
Потому, что кто-то поставил МК и прикрутил к нему SD, а зачем нам кузнец?
На тот момент это было правильное решение.

MVV
23.06.2015, 23:15
Если сигналы, которые идут на буферы к ZX-BUS, вывести на гребенки - тогда при желании вместо ZX-BUS туда можно будет что-нибудь добавить
На Speccy2010 тоже на гребенку идут, кто-то что-то добавил?

zx-kit
23.06.2015, 23:19
Если 8 сигналов для HDMI подать также на регистры 74LVC для R-2R + 3 доп. сигнала - можно сделать так, что будут одновременно выход HDMI и возможность подключения VGA и SCART. Выбирать режим можно джамперами или сменой прошивки без перепаек.

---------- Post added at 01:19 ---------- Previous post was at 01:16 ----------


На Speccy2010 тоже на гребенку идут, кто-то что-то добавил?
Ты и добавил. Резисторы для R-2R можно взять как в Speccy2010. Только проверить на макете уровень 0.7 V на резисторе 75 Ом при всех 1 на 5 входах.

zx-kit
24.06.2015, 10:46
Нам надо спроектировать новый модуль управления SDRAM. Выше я привел, что он должен делать. Сейчас надо перечислить сигналы для этого модуля.

Сигналы на SDRAM (см. цоколевку)
INIT - сигнал после включения питания по которому надо настроить режим работы SDRAM
CLK - тактовая частота FPGA и SDRAM 112 MHz
TACT [3...0] - номер такта от 0 до 15 для подачи команд на SDRAM
QUANT [1...0] - номер кванта времени от 0 до 3 для выбора команд на SDRAM
BORDER - сигнал рамки вокруг основного окна экрана, нужен для определения момента регенерации SDRAM
ZX_ADDR [23....0] - адрес при обращении Z80 к ОЗУ
SCAN_ADDR [23....0] - адрес для чтения точек из буфера экрана в FPGA для последующего отображения на телевизоре или мониторе
BLIT_SRC_ADDR [23...0] - адрес источника при копированиии (обычно при чтении из буфера спрайтов)
BLIT_DST_ADDR [23...0] - адрес приемника для копировании (обычно при записи в буфер экрана)
ZX_READ - нужно прочитать 1 байт из ОЗУ в Z80
ZX_WRITE - нужно записать 1 байт из Z80 в ОЗУ
BLIT_READ - нужно прочитать 8 точек при копировании
BLIT_WRITE - нужно записать 8 точек при копировании

TYPE_QUANT [2...0] - тип кванта времени:
чтение в Z80 1 байта
запись из Z80 1 байта
чтение сканером 8 точек
чтение блиттером 8 точек
запись блиттером 8 точек
регенерация
чтение 1 точки из буфера экрана
запись 1 точки в буфер экрана

zx-kit
14.09.2015, 22:29
Пришло время завершить проект. Начал рисовать схему видеокарты "Meteor Graphics":

http://s012.radikal.ru/i320/1509/82/c38fb9115d2bt.jpg (http://s012.radikal.ru/i320/1509/82/c38fb9115d2b.png)

Raydac
14.09.2015, 22:35
нравится мне современная схемотехника, какую схему ни возьми, в центре большой квадрат fpga и малость элементов обвязки

CodeMaster
15.09.2015, 11:55
глядишь и рисовать схему не нужно будет?

MVV, прикинь как ты обломишься со своим брюзжанием, если нужно будет ;-)
А если нет, то это будет просто 101-я идея на ZX которая не взлетела и никто особо не расстроится.

CodeMaster
15.09.2015, 16:57
Про причины несостоятельности проекта я zst указал

Просто интересно, ты будешь повторять эти причины (с саморекламой своей идеи) после каждого поста zst в каждой его теме связанной с его видеокартой или этого достаточно сделать 1 раз?

Ewgeny7
15.09.2015, 23:10
не тот уровень общения ты выбрал.
WTF? Штаны не того цвета? :)

---------- Post added at 23:10 ---------- Previous post was at 23:08 ----------


и в чем-то меня упрекнуть
Влад, заканчивай уже практику написал/удалил. Тогда реально упрекать будет не в чем.

zx-kit
17.09.2015, 05:05
Добавил в схему "Meteor Graphics" 1 MB статической памяти - две микросхемы SRAM по 256Kx16bit.
В первый пост добавил характеристики разрабатываемой видеокарты и ориентировочные цены на конструкторы.

Sergey
17.09.2015, 09:19
BLIT_SRC_ADDR [23...0] - адрес источника при копированиии (обычно при чтении из буфера спрайтов)
BLIT_DST_ADDR [23...0] - адрес приемника для копировании (обычно при записи в буфер экрана)
Вообще-то, у блиттера должно быть ДВА источника, на минуточку.

shurik-ua
17.09.2015, 11:23
у блиттера должно быть ДВА источника
можно поподробнее ?

Sergey
17.09.2015, 15:28
можно поподробнее ?
Прошу прощения, - ошибся. Не два, - ТРИ: A, B и C.

Блиттер накладывает друг на друга изображения из трех источников по заданным комбинациям логических правил и записывает результат по адресу приёмника D.

Позволяет "на лету" накладывать изображения по маске на фон.

К примеру, А = фон, B = маска объекта, С = изображение объекта. Типа низкоуровневые спрайты.

Amiga Hardware Reference manual вам в помощь. Раздел №6.

Sergey
17.09.2015, 19:24
Хотя, думаю, в отсутствие битпланов прозрачный цвет для объекта гораздо практичнее маски, - один источник может быть излишним.

zx-kit
18.09.2015, 23:08
Сделал небольшой проект с цветными полосками для Speccy2010.
Архив со всеми файлами большой получился, поэтому я стер все папки и перепаковал.
Для записи на SD-карту нужного файла speccy2010.rbf не было. Как проверить на Speccy2010 ?

Разобрался, как сконвертировать. В меню File квартуса есть пункт Convert Programming Files. Файл .sof преобразовал в .rbf. Проверил и сделал фото. Фотографии не очень удачные, цвета бледнее, чем на телевизоре были. Зато видно градации яркости на цветных полосках. На третьей фотографии тест от MVV.

http://s003.radikal.ru/i202/1509/e0/bc17139cece0t.jpg (http://s003.radikal.ru/i202/1509/e0/bc17139cece0.jpg) http://s019.radikal.ru/i617/1509/99/71671b0660dct.jpg (http://s019.radikal.ru/i617/1509/99/71671b0660dc.png) http://s013.radikal.ru/i323/1509/df/6421c3456533t.jpg (http://s013.radikal.ru/i323/1509/df/6421c3456533.png)

На экране показаны 7 основных цветов с 32 градациями яркости на каждый цвет от черного до насыщенного цвета . А еще есть цветовые переходы от насыщенного цвета к белому и плавные переходы между разными цветами. На экране 7*31+1=218 основных цветов. Всего в палитре с VideoDAC 5+5+5 будет 32768 цветов. На втором этапе реализации расширенной графики в каждом слое можно будет выбирать свою палитру по 255 цветов из 32768.

Я считаю, что 32 градации (5 битов на канал RGB) - это оптимальное количество оттенков по количеству памяти, качеству изображения и скорости копирования. При этом оттенков цвета достаточно много и вполне хватит для игр. А для хранения цвета одной точки в буфере экрана видеокарты достаточно одного слова (15 бит).

zx-kit
21.09.2015, 21:00
zst, есть ещё желание разрабатывать видео карту "Meteor Graphics"?
Продолжаю разработку своими силами. Ожидается добавление поддержки "Meteor Graphics" в эмулятор Xpeccy.

sergio78
23.09.2015, 21:03
Продолжаю разработку своими силами. Ожидается добавление поддержки "Meteor Graphics" в эмулятор Xpeccy.
можно поинтересоваться, зачем нужна эта видеокарта? Обычный ещё один конструктор, для тех кто просто что то новое спаять хочет, чисто из спортивного интереса? спаять и на полку положить. Хотя бы один программист будет, который наладит выпуск игр под неё?

zx-kit
23.09.2015, 21:43
можно поинтересоваться, зачем нужна эта видеокарта? Обычный ещё один конструктор, для тех кто просто что то новое спаять хочет, чисто из спортивного интереса? спаять и на полку положить. Хотя бы один программист будет, который наладит выпуск игр под неё?
Пока нет видеокарты - нет новых игр и поддержки в эмуляторе. Появится видеокарта - появится возможность написания игр. А игры для этой видеокарты писать просто. Проще, чем для стандартного режима. Ведь главное не в количестве цветов, наличии аппаратных спрайтов или блиттера, а в возможности простыми средствами устранить клешинг атрибутов. Плюс линейная адресация экрана для простого рисования на экране, которую нельзя было сделать в 1982 г. при разработке Спектрума. Видимо стандартная адресация была сделана для использования медленных микросхем памяти. А теперь память быстрая и появились FPGA для упрощения модернизации схем.

sergio78
24.09.2015, 19:18
Пока нет видеокарты - нет новых игр и поддержки в эмуляторе. Появится видеокарта - появится возможность написания игр. А игры для этой видеокарты писать просто. Проще, чем для стандартного режима. Ведь главное не в количестве цветов, наличии аппаратных спрайтов или блиттера, а в возможности простыми средствами устранить клешинг атрибутов. Плюс линейная адресация экрана для простого рисования на экране, которую нельзя было сделать в 1982 г. при разработке Спектрума. Видимо стандартная адресация была сделана для использования медленных микросхем памяти. А теперь память быстрая и появились FPGA для упрощения модернизации схем.
да чего только не нараспаивали, уже и не один раз. а воз и ныне там. вернее как игоря и софта не было, так их и не будет, если даже ещё целый вагон разных новых "почти как денди" сделать получится. программистов сейчас уже нет. на мой взгляд, если что и делать, так это повторять оригинал, и как можно точнее и разнообразнее в схемотехнике. чтоб видео к мониторам новым цеплялось легко и без проблем. ну и плюс переферийка конечно, чтоб корпуса, клавы и мышки от пк подходили нативно. кстате, очень замечательный вариат, механическая черри клавиатура на вашем сайте, о чём я не могу здесь не упомянуть.
:v2_dizzy_vodka3:

drbars
29.09.2015, 18:59
предлагаю, чтобы карта поддерживала формат эмулятора Spec256 (http://www.emulatronia.com/emusdaqui/spec256/)

Формат также поддерживает эмулятор EmuzWin (http://kolmck.net/apps/EmuZ/EmuZWin.zip). Есть редактор для раскраски!

Вот игра для примера Scooby Doo (https://www.dropbox.com/s/61yu2lg48m6xfjl/scooby256.zip)

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

zx-kit
06.10.2015, 05:59
Скорее всего видеокарта "Meteor Graphics" выйдет с разъемом DIN-64 как часть модульного компьютера с шиной ZST-BUS.

К другим компьютерам или модулю CPU&RAM будет подключаться через кросс-плату HEPTAGON или переходник TRITON.

На плату будет добавлен микроконтроллер ATMEGA48PA-AU с кварцем 14 MHz в качестве дополнительного генератора 14MHz для подключения к тем компьютерам, у которого нет своего на шине ZX-BUS (модульный компьютер, оригинальный ZX SPECTRUM, ZX-EVO).

zx-kit
23.10.2015, 05:55
http://s020.radikal.ru/i708/1510/2f/a2b874d7cb43t.jpg (http://s020.radikal.ru/i708/1510/2f/a2b874d7cb43.png)

В видеокарте Meteor Graphics дополнительно к стандартной графике Спектрума в слое 0 добавляется слой 1 с расширенной графикой. В слое 0 каждая точка имеет свой цвет и занимает ВНУТРИ видеокарты один байт. Один из цветов назначается прозрачным. Сквозь него видны цвета со слоя 0.

Хотел нарисовать байт переменной ATTR для задания цветов точек в режиме COLOR2M с маской. Но подумал, раз у нас переменная цвета одна на весь спрайт, не обязательно цвет PAPER и INK повторять со стандартного атрибута. Давайте на PAPER и INK выделим по отдельному байту. Назовем их color_0 и color_1. Тогда формирователь RGB можно сделать как в ULA+ (http://scratchpad.wikia.com/wiki/ZX_Spectrum_64_Colour_Mode):
Bits 0-1: Blue intensity.
Bits 2-4: Red intensity.
Bits 5-7: Green intensity.
This mode uses a sub-set of 9-bit RGB. The low bit is duplicated (Bb becomes Bbb): 0->0, 1->3, 2->4, 3->7

Или в MSX2 (http://map.grauw.nl/articles/vdp_guide.php#screen8col):
Screen 8’s colours are composed of Red and Green, with ranges of 0-7, and Blue, with a range of 0-3. Red and Green’s colours are divided over a gliding scale. So, if you were to map these 3-bit colours to 8-bit colour information, you would get steps of (255/7), or in other words: 0, 36, 73, 109, 146, 182, 219, 255. In Assembly, this can by the way easiest be calculated by shifting and OR-ing bits 0-2 as follows: xxxxx210 --> 21021021 (although a table may be faster :)). Anyways, the real subject of this Q&A is the colour Blue. This one does NOT operate on a gliding scale from 0-3 (so no 255/3 stuff), but, just like the other two colours, also from 0-7. It then maps its four colours as follows to that range: 0->0, 1->2, 2->4, 3->7. There is a small test program below for you to experiment with, if you want. Anyways, because of this, gray colours can be really gray and not blue-ish or yellow-ish teints.

Lopital
24.11.2015, 12:23
При обращении к карте состояния всех регистров запоминаются где-то? Интересует очень ситуация с IM2, когда задается адрес прерываний в самом спеке...

zx-kit
24.11.2015, 19:23
Карта будет работать пока только на запись через область по адресам ПЗУ. Из видеокарты ничего читать пока не планируется. IM2 в спеке работают как обычно. Дополнительные прерывания с видеокарты пока не планируются.

Lopital
17.01.2016, 03:01
Как продвигается проект? На конец года планировался запуск карты...

AzAtom
21.04.2016, 15:05
Прочитал тему, вижу, аппетит пришёл во время еды :)
С палитрами я тоже не совсем понял, вроде, теперь речь идёт о 15 битах на точку без палитры.

Насчёт самодельной современной видеокарты с возможностями ускорителя для присоединения к "железному" спектруму есть сомнения. Есть ли смысл так делать для практического применения? Если используется FPGA, то почему бы не реализовать в ней и сам спектрум? Заодно реализовать порты для подключения USB клавиатуры и мыши.

Если хочется использовать что-то современное, то можно подключить готовую видеокарту от PC, вроде geforce 2, только нужно подружиться с шиной AGP. А в ней уже и выход VGA и быстрая видеопамять 32 мегабайт и всевозможные функции копирования/преобразования поверхностей. Даже с 3D можно что-то замутить при желании. При этом, сам спектрум будет только давать ему команды. Звучит заманчиво, вроде.

Есть предложение. Насколько я понял, у вас предполагается, что программист сам будет через определённые ячейки памяти общаться с вашей видеокартой. Может, стоит сделать драйвер с вменяемым API, реализующий функции вроде bitblt в windows. Адрес драйвера лежит в определённой ячейке памяти и программа вызывает его. Драйверу передаются идентификаторы и координаты прямоугольника изображения в источнике и приёмнике, и уже сам драйвер даёт нужные команды видеокарте. Тогда, можно будет создать драйвер с таким же API и для другой новой видеокарты, да хоть, подключенной VGA карте, и игра будет работать там тоже.
Только нужно, наверное, создать таблицу доступных разрешений и в драйвер подавать команду на включение нужного режима. Например:
- Режим 0 - стандартный спектрумовский. Установив его можно будет возвращаться к стандартному экрану самого компьютера.
- Режим 1 - 256х192, 8 бит RGB232 (без палитры, как вы задумывали сначала).
- Режим 2 - 256х192, 8 бит с палитрой RGB555.
- Режим 3 - 320х200, 8 бит с палитрой RGB555.
- Режим 4 - 320х240, 15 бит RGB555. Последний бит может использоваться как флаг прозрачности для спрайтов.
- Режим 5 - 640х480, 8 бит с палитрой RGB555
- Режим 5 - 640х480, 16 бит RGB555.
Может ещё какие.
В начале даём команду драйверу "загрузить спрайт", после загрузки можно дать команду "установить режим N", потом командами копирования и вывода на экран формировать игровое поле, в конце "установить режим 0" и вернуться к стандартному экрану. При этом, сама видеокарта производит переключение видеовыхода со спектрумовского на свой и обратно. Если режимы не совместимые с TV, то можно использовать просто отдельный выход видеокарты без выведения туда стандартного экрана.

Вот здесь http://forum.ixbt.com/topic.cgi?id=48:11358 человек делает эмулируемый спектрум на AVR.

goodboy
21.04.2016, 17:10
Вот здесь http://forum.ixbt.com/topic.cgi?id=48:11358 человек делает эмулируемый спектрум на AVR.
он его давно сделал "здесь"
http://zx-pk.ru/threads/19442

AzAtom
21.04.2016, 18:05
goodboy
Понятно. Однако, более свежие сообщения оказались на ixbt.

zx-kit
21.04.2016, 18:44
На мой взгляд видеокарта должна быть проще. Чтобы можно было взять подпрограмму вывода изображения из обычной игры, заменить команды вывода и получить изображение без клешинга. При этом код должен занимать меньше места, чем до этого. Никаких драйверов, API и т.п. излишеств WINDOWS. На текущий момент обмен между Z80 и видеокартой уменьшен до двух адресов - адрес номера регистра и адрес данных. При этом шину данных можно подать через 555АП6, а сигналы управления сформировать с помощью 555ИД7. На каждый адрес выделяется по 8 К из области ПЗУ. Только запись. Стандартный экран берется в цифровом виде (RGBS) с материнской платы компьютера.

Что-то типа внешней видеокарты VOODOO.

Тогда можно будет добавить режим Метеор в видеоадаптер VGA SPUTNIK. Только еще не выбрал тип ОЗУ. Если установить статику SRAM 256Kx16, вроде проще, но почти вся память уйдет на буферы VGA. Если установить SDRAM 4Mx16 много свободного места для расширения возможностей, но придется работать с пакетами по 8 слов.

Такой подход позволит подключить видеокарту к разным типам компьютеров, например, к Ориону для расширения графики.

- - - Добавлено - - -

Кварц планируется использовать на 27 MHz. Припаял в Speccy2010 и проверил возможность вывода с разрешением FULL HD 1920x1280 60 Hz.

http://s019.radikal.ru/i603/1604/24/192e45217741t.jpg (http://s019.radikal.ru/i603/1604/24/192e45217741.jpg)

На фото клетки с шагом 8 точек. В видеокарту надо будет добавить регистры выбора масштаба. Для разрешения Спектрума надо будет использовать увеличение в 4 раза.

Sayman
21.04.2016, 18:52
возьмите уже какой-нить FT800. на крайняк есть Opencores, там пачка разных gpu валяется даром. велосипед давно изобретён.

zx-kit
21.04.2016, 19:06
- - - Добавлено - - -


возьмите уже какой-нить FT800. на крайняк есть Opencores, там пачка разных gpu валяется даром. велосипед давно изобретён.

Машина, телефон, компьютер, планшет и т.д. тоже давно изобретены. А они все изобретают и изобретают.

Интересен сам процесс изобретения лучшего велосипеда.

AzAtom
21.04.2016, 21:04
Вообще, можно не вводить команды именно копирования, а работать со всем спрайтом. Например, видеокарта поддерживает 256 спрайтов. Они могут быть произвольного размера (в разумных пределах). Имеется таблица спрайтов, номер записи соответствует номеру спрайта, ещё в таблице хранится флаг видимости спрайта, координаты на экране X и Y, ширина и высота спрайта, адрес первого байта данных спрайта (определяется самой картой и недоступен из вне). Сначала спрайты загружаются командой "Загрузить спрайт 0 (1, 2...255)", затем, по ходу построения игровой сцены даются команды вида "Задать координаты спрайта 0 как X1, Y1" и так для всех задействованных спрайтов. В конце даётся команда "Построить сцену" и сама карта копирует нужный спрайт в нужное место на выбранный экран с учётом видимости спрайта и прозрачности. После отрисовки всех спрайтов этот буфер автоматически становится видимым для отображения построенного экрана.
При таком подходе программисту уже не важно, реализуются спрайты аппаратно или копируются всё время - для программиста всё это происходит аппаратно и автоматически, что намного облегчает программирование.

Чем-то эта модель похожа на модель денди. :)

- - - Добавлено - - -


На мой взгляд видеокарта должна быть проще. Чтобы можно было взять подпрограмму вывода изображения из обычной игры, заменить команды вывода и получить изображение без клешинга. При этом код должен занимать меньше места, чем до этого.
Боюсь, там нет определённого стандарта в этом вопросе, и может не быть подпрограмм. В погоне за производительностью могли применяться самые разные способы быстрого вывода динамических изображений, включая сохранение фона.

zx-kit
21.04.2016, 21:15
Блиттер добавим потом. Сначала надо реализовать стандартный экрана + устранение клешинга.

Lethargeek
22.04.2016, 08:48
На мой взгляд видеокарта должна быть проще. Чтобы можно было взять подпрограмму вывода изображения из обычной игры, заменить команды вывода и получить изображение без клешинга. При этом код должен занимать меньше места, чем до этого. Никаких драйверов, API и т.п. излишеств WINDOWS.


Блиттер добавим потом. Сначала надо реализовать стандартный экрана + устранение клешинга.

чтобы получилось "проще с устранением клешинга" (и прочие хотелки в первой цитате) - с блиттера надо было начинать
и вопроса "почему в жирный плис не лезет" не возникало бы :rolleyes:

zx-kit
25.04.2016, 21:13
Возьмем более жирную FPGA на 6272 триггеров. С таким количеством триггеров мы уж точно сможем модернизировать старые игры простыми способами. Но придется освоить сложную SDRAM и вывод на мониторы с разверткой FULL HD.

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

s_kosorev
25.04.2016, 21:57
блиттер кстати очень уживаются с Sdram, блочные операции, с которыми sdram работают просто и быстро

Lethargeek
25.04.2016, 22:00
Возьмем более жирную FPGA на 6272 триггеров. С таким количеством триггеров мы уж точно сможем модернизировать старые игры простыми способами.
для простой модернизации старых игр нужно не большее количество лишних триггеров, а простая схема модернизации


Новые режимы можно будет использовать не только на Спектруме, но и на других компьютерах,
ты говоришь так, будто несколько видеорежимов - это что-то хорошее :p
лучше бы всё было наоборот - чтоб в одном режиме можно было имитировать режимы других компов

zx-kit
25.04.2016, 22:15
для простой модернизации старых игр нужно не большее количество лишних триггеров, а простая схема модернизации
ты говоришь так, будто несколько видеорежимов - это что-то хорошее :p
лучше бы всё было наоборот - чтоб в одном режиме можно было имитировать режимы других компов
Упрощение уже произошло - теперь видеокарте на надо знать, как формируется изображение внутри компьютера и тратить на это свои триггеры и время. Она будет брать готовый цвет RGBI и синхросмесь. А новые слои накладывать поверх готового изображения с компьютера.

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

Lethargeek
26.04.2016, 19:44
Упрощение уже произошло - теперь видеокарте на надо знать, как формируется изображение внутри компьютера и тратить на это свои триггеры и время. Она будет брать готовый цвет RGBI и синхросмесь. А новые слои накладывать поверх готового изображения с компьютера.
То есть будет неэффективно тратить свои ресурсы на убогие и ограниченные слои, на различные схемы чтения и интерпретации содержимого видеобуфера в различных режимах и, кстати, также на соответственные им режимы работы блиттера (если всё-таки захочется сделать блиттер). И при этом в результате будет пригодна лишь для улучшения софта в рамках одной платформы, а не облегчать еще и портирование софта меж любых платформ на совместимых процессорах.

Ну, и необходимость втыкать карту еще и в RGB-выход я бы не назвал упрощением :)


А программист будет знать, как формируется изображение в старом режиме и как добавить новые возможности в новом. Часть изображения в игре будет изображаться в новом режиме, а остальное останется в старом. Они будут одновременно на экране. Степень модернизации будет выбирать программист. На любом этапе модернизации будет изображение на экране. А дальше результат зависит от творческих способностей программиста.
А не слишком ли много программисту придётся знать с нынешним нагромождением слоёв и разных режимов? Вообще не пойму, зачем тебе понадобились слои, только цветность ограничивают зазря и усложняют пользование устройством. Можно обойтись прекрасно без них, одним-единственным примитивным растровым массивом, но зато максимальной глубины цвета и максимального размера (в рамках развёртки) и с гибкой схемой записи группы пикселей. Что позволит модернизировать игрушки НАМНОГО проще - так, в простейшем случае (но достаточном, чтобы полностью избавить игру от клэшинга!) программисту нужно знать ТОЛЬКО лишь как выбирать два активных цвета для рисования (неважно даже, на экране или в теневом буфере). Остальных настроек хватит дефолтных.

Sayman
27.04.2016, 06:56
В любом случае, для "модернизации" старья, это же самое старьё придётся ещё и дизасмить, на что далеко не каждый согласится. А некоторые игры принципиально не получится зацветить, только если перерисоввывать всю графику. Так то всяких извратных решений хватает, тот же 16с или вон, ТС конфа или атм3 конфа. Не очень-то заметны тонны адаптированных игрушек под эти режимы.

ZXFanat
27.04.2016, 09:09
В "железе" то есть эта "железяка"? Тема уже давно, теории много, но нет главного! " Желёзки".

Lopital
27.04.2016, 13:54
Соглашусь, что код придется смотреть... Предположим кто-то решил разукрасить игру из прошлого… Потребуется:
1) Переписать загрузочную часть, которая должна определять конфиг компа перед стартом и отравлять в некую видео-карту цветную графику
2) Скорее всего переписать часть основного кода программы, чтобы как-то привязать расширенную графику к нему для управления (без наличия видео-карты действительно сейчас сложно понять, как все будет работать)
При адаптации нужно будет понимать, что куча программ написана очень плотно в памяти… часто то, что было в 48к скорее всего будет проблематично адаптировать. При работе с картой желательно минимизировать количество команд для обслуживания самой видео-карты и работы с ней… Поясню… Любая команда в памяти занимает место, и в некоторых старых играх места для новых команд управления графикой может быть НУ ОЧЕНЬ МАЛО или вообще не оказаться… Так что команды должны быть короткими. Иначе нам придется переписывать код для работы в 128к и более (ну сейчас это типа не проблема … все-таки не конец 80х …), но это значит опять «шкодить» в основном блоке проги…
Мне лично интересно как развивается и ТС-Конфа и другие творческие проекты, но вот что касается TS_Labs и VDAC2… вот ведь как заворачивается история – в самом начале VDAC2 темы там уже промелькнула карточная реализации под Zx-bus… значит вопрос стандартизации начал беспокоить «самоделкиных» :) Но обратившись опять же к истории других платформ, мы увидим, что практически на каждой был период обкатки или даже «ветка эволюции» какой-то конкретной графической карты/чипа. И далеко не все они были совместимы между собой :) Разве что DOS/Windows/Workbench отображались одинаково… ;)

zx-kit
27.04.2016, 20:13
То есть будет неэффективно тратить свои ресурсы на убогие и ограниченные слои,
Слои не убогие, они позволят стирать и рисовать часть изображения при передвижении объектов на разных планах.

на различные схемы чтения и интерпретации содержимого видеобуфера в различных режимах Особой обработки не надо. Кадр изображения с компьютера надо сохранить до вывода на монитор. Как изображение получается, какие порты использует, какой экран 128K отображается и так далее уже не важно. Есть готовые сигналы RBGI. Мы их берем и записываем в буфер VGA. При этом игра продолжает работать, а ГГ можно изобразить в верхнем слое без клешинга. Ты вроде раньше и писал про простоту доработки игр. Я это и предлагаю.


кстати, также на соответственные им режимы работы блиттера (если всё-таки захочется сделать блиттер). . Давай забудем пока про блиттер. Первая ступень - устранение клешинга. Упростим задачу.


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


Ну, и необходимость втыкать карту еще и в RGB-выход я бы не назвал упрощением :)

Это проще, чем дублировать формирование стандартного экрана в видеокарте. Сигналы то уже готовые.


А не слишком ли много программисту придётся знать с нынешним нагромождением слоёв и разных режимов? Вообще не пойму, зачем тебе понадобились слои, только цветность ограничивают зазря и усложняют пользование устройством. Можно обойтись прекрасно без них, одним-единственным примитивным растровым массивом, но зато максимальной глубины цвета и максимального размера (в рамках развёртки) и с гибкой схемой записи группы пикселей. Что позволит модернизировать игрушки НАМНОГО проще - так, в простейшем случае (но достаточном, чтобы полностью избавить игру от клэшинга!) программисту нужно знать ТОЛЬКО лишь как выбирать два активных цвета для рисования (неважно даже, на экране или в теневом буфере). Остальных настроек хватит дефолтных.
Для начала можно сделать один дополнительный слой. Там как раз будет массив из точек. А закрашиваться они будут внутри видеокарты в те два или три цвета, которые указаны в палитре рисования. При этом спрайты в игре останутся те же. А видеокарта из байта спрайта и байта маски сама нарисует в массиве новые 8 точек. По-моему идея простая и будет работать эффектно.

- - - Добавлено - - -


В любом случае, для "модернизации" старья, это же самое старьё придётся ещё и дизасмить, на что далеко не каждый согласится. А некоторые игры принципиально не получится зацветить, только если перерисоввывать всю графику. Так то всяких извратных решений хватает, тот же 16с или вон, ТС конфа или атм3 конфа. Не очень-то заметны тонны адаптированных игрушек под эти режимы.
Дизассемблировать игру в отладчике - это достаточно легко. Это намного легче, чем спроектировать, закодировать, отладить игру. Нужно поставить ловушки на запись в экранную область, посмотреть как происходит запись, откуда берется байт спрайта и маски ГГ и записать их по другим адресам. Перед этим выбрать палитру для рисования. Для начала спрайты остаются те же.

- - - Добавлено - - -


В "железе" то есть эта "железяка"? Тема уже давно, теории много, но нет главного! " Желёзки".
Да, медленно. Каждый день думаю о железе, что-то делаю, прорабатываю режимы, улучшаю элементную базу, конструкцию, доказываю свою правоту на форуме.

- - - Добавлено - - -


Соглашусь, что код придется смотреть... часто то, что было в 48к скорее всего будет проблематично адаптировать. При работе с картой желательно минимизировать количество команд для обслуживания самой видео-карты и работы с ней… Поясню… Любая команда в памяти занимает место, и в некоторых старых играх места для новых команд управления графикой может быть НУ ОЧЕНЬ МАЛО или вообще не оказаться… Так что команды должны быть короткими. Иначе нам придется переписывать код для работы в 128к и более Так для этого режимы и прорабатываются, чтобы можно было убрать лишние команды в игре и спрайты оставить те же, чтобы не делать лишнюю работу и не увеличивать объем программы.

При работе с новым слоем нам не нужны вычисления адреса на экране, чтение оттуда или из буфера, команды or, xor, and с байтом спрайта и маски, запись результата в буфер или на экрана. Нам надо для рисования спрайта главного героя (ГГ) один раз записать координаты в видеокарту и выбрать палитру. Затем читать в цикле байты спрайта и маски и записывать в видеокарту. Ну как - это же намного проще, чем до этого было ?

Lethargeek
27.04.2016, 22:22
Слои не убогие,
Убогие! Окно 256x192 c при 1-4 бита на пиксель - это убого!
Почему не 16 бит на пиксель в полном PAL-экране 360x288?
(или "круглые" 360x256, что ближе к VGAшному 360x240)


они позволят стирать и рисовать часть изображения.
ииии что? С ЛЮБОЙ структурой видеопамяти можно "стирать и рисовать часть изображения"


Особой обработки не надо. Кадр изображения с компьютера надо сохранить до вывода на монитор. Как изображение получается, какие порты использует, какие стриницы 128K или более уже не важно.
всего-навсего переключать синхронно две своих видеостраницы, куда мы рисуем вывод в страницы Спека


Есть готовые сигналы RBGI. Мы их берем и записываем в буфер VGA.
с готовыми глюками и наводками :)


При этом игра продолжает работать, а ГГ можно изобразить в верхнем слое без клешинга. Ты вроде раньше и писал про простоту доработки игр. Я это и предлагаю.
Ты предлагаешь НЕУДОБНО и НЕКРАСИВО. Я вот хочу просто рисовать ЛЮБЫМИ цветами, не заморачиваясь переключением слоёв и подбором палитровых цветов. Пусть даже тупо затирая фон - ну и что, Спек же успевал в оригинале фон восстанавливать - значит, и я успею так же в новом режиме, если восемь пикселей можно напечатать с такой же скоростью. Чтобы просто побороть клэшинг, быстрей не нужно (да и не дают слои заметного ускорения, потому что спрайты и в слоях приходится обнулять)

И не всё так просто, как тебе кажется. Часто игры сначала рисуют в буфер и фон, и спрайты, а потом всё копируют в экран, аккуратно избегая пересечений с лучом. Нельзя вот так просто взять и независимо несинхронно спрайты кинуть в отдельный слой, рискуя получить мерцание и обрезки. Такой буфер надо как одну цельную картинку формировать.


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


А то что я предлагаю сделать видеокарту выносной - это не облегчит перенос ее на другие компьютеры ?
Я вообще-то говорил об упрощении переноса СОФТА с одних компьютеров на другие (например, с Амстрада на Спек)


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


Для начала можно сделать один дополнительный слой. Там как раз будет массив из точек. А закрашиваться они будут внутри видеокарты в те два или три цвета, которые указаны в палитре рисования. При этом спрайты в игре останутся те же. А видеокарта из байта спрайта и байта маски сама нарисует в массиве новые 8 точек. По-моему идея простая и будет работать эффектно.
Но ЗАЧЕМ? Зачем искусственно ограничивать? Почему не рисовать в единственном слое те же 8 точек, но в хайколоре?


Дизассемблировать игру в отладчике - это достаточно легко. Это намного легче, чем спроектировать, закодировать, отладить игру. Нужно поставить ловушки на запись в экранную область, посмотреть как происходит запись, откуда берется байт спрайта и маски ГГ и записать их по другим адресам.
Вот тут полностью согласен, только адреса оставить оригинальные, пусть их карта пересчитывает сама.

- - - Добавлено - - -


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

zx-kit
28.04.2016, 05:50
Убогие! Окно 256x192 c при 1-4 бита на пиксель - это убого!
Почему не 16 бит на пиксель в полном PAL-экране 360x288?
И не всё так просто, как тебе кажется. Часто игры сначала рисуют в буфер и фон, и спрайты, а потом всё копируют в экран, аккуратно избегая пересечений с лучом. Нельзя вот так просто взять и независимо несинхронно спрайты кинуть в отдельный слой, рискуя получить мерцание и обрезки. Такой буфер надо как одну цельную картинку формировать.

Но ЗАЧЕМ? Зачем искусственно ограничивать? Почему не рисовать в единственном слое те же 8 точек, но в хайколоре?

Вот тут полностью согласен, только адреса оставить оригинальные, пусть их карта пересчитывает сама.


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

Регистры координат:
XL, XH, YL, YH

Регистры цвета:
COLOR_00_L, COLOR_00_H,
COLOR_01_L, COLOR_01_H,
COLOR_10_L, COLOR_10_H,
COLOR_11_L, COLOR_11_H,

Регистры спрайта:
SPRITE_BYTE,
MASK_BYTE

Sayman
28.04.2016, 06:53
zst, хоть убей, не понимаю, каким образом карточка прикрученная к RGB выходу будет выгребать отдельно спрайт ГГ и отдельно весь остальной уровень игрушки?!


Регистры координат:
XL, XH, YL, YH

при разрешении 256*192 достаточно одного 16битного регистра (или двух по 8), т.к. максимальные координаты по XY не выходят за пределы 8 бит.

так они и неудобны для адаптаций
а почему? что там такого неудобного? как для тебя (или по твоему мнению) было бы удобнее для адаптации старых игр? Было бы, конечно, интересно увидеть цветного, скажем, exolon`а. Есть его ПЦшный ремейк - exolon dx, но это для пц, а значит уже немного не то. Были бы цветные спрайты в доступе для него, уже бы под спринтера переложил его.
Мне кажется, что самое простое управление графикой как раз у спринтера. Но возможно мне это только кажется. Не требуется вообще никаких расчётов координат на экране в адрес (кроме разве что x_coord+screen_start_adr). За координату Y работает порт. Экран в любоей окно проца втыкается. Для программиста, как я думаю, проще уже некуда. АТМ и профи (и судя по мануалам и ТС конфа) по строению экрана выглядят просто монстрами какими-то. Даже 128й экран)))

zx-kit
28.04.2016, 18:31
И не всё так просто, как тебе кажется. Часто игры сначала рисуют в буфер и фон, и спрайты, а потом всё копируют в экран, аккуратно избегая пересечений с лучом. Нельзя вот так просто взять и независимо несинхронно спрайты кинуть в отдельный слой, рискуя получить мерцание и обрезки. Такой буфер надо как одну цельную картинку формировать.

Вот в таком случае и приходит на помощь еще один слой. Сначала отображается первый слой, а во втором рисуется ГГ. По INT первый слой выключается, а второй включается.


zst, хоть убей, не понимаю, каким образом карточка прикрученная к RGB выходу будет выгребать отдельно спрайт ГГ и отдельно весь остальной уровень игрушки?!

Кроме RBGI мы подаем с компьютера еще 8 битов данных и 2 сигнала записи. Стандартная графика просто загружается для дальнейшего отображения на VGA. В основном это фон и второстепенные персонажи. ГГ рисуется в новой графике.



при разрешении 256*192 достаточно одного 16битного регистра (или двух по 8), т.к. максимальные координаты по XY не выходят за пределы 8 бит.

Я просто подумал о будущем. Вдруг захочется рисовать на всем экране 1920x1080 или части размером 320x240.

Lethargeek
29.04.2016, 02:03
Хорошо, оптимизируем графику.
Поверх стандартного экрана дополнительный слой графики размером 256x192 точек по 16 бит на цвет точки. Старший бит - признак прозрачности точки.
Да не нужен никакой "стандартный" экран! RGB может быть испорчен, нестандартно сдвинут по тактам, или вообще не предусматриваться в компе (например, в новом клоне, задуманном как раз для работы только с внешней видеокартой). И опять мелкое окошко в центре экрана! Не, надо в полном цвете рисовать по всему экрану телевизора/монитора, а растр Спектрума при желании отображать на нём с любым смещением.


Для рисования восьми точек надо записать в видеокарту два байта. На каждую точку получится по 2 бита на цвет - 4 цвета. Для указания цвета для каждой комбинации надо 8 регистров.
Ничего не понял, почему опять "2 бита - 4 цвета", если выше пишешь про хайколорный слой.

Давай так. Чтоб понятней было, я сперва опишу схему совместимости с экраном без атрибутов. То есть монохром 256x192 (типа Спек без атрибутов) или быкашные постоянные 4 цвета в режиме 256x256 итд; и чтоб картинка с карты после резета ничем не отличалась от картинки через стандартный выход, хотя пиксели на самом деле там хайколорные.

Итак, видеобуфер карты - простой массив (например, размером 360x256); один пиксель - одно 16-битное слово. Для отображения читается в жёстком цикле. Никаких других режимов, слоёв, палитр. Тут всё максимально просто, как только можно.

Конкретная физическая раскладка памяти видеокарты нам не важна. Мы рисуем на виртуальном логическом экране, а не по физическим адресам. У видеокарты есть блок-транслятор, который пересчитывает адрес каждой группы из 8 (или 4 в случае двухбитного цвета) пикселей в логической раскладке (которая может совпадать со стандартным видеобуфером компа, а может и не совпадать, это совершенно неважно, имитировать мы сможем любой экран) в физический адрес 16-битного пикселя, геометрическое раположение которого на экране совпадает с расположением левого края этой группы (с учетом сдвига виртуального экрана, как нам захочется).

Соответственно, при записи байта в адреса виртуального экрана изменяются несколько (до 8 для монохрома) хайколорных пикселей физического. Изменяются в соответствии с заданной "активной палитрой" (прошу не путать с физической палитрой, это скорей таблица для распаковки) из 2 (или 4 итд) "активных цветов". Причём один из них можно задавать и "прозрачным" (да хоть все, только смысла в этом особо нет), чтобы не менять физический пиксель.

После резета все цвета "активной палитры" совпадают со стандартными системными цветами, а раскладка виртуального экрана соответствует стандартной раскладке, потому при работе старого софта картинка ничем не будет отличаться от картинки со стандартного выхода. До тех пор, пока мы не нарисуем что-нибудь в другой раскладке и/или с другими цветами, причем старое изображение не испортится (кроме пикселей, которые мы целенаправленно перекрасим).

Времени свободного очень мало. В следующий раз расскажу, как выкручиваться при наличии атрибутов, изменение которых приводит сразу к смене цвета десятков пикселей. Но хотя бы это сейчас понятно?

zx-kit
29.04.2016, 16:51
Ничего не понял, почему опять "2 бита - 4 цвета", если выше пишешь про хайколорный слой.

В игре, которую мы дорабатываем для устранения клешинга, есть спрайты с маской.
Для рисования 8 точек используется 2 байта. Это 8 * 2 = 16 битов.
На одну точку приходится 16 / 8 = 2 бита.
2 бита дают 4 комбинации: 00, 01, 10, 11.
Каждой комбинации ставим в соответствие 16-битный цвет.
0, 1 или 2 цвета из четырех можно выбрать прозрачными. Это дает разные способы закрашивания.
Этими активными цветами закрашиваются 8 текущих точек в слое с 16-ти битными цветам.
Два из четырех цветов выбираем прозрачными.
Они устраняют клешинг.
Теперь понял ?




Соответственно, при записи байта в адреса виртуального экрана изменяются несколько (до 8 для монохрома) хайколорных пикселей физического. Изменяются в соответствии с заданной "активной палитрой" (прошу не путать с физической палитрой, это скорей таблица для распаковки) из 2 (или 4 итд) "активных цветов". Причём один из них можно задавать и "прозрачным" (да хоть все, только смысла в этом особо нет), чтобы не менять физический пиксель.

Можно эти цвета назвать палитрой для рисования.

- - - Добавлено - - -


Да не нужен никакой "стандартный" экран! RGB может быть испорчен, нестандартно сдвинут по тактам, или вообще не предусматриваться в компе (например, в новом клоне, задуманном как раз для работы только с внешней видеокартой). И опять мелкое окошко в центре экрана! Не, надо в полном цвете рисовать по всему экрану телевизора/монитора, а растр Спектрума при желании отображать на нём с любым смещением.

Разрешение монитора 1920*1080. Если масштаб х4, то будем рисовать на экране размером 480х270 точек ? А как рисовать ГГ поверх старого экрана, если у них координаты начала не совпадут ?

- - - Добавлено - - -


Но хотя бы это сейчас понятно? Да я почти тоже самое и предлагаю, только не портить стандартный экрана, а новую графику добавить поверх старой.

s_kosorev
29.04.2016, 22:52
А как рисовать ГГ поверх старого экрана, если у них координаты начала не совпадут ?
что то я не понимаю, планируется захватывать экран и выводить поверх картинки свою графику? это блин стремное решение, мало каких аппаратных глюков в компьютере к которому подключают.
Да и банально, нельзя таким способом адекватно фон разукрасить, а такой огород ради спрайта ГГ, извините, но блин смешно

perestoronin
29.04.2016, 22:54
Эх, кто бы присоединил к Z80 вместо графики графический модуль на базе самого недорогого но достаточно мощного процессора ARM :) ценою рублей в 200 при заказе в мелком пакете из Китая.

s_kosorev
30.04.2016, 02:17
ARM за 200р видео на тв/монитор выводить не умеет

Lethargeek
30.04.2016, 03:47
В игре, которую мы дорабатываем для устранения клешинга, есть спрайты с маской.
Для рисования 8 точек используется 2 байта. Это 8 * 2 = 16 битов.
На одну точку приходится 16 / 8 = 2 бита.
2 бита дают 4 комбинации: 00, 01, 10, 11.
Каждой комбинации ставим в соответствие 16-битный цвет.
0, 1 или 2 цвета из четырех можно выбрать прозрачными. Это дает разные способы закрашивания.
Этими активными цветами закрашиваются 8 текущих точек в слое с 16-ти битными цветам.
Два из четырех цветов выбираем прозрачными.
Они устраняют клешинг.
Теперь понял ?
Меня сбило с толку "4 цвета", когда на самом деле "2 плюс прозрачный". Эта схема непригодна для случаев, когда маска выводится отдельно в оригинале (иногда вообще у разных спрайтов бывает общая). Лучше вывести два раза "цвет + прозрачный", а для настоящих трёхцветных спрайтов хранить по 4 пикселя в байте (всё равно тогда их надо перерисовывать).


Можно эти цвета назвать палитрой для рисования.
Вообще как-то странно слово "палитра" употреблять для непалитрового режима...


Разрешение монитора 1920*1080. Если масштаб х4, то будем рисовать на экране размером 480х270 точек ?
Ты что, делаешь девайс для одного конкретного монитора? :rolleyes:
Рисовать мы будем на (почти) всей площади zx-экрана вместе с бордюром.
А режим апскейла конечный юзер сам себе по вкусу пусть выбирает.


А как рисовать ГГ поверх старого экрана, если у них координаты начала не совпадут ?
А что мешает рисовать ГГ относительно адреса начала спектрумовского окна?
Однократно вычислив этот адрес для любой логической раскладки координат ГГ.
А когда рисуем ВСЁ в стандартной раскладке, то и вычислять ничего не надо.
Или даже в нестандартной, но совпадающей в начальной точке с zx-экраном.


Да я почти тоже самое и предлагаю, только не портить стандартный экрана, а новую графику добавить поверх старой.
Как же ты не будешь "портить стандартный экран", если перестанешь рисовать в него спрайты, и он станет отличаться от оригинала из немодернизированной игры? Если ты хотел сказать "не портить ФОН", то какой сакральный смысл не портить его, если даже оригинальная игра на оригинальном медленном Спеке успевала этот фон восстанавливать, а ты вместо фона портишь уже слои? Зато отказавшись от подложки стандартного экрана в пользу формирования его хайколорной копии, мы получим доступ к старой картинке в памяти видеокарты (чтобы, например, иметь возможность кусок скопировать и провести над ним любые манипуляции).

zx-kit
30.04.2016, 08:31
Вообще как-то странно слово "палитра" употреблять для непалитрового режима...

Тогда будем называть "активные цвета".


Ты что, делаешь девайс для одного конкретного монитора? :rolleyes:
Да, для разрешения 1920х1080.


Рисовать мы будем на (почти) всей площади zx-экрана вместе с бордюром.
А режим апскейла конечный юзер сам себе по вкусу пусть выбирает.

А что мешает рисовать ГГ относительно адреса начала спектрумовского окна?
Однократно вычислив этот адрес для любой логической раскладки координат ГГ.
А когда рисуем ВСЁ в стандартной раскладке, то и вычислять ничего не надо.
Или даже в нестандартной, но совпадающей в начальной точке с zx-экраном.
После сброса координаты нового и старого экрана совпадают.


Как же ты не будешь "портить стандартный экран", если перестанешь рисовать в него спрайты, и он станет отличаться от оригинала из немодернизированной игры? Если ты хотел сказать "не портить ФОН", то какой сакральный смысл не портить его, если даже оригинальная игра на оригинальном медленном Спеке успевала этот фон восстанавливать, а ты вместо фона портишь уже слои? Зато отказавшись от подложки стандартного экрана в пользу формирования его хайколорной копии, мы получим доступ к старой картинке в памяти видеокарты (чтобы, например, иметь возможность кусок скопировать и провести над ним любые манипуляции).
Фон лучше не портить. Рисовать в своем слое. Не надо будет разбираться, как рисуется фон. Других задач хватит во время доработки игры.

- - - Добавлено - - -
Можно ограничиться стандартным экраном вместе с бордером 320х240 точек. Тогда на мониторе это займет 1280х960 пикселей.
Увеличение х1, х2, х3, х4 можно будет выбирать в экранном меню видеокарты.

perestoronin
30.04.2016, 08:52
ARM за 200р видео на тв/монитор выводить не умеет
Без правильного схемного обрамления и firmware конечно не сумеет :)
А что скажете про использование Z80 в качестве видеоконтроллера? Или такого тоже не бывает?
http://mdesk.ru/zx-next/

А про электронные книжки, которые много чего умеют?, в них как раз 200рублевые ARM вовсю и использованы.
Примечательно что на этих чипах китайцы ставят свою маркировку S200.

Сумеет или уже хоть что-то умеет ? :
https://sohabr.net/post/211753/
http://we.easyelectronics.ru/STM32/generator-video-na-stm32f407-recept-bystrogo-prigotovleniya.html

CodeMaster
30.04.2016, 09:04
Благодарности: (5)

Исправь ник Lethargeek'а ;-)

s_kosorev
30.04.2016, 10:47
А про электронные книжки, которые много чего умеют?, в них как раз 200рублевые ARM вовсю и использованы.
Примечательно что на этих чипах китайцы ставят свою маркировку S200.
Внимательно читаем, я написал о выводе на тв/монтор, которые кардинально отличаются от вывода на матрицы со своим фреймом, армы за 200р, на tft матрицы, если полное обновление экрана, хорошо если 5гц фреймрейт выжмут

Lethargeek
30.04.2016, 10:47
Да, для разрешения 1920х1080.
И в чём смысл видеокарты такой тогда, если к ней что хочется не подцепишь?
Ну, и в общем, неправильно подгонять логические режимы под (не всеми) любимые физические параметры.
Уже раз исторически Спек разработан под телевизор, то нужно думать, как стандартный PAL получше отобразить.


После сброса координаты нового и старого экрана совпадают.
И что такого? Для виртуального логического экрана после сброса даже адресация совпадает!


Фон лучше не портить. Рисовать в своем слое. Не надо будет разбираться, как рисуется фон. Других задач хватит во время доработки игры.
Ты выдумал "проблему", которой нет. Обоснуй, ПОЧЕМУ "фон лучше не портить", ЕСЛИ ОН ВСЁ РАВНО ПОРТИЛСЯ В ОРИГИНАЛЬНОЙ ИГРЕ.
Никакого "разбираться, как рисуется фон" НЕ НАДО, как он раньше оригинальной процедурой рисовался, так пусть и будет.


Можно ограничиться стандартным экраном вместе с бордером 320х240 точек. Тогда на мониторе это займет 1280х960 пикселей.
Нет стандартного бордюра = НЕТ СОВМЕСТИМОСТИ


Можно ограничиться стандартным экраном вместе с бордером 320х240 точек. Тогда на мониторе это займет 1280х960 пикселей.
А можно обойтись без чрезмерных, лишних ограничений? Почему хотя бы не 360x256/225?
(что впишется в распространённые 1280x768 и 1440x900, а 360x240 вообще VGA-стандарт)
Чтоб хоть строка с бордюром влезала полностью.


Увеличение х1, х2, х3, х4 можно будет выбирать в экранном меню видеокарты.
Нафига уродовать стандартный экран и херить совместимость ради апскейла? (кратного, чтоб заметней были пиксельные ступеньки))) Нафига прибивать апскейл гвоздями к этому несовместимому инвалиду? Ни апскейл, ни конвертер 50/60гц, вот это всё, что полностью "снаружи" можно приделать - не должны ни на совместимость, ни на новые программы влиять никак.

zx-kit
30.04.2016, 12:49
В Reverse и Unreal стандартный экран с бордюром имеет размер 320х240 точек и выглядит достаточно хорошо:

http://savepic.ru/9511474m.png (http://savepic.ru/9511474.png)

Сначала я собирался использовать разрешение VGA выхода 1280х1024 пикселов. Но при тесте выяснилось, что монитор и телевизор с разрешением 1920x1080 растягивают и портят изображение. Пикселы получаются нечеткие разной яркости. А цель сделать пикселы четкими одинакового размера. Если подавать родное разрешение монитора, то все четко.

В ZX Spectrume экран состоит из 6144 байта пикселов и 768 байтов атрибутов + цвет бордюра из порта FE. Массива 320х240 из точек независимого цвета нет. Цвет каждой точки (цифровые сигналы RGBI) формируется в момент вывода на телевизор синхронно с разверткой телевизора.

Видеокарта будет вместо телевизора принимать эти 4 бита станадартной графики и синхросмесь SYNC и преобразовывать по определенному закону в цвет из 16 битов. Затем она будет анализировать 16-ти битный цвет точки в этом же месте экрана из слоя с новой графикой. После простой операции результирующие 16 битов точки записываются в буфер VGA. Там просто массив 15-ти битных точек - результат наложения новой и стандартной графики. Из этого буфера с заданным пиксельклоком по 15 битов на точку данные будут выводиться ЦАП по схеме R-2R по 5 битов на каждый канал RGB, а с него три аналоговых сигнала RBG и два KSI_VGА и SSI_VGA подаются на монитор через разъем VGA.

Все виды видеоустройств и все разрешения предусмотреть сложно. Выбран аналоговый выход через разъем VGA на мониторы и телевизоры с родной разверткой FULL HD 1920х1080 60 Hz. Это наиболее распространенная развертка на данный момент. Дополнительное разрешение потребует дополнительный вход PLL в FPGA для формирования требуемого пиксельклока и усложнит видеокарту.

- - - Добавлено - - -


Нафига уродовать стандартный экран и херить совместимость ради апскейла? (кратного, чтоб заметней были пиксельные ступеньки))) Нафига прибивать апскейл гвоздями к этому несовместимому инвалиду? Ни апскейл, ни конвертер 50/60гц, вот это всё, что полностью "снаружи" можно приделать - не должны ни на совместимость, ни на новые программы влиять никак.

Стандартный экран остается, стандартный INT остается. Увеличение выбирается в ЭКРАННОМ МЕНЮ ВИДЕОКАРТЫ с помощью кнопок на корпусе видеокарты. 60 Hz и разрешение для монитора делаются аппаратно видеокартой.

- - - Добавлено - - -


что то я не понимаю, планируется захватывать экран и выводить поверх картинки свою графику? это блин стремное решение, мало каких аппаратных глюков в компьютере к которому подключают.

Сигналы будут использоваться цифровые, как в VGA&PAL.


Да и банально, нельзя таким способом адекватно фон разукрасить, а такой огород ради спрайта ГГ, извините, но блин смешно
Раз у нас при вводе 4 бита перекодируются в 16 битов - мы добавим команду для замены стандартной аппаратной палитры на свою для перекодирования 16 стандартных цветов в другие.

s_kosorev
30.04.2016, 13:27
Сигналы будут использоваться цифровые, как в VGA&PAL.
речь к примеру о таких нюансах как, тут много можно найти тем про наладку, где атрибуты и пискели расходятся, величина расходжения разная

zx-kit
30.04.2016, 14:58
речь к примеру о таких нюансах как, тут много можно найти тем про наладку, где атрибуты и пискели расходятся, величина расходжения разная
надо ремонтировать

Lethargeek
30.04.2016, 16:16
В Reverse и Unreal стандартный экран с бордюром имеет размер 320х240 точек и выглядит достаточно хорошо:
Для тупых загрузочных полосок - может, и "достаточно хорошо", а для текста или эквалайзера на бордере - НЕдостаточно!


Сначала я собирался использовать разрешение VGA выхода 1280х1024 пикселов. Но при тесте выяснилось, что монитор и телевизор с разрешением 1920x1080 растягивают и портят изображение.
И как много ты проверил разных мониторов и телевизоров? И почему решил что всем понравится только то же самое, что тебе? Мне вот нравится, как мой телек апскейлит PAL, а как раз в эмуляторах без сглаживания с кратным увеличением слишком резкая картинка и неприятная.


Пикселы получаются нечеткие разной яркости. А цель сделать пикселы четкими одинакового размера. Если подавать родное разрешение монитора, то все четко.
А ничего, что в оригинале даже через RGB пикели на ТВ были заметно смазанные?
И часто графика бывает на то рассчитана.


В ZX Spectrume экран состоит из 6144 байта пикселов и 768 байтов атрибутов + цвет бордюра из порта FE. Массива 320х240 из точек независимого цвета нет. Цвет каждой точки (цифровые сигналы RGBI) формируется в момент вывода на телевизор синхронно с разверткой телевизора.
Это РАСТР ВИДЕОБУФЕРА состоит из 6144 байтов пикселей и 768 байтов атрибутов, а ЭКРАН состоит из растра и ПОЛНОГО БОРДЮРА (кстати, разного размера в разных моделях, даже фирменные 48 и 128 не совпадают, уж не говоря про всякие клоны)


В ZX Spectrume экран состоит из 6144 байта пикселов и 768 байтов атрибутов + цвет бордюра из порта FE. Массива 320х240 из точек независимого цвета нет. Цвет каждой точки (цифровые сигналы RGBI) формируется в момент вывода на телевизор синхронно с разверткой телевизора.
А также RGB даже у фирменных компов тоже разные (bright может (не) быть отдельным, и синхры тоже)


Видеокарта будет вместо телевизора принимать эти 4 бита станадартной графики и синхросмесь SYNC и преобразовывать по определенному закону в цвет из 16 битов. Затем она будет анализировать 16-ти битный цвет точки в этом же месте экрана из слоя с новой графикой. После простой операции результирующие 16 битов точки записываются в буфер VGA. Там просто массив 15-ти битных точек - результат наложения новой и стандартной графики. Из этого буфера с заданным пиксельклоком по 15 битов на точку данные будут выводиться ЦАП по схеме R-2R по 5 битов на каждый канал RGB, а с него три аналоговых сигнала RBG и два KSI_VGА и SSI_VGA подаются на монитор через разъем VGA.
Да я понял, ЧТО ты собираешься сделать, только не пойму НАФИГА.
Ненадёжно и неинтересно для программиста.


Все виды видеоустройств и все разрешения предусмотреть сложно.
Именно, и поэтому нужно соответствовать PAL стандарту, а не подгонять под первые попавшиеся устройства.


Выбран аналоговый выход через разъем VGA на мониторы и телевизоры с родной разверткой FULL HD 1920х1080 60 Hz.
Телевизоры прекрасно понимают 50гц и апскейлят PAL даже в более чёткую картинку, чем когда-то было на CRT.


Это наиболее распространенная развертка на данный момент.
В новых телевизорах, а не в тех, которые не жалко переквалифицировать в ретромоник.
Во всяком случае, представительной статистики у нас нет.


Дополнительное разрешение потребует дополнительный вход PLL в FPGA для формирования требуемого пиксельклока и усложнит видеокарту.
Ты апскейлером усложняешь карту намного больше.


Стандартный экран остается,
Нет, неправда, остаётся только его ОБРЕЗОК (притом не лучший из возможных обрезков)


стандартный INT остается.
Ага, и стандартный растр, гуляющий по вертикали и горизонтали в разных моделях))


Увеличение выбирается в ЭКРАННОМ МЕНЮ ВИДЕОКАРТЫ с помощью кнопок на корпусе видеокарты. 60 Hz и разрешение для монитора делаются аппаратно видеокартой.
Но зачем к нему в нагрузку пихать нестандартное несовместимое разрешение?
Получается, что хвост виляет собакой.


Сигналы будут использоваться цифровые, как в VGA&PAL.
Ты о чём, в них как раз аналоговые сигналы))


Раз у нас при вводе 4 бита перекодируются в 16 битов - мы добавим команду для замены стандартной аппаратной палитры на свою для перекодирования 16 стандартных цветов в другие.
Снова ограниченное решение, смысл имеет в качестве простенькой отдельной примочки.

s_kosorev
30.04.2016, 18:36
надо ремонтировать
да нечего там ремонтировать, они от рождения кривые, зависят от серий микросхем итд, конденсаторами потом сигналы ровняют, идельно не выровнять

zx-kit
30.04.2016, 19:05
да нечего там ремонтировать, они от рождения кривые, зависят от серий микросхем итд, конденсаторами потом сигналы ровняют, идельно не выровнять
Если все так криво - надо подать RGBI и SYNC через триггер TM9 или регистр ИР23. На тактовый вход подать 7 МГц. И будет все ровно.

- - - Добавлено - - -


Для тупых загрузочных полосок - может, и "достаточно хорошо", а для текста или эквалайзера на бордере - НЕдостаточно!

А ничего, что в оригинале даже через RGB пикели на ТВ были заметно смазанные?
И часто графика бывает на то рассчитана.

Снова ограниченное решение, смысл имеет в качестве простенькой отдельной примочки.

Что-то ты видишь одни недостатки. Я не могу сделать идеальный вариант, который подойдет всем и по всем параметрам.
Я хочу сделать один из вариантов, который подойдет определенному кругу любителей Спектрума.
А "VGA&PAL" - это видеоконвертер/скандаблер.

zx-kit
01.05.2016, 10:20
Можно окно для ZX Spectrum сделать 360х270 точек. При увеличении в 4 раза будет закрашено 1440х1080 точек из 1920х1080.

Ynicky
01.05.2016, 18:13
360х270 точек
Тогда уж 360х264, чтобы было кратно 8 (и по вертикали).

Николай.

zx-kit
01.05.2016, 19:37
Убогие! Окно 256x192 c при 1-4 бита на пиксель - это убого!
Почему не 16 бит на пиксель в полном PAL-экране 360x288?
(или "круглые" 360x256, что ближе к VGAшному 360x240)

Давайте 360x256.

Lethargeek
02.05.2016, 22:12
Что-то ты видишь одни недостатки.
не, я вижу перспективы прежде всего, потому бесперспективные решения мне не нравятся :)


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


Можно окно для ZX Spectrum сделать 360х270 точек. При увеличении в 4 раза будет закрашено 1440х1080 точек из 1920х1080.

Давайте 360x256.
360x256 - это растр видеобуфера, все хранимые статичные пиксели (часть которых ради совместимости может притворяться бордюром)
но никто не мешает нам дополнять экран до целого PAL-кадра пустыми (динамически окрашенными) бордюрными строками, если место есть
и напротив, растр слегка обрезать, когда нет места (хотя по мне - пусть устройство занимается обрезкой и масштабированием)
также растр в перспективе можно без проблем расширить горизонтально (адреса у старых пикселей будут прежние)

надо сказать, что c горизонтальным разрешением реала полной ясности нет
в фирменном ZX-48 в строке 48+256+48=352 видимых пикселя на 224 такта:
http://www.worldofspectrum.org/faq/reference/48kreference.htm#ZXSpectrum
у ZX-128 уже 228 тактов в строке, но неясно, шире ли видимый бордюр
хотя, зачем иначе понадобилось удлинить строку ровно на 4 такта = 8 пикселей
может, так Спектрум подтянули к PAL стандарту 720x576i (= 360x288 @50гц) ?
у Скорпиона отображается 368 пикселей, у Пентагона вообще 384:
http://www.worldofspectrum.org/rusfaq/

- - - Добавлено - - -

о "расширенных" атрибутах и бордюре напишу позже (завтра или послезавтра, как время будет)

goodboy
02.05.2016, 22:39
хотя, зачем иначе понадобилось удлинить строку ровно на 4 такта
у 48ой модели два кварца, у 128 (для улучшения качества изображения) один.
размеры экрана как-то связаны с-этим моментом

zx-kit
03.05.2016, 17:00
При смене частоты кварца изменили количество точек в строке для того, чтобы частота строк осталась близкой к стандарту для телевизора.

Lethargeek
03.05.2016, 17:30
Вопрос в том, что растягивают эти 4 такта - рамку слева, справа, обе поровну или промежуток гашения? И как это может отразиться на совместимости. Я так понимаю, лишь бы совпадала частота строк и начало спектрумовского растра приходилось на определённые такты, а что пикселей в строке покажем немного больше - почти не важно (в крайнем случае, процедура сброса видеокарты может тупо чёрным закрасить лишние).

zx-kit
03.05.2016, 17:35
Вопрос в том, что растягивают эти 4 такта - рамку слева, справа, обе поровну или промежуток гашения? И как это может отразиться на совместимости. Я так понимаю, лишь бы совпадала частота строк и начало спектрумовского растра приходилось на определённые такты, а что пикселей в строке покажем немного больше - почти не важно (в крайнем случае, процедура сброса видеокарты может тупо чёрным закрасить лишние).
У всех компьютеров это сделано по-разному. Например, в ATM, ZX-EVO, PENTAGON-128. Надо предусмотреть процедуру центровки экрана. В стандартном экране сделать бордюр другого цвета, а в режиме новой графики нарисовать рамку размером 256х192 точки. И кнопками сдвигать стандартный экран в окне 360х256 до совмещения рамки и бордюра.

В принципе рамку можно нарисовать в экранном меню видеокарты. А атмега затем должна будет запомнить это смещение в своей EEPROM.

Lethargeek
12.05.2016, 08:30
Итак, в прошлый раз (http://zx-pk.ru/threads/21462-bystraya-videokarta-quot-meteor-2013-quot.html?p=869225&viewfull=1#post869225) я говорил о возможной совместимости гипотетического хайколорного видеорежима со старым кодом, рассчитанным на режимы с небольшим количеством бит на пиксель. С оговоркой, что старые режимы - безатрибутные, даже надо было уточнить - безпалитровые (глобальную палитру на весь экран можно считать условно одним большим атрибутом). Как же добиться совместимости с палитровыми?

Ясно, что активную палитру надо где-то хранить. Если вспомнить разные компы, то глобальные палитры традиционно держали в аппаратных регистрах видеоадаптеров, число которых доходило до 256 (может, где-нибудь и больше, но я не знаю); в случае же атрибутных режимов аппаратных палитровых регистров было немного (например, у Спектрума только два), но видеконтроллер регулярно обновлял их содержимое значениями из видеопамяти (что несколько увеличивало нагрузку на шину памяти по сравнению с растром той же битности без палитры, но всё равно обходилось экономнее режима "цвет на точку" с аналогичного размера глобальной палитрой).

Для совместимости со Спектрумом нам достаточно добавить в прошлую схему атрибутную сетку для всего растра 360x256 и 16-битные атрибуты (шина-то всё равно 16-битная, а кроме всех возможных значений спектрумовских атрибутов нам понадобится специальное значение для бордюра). Теперь часть 16-битных кодов цветов (выберем какие-то два, или пусть признаком "палитровости" будет установленный старший бит) будет отображаться со значением цвета атрибута, а не напрямую по коду цвета.

Но это слишком ограниченное решение, мало к чему еще пригодное, кроме имитации Спектрума. Почему бы не довести атрибутную схему до логического конца, а конкретно до уменьшения группы пикселей, связанных с одним атрибутом, до... одного-единственного пикселя?! Отображение может осуществляться так: прочитали слово, если старший бит нулевой - отображаем хайколорную точку по коду цвета, если единичный - прибавляем этот код как смещение к началу атрибутной таблицы и отображаем из неё хайколорный код. То есть без палитровых регистров имитируем палитру из 32768 цветов за счет некоторой дополнительной нагрузки на память (впрочем, небольшой и необязательной, если не используется палитра).

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

Организовать спектрум-совместимость можно примерно так: пиксели, попавшие на бордюр, все указывают на одну и ту же ячейку таблицы атрибутов видеокарты, а в квадраты, совпадающие по координатам со знакоместами Спектрума, по дефолту могут попадать лишь два кода-ссылки (для каждого квадрата свои значения). Флеш можно сделать при помощи двух атрибутных таблиц, переключаемых с нужной частотой: запись атрибута в zx-программе вызывает запись пары слов инк/пейпер в каждую атрибутную таблицу, при включенном флеше вторую пару записать в обратном порядке. Аналогично можно имитировать и спектрумовский аппаратный мультиколор, 15-битных смещений хватит даже для всего растра 360x256.

zx-kit
13.05.2016, 05:27
Сложно. Давайте от атрибутов отходить. Они остануются только в режиме ZX Spectrum.
Если подключение через цифровые RGBI, то у нас уже готовые цвета - добавляем палитру для смены 16 цветов.

В новом режиме:
У нас будет 4 активных цвета, которыми мы будем рисовать.
В видеокарту записывать данные байтами. Один или два байта на 8 точек.
Эти 8 точек сразу перекрашиваются в активные цвета.
Во внутренней памяти видеокарты цвета хранить по 16 бит на точку.

Reobne
13.05.2016, 08:58
Один или два байта на 8 точек.
Эти 8 точек сразу перекрашиваются в активные цвета.
Это если меняются спектрум_биты.
Если меняются спектрум_атрибуты, то на один принятый байт нужно перекрашивать 64 пикселя. Причём для каждого пикселя надо помнить кто-же он, еденичка или ноль. Это уже 17 бит на пиксель.

zx-kit
13.05.2016, 17:46
Это если меняются спектрум_биты.
Если меняются спектрум_атрибуты, то на один принятый байт нужно перекрашивать 64 пикселя. Причём для каждого пикселя надо помнить кто-же он, еденичка или ноль. Это уже 17 бит на пиксель.
Меняются точки в новом режиме графики. Стандартная графика остается без изменений. Можно только добавить палитру для замены 16 цветов на другие. Более разнообразные, чем в палитре ULA+.

Lethargeek
13.05.2016, 20:40
Сложно.
сложно что? один цветовой регистр сложнее 16-ти?
один физический источник данных сложнее двух?


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


Они остануются только в режиме ZX Spectrum.
и зачем нам совместимость ТОЛЬКО со стандартным режимом в двух шагах от совместимости с чем угодно?
если фишка всё равно понадобится в одном режиме, почему в других её не использовать :v2_conf2:


Если подключение через цифровые RGBI,
а если I подмешано к RGB или синхра не такая как ты рассчитывал?


то у нас уже готовые цвета
для чтения которых нужно приготовить отдельный узел


добавляем палитру для смены 16 цветов.
ДОБАВЛЯЕМ ради ХУДШЕГО результата аппаратные регистры и лишний вход :v2_dizzy_facepalm:
хотя что с попиксельными атрибутами применяется табличная трансляция, что с палитрой


В новом режиме:
У нас будет 4 активных цвета, которыми мы будем рисовать.
В видеокарту записывать данные байтами. Один или два байта на 8 точек.
Эти 8 точек сразу перекрашиваются в активные цвета.
Во внутренней памяти видеокарты цвета хранить по 16 бит на точку.
ты не с той стороны берешься за упрощение
узел записи нужно делать с гибкой перенастройкой
и чем здесь атрибуты тебе мешают?

zx-kit
13.05.2016, 21:07
Принцип такой:
Подключаем к компьютеру ZX Spectrum, Радио-86РК или Ориону для вывода на VGA.
Кроме вывода на монитор появляется возможность расширить графические возможности.
Поэтому цвета стандартного экрана берутся готовые, а не формируются внутри видеокарты.
Поэтому видеокарта не знает про атрибуты. Она оперирует массивом точек.
И стандартный экран отображает для совместимости.

Поэтому не трогаем стандартный экран. Разрабатываем новый режим/режимы.
Можно добавить текстовой режим 80х25 символов.
Команды видеокарты одни, компьютеры - разные !

- - - Добавлено - - -

Над стандартным экраном никаких преобразований кроме смены оттенков 16 цветов делать не надо ! Все должно работать как задумано.
Если мы хотим убрать клешинг, то надо перенести изображение ГГ из стандартного экрана на новый.
Все остальное остается в стандартном экране.

Lethargeek
13.05.2016, 21:31
Кроме вывода на монитор появляется возможность расширить графические возможности.
Поэтому цвета стандартного экрана берутся готовые, а не формируются внутри видеокарты.
уже здесь не вижу обоснованной причинно-следственной связи
зачем так, когда можно при сравнимой сложности сделать лучше??

zx-kit
14.05.2016, 06:44
Попробую объяснить по-другому на примере клонов ZX Spectrum-а:

Как передается изображение с компьютера на телевизор
Изображение с компьютера на телевизор передается по точкам.
Сначала цвет левой верхней точки, затем второй точки и так далее слева направо в строке.
После передачи первой строки также по точкам передается вторая и остальные строки в кадре телевизора.
Чтобы телевизор знал, когда начинать изображать первую строку компьютер формирует кадровые синхроимпульсы. Назовем этот сигнал KSI.
Чтобы телевизор знал, когда начинать изображать первую точку в строке компьютер формирует строчные синхроимпульсы. Назовем этот сигнал SSI.
На телевизор подаются не два этих сигнала, а синхросмесь из этих двух сигналов. Назовем этот сигнал SYNC.
Кроме этого в строке передается несколько дополнительных черных точек, а в кадре передается дополнительно несколько черных строк.
Вот такая вот развертка.
Цвет точки формируется с помощью цифровых сигналов RGBI.
Затем схема на резисторах, диодах и транзисторах преобразовывает цифровые сигналы в аналоговые размахом 0.7 V на соответствующих входах телевизора.

Как в игре или деме формируется изображение для передачи на телевизор
Программист знает, что телевизор показывает изображение синхронно с разверткой.
Программист знает, что важен цвет точки именно в момент передачи ее на телевизор.
Программист заботится о том, чтобы к моменту передачи точки на телевизор точка была нужного цвета.

Как преобразовать изображение, передаваемое на телевизор, для передачи на монитор
Компьютер выдает на телевизор изображение с частотой кадров около 50 Гц. То есть за секунду передается 50 кадров (изображений).
Каждый кадр обычно отличается от предыдущего. Этим создается эффект движения.
У мониторов другие частоты строк и кадров. Поэтому приходится преобразовывать.
Для этого надо собрать изображение с компьютера по точкам. И сохранить весь кадр в памяти.
Затем для передачи на монитор надо брать по одной точке из памяти и выдавать с нужными временными интервалами на монитор.

Что из этого следует
Изображение надо брать с компьютера строго в момент передачи цвета соответствующей точки на телевизор.
Если брать до этого момента, то цвет точки может быть не готов. Например, при изображении бордюрных эффектов.
Есть два способа получения цвета точки.
Первый способ - имитировать формирование цвета строго синхронно с выводом точек с компьютера на телевизора.
Для этого надо отслеживать запись данных в ОЗУ компьютера, синхронизироваться с тактовой частотой компьютера, формировать сигналы RGBI и SYNC.
То есть полностью дублировать сигналы. Они должны быть точно такими же, что и с компьютера. Иначе изображение будет отличаться.
Второй способ - брать готовые сигналы RGBI и SYNC.
В обоих случаях надо сигналы RGBI записывать в память видеокарты, чтобы получить изображение всего экрана.

Чем VGA SPUTNIK отличается от METEORa
Использование цифровых сигналов цвета и синхросмесь позволяет подключать адаптер VGA SPUTNIK с режимами МETEOR к разным компьютерам.
Можно использовать FPGA с меньшим количеством выводов.
Можно использовать экранное меню и настраивать режимы работы с помощью кнопок.
В ZX Spectrum не занимается слот ZX-BUS.
Не занимается место в корпусе компьютера.
Можно подключить даже к Ленинграду в небольшом корпусе.

Lethargeek
16.05.2016, 09:52
Как передается изображение с компьютера на телевизор (...)
Изображение "с компьютера на телевизор" передает подключённый к системной шине ВИДЕОКОНТРОЛЛЕР, функции которого может ПОЛНОСТЬЮ ЗАМЕНИТЬ (и лично я не вижу никаких разумных причин поступать иначе) внешнее устройство, подключённое всё к той же системной шине. Этому устройству не нужно знать, что творится за пределами системной шины, как там смешивается синхра и какие там разновидности сигналов для цвета точек.


Как в игре или деме формируется изображение для передачи на телевизор
Программист знает, что телевизор показывает изображение синхронно с разверткой.
Программист знает, что важен цвет точки именно в момент передачи ее на телевизор.
Программист заботится о том, чтобы к моменту передачи точки на телевизор точка была нужного цвета.
К моменту чтения видеоконтроллером из видеобуфера (или бордюрного регистра) данных для отображаемой группы точек.


Как преобразовать изображение, передаваемое на телевизор, для передачи на монитор
Компьютер выдает на телевизор изображение с частотой кадров около 50 Гц. То есть за секунду передается 50 кадров (изображений).
Каждый кадр обычно отличается от предыдущего. Этим создается эффект движения.
У мониторов другие частоты строк и кадров. Поэтому приходится преобразовывать.
А при чём тут УЛУЧШЕНИЕ ГРАФИКИ?? Перераскадровка - это ОТДЕЛЬНАЯ задача, решение которой не должно негативно повлиять на новые графические возможности! Если так, то нужно преобразовывать уже НОВУЮ, улучшенную картинку. А иначе - как ты будешь синхронизировать в модернизированных игрушках старый 50гц фон и вывод сверху новых 60гц спрайтов?


Для этого надо собрать изображение с компьютера по точкам. И сохранить весь кадр в памяти.
Затем для передачи на монитор надо брать по одной точке из памяти и выдавать с нужными временными интервалами на монитор.
Для этого "надо собрать изображение" с ВИДЕОКАРТЫ. Впрочем, можно это делать в ней же самой, включив кадровый конвертер в неё физически; но логически он должен быть отдельным устройством. Схемы кадровых конвертеров мб разные; в идеале, чтоб не запиналась 50-герцовая анимация, нужно место для трёх кадровых буферов (в один пишем и одновременно отображаем смесь двух других)


Что из этого следует
Изображение надо брать с компьютера строго в момент передачи цвета соответствующей точки на телевизор.
Если брать до этого момента, то цвет точки может быть не готов. Например, при изображении бордюрных эффектов.
Вообще ИЗОБРАЖЕНИЕ "с компьютера" (то есть старого видеоконтроллера) брать НЕ надо.


Первый способ - имитировать формирование цвета строго синхронно с выводом точек с компьютера на телевизора.
Для этого надо отслеживать запись данных в ОЗУ компьютера, синхронизироваться с тактовой частотой компьютера, формировать сигналы RGBI и SYNC.
То есть полностью дублировать сигналы. Они должны быть точно такими же, что и с компьютера. Иначе изображение будет отличаться.
В чём проблема-то? Синхронизироваться можно по прерыванию. Остальные временные характеристики (число строк, длина строки в тактах и с какого такта растр начинается) разово вычисляются либо выбираются. Кроме того, надо бы предусмотреть работу в режиме, когда прерывание приходит с видеокарты, формирующей кадр любого клона, а стандартный встроенный видеоконтроллер может отсутствовать.


Второй способ - брать готовые сигналы RGBI и SYNC
Так ведь всё равно же надо формировать новый видеосигнал, накладывая сверху еще слой спрайтов. То есть делать то же, что в первом случае, только еще и выхлоп старого видеоконтроллера читать придётся. Лишняя возня, только ухудшающая потенциал модернизации старых игр.


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


Чем VGA SPUTNIK отличается от METEORa
Использование цифровых сигналов цвета и синхросмесь позволяет подключать адаптер VGA SPUTNIK с режимами МETEOR к разным компьютерам.
Можно использовать FPGA с меньшим количеством выводов.
Это как, если он "с режимами метеора", для использования которых нужен процессор?
Для rgb-входа И zx-bus нужно меньше ножек, чем только для zx-bus? :D


Можно использовать экранное меню и настраивать режимы работы с помощью кнопок.
В ZX Spectrum не занимается слот ZX-BUS.
Не занимается место в корпусе компьютера.
Можно подключить даже к Ленинграду в небольшом корпусе.
Но зачем ради этого излишне ограничивать возможности новой графики?
Сделал бы отдельный конвертер, подключить который можно к любому выходу.
Хоть компа, хоть бесконвертерного варианта 50-герцового метеора.

zx-kit
17.05.2016, 05:11
А при чём тут УЛУЧШЕНИЕ ГРАФИКИ?? Перераскадровка - это ОТДЕЛЬНАЯ задача, решение которой не должно негативно повлиять на новые графические возможности! Если так, то нужно преобразовывать уже НОВУЮ, улучшенную картинку. А иначе - как ты будешь синхронизировать в модернизированных игрушках старый 50гц фон и вывод сверху новых 60гц спрайтов?

Для этого "надо собрать изображение" с ВИДЕОКАРТЫ. Впрочем, можно это делать в ней же самой, включив кадровый конвертер в неё физически; но логически он должен быть отдельным устройством. Схемы кадровых конвертеров мб разные; в идеале, чтоб не запиналась 50-герцовая анимация, нужно место для трёх кадровых буферов (в один пишем и одновременно отображаем смесь двух других)

Да, это два отдельных логических устройства. Поэтому и не надо сейчас рассматривать выход на монитор. Есть только обязательное требование - со всех слоев - старого и нового цвет надо брать синхронно с разверткой телевизора 50 Гц по одной точке. Далее уже работает схема вывода на телевизор или монитор.


Вообще ИЗОБРАЖЕНИЕ "с компьютера" (то есть старого видеоконтроллера) брать НЕ надо.
В чём проблема-то? Синхронизироваться можно по прерыванию. Остальные временные характеристики (число строк, длина строки в тактах и с какого такта растр начинается) разово вычисляются либо выбираются. Кроме того, надо бы предусмотреть работу в режиме, когда прерывание приходит с видеокарты, формирующей кадр любого клона, а стандартный встроенный видеоконтроллер может отсутствовать.

Стандартный видеоконтроллер может отсутствовать только в новом модульном компьютере. В старых комьпютерах RBGI, SYNC уже есть и с такими параметрами, какие у данного компьютера. А если подключать к ZX-BUS, то потребуется использовать дополнительные CPLD+SRAM или более старую многоногую FPGA с усложнением прошивки.



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

А если в компьютере 48К/128К/1М. А если компьютер PENTAGON-128, ATM или Profi ? Или Орион ? Надо будет еще и их имитировать ? Как раз когда старый режим готовый мы можем заниматься только разработкой новых режимов. Мы ведь с нового слоя будем брать тоже по одной точке для вывода на телевизор. Остается простая задача получить из нескольких точек с разных слоев (по одной с каждого) результирующий цвет для вывода на телевизор, а если надо то далее и на монитор.


НЕТ. В первом случае достаточно сигналов только системной шины.

Не забывай, что цвет точек действителен только в момент вывода на телевизор синхронно с разверткой. В другие моменты цвета могут быть случайными.


Это как, если он "с режимами метеора", для использования которых нужен процессор?
Для rgb-входа И zx-bus нужно меньше ножек, чем только для zx-bus? :D

Для подключения внешней видеокарты нужно меньше сигналов, чем есть в ZX-BUS. 8 линий данных, два сигнала записи (формуруются простейшим дешифратором) и RESET. То есть для новых возможностей надо 11 сигналов на FPGA. Чтобы читать данные цвета точек старого режима надо RGBI - 4 сигнала. В некоторых компьютерах их можеж быть до 8. И еще синхросмесь SYNC. То есть для старого режима надо 9 сигналов. 11+9=20.



Но зачем ради этого излишне ограничивать возможности новой графики?
Сделал бы отдельный конвертер, подключить который можно к любому выходу.
Хоть компа, хоть бесконвертерного варианта 50-герцового метеора.
Для записи в видеокарту достаточно двух адресов. Один - для выбора регистра или памяти. Второй - для записи данных в выбранный регистр или память. А внутри FPGA можно разместить до 256 восьмибитных регистров режима.
Есть китайские преобразватели TV->MONITOR, но они не добавят новых графических возможностей.
Зачем ограничиваться только Спектрумом и вникать в тонкости видеорежима конкретного компьютера ?

Lethargeek
18.05.2016, 00:07
Да, это два отдельных логических устройства. Поэтому и не надо сейчас рассматривать выход на монитор. Есть только обязательное требование - со всех слоев - старого и нового цвет надо брать синхронно с разверткой телевизора 50 Гц по одной точке. Далее уже работает схема вывода на телевизор или монитор.
Проще цвет с единственного слоя тянуть. И синхронизироваться с памятью тоже легче, чем с отображением из неё.


Стандартный видеоконтроллер может отсутствовать только в новом модульном компьютере.
В старом его можно деактивировать (только инт отрезать в самом простейшем случае)


В старых комьпютерах RBGI, SYNC уже есть и с такими параметрами, какие у данного компьютера.
Так нам только их параметры и нужны. Можно и без самих сигналов определить.


А если подключать к ZX-BUS, то потребуется использовать дополнительные CPLD+SRAM или более старую многоногую FPGA с усложнением прошивки.
Для чего? И какую "более старую многоногую", если "более новая" в твоём блоге "FPGA EP4CE6 144 вывода 91 IO" :v2_dizzy_tired2:
Усложнять прошивку можно ради возможностей, не солить же остающиеся ячейки.
Кстати, часть ресурсов освободится при отказе от многослойной схемы.


А если в компьютере 48К/128К/1М. А если компьютер PENTAGON-128, ATM или Profi ? Или Орион ? Надо будет еще и их имитировать ?
Надо сразу имитировать ОБЩИЙ СЛУЧАЙ, чтобы можно было в одном режиме порисовать графикой профи/АТМ/ориона...


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


Мы ведь с нового слоя будем брать тоже по одной точке для вывода на телевизор. Остается простая задача получить из нескольких точек с разных слоев (по одной с каждого) результирующий цвет для вывода на телевизор, а если надо то далее и на монитор.
Лучше, чтоб не оставалось лишних задач. Эта - лишняя: один слой проще для отображения, чем два слоя. А для задач, которые остаются, лучшими решениями являются те, которые решают больше одной задачи. Есть возможность общего решения двух задач - совместимости (причём не только с ОДНИМ лишь "уже готовым" режимом) и эффективного рисования медленным процессором в хайколоре.


Не забывай, что цвет точек действителен только в момент вывода на телевизор синхронно с разверткой. В другие моменты цвета могут быть случайными
СЛУЧАЙНЫМИ они будут только после "холодного" запуска и до первой же очистки экрана.
После - будут строго детерминированы для устройства, наблюдающего за шиной.


Для подключения внешней видеокарты нужно меньше сигналов, чем есть в ZX-BUS. 8 линий данных, два сигнала записи (формуруются простейшим дешифратором) и RESET. То есть для новых возможностей надо 11 сигналов на FPGA. Чтобы читать данные цвета точек старого режима надо RGBI - 4 сигнала. В некоторых компьютерах их можеж быть до 8. И еще синхросмесь SYNC. То есть для старого режима надо 9 сигналов. 11+9=20.
А на что ты умудрился уже истратить остальные 70 (!) io ножек?? :eek:
И как собирался дешифровать порты видеокарты без адресов? Внешней схемой?
Лучше уж внешний мультиплексор на восемь ног для доступа и к адресным линиям.
Разницы в частотах хватит с запасом.


Для записи в видеокарту достаточно двух адресов. Один - для выбора регистра или памяти. Второй - для записи данных в выбранный регистр или память.
Неудобно для процедурной графики и для модернизации старых игр.
Нет отображения адресов = надо переписывать больше кода.


А внутри FPGA можно разместить до 256 восьмибитных регистров режима.
и регистры удобнее на память отображать, адресуя через (ix+n)


Есть китайские преобразватели TV->MONITOR, но они не добавят новых графических возможностей.
Зачем ограничиваться только Спектрумом и вникать в тонкости видеорежима конкретного компьютера ?
Так я и предлагаю не ограничиваться ни Спектрумом, ни ОДНИМ "уже готовым" старым режимом.
И в тонкости как раз поменьше вникать при модернизации и переносе кода с других платформ.

zx-kit
19.05.2016, 18:19
А на что ты умудрился уже истратить остальные 70 (!) io ножек?? :eek:
И как собирался дешифровать порты видеокарты без адресов? Внешней схемой?
Лучше уж внешний мультиплексор на восемь ног для доступа и к адресным линиям.
Разницы в частотах хватит с запасом.

http://savepic.ru/9809922m.png (http://savepic.ru/9809922.png)

Схема на одном дешифраторе ИД7. Буфер можно не ставить:
На задней стенке компьютера устанавливается гнездо DB-25F. На контакты гнезда подаются сигналы R, G, B, I, SYNC, +5V, GND, RESET, восемь битов данных и два сигнала записи.

http://savepic.ru/9543928m.png (http://savepic.ru/9543928.png)

Данные подаются через буфер К555АП6, а сигналы записи WR0 и WR1 формируются с помощью дешифратора К555ИД7. На каждый сигнал приходится по 8К адресов из адресов ПЗУ.

WR0 — сигнал записи номер регистра в FPGA, WR1 — сигнал записи данных в выбранный регистр или память видеокарты.

При записи подряд несколько байтов автоматически меняется номер регистра или адрес в памяти.

---
Можно упростить подключение к ZX Spectrum для добавление палитры и режимов графики Метеор. При этом не потребуются дополнительные микросхемы. Дешифрацию перенести в FPGA. Это позволит подключить Ленинград 1 или ZXM-Phoenix без занимания слота ZX-BUS. К разъему DB-25F нужно подключить сигналы прямо с Z80:
D0-D7
A13-A15
MREQ
WR
RESET

Количество сигналов цветности разное у разных компьютеров:
ZX Spectrum = 4
БК-0011М = 5
ZX-Evo = 6
УК-НЦ = 7
Profi = 8

Совпадут только цвета, а режимы будут как на компьютере, к которому подключен адаптер VGA SPUTNIK с возможностью перекрашивания в другие цвета. Типа ULA+ для ZX Spectrum, только цветов для выбора больше.

Основной способ подключения - установка на задней стенке компьютера. То есть спутник будет подключен через цифровые сигналы. При этом дополнительные сигналы позволят добавить режим METEOR. Один из режимов возможно будет 80х25 символов. Этот же режим будет использован для отображения экранного меню.

Аналоговые RGB будут подключаться через дополнительную схему на компараторах, которые позволят преобразовать 2-3 уровня сигнала в цифру. При этом теряется возможность режимов METEOR. Поэтому проще подключать через цифру.

В компьютерах (ZX Spectrum, Радио-86РК, Специалист, Орион и т.д.) есть ПЗУ. Оно используется только на чтение. Поэтому для адресации режимов METEOR можно использовать эти же адреса, но только на запись. Режим METEOR позволит добавить одинаковую графику и текст в разные компьютеры.

Lethargeek
24.05.2016, 19:33
Схема на одном дешифраторе ИД7. Буфер можно не ставить:
На задней стенке компьютера устанавливается гнездо DB-25F. На контакты гнезда подаются сигналы R, G, B, I, SYNC, +5V, GND, RESET, восемь битов данных и два сигнала записи.
То есть надо лезть в компьютер "раскалённым тупым предметом", даже если выведена системная шина.


Данные подаются через буфер К555АП6, а сигналы записи WR0 и WR1 формируются с помощью дешифратора К555ИД7. На каждый сигнал приходится по 8К адресов из адресов ПЗУ.
Только в Спектрум-клонах (и только в режиме Спектрума, а не в CP/M, например).
У других компов (и конфигураций) и ПЗУ может быть меньшего размера, и расположенное по другим адресам.


WR0 - сигнал записи номер регистра в FPGA, WR1 - сигнал записи данных в выбранный регистр или память видеокарты.

При записи подряд несколько байтов автоматически меняется номер регистра или адрес в памяти.
Ну, ё-моё... если нет произвольной адресации в духе Спектрума, то не стоило и огород городить.
Чем оно принципиально лучше прошлых попыток прикрутить с генлоком "уже готовые" чипы msx или dendy


Совпадут только цвета, а режимы будут как на компьютере, к которому подключен адаптер VGA SPUTNIK с возможностью перекрашивания в другие цвета. Типа ULA+ для ZX Spectrum, только цветов для выбора больше.
Зато меньше одновременно выводимых. Без динамической перезагрузки только 16 (если не 15 для выходов с подмешиваемой яркостью). Тогда как при полноценном подключении шины адреса старый код мог бы вывести статически любое кол-во цветов.


В компьютерах (ZX Spectrum, Радио-86РК, Специалист, Орион и т.д.) есть ПЗУ. Оно используется только на чтение. Поэтому для адресации режимов METEOR можно использовать эти же адреса, но только на запись. Режим METEOR позволит добавить одинаковую графику и текст в разные компьютеры.
Например, в Орионе (и не только) ПЗУ лишь 2кб - не хватает только двух разрядов на дешифровку-то. С большей пользой распорядиться истраченными на чтение видеосигнала ногами можно, замультиплексировав на них все 16 линий адресной шины. Также шиной данных с процессором, вероятно, мог бы поделиться микроконтроллер (если он нужен только для прошивок или настроек). С одним слоем также будут неизменными sdram_hi/lo_byte. Освобождающиеся ноги лучше выделить на увеличение памяти.


Режим METEOR позволит добавить одинаковую графику и текст в разные компьютеры.
Мало этого. Не взлетит при неподобающем управлении. Самопал тем более не взлетит.
Вообще, не должны особенности частных реализаций диктовать общую логическую модель.

zx-kit
25.05.2016, 05:21
То есть надо лезть в компьютер "раскалённым тупым предметом", даже если выведена системная шина.

У некоторых компьютеров все слоты ZX-BUS заняты или их нет.


Только в Спектрум-клонах (и только в режиме Спектрума, а не в CP/M, например).
У других компов (и конфигураций) и ПЗУ может быть меньшего размера, и расположенное по другим адресам.

В этом и заключается преимущество. На входе адаптера VGA SPUTNIK два сигнала записи. В каждом типе компьютера можно использовать свою схему дешифрации. Принцип работы от этого не изменится. Примерно так же работают графические LCD дисплеи.


Ну, ё-моё... если нет произвольной адресации в духе Спектрума, то не стоило и огород городить.
Чем оно принципиально лучше прошлых попыток прикрутить с генлоком "уже готовые" чипы msx или dendy

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

Адрес номера регистра #1FFFH, а адрес данных #2000.
Такая адресация достаточно проста для использования в программах для Z80.

В HL загрузить нужные числа (прямой записью, из стека или другим способом).
L - номер регистра, H - данные для записи в выбранный регистр или память.
Для записи использовать команду LD (#1FFF),HL.

Если надо записать данные в несколько регистров или ячеек память, то в HL загрузить два байта данных (прямой записью, из стека или другим способом).
Для записи использовать команду LD (#2000),HL.



Зато меньше одновременно выводимых. Без динамической перезагрузки только 16 (если не 15 для выходов с подмешиваемой яркостью). Тогда как при полноценном подключении шины адреса старый код мог бы вывести статически любое кол-во цветов.

Спектрум выводит на экран телевизора в стандартном режиме только 15 цветов в статике. Большинство игр используют только эти 15 цветов. Если цветов больше, то это уже не стандартный режим и проще рисовать в новом режиме/слое. Там цветов больше.


Например, в Орионе (и не только) ПЗУ лишь 2кб - не хватает только двух разрядов на дешифровку-то.

В Орионе режим Метеор подключат по тем адресам, каким удобно с имеющимся или дополнительным дешифратором.


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

Сигналы для получения цвета точки RGBI и синхросмеси трогать нельзя, так как они нужны для подключения Ориона и других типов компьютеров из времен СССР.


Также шиной данных с процессором, вероятно, мог бы поделиться микроконтроллер (если он нужен только для прошивок или настроек). С одним слоем также будут неизменными sdram_hi/lo_byte. Освобождающиеся ноги лучше выделить на увеличение памяти.

У контроллера можно забрать тактовый сигнал, припаяв подходящий для напряжения 3,3V кварц. Доступ к памяти и регистрам управления развертками удобнее делать байтами. Но в крайнем случае можно применить другой интерфейс для уменьшения занятых IO FPGA.

Если обращаться к SDRAM словами по 16 бит, то можно сэкономить 2 IO, но утратится возможность адресования отдельных байтов. А это не позволит увеличить скорость копирования в 2 раза в режимах 8 бит на точку.

Еще один IO можно сэкономить, подав тактовую частоту 27 MHz только на одим вход GCLK вместо двух.

Еще 3 IO пока свободны.


Вообще, не должны особенности частных реализаций диктовать общую логическую модель.
8 битов данных и два сигнала записи - это и есть общая логическая модель, позволяющая подключить адаптер к разным компьютерам.
Старый режим работы компьютера остается без изменений или раскрашивается в другие цвета с помощью палитры.
Например, в Радио-86РК из белого текста на черном перекрасить в белый текст на синем фоне или зеленый текст на черном фоне.

s_kosorev
25.05.2016, 07:24
Если обращаться к SDRAM словами по 16 бит, то можно сэкономить 2 IO, но утратится возможность адресования отдельных байтов.
SDRAM 16бит работает с байтами прекрасно, для этого есть сигналы DQMH, DQML

zx-kit
25.05.2016, 15:39
SDRAM 16бит работает с байтами прекрасно, для этого есть сигналы DQMH, DQML
Если обращаться к SDRAM словами по 16 бит, то можно сэкономить 2 IO, но утратится возможность адресования отдельных байтов.

s_kosorev
25.05.2016, 17:41
read-modify-write делается укороченным циклом

но как по мне, это не те пины на которых стоит экономить в устройстве заточенном на 8бит компы

- - - Добавлено - - -

берется какой нить max3000 который заменит микросхемы сдвига уровней, 3+ циклоны уже не толеранты к 5в + этот max будет в роли мультиплексора, декодера итд
можно хоть 100 ног добавить за 2-3$

zx-kit
26.05.2016, 04:15
read-modify-write делается укороченным циклом

но как по мне, это не те пины на которых стоит экономить в устройстве заточенном на 8бит компы

Согласен, эти пины важные, не стоит на них экономить, лучше их оставить.


берется какой нить max3000 который заменит микросхемы сдвига уровней, 3+ циклоны уже не толеранты к 5в + этот max будет в роли мультиплексора, декодера итд
можно хоть 100 ног добавить за 2-3$
Тогда представим, что у нас есть свободный слот ZX-BUS и мы хотим меньше длинных проводов к разным точкам компьютера.
Можно сделать соединительную плату METEOR BASE.
Тогда MAX будем использовать для формирования двух сигналов записи для подачи на внешний адаптер VGA SPUTNIK.
Также, добавив генератор на 14 MHz и SRAM объемом 16 KB, можно сформировать требуемые сигналы RGBI и SYNC.
Мы сформируем аналог стандартного экрана с требуемой частотой кадров 50 Hz,

С платы METEOR BASE 25 коротких проводов идут на разъем DB-25F на корпусе компьютера.
К DB-25F стыкуется адаптер VGA SPUTNIK в корпусе и с кнопками управления.
К адаптеру подключаетя кабель VGA.

Lethargeek
27.05.2016, 00:50
У некоторых компьютеров все слоты ZX-BUS заняты
в полностью пассивном режиме можно тупо параллельно девайс воткнуть


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


В этом и заключается преимущество. На входе адаптера VGA SPUTNIK два сигнала записи.
Да при чем тут, сколько "сигналов записи". Я про адресные линии говорю - размер дешифруемого диапазона обратно пропорционален их количеству. С двумя ногами ты только 16кб сможешь выделить. То есть, если софт для Ориона запишет байт где-то рядом с пзушными 2кб, твоя схема будет воспринимать его как команду. А чтоб локализовать пространство в 2кб, нужно будет log2(64/2) = 5 ног.


В каждом типе компьютера можно использовать свою схему дешифрации.
Так ты хочешь, чтоб еще и предешифратор в компе паяли? В этом заключается "преимущество"? :D


Оно лучше тем, что при сохранении старого режима/слоя добавляются новые режимы/слои для устранения клешинга без изменения спрайтов в игре.
В тридевятом чипе есть режим вывода по 8 двухцветных пикселей (это помимо прочего богатства его возможностей). Да, конечно, доступ к памяти неудобный и нехарактерный для компов с экраном в основной памяти, но и ты предлагаешь тут аналогичный принцип, немногим лучше.


Адрес номера регистра #1FFFH, а адрес данных #2000.
Такая адресация достаточно проста для использования в программах для Z80.

В HL загрузить нужные числа (прямой записью, из стека или другим способом).
L - номер регистра, H - данные для записи в выбранный регистр или память.
Для записи использовать команду LD (#1FFF),HL.

Если надо записать данные в несколько регистров или ячеек память, то в HL загрузить два байта данных (прямой записью, из стека или другим способом).
Для записи использовать команду LD (#2000),HL.

Недостаточно. Чуждо Спектруму и неудобно для модернизации старых игр. В то время как у схемы с полным доступом к адресам гораздо больший "модернизационный потенциал", вплоть до рисования старым кодом полноцветных (а не двухцветных) линий по 8 пикселей (позже напишу об этом подробнее).


Спектрум выводит на экран телевизора в стандартном режиме только 15 цветов в статике. Большинство игр используют только эти 15 цветов.
Спектрум выводит на экран телевизора в стандартном режиме целых 768 атрибутов, не все из которых часто меняются. А иные игры не то что часть атрибутов, но и пиксели на некоторой части экрана могут не трогать. Например, Last Ninja или Titanic. Вполне можно в играх такого типа задавать для разных областей экрана разные наборы цветов, вовсе не меняя старого кода (может быть, добавив только новый загрузчик).


Если цветов больше, то это уже не стандартный режим и проще рисовать в новом режиме/слое. Там цветов больше.
нет, не проще, чем один раз где-то перезагрузить цвета атрибутов


В Орионе режим Метеор подключат по тем адресам, каким удобно с имеющимся или дополнительным дешифратором.
не получится с имеющимся никак


Сигналы для получения цвета точки RGBI и синхросмеси трогать нельзя, так как они нужны для подключения Ориона и других типов компьютеров из времен СССР.
не нужны они для этого совершенно, все нужные сигналы на шине есть


У контроллера можно забрать тактовый сигнал, припаяв подходящий для напряжения 3,3V кварц. Доступ к памяти и регистрам управления развертками удобнее делать байтами. Но в крайнем случае можно применить другой интерфейс для уменьшения занятых IO FPGA.
ну и байтами, но на те же самые data-ноги, ведь не требуется (?) одновременно читать данные с контроллера и с компа


Если обращаться к SDRAM словами по 16 бит, то можно сэкономить 2 IO, но утратится возможность адресования отдельных байтов. А это не позволит увеличить скорость копирования в 2 раза в режимах 8 бит на точку.
ладно, только пара пинов, но какой нынче смысл в таких режимах, кроме восьмибитно-сакрального?


8 битов данных и два сигнала записи - это и есть общая логическая модель,
продиктованная особенностью частной реализации (кол-вом ног в конкретной fpga)


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


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


Тогда представим, что у нас есть свободный слот ZX-BUS и мы хотим меньше длинных проводов к разным точкам компьютера.
Можно сделать соединительную плату METEOR BASE.
Тогда MAX будем использовать для формирования двух сигналов записи для подачи на внешний адаптер VGA SPUTNIK.
Также, добавив генератор на 14 MHz и SRAM объемом 16 KB, можно сформировать требуемые сигналы RGBI и SYNC.
Мы сформируем аналог стандартного экрана с требуемой частотой кадров 50 Hz,
ZOMG, нагораживать еще и ВНЕШНИЙ аналог в отдельной памяти, лишь бы не нормальное подключение, при котором сам во внутренней получался бы :v2_dizzy_facepalm:

zx-kit
02.06.2016, 04:50
в полностью пассивном режиме можно тупо параллельно девайс воткнуть
То есть ради облегчения подключения для тех, у кого слотов нет, ты хочешь осложнить подключение для тех, у кого слоты есть. И ухудшить характеристики девайса еще как следствие.
Да при чем тут, сколько "сигналов записи". Я про адресные линии говорю - размер дешифруемого диапазона обратно пропорционален их количеству. С двумя ногами ты только 16кб сможешь выделить. То есть, если софт для Ориона запишет байт где-то рядом с пзушными 2кб, твоя схема будет воспринимать его как команду. А чтоб локализовать пространство в 2кб, нужно будет log2(64/2) = 5 ног.
Так ты хочешь, чтоб еще и предешифратор в компе паяли? В этом заключается "преимущество"? :D

Допустим, мы хотим подключить видеокарту к Z80. У видеокарты такие входные сигналы: 8 битов данных, 2 сигнала записи и 1 RESET.
Для подключения нужен дешифратор, который из сигналов Z80 формирует 2 сигнала на одну видеокарту.
Лучше, на всякий случай, сформировать 4 сигнала для двух видеокарт.

В Спектруме свободное адресное пространство на запись по адресам ПЗУ.
Для Спектрума давайте вместе разработаем в этой теме дешифратор.

Нужно сделать такой дешифратор, чтобы на номер регистров и данных было по 256 адресов.
То есть, в дешифратор не надо подавать младший байт адреса, только 8 старших.
A15=A14=0 - это выбор окна ПЗУ в компьютерах типа Ленинград.
A13-A8 можно использовать для выбора устройств на запись. До 64 устройства. Все адреса мы занимать не будем.
Надо выбрать диапазон в облаcти адресов ПЗУ. По 256 байтов на один регистр. На одну видеокарту будет заниматься 2*256=512 байтов.
Допустим A13=A12=A11=A10=0. A9-A8 для формирования 4х сигналов записи. Можно сделать на микросхемах 555ЛЛ1 и 555ИД7.

Мы можем поставить мультиплексор, который на линии данных будет подавать то младший байт адреса, то данные с Z80.
Тогда одной командой типа LD (адрес),A будет записываться и номер регистра и данные для него.
Только надо доказать, что это удобнее и быстрее для программистов. Если нужен мультиплексор, то еще две микросхемы 555КП11.

Дешифратор можно будет спаять на макетном поле Ленинграда или развести на карте ZX-BUS для более современных компьютеров.
У других компьютеров другие процессоры и свободное адресное пространство.
Для каждого разработают свои дешифраторы, как им удобно подключить видеокарту к своему компьютеру.
Когда радиолюбитель подключает LCD экран, то он сам формирует сигналы при подключении к своему компьютеру.
Например как там (http://zx-pk.ru/threads/25682-karmannyj-kompyuter-na-z80.html?p=833320&viewfull=1#post833320). И видеокарту также можно будет подключить.


неудобно для модернизации старых игр. В то время как у схемы с полным доступом к адресам гораздо больший "модернизационный потенциал", вплоть до рисования старым кодом полноцветных (а не двухцветных) линий по 8 пикселей (позже напишу об этом подробнее).

В старом коде мы меняем процедуру рисования главного героя. И рисуем его в новом режиме теми же спрайтами, но без атрибутов.


не нужны они для этого совершенно, все нужные сигналы на шине есть

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

Две видеокарты позволят делать игры на двоих. У каждого игрока будет свой джойстик и монитор.

Lethargeek
03.06.2016, 00:05
Допустим, мы хотим подключить видеокарту к Z80. У видеокарты такие входные сигналы: 8 битов данных, 2 сигнала записи и 1 RESET.
Для подключения нужен дешифратор, который ...
Ты забыл упомянуть про 9 ног на вход видеосигнала. А давай лучше допустим другую видеокарту, у которой эти ноги через мультиплексор видят полную шину адреса. И не нужно внешнего дешифратора, и одной записью в один-единственный порт можно выбрать любой 256-байтный диапазон для отображения регистров видеокарты, хоть в ПЗУ, хоть где-нибудь в свободном месте ОЗУ (что позволит сохранить для чтения их значения).


Тогда одной командой типа LD (адрес),A будет записываться и номер регистра и данные для него.
Только надо доказать, что это удобнее и быстрее для программистов.
а что, есть что-нибудь удобней, чем (ix+n) :)


В старом коде мы меняем процедуру рисования главного героя.
вопрос в том, насколько радикально (если вообще) придётся её менять


И рисуем его в новом режиме теми же спрайтами, но без атрибутов.
можно так, а можно и старый код заставить рисовать не теми же спрайтами, а неявно перебрасывать полноцветные изображения внутри карты в духе spec256/zx-poly, но для этого нужен полный доступ к адресной шине


Ты согласен, что цвет точки нужно брать в определенный момент времени синхронно с разверткой телевизора ?
цвет нужно ВЫДАВАТЬ синхронно с развёрткой (также как и саму развёртку, а не синхронизироваться с готовой)))


Две видеокарты позволят делать игры на двоих. У каждого игрока будет свой джойстик и монитор.
хорошо, если НОВЫХ игр даже на одного наберётся больше пальцев одной руки
так-то с полным доступом к шине адреса не проблема хоть десяток видеокарт

Lethargeek
03.06.2016, 21:15
кстати, вспомнил, что в Орионе все стандартные порты отображаются на адреса ПЗУ, так что внешний дешифратор нужен еще сложнее

Nesser
20.06.2016, 22:13
А у программистов вообще кто нибудь что нибудь спросил? перерисовать графику в старой игре означает ПОЛНОСТЬЮ переделать всю игру оставив только сам смысл игры.
А делать это только ради того что бы припудрить монохромный спрайт нет никакого смысла, тем более к нему ещё и нормальную маску надо и иной принцип детектирования коллизии.
За время прошедшее с момента появления Voodoo 2 стало ясно что весь этот пиксельный гемор абсолютно бесполезен, решает только тупое копи-пасте данных во временный буфер который по синхре подменяется зеркальным буфером с очисткой. Да, аппаратные планы как бы неплохо, но внутри плана всё равно рисовать то надо, а делать это рекодингом цветовых форматов в реальном времени на Z80 это не просто извращение, это суперпупермегаизвращение, 1 экран в секунду обеспечен, аппаратное и только аппаратное копирование данных, 1 пиксель Z80 заполняет за 100-200 тактов, 3500000/(49125*100)=0,7 кадра в секунду, а нужно то в 50 раз быстрее, А ЗА ДВА ТАКТА ОДИН ПИКСЕЛЬ НЕ НАРИСОВАТЬ, можно срать кирпичами но этого не сделать, при частоте переноса 28 МГц (2 такта - read/write) при разрешении 256х192 будет 284 кадра в секунду (если никто мешать не будет) то есть за один 50-и герцовый кадр можно переналожить 5 полных экранов, то есть 5 полноценных слоёв и каждый анимационный, при чём при 255 цветах + 1 прозрачный при котором предыдущий слой не затирается (маска).
Да и разрешение давно пора уже менять, никто не мешает взять за стандарт разрешения ZX-Evolution - 256x192, 320x200, 320x240 и 360x288.

Ну это так, мысли вслух.

Hacker VBI
21.06.2016, 10:14
Nesser что-то вы путаете.
реально нарисовать 16 точек одним push ;) а это - 11 тактов ;)

Nesser
25.06.2016, 01:10
Не торописька :)
11 тактов это не вывести а просто кинуть их на экран через стёк, а вычислять адрес нет необходимости? а цветная точка размером не 1 бит а 4-8 бита? а проверка маски? а подготовка координат?
11 на пуш, 10 на поп, штук 15-20 на коррекцию Y-ка, и так 4 раза если 4 битный цвет раскидан на 4 банка по 6144, ага, ещё плюс клацать банками, итого 200-400 получается, и то в таком случае вывести по X с точностью до пикселя не получится.
То есть вариант только 49152 байта на 256х192 и цвет 4 или 8 бита.
И то, такой гемор с памятью получится.
Неужели так трудно хранить спрайты хоть в ч/б а после загрузки просто кинуть их в память DMA одновременно разжав их до к примеру 8 бит на точку, и хай он себе перекидывает его с одного места на другое, грубо говоря, если частота DMA 28 МГц а частота Z80 3,5 МГц то за 1 такт процессора DMA скинет на экран 4 пикселя с точностью 256 цветов, соответственно спрайт 8 на 8 точек с 8 битами на точку (256 цветов) шлёпнется на экран за 16 тактов процессора, при чем, если к примеру цвет будет с номером 255 то этот пиксель просто не копируется, получается маска, тот цвет который уже лежит в этом месте на экране не затирается.
Да и с памятью сейчас вроде как проблем нету :) поставить 1 микросхему на 2-4 мбайта вроде как не сложно, и пусть он там себе двигает с места на место, а в памяти процессор кроме самой программы больше ничего не надо (с музыкой и звуками по сути никто не мешает тоже самое сделать).
Неужели мы, рукожопые кодеры Z80, не впихнём код игры в 16-64 кбайта ?

Ну это всё так, мысли вслух.

Hacker VBI
25.06.2016, 13:46
дядь Nesser, вот глянь

http://www.youtube.com/watch?v=lRRwzCcYrP8

это тс конф, дема - моя.
здесь - прозрачные спрайты поверх стандартного экрана, тайлы, 256 цветов, всё то о чём вы три года тут трындите.
сделано всё так именно для того, что-бы показать и возможности спека, и конфы одновременно.

всё уже есть. и реализовано в железе.
и под это уже понаписывано много (http://www.pouet.net/prodlist.php?platform[]=ZX%20Enhanced) всякого (http://prods.tslabs.info/index.php?t=2)

Nesser
26.06.2016, 02:28
Молодца :)
Только эт не я тут 3 года трындел, я пытался им объяснить что программно ничего не получится, единственный вариант это делать аппаратно, раз уж они решили делать :)
Ты где кстати талмуды брал по тс конф?

Hacker VBI
26.06.2016, 18:05
сел да написал (http://hype.retroscene.org/search/topics/?q=TSconf%3A) :p
оно всё растёт из общения и одной главной доки (https://github.com/tslabs/zx-evo/raw/master/pentevo/docs/TSconf/TSconf.xls)

zx-kit
26.06.2016, 19:53
А у программистов вообще кто нибудь что нибудь спросил? перерисовать графику в старой игре означает ПОЛНОСТЬЮ переделать всю игру оставив только сам смысл игры.
А делать это только ради того что бы припудрить монохромный спрайт нет никакого смысла, тем более к нему ещё и нормальную маску надо и иной принцип детектирования коллизии.
За время прошедшее с момента появления Voodoo 2 стало ясно что весь этот пиксельный гемор абсолютно бесполезен, решает только тупое копи-пасте данных во временный буфер который по синхре подменяется зеркальным буфером с очисткой. Да, аппаратные планы как бы неплохо, но внутри плана всё равно рисовать то надо, а делать это рекодингом цветовых форматов в реальном времени на Z80 это не просто извращение, это суперпупермегаизвращение, 1 экран в секунду обеспечен, аппаратное и только аппаратное копирование данных, 1 пиксель Z80 заполняет за 100-200 тактов, 3500000/(49125*100)=0,7 кадра в секунду, а нужно то в 50 раз быстрее, А ЗА ДВА ТАКТА ОДИН ПИКСЕЛЬ НЕ НАРИСОВАТЬ, можно срать кирпичами но этого не сделать, при частоте переноса 28 МГц (2 такта - read/write) при разрешении 256х192 будет 284 кадра в секунду (если никто мешать не будет) то есть за один 50-и герцовый кадр можно переналожить 5 полных экранов, то есть 5 полноценных слоёв и каждый анимационный, при чём при 255 цветах + 1 прозрачный при котором предыдущий слой не затирается (маска).
Да и разрешение давно пора уже менять, никто не мешает взять за стандарт разрешения ZX-Evolution - 256x192, 320x200, 320x240 и 360x288.

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

Спрайты для устранения клешинга можно оставить. Рисовать их можно будет командой LDIR. Это 42 такта на 8 точек при 2 битах на точку.
Есть и более быстрый способ. 24 такта на 8 точек. Но иcпользуется указатель стека SP и надо повторить эти команды для каждых 8 точек:
pop de
ld (hl),e
ld (hl),d

Получается скорость 3 такта на пиксель при четырех текущих цветах на спрайт.

Lethargeek
27.06.2016, 03:25
да ёжкин кот, при записи байта в zx-экран считать оный байт на шине спектрума маской, выбирающей хайколорные пиксели из двух адресов-источников внешней памяти, с инкрементами источников или без (таким способом получается и привычное рисование заданным активным цветом или двумя); при желании можно допилить схему почти до аналога zx-poly с улучшением графики во многих игрушках вообще без правки старых графпроцедур

Nesser
27.06.2016, 08:46
да ёжкин кот, при записи байта в zx-экран считать оный байт на шине спектрума маской, выбирающей хайколорные пиксели из двух адресов-источников внешней памяти, с инкрементами источников или без (таким способом получается и привычное рисование заданным активным цветом или двумя); при желании можно допилить схему почти до аналога zx-poly с улучшением графики во многих игрушках вообще без правки старых графпроцедур

Я так понимаю в TS-CONF всё это уже есть? только в разы лучше и аппаратно?

Hacker VBI
27.06.2016, 11:34
Nesser, вкратце о формировании, довольно упрощённо, но всё же.

Изображение формируется из включенных сейчас слоёв. всего есть 5 слоёв, к которым принадлежат слои бордера, графики; а так же два слоя тайлов и три - спрайтов, вперемешку. спрайтам можно устанавливать "высоту" - отображать их под слоем тайлов, или над ним, первым или вторым. Так как 0й цвет для тайлов и спрайтов является прозрачностью, система учитывая это всё собирает текущую линию для показа.
ещё есть координаты положений на экране этих слоёв, и координаты спрайтов на экране.
дабы включить отображение тайлов - нужно установить один бит в порте, да задать графику для тайлов (один тайл - 8х8 точек), и сформировать номера в тайловой памяти (а это просто один из банков памяти, в котором указаны - какие тайлы и как отображаются. например - перевёрнутые по оси Х и У, и с нужной палитрой)
а что-бы показать спрайт - нужно указать на его банк с графикой в порте, графика точно такая же как и для тайлов; потом нужно сформировать описатель спрайта - какого размера, нужно ли его переворачивать, какой номер палитры для него, и отправить эту дату в спрайтовую память системы.

подготовка к отображению может показаться громоздкой, но обработку данных и отображение мы получаем уже практически бесплатно - меняешь Х и У для спрайта, отправил в память - спрайт уже сдвинулся.
кроме того, ты можешь заюзать нужное тебе количество экранов для отображения графического слоя, или большой набор тайловых карт, в которых уже всё задано при старте.

опять же, скроллинг графического экрана или одного из тайловых слоёв - это просто запись нового значения в порт, указывая нужную позицию для вывода. как по Х так и по У
+ имеем 256 цветов, 5 бит на цвет, и 16 палитр для режимов 16цветов, или же одну для режима 256
+ текстовый режим
+ к этому есть ДМА для переброски данных, которая не занимает процессор. указал чо куда слать, указал как выравнивать данные или накладывать их поверх старых - и начинай себе считать процессором, дма в это время уже шлёт с бешенной скоростью :)

http://prods.tslabs.info/screens/cfparallax.png
вот эта штука (http://prods.tslabs.info/files/cfparallax.7z) - это 4 слоя - графика, 2 тайла и спрайты. проц при прокрутке занят на 2%.

... да много чего реализовано. очень много дем в некоторых эффектах используют 14мгц процессора лишь на 10% - для плеера, указания пересылки дма, да небольших выводов в порты, всё.

опять же, сложный расчётный эффект выполняется на 14 мгц, причём используя встроенный 512 байтный кеш, который многократно ускоряет выполнение небольших участков кода.
к тому же, при необходимости ты можешь задать нужное количество прерываний, указав им место на экране для прихода, и там их обрабатывать. например, одно прерывание приходит в начале экрана, а второе - сразу за нижней строкой экрана.
либо же прерывание будет приходить каждую строку экрана...

в общем, TS-CONF - это глобальная и обширная надстройка над пентагоном.
и пусть по началу это выглядит довольно угрожающе :v2_dizzy_roll:, погрузившись в то как система работает - вдруг понимаешь её философию и видишь огромный спектр её применения, сразу лезут идеи, начинаешь их пробовать, и открывается огромный спектр возможностей! :v2_dizzy_heart:

Nesser
27.06.2016, 15:06
for Hacker VBI

Ага спасибо, я талмуды уже читаю на которые ты ссыли дал, если честно то лет 10 ничего не кодил, только PIC`и :)
Penteva пока нет но в перспективе скоро возьму, жаль только что IDE слот видеодаком займётся.

Да не так там и всё угрожающе, по сравнению с ПЦ в тс-конф я уже за ночь немного разобрался :)
Я так понимаю и строчный INT заюзан? супер, звук 15,625 кГц :)

- - - Добавлено - - -

Осталось ещё MUL и DIV хотя бы на плисине через порты, и вообще сказка будет.

Lethargeek
27.06.2016, 20:37
Я так понимаю в TS-CONF всё это уже есть? только в разы лучше и аппаратно?
Как я понял, именно такого там нет, там обычная надстройка-неспектрум (антиспектрум даже можно сказать), а не обобщение zx-графики. И вообще в нынешних условиях (при доступности больших объёмов скоростной памяти) аппаратные спрайтайлики это зло, их стыдиться надо, а не пиарить :)

s_kosorev
27.06.2016, 21:11
Раз такая пьянка, почему не сделать видеокарту, которая любой спектрум будет превращать в TS-CONF ? Самое сложное это поддерживаемый стандарт, а тут уже все есть в рамках одного компьютера, осталось распространить на все

Nesser
27.06.2016, 22:58
Раз такая пьянка, почему не сделать видеокарту, которая любой спектрум будет превращать в TS-CONF ? Самое сложное это поддерживаемый стандарт, а тут уже все есть в рамках одного компьютера, осталось распространить на все

Поддерживаю, только треба систематизация :)

- - - Добавлено - - -


Как я понял, именно такого там нет, там обычная надстройка-неспектрум (антиспектрум даже можно сказать), а не обобщение zx-графики. И вообще в нынешних условиях (при доступности больших объёмов скоростной памяти) аппаратные спрайтайлики это зло, их стыдиться надо, а не пиарить :)

А спрайттайлики это не зло :) это всего лишь переброска данных с одного места на другое с некоторым условием, то есть DMA.

Антиспектрум это ты сильно сказал :)
Но есть слишком много НО.....то что был разработан ZX-Spectrum это спасибо Синклеру, то что там был использован Zilog 80 (а если быть точнее то Z80CPU) сильно модифицированный по отношению к Intel 8080 спасибо Фаджину, который слинял из Intel`а, а вот то что НИКТО НЕ СОИЗВОЛИЛ использовать Z80CTC, Z80SIO, Z80PIO, Z80DMA, Z80DART это кому спасибо сказать? это же был комплект....

Z8400 - Z80 CPU, микропроцессор
Z8410 - Z80 DMA, контроллер прямого доступа к памяти
Z8420 - Z80 PIO, контроллер параллельного интерфейса
Z8430 - Z80 CTC, счётчик-таймер
Z8440, Z8449 - Z80 SIO, контроллер последовательного интерфейса
Z8470 - Z80 DART, асинхронный последовательный приёмопередатчик

И частота CPU в те года была не 3,5 а 8-10, а позже и все 20-24, а всё потому что матушка лень отвергала все попытки тащить платформу в ногу со временем, кто мешал поднять частоту CPU до 7 МГц изначально? да никто, кто мешал поставить Z8410 из самого процессорного комплекта и забыть про LDIR как про страшный кошмар ?
И получается что при любой попытке что-то улучшить в платформе которая МАЛОСТЬ не уложилась во временнЫе ворота, слышишь в ответ - неспектрум, антиспектрум.
Спектрум это платформа, и если напайка ру5 в 4 этажа почему то считается грехом то тогда и Celeron slot 1 убил концепцию ПЦ.
Года идут, плотности чипов увеличиваются, если есть возможность запихать россыпь спектрума в один мост то почему бы этого не сделать, но толку то от этого если ничего приличного всё равно на нём не сделать, да и неприличного тоже, любой телефон за 100 рублей во много раз помощнее будет, поэтому вариант остаётся только *ОДИН* - улучшить платформу, звук улучшили, хоть и топорно, графику тоже, разрешение тоже, + текстовый режим для редакторов, сердце спектрума забилось, медленно, медленно но он начал карабкаться из ямы забытия.
Моё мнение что TS-Conf надо продвигать, упёрлись в мощность плисины, нууу, было бы желание а плисины и две поставить можно.

Lethargeek
28.06.2016, 03:25
А спрайттайлики это не зло это всего лишь переброска данных с одного места на другое с некоторым условием, то есть DMA.
зло - неоправданные ныне традиционные ограничения тайлоспрайтов, современной элементной базы давно хватает на dma без этих ограничений
но у людей в головах засело, что спрайты - круто, ибо было круто ...дцать лет назад, когда зеленее была трава (тоже в своём роде синдром утёнка))


Антиспектрум это ты сильно сказал
спектрум это максимальная простота и свобода обращаться с видеопамятью
антиспектрум - навороты с кучей настроек и мануалы, повергающие в уныние


НИКТО НЕ СОИЗВОЛИЛ использовать... кто мешал поднять частоту... кто мешал поставить...
вероятно, жаба дяди Клайва мешала ставить :) даже память самую дешёвую подобрали, уж какие там "изначально 7 мгц"


И получается что при любой попытке что-то улучшить в платформе которая МАЛОСТЬ не уложилась во временнЫе ворота, слышишь в ответ - неспектрум, антиспектрум.
а какой еще должен быть ответ "любой попытке" приляпать "что-то" (вместо улучшения привычного в духе Спектрума)

Hacker VBI
28.06.2016, 11:07
Lethargeek, да весь стандартный спектрум это сплошное ограничение.
а конфа лишь расширяет "спектр спектрума" :)
и, естественно, тоже с кучей ограничений, что привычно и полезно кодеру :))

другое дело, что она неплохо сбалансирована в отношении скорости процессора / производительности вывода на экран / скорости работы с памятью.

и, ещё раз: это - надстройка над пентагоном.
берём ааа с его запиляторами, грузим всё в память, добавляем менеджер 4метров и отстраиваем времянки для частей:

http://www.youtube.com/watch?v=YL08qnzfPJo
и вместо мегадемо получаем трекмо.

короч, можно называть это как угодно, но базово - это такой же синклер как и любой в 96ом.
вот почитайте идеи ALEX RAIDER из FLASH в 97ом году (http://hype.retroscene.org/blog/misc/336.html)
всё это оказалось в тс-конф, пусть и какими-то другими путями, пусть и иначе реализовано чем он думал, но оно есть, и есть ещё больше чем писал алекс.
что меня просто шокировало, когда я прочитал его статью.
вот как назвать "Его спектрум"? антиспектрумом? ;)

Nesser
28.06.2016, 20:53
Оригинальная платформа спектрума как минимум 20 лет назад упёрлась в свой возможный потолок, будем вспоминать те весёлые молодые годы? сколько вспоминать будем? пока не сдохнем? так тут осталось то.....или всё же что-то надо делать?
После изучения TS-CONFIG становиться ясно что это обычный пентагон с зубными протезами, теперь он хотя бы жевать может.

Lethargeek
28.06.2016, 20:57
Lethargeek, да весь стандартный спектрум это сплошное ограничение.
Спектрум - это безграничная свобода доступа к растру (и как следствие - определённые традиции программирования). В эту сторону в нём нечего расширять. Скорость сносная, но можно и подтянуть. Беда с цветностью и размером растрового окна - вот где свободное пространство для расширения.


а конфа лишь расширяет "спектр спектрума"
и, естественно, тоже с кучей ограничений, что привычно и полезно кодеру :))
Добавление несвойственного Спеку - не расширение (расширять можно только существующее до этого), а попытка переделки в другой компьютер, лично мне как кодеру на Спеке неинтересный (сколько их уже готовых с кучей софта)


короч, можно называть это как угодно, но базово - это такой же синклер как и любой в 96ом.
ага, синклер + какой-то новый другой компьютер (отношение к которому см. выше)


вот почитайте идеи ALEX RAIDER из FLASH в 97ом году
всё это оказалось в тс-конф,
Что "всё" это?? Мы сейчас о графике говорим, и при чём тут этот сумбурный текст, где про графику почти ничего не сказано, ичсх ни слова про тайлоспрайты и тому подобную хренотень, ни даже про цвет на точку и битность цвета, упомянут только самый примитивный dma и виртуальная раскладка ради него.


пусть и какими-то другими путями, пусть и иначе реализовано чем он думал, но оно есть,
"оно есть, хоть это и не оно" :D


вот как назвать "Его спектрум"? антиспектрумом?
россыпью хотелок и пожеланий разной степени полезности и оправданности

Nesser
28.06.2016, 21:11
А что скажешь про интернет на спектруме? надо ли оно? или это тоже антиспектрум? :)
http://zx-pk.ru/content/152-Internet-dlia-ZX-Evo-Beri!

- - - Добавлено - - -

Сколько мечтали о том что бы через спектрум можно было заходить на собственные форумы, хранилища и чаты, вот, теперь можно, осталось только развивать всё это, при чём это всё на ОРИГИНАЛЬНОМ Z80.

Lethargeek
28.06.2016, 21:26
Nesser, где ты там увидел инет НА СПЕКТРУМЕ? оболочка требует антиспектрум :v2_rolley

Nesser
28.06.2016, 22:05
Ой ли, спектрум разучился слать в ком порт АТ команды на вифи модуль? на моём ленинграде ком порт висел 20 лет назад, по нему при помощи транслятора 232-485 между домами файлы пересылались с спектрума на спектрум.
Только не говори что ленинград с ком портом это антиспектрум.

Lethargeek
29.06.2016, 20:10
Nesser, хоть бы ссылку собственную прочёл, дело не в портах

Nesser
30.06.2016, 13:14
Ээээ, так я прочитал, да и не моя это ссылка :)
И видео посмотрел.

А что там в этой ссылке не так?

Hacker VBI
30.06.2016, 13:30
кому-то шашечки, а кому то и ехать :)

s_kosorev
30.06.2016, 16:29
где ты там увидел инет НА СПЕКТРУМЕ? оболочка требует антиспектрум
Гм, если сделать видеокарту по твоим мотивам, то внезапно оболочка не понадобиться? А если кто то сделает оболочку, сразу станет "антиспектрум" ?

Nesser
30.06.2016, 20:28
Я когда то на спектруме делал некое подобие примитивной винды с файловым менеджером, может даже кому то попадался сам файловый менеджер с встроенным вьювером и плеером, даже какую то сжималку туда впихивал. То есть получается что если кто-то запустил на спектруме файловый менеджер то спектрум сразу мутирует в антиспектрум?

HardWareMan
30.06.2016, 20:45
Nesser, нет, require more vespen gas!

Sayman
30.06.2016, 21:00
оболочка она и в Африке оболочка. возьмите старую Ларку или Е-Мейдж ворк стайшн (или как он атам обзывалась) и допилите до уровня вайфайной оболочки)) какой антиспектрум?

Nesser
30.06.2016, 21:13
Nesser, нет, require more vespen gas!

StarCraft ? or laughing vespen gas ?

- - - Добавлено - - -


оболочка она и в Африке оболочка. возьмите старую Ларку или Е-Мейдж ворк стайшн (или как он атам обзывалась) и допилите до уровня вайфайной оболочки)) какой антиспектрум?

Вот и я про то же :) дык и буты тоже оболочки :)

Lethargeek
30.06.2016, 21:46
А что там в этой ссылке не так?
то, что для такого доступа, как по ссылке, мало лишь уметь "слать в ком порт АТ команды на вифи модуль"


кому-то шашечки, а кому то и ехать
просто "ехать" - это на песюке, а здесь за самые правильные шашечки весь базар :v2_finge:


Гм, если сделать видеокарту по твоим мотивам, то внезапно оболочка не понадобиться?
нет, конечно, с чего вдруг вообще наличие оболочки нестандартного графрежима должно быть обязательным условием для инета?


А если кто то сделает оболочку, сразу станет "антиспектрум" ?
смотря для какой конфигурации оболочка ("по моим мотивам" - Спектрум, хоть и расширенный)

Hacker VBI
01.07.2016, 10:03
ой, да вы, главное, пилите побольше.
поговорить это дело, но только в процессе, а не ВМЕСТО ;)

Nesser
03.07.2016, 09:38
Интересно, а Core i7 с встроенным ядром видеокарты против Celeron является антиПЦ или нет?

Lethargeek
03.07.2016, 13:59
:v2_dizzy_facepalm: ну при чём тут встроенность вообще? речь об (анти)способах программирования

s_kosorev
03.07.2016, 15:57
Можно пояснить. Что такое антиспособ программирования? Что то на маразм смахивает

Eagle
03.07.2016, 16:28
речь об (анти)способах программирования
Это не речь, а демагогия.

Lethargeek
03.07.2016, 19:35
Можно пояснить. Что такое антиспособ программирования?
антиспособЫ - противоположные, меж собой принципиально различные


Это не речь, а демагогия.
что конкретно "демагогия"? абаснуй, или сам такой :p

Eagle
03.07.2016, 20:17
или сам такой
В отличие от некоторых про антиспектрумы не заливаю.

s_kosorev
04.07.2016, 00:58
антиспособЫ - противоположные, меж собой принципиально различные
т.е. поставить на видеокарту sdram 32мб и ARM на 180МГц, при этом что бы в памяти изображение формировалось исключительно программно это тру спектрумовский не антиспособ программирования?
Или есть еще какие то требования?

Nesser
04.07.2016, 08:06
Так а если на минутку задуматься то к примеру Radeon HD 6970 в пару тысяч раз мощнее Core i7-2700k.
У меня знакомый сдавал экзамены в ЗИПовском технаре и сделал комп чисто из какой то старой AGP видюхи с BIOSом на ней же, вместо BIOS прошил миниОС с файловым менеджером, всё работало только на видеопроце.

Может этот вариант "антиспособ" ?

s_kosorev
04.07.2016, 10:02
чес, AGP не имеет доступ к портам матери к памяти имеет доступ только там где AGP бриджем дали, тобишь пока проц бридж не настроит, вообще к памяти доступа не будет, не говоря о том что контролер памяти нужно предварительно настроить

zx-kit
04.07.2016, 22:59
Подумываю поставить две SDRAM, чтобы читать и писать можно было сразу по 32 бита. Стоимость и сложность прошивки увеличится, зато увеличится и скорость. Запись и чтение для буфера VGA будет быстрее в 2 раза. Так как SRAM по 16 бит, то записывать спрайт можно будет с точностью до точки. Это также упростит аппаратный скроллинг.

SRAM 256K bit x 2 шт., шина данных 16 битов. Суммарный объем 1 MB.
SDRAM 4Mx16 bit x 2 шт., шина данных 32 бита. Суммарный объем 16 MB.
Шина адреса у SRAM и SDRAM обшая.

Nesser
05.07.2016, 16:08
чес, AGP не имеет доступ к портам матери к памяти имеет доступ только там где AGP бриджем дали, тобишь пока проц бридж не настроит, вообще к памяти доступа не будет, не говоря о том что контролер памяти нужно предварительно настроить

Я видел только готовое устройство, видюха на которой припаяна небольшая плисина, лежит на столе, к ней подключен монитор и бп, работает самопальное демо...остальными нюансами я не интересовался :)

- - - Добавлено - - -


Подумываю поставить две SDRAM, чтобы читать и писать можно было сразу по 32 бита. Стоимость и сложность прошивки увеличится, зато увеличится и скорость. Запись и чтение для буфера VGA будет быстрее в 2 раза. Так как SRAM по 16 бит, то записывать спрайт можно будет с точностью до точки. Это также упростит аппаратный скроллинг.

SRAM 256K bit x 2 шт., шина данных 16 битов. Суммарный объем 1 MB.
SDRAM 4Mx16 bit x 2 шт., шина данных 32 бита. Суммарный объем 16 MB.
Шина адреса у SRAM и SDRAM обшая.

Рано ещё 32 бита, надо доделать саму концепцию, скорость и ширину я думаю всегда можно увеличить :)

Проц всё равно с шиной 8 бит, если только конечно взять 2 штуки по 20-28 Мгц и через буфера адреса и данных через такт подключать их к памяти, по сути могут работать в одной памяти вдвоём.
Или сделать как переходной целерон был, на плате, по сути втыкаешь в системный разъём платку на которой проц или плис.
И пзу при старте надо скидывать в озу, иначе тормозогло будет на шине висеть да и в барсике систему притормаживать будет.
В пентево пзу в озу скидывается или по вайту работает?

s_kosorev
05.07.2016, 16:32
SDRAM 4Mx16 bit x 2 шт., шина данных 32 бита. Суммарный объем 16 MB.
DDR2 (DDR не удобно, там согласование веселое в DDR2 в этом плане проще) можно взять, на тех же 16bit в 2 раза больше пропускной канал, к тому же DDR буфера поддерживаются аппаратно очень широким диапазоном fpga у альтеры к примеру начиная с первого циклона если брать семейство циклонов, в новых max10 которые вроде как cpld тоже есть поддержка ddr

zx-kit
05.07.2016, 18:43
Рано ещё 32 бита, надо доделать саму концепцию, скорость и ширину я думаю всегда можно увеличить :)

Проц всё равно с шиной 8 бит, если только конечно взять 2 штуки по 20-28 Мгц и через буфера адреса и данных через такт подключать их к памяти, по сути могут работать в одной памяти вдвоём.
Или сделать как переходной целерон был, на плате, по сути втыкаешь в системный разъём платку на которой проц или плис.
И пзу при старте надо скидывать в озу, иначе тормозогло будет на шине висеть да и в барсике систему притормаживать будет.
В пентево пзу в озу скидывается или по вайту работает?
Я писал про ускорение записи в буфер VGA перед выводом на VGA. Картинка в этот момен уже в статической памяти. Z80 свою работу в этот момент уже сделал. Его разгонять не надо и его ширина 8 бит не связана с работой SDRAM. Там читаться будет сразу по две точки по 16 бит.

Lethargeek
05.07.2016, 20:22
В отличие от некоторых про антиспектрумы не заливаю.
ты здесь заливаешь про демагогию, не потрудившись даже перед этим взглянуть в словарь


т.е. поставить на видеокарту sdram 32мб и ARM на 180МГц
да какая разница, что поставить, нас наблюдаемый результат работы интересует
как владельцев клонов интересовал не подбор деталек, а нормальная работа фирменного софта


при этом что бы в памяти изображение формировалось исключительно программно
примитивная вульгаризация; мера - в степени переиспользования навыков и приёмов низкоуровневого кодинга спектрумистом
(в пределе - да, вплоть до копипасты старого кода) и резкости перехода от стандартной графики к расширению
неплохой практический критерий оценки степени - удобство модернизации старых игр

Eagle
06.07.2016, 21:53
ты здесь заливаешь про демагогию, не потрудившись даже перед этим взглянуть в словарь
Вот её от вас и имеем, как там и написано.

Nesser
07.07.2016, 18:02
Пока мы тут спектрум от антиспектрума отделяем наручные часы уже на 8-ядерные процессоры перевели :)

vwarlock
14.07.2016, 13:31
Я извиняюсь за оффтоп, но очень хочется услышать ответ от уважаемого zst!

Есть много людей, которые заказывали разные конструкторы ZX-KIT, оплатили их и не получили! Причем по году и больше уже ждут.
На почту он не отвечает, на форуме market.zx-pk.ru тоже.
Причем здесь на основном форуме появляется регулярно!

Люди согласны подождать, если им объективно объясняют почему!
А так получается заказ принял (причем, если сделать новый заказ с нового почтового адреса он отвечает: да, да оплачивайте, все есть в наличии -ожидайте посылку, а после оплаты молчит!)
деньги получил и в кусты?

Вобщем, получается очень некрасиво, мягко говоря!

Надеюсь мое обращение будет услышано и будет реакция на него.

Еще раз приношу свои извинения!

zx-kit
16.07.2016, 16:45
Отправка нескольких заказов сильно задерживается. Причина в моей неорганизованности.
То схема вовремя не до конца нарисована.
То печатная плата не до конца разведена.
То прошивка для микроконтроллера или FPGA не сделана.
То детали не заказаны.
То устройство не до конца допаяно.
То устройство не промыто.
То устройство не прошито.
То устройство не проверено и не упаковано.
То тратится много времени на поиск и комплектацию деталей среди множества коробок.
То деталей не хватает и нет денег для их покупки.
То нет времени или здоровья допаять начатые заказы.
То нет денег сходить на почту.
То нет денег для заказа печатных плат.
То электронная почта не проверена.
То не захожу долго на форум.
То не знаю, как что-то сделать.
...


Сейчас привожу дела в порядок. Вы могли бы подсказать мне, как лучше организовать работу, чтобы в будущем клиенты были довольны покупками в интернет-магазине «ZXkit».


Требуется ли разработать какое-нибудь устройство или доработать существующее ?
Может некоторые конструкторы уже не надо выпускать ? Почему ?
Как лучше организовать доставку конструкторов ?
Как сообщать информацию по новым конструкторам ?
Как организовать ценообразование ?
На каких форумах лучше писать об устройствах для ZX Spectrum, чтобы окупить разработку и изготовления устройства для себя и затраты на комплектующие ?


Ведь увлечение ZX Spectrum-ом — это, в первую очередь, хобби, за во вторую — бизнес. Приветствуются любые замечания и советы. Могу ли я вам помочь советом или информацией по теме «ZX Spectrum»-а ?

ZXFanat
16.07.2016, 18:00
Отправка нескольких заказов сильно задерживается. Причина в моей неорганизованности.
То схема вовремя не до конца нарисована.
То печатная плата не до конца разведена.
То прошивка для микроконтроллера или FPGA не сделана.
То детали не заказаны.
То устройство не до конца допаяно.
То устройство не промыто.
То устройство не прошито.
То устройство не проверено и не упаковано.
То тратится много времени на поиск и комплектацию деталей среди множества коробок.
То деталей не хватает и нет денег для их покупки.
То нет времени или здоровья допаять начатые заказы.
То нет денег сходить на почту.
То нет денег для заказа печатных плат.
То электронная почта не проверена.
То не захожу долго на форум.
То не знаю, как что-то сделать.
...


Сейчас привожу дела в порядок. Вы могли бы подсказать мне, как лучше организовать работу, чтобы в будущем клиенты были довольны покупками в интернет-магазине «ZXkit».


Требуется ли разработать какое-нибудь устройство или доработать существующее ?
Может некоторые конструкторы уже не надо выпускать ? Почему ?
Как лучше организовать доставку конструкторов ?
Как сообщать информацию по новым конструкторам ?
Как организовать ценообразование ?
На каких форумах лучше писать об устройствах для ZX Spectrum, чтобы окупить разработку и изготовления устройства для себя и затраты на комплектующие ?


Ведь увлечение ZX Spectrum-ом — это, в первую очередь, хобби, за во вторую — бизнес. Приветствуются любые замечания и советы. Могу ли я вам помочь советом или информацией по теме «ZX Spectrum»-а ?
Такой алгоритм поведения и действий!!!!!

Схема вовремя и до конца нарисована.
Печатная плата до конца разведена.
Прошивка для микроконтроллера или FPGA сделана.
Детали заказаны.
Устройство до конца допаяно.
Устройство промыто.
Устройство прошито.
Устройство проверено и упаковано.
Нет оснований ссылаться на то, что тратится много времени на поиск и комплектацию деталей среди множества коробок.
Деталей хватает и есть деньги для их покупки.
Есть время допаять начатые заказы.
Есть деньги сходить на почту.
Электронная почта проверена.
Захожу часто на форум.
Всегда знаю, как и что делать.

Smalovsky
16.07.2016, 20:16
Зэтиксфанат, а здоровье где взять человеку?..
ЗСТ, не делай все один. Попробуй привечь к труду еще людей. Можешь, нанять студентов на подработку за небольшую плату, хотя бы для доставки деталей с почты, промывки плат и пайки.

Ovvnex
16.07.2016, 20:32
То нет денег сходить на почту.
Это как? Народ же, насколько я понимаю, переводит полную стоимость с учетом доставки. Или у вас вход на почту платный? :)


Зэтиксфанат, а здоровье где взять человеку?..
Тогда остается только два варианта: или совсем не заниматься производством и выключить помпезный, но неработающий сайт, или, по крайней мере, регулярно просматривать почту и темы на форумах и решать проблемы с каждым заказчиком индивидуально и оперативно. А уж если здоровья не хватает даже на просмотр почты, то... см. вариант 1.

vwarlock
18.07.2016, 12:31
То схема вовремя не до конца нарисована.
То печатная плата не до конца разведена.
То прошивка для микроконтроллера или FPGA не сделана.
То детали не заказаны.
То устройство не до конца допаяно.
То устройство не промыто.
То устройство не прошито.
То устройство не проверено и не упаковано.
То тратится много времени на поиск и комплектацию деталей среди множества коробок.
То деталей не хватает и нет денег для их покупки.
То нет времени или здоровья допаять начатые заказы.
То нет денег сходить на почту.
То нет денег для заказа печатных плат.
То электронная почта не проверена.
То не захожу долго на форум.
То не знаю, как что-то сделать.
...

Выглядит как насмешка и издевательство!
Ладно такое происходит с готовыми устройствами, но с конструкторами-то как?
Ведь предоплата 100%! Да и в письме говориться: "Все есть в наличии..."
И на письма тоже ответов нет!.
Ну и да, если что-то не выходит - извинись, верни деньги.

И еще, получется, что все те кто не получил свои заказы оплачивают разработку и создание новых, возможно интересных и кому-то нужных (но не им!) устроиств!
А это, как мне кажется, делается совершенно не так, а, например, так:
1. Выясняется спрос
2. целенаправленно собираются деньги
3. начинается процесс разработки.
4. .....

zx-kit
02.08.2016, 06:13
Здравствуйте.


Новые заказы временно не принимаются. Сначала надо доделать старые.


На данный момент спаяны и промыты плата ByteBlaster MV и три платы VGA&PAL. Осталось их прошить и проверить.


Затем перейду к завершению других заказов.


C уважением, Вадим Сабиржанов.

------------------------------------------------
В концепции видеокарты "METEOR" произошли изменения.
Видеовыход будет RGB с частототой развертки телевизора или VGA 50 Hz (скандаблер).
1 этап - устранение клешинга атрибутов.
2 этап - добавление 7 слоев для рисования изображений на разных планах. Примерное распределение слоев показано на рисунке.
Это позволит аппаратно сдвигать один слой без необходимости перерисовывать изображение на других.
Рисование тайлов и спрайтов программаное. Количество цветов в спрайте/тайле = 4 из 32768. Любой из четырех можно сделать прозрачным.





http://savepic.ru/10787073.png

s_kosorev
02.08.2016, 10:48
У растровых слоев есть один минус. Даже если он на 99% прозрачный с одним спрайтом, занимающим 1% читать нужно все 100% слоя. Можно частично обходить оверлеями. Но это выход для интерфейсных вещей к примеру

zx-kit
03.08.2016, 05:08
У растровых слоев есть один минус. Даже если он на 99% прозрачный с одним спрайтом, занимающим 1% читать нужно все 100% слоя. Можно частично обходить оверлеями. Но это выход для интерфейсных вещей к примеру

Это выбор программиста, что рисовать на слое - один спрайт курсора для игры типа "DUNE", игровое поле в играх типа "JACKAL" или здания в играх типа "ЧЕРНЫЙ ПЛАЩ".
Видеокарта просто выполняет чтение всех слоев по точке, определяет результирующий цвет и отправляет его на телевизор.

Lethargeek
04.08.2016, 01:06
Это выбор программиста, что рисовать на слое
а у карты выбора уже нет и зря читать приходится тупо всё))

Nesser
08.08.2016, 22:05
То есть, если первых 6 слоёв прозрачные а на 7 что-то нарисовано, то карта будет перечитывать все 7 слоёв?
А если я хочу на последний слой поставить картинку с 4096 цветами на точку, а на первых 6 слоях рисовать ништяки, то так получиться?

zx-kit
09.08.2016, 05:39
То есть, если первых 6 слоёв прозрачные а на 7 что-то нарисовано, то карта будет перечитывать все 7 слоёв?
А если я хочу на последний слой поставить картинку с 4096 цветами на точку, а на первых 6 слоях рисовать ништяки, то так получиться?
Все 8 слоев по 16 бит на точку. Точка может иметь один цвет из 32768 или быть прозрачной.

Слои для упрощения программирования. Допустим, мы хотим сделать игру типа "Aladdin".



http://www.youtube.com

В начале видео картинка с названием игры и разработчиками. Это на втором плане. А на первом летают звездочки и джин. Проще их рисовать на двух разных слоях.

В самой игре можно разделить изображение на несколько планов:

1. Лампа, жизни, очки.
2. Большие столбы и маленькие столбики.
3. ГГ (Аладдин) и враги.
4. Мелкие предметы (яблоки, кувшины, веревка и т.п.)
5. Стены города.
6. Пески за стенами города.
7. Облака.

Программисту проще рисовать изображения разных планов на разных слоях. Поэтому в видеокарте надо сделать 8 слоев в SRAM.
Частота точек на телевизоре 7 MHz. Частота SRAM до 100 MHz. Выберем 7*14=98 MHz. Пока на телевизоре изображается одна точка видеокарта сможет прочитать 14 слоев графики по 16 бит на точку.

s_kosorev
09.08.2016, 14:37
астота SRAM до 100 MHz. Выберем 7*14=98 MHz. Пока на телевизоре изображается одна точка видеокарта сможет прочитать 14 слоев графики по 16 бит на точку.
Это если 100% ковеер SDRAM загрузить, если по ходу луча читать, то не факт что и 8 успеет. Нужно будет как минимум целыми строками вычитывать, причем блочным режимом.

HardWareMan
09.08.2016, 15:57
Для этого есть DRAM с последовательным интерфейсом. Например, в той же древней Sega MegaDrive стоит DRAM с SIO портом. Один RAS-CAS цикл вычитывает целую строку матрицы, которая потом потактово выталкивается на SIO порт, освобождая шину данных для CPU.

s_kosorev
09.08.2016, 15:58
Да page моде уже столет умеют многие dram, даже если маразм не покрутил и ру7 какие то

HardWareMan
09.08.2016, 16:10
PAGE Mode занимает шину данных и порция данных выдается не каждый такт а каждый CAS цикл, что несомненно длиннее. Ознакомься со вложением. Уверен, есть что-то современное. Иначе проектировщики мощных видеокарт делают это наращиванием разрядности ОЗУ (старые ISA VGA были 32 бита иногда попадались даже 64 бита, и они поддерживали большие разрешения).

s_kosorev
09.08.2016, 16:22
у DRAM нет тактового сигнала у SDRAM так же есть page mode

- - - Добавлено - - -

2х портовая память дорогая.

Lethargeek
09.08.2016, 19:27
Все 8 слоев по 16 бит на точку. Точка может иметь один цвет из 32768 или быть прозрачной.
Ахренеть! ТАК разбазаривать ПСП ради пародирования графики древних 16-битных консолей?! :v2_dizzy_facepalm:


Слои для упрощения программирования. Допустим, мы хотим сделать игру типа "Aladdin".
В начале видео картинка с названием игры и разработчиками. Это на втором плане. А на первом летают звездочки и джин. Проще их рисовать на двух разных слоях.
В самой игре можно разделить изображение на несколько планов:
Мляяяяяя... ну и чем возня со стопкой слоёв проще отрисовки с наложением в один слой? :v2_dizzy_wall:
Почему ты упорно хочешь проимитировать аппаратные ОГРАНИЧЕНИЯ старых схем?
Аппаратные слои на консолях нужны были, чтоб у тайлов разных планов был разный сдвиг.
В схеме "произвольный цвет на точку" это НЕ НУЖНО!


Программисту проще рисовать изображения разных планов на разных слоях. Поэтому в видеокарте надо сделать 8 слоев в SRAM.
Назови нам имя этого программиста)) потому что мне, другому программисту, это не проще. Мне вот, как программисту, нужен нормальный блиттер.


Частота точек на телевизоре 7 MHz. Частота SRAM до 100 MHz. Выберем 7*14=98 MHz. Пока на телевизоре изображается одна точка видеокарта сможет прочитать 14 слоев графики по 16 бит на точку.
А теперь подумай о том, что каждый цикл, потраченный отображалкой на чтение ненужного слоя - это цикл, отобранный у графического движка (в это время формирующего картинку в теневом буфере)

vwarlock
09.08.2016, 20:27
Здравствуйте.


Новые заказы временно не принимаются. Сначала надо доделать старые.


На данный момент спаяны и промыты плата ByteBlaster MV и три платы VGA&PAL. Осталось их прошить и проверить.


Затем перейду к завершению других заказов.


Для меня все решилось:
Уважаемый ZST ответил на письма, выслал конструктор и я его уже получил.

Еще раз извиняюсь за офтоп.

zx-kit
09.08.2016, 23:18
Мляяяяяя... ну и чем возня со стопкой слоёв проще отрисовки с наложением в один слой? :v2_dizzy_wall:
...

Назови нам имя этого программиста)) потому что мне, другому программисту, это не проще. Мне вот, как программисту, нужен нормальный блиттер.

Про пользу слоев:

"...В общем 3 слоя уже здорово, а 4 - вообще роскошь была бы. И 3.5МГц по за глаза хватило бы..."
(Vladimir Kladov писал тут) (http://zx-pk.ru/threads/579-a-vot-esli-by-togda.html?p=10238&viewfull=1#post10238)

"... Для этого надо 8 слоев: фон, передний план (статичные) и по три слоя на ГГ и охранников: отображаемые и отрисовываемые..."
(Alex Rider писал тут (http://zx-pk.ru/threads/25296-novyj-graficheskij-rezhim-dlya-igr.html?p=824998&viewfull=1#post824998))

"...Решили сделать пять аппаратных слоев графики. В каждом слое объекты также смогут накладываться. Дальше на усмотрение программиста, как лучше использовать эти возможности. Потом в этих же слоях попробуем добавить и блиттер..."
(zst писал тут (http://zx-pk.ru/threads/25296-novyj-graficheskij-rezhim-dlya-igr.html?p=825051&viewfull=1#post825051))

Lethargeek
10.08.2016, 00:02
zst, ну ты бы вдумывался хоть немного в то, что цитируешь. :v2_dizzy_facepalm: О "пользе" при каких условиях говорится? В незапамятные времена Кладов пишет, что слои полезны, когда памяти на 3-4 цвета в слое только хватает. А Райдер так и вовсе начинает со слов "если еще и слоев сделать сколько хочешь, было бы здорово". Так вот блиттер, не задушенный чудовищным оверхедом на чтение (всё равно кому-нибудь недостаточной) кучи аппаратных слоёв, и позволяет отрисовать себе логических слоёв "сколько хочешь" с наложением в один аппаратный слой.

zx-kit
10.08.2016, 00:37
zst, ну ты бы вдумывался хоть немного в то, что цитируешь. :v2_dizzy_facepalm: О "пользе" при каких условиях говорится? В незапамятные времена Кладов пишет, что слои полезны, когда памяти на 3-4 цвета в слое только хватает. А Райдер так и вовсе начинает со слов "если еще и слоев сделать сколько хочешь, было бы здорово".
Оба пишут, что слои облегчили бы написание игр. Один человек пишет, что хорошо бы для игр иметь 4 слоя. Второй пишет, что надо 8.

Я предлагаю 8 слоев по 2 экрана каждый. Для фона 2 экрана используются для аппаратного скроллинга. Для спрайтов - чтобы на одном экране рисовать спрайты пока второй отображается на телевизор.

- - - Добавлено - - -


"Пока процессия шагает, на хате делится шмотьё..."

А ты какие графические режимы предлагаешь ?

Nesser
10.08.2016, 01:50
Эээээммм, 100 Мгц на обработку пикселей? а как их в слои кидать? если мне надо один из слоёв полностью сдвигать на пиксель влево 50 раз в секунду, то с z80 на 7 МГц при 256x192x2 байта на цвет и 21 такт на байт, то получится 7000000/256/192/2/21 = 3.4 экрана в секунду, это только что бы задний фон двигать, а если мне там ещё и что-то на одном единственном фоне перерисовать надо? да и как я поимею доступ к 256x192x2 = 98304 байтам памяти, странички клац клац?
То есть пока я 16 кадров сдвигаю один единственный слой на 1 пиксель в сторону остальные слои красяво так стоят на месте? спрайты то перерисовать некому, и музыку не поиграть, некогда, про ии вообще можно забыть.

100 МГц классно, только на что 100 МГц ? на обработку слоёв? а read-write пикселей графики из общей памяти в память экрана сюда входит? а перечитывание слоя в целях его сдвига?

А почему нельзя сделать банальный VideoDMA который есть в любой самой дешёвой видеокарте? и память использовать не статику а динамику, она дешевле и гораздо быстрее, да и ножек на адресацию меньше.
При 100 МГц и 16 битными данными переброска на один единственный экран даст как минимум 1000 полноразмерных экрана с 32768 цветами в секунду, то есть 50 раз в секунду на экран можно нашвырять 3840 спрайтов 16x16x32768, при чём с учётом слоёв, хотя никто не запрещает ещё и несколько аппаратных слоёв сделать.

creator
10.08.2016, 17:09
А ты какие графические режимы предлагаешь ?
Вот такие (http://market.zx-pk.ru/forum/viewtopic.php?f=7&t=29).

zx-kit
10.08.2016, 17:18
Неправильно считаешь.
Z80 на частоте 3.5 MHz. В строке 224 такта Z80. Строк в кадре 312. В кадре 312 * 224 = 69888.
При аппаратном скроллинге влево на 1 точку нам надо один раз в 8 кадров дорисовывать справа столбик фона шириной 8 точек.
Одна точка тайла копируется за 3 такта Z80. Но надо еще настроить цвет и координаты. Тогда примерно 4 такта на точку.
Надо скопировать 192 * 8 точек. Это 192 * 8 * 4 = 6144 такта за 8 кадров. А за кадр 6144 / 8 = 1536 тактов из 69888.
Задние планы (горы, пески, облака) можно нарисовать один раз шириной 2 экрана и просто прокручивать для создания иллюзии движения.

s_kosorev
10.08.2016, 17:38
При аппаратном скроллинге влево на 1 точку нам надо один раз в 8 кадров дорисовывать справа столбик фона шириной 8 точек.
Одна точка тайла копируется за 3 такта Z80. Но надо еще настроить цвет и координаты. Тогда примерно 4 такта на точку.
А если задник с перспективой в 8 полос, там где аппаратный скроллер уже не доступен?


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

Единственный плюс блиттера - это можно в внеэкранном буфере подготовить кусок один раз и его потом одним махом выводить, тем самым по потреблению шины +- выйти на один уровень с спрайтовым движком

- - - Добавлено - - -

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

- - - Добавлено - - -

В общем план такой.

1. Сделать возможность показывать картой стандартную картинку.
2. Сделать менеджер памяти sdram который может работать как рандомно так и блочные пересылки понимает
3. Сделать надменеджер памяти, который сможет оперировать таким понятием как растр или текстура, как удобнее
3. Сделать блиттер, который для начала может просто копировать без маштабирования один кусок растра в другой
4. Сделать возможность выводить растр на экран, там уже по вкусу, либо заменяя картинку из п.1 либо как то смешивая
5. Впилить какое нить ядро в FPGA хоть тот же nextz80 или avr который сможет рулить блиттером и вообще иметь доступ к железному содержимому карты
6. Радоваться!

zx-kit
10.08.2016, 17:48
Для скорости вместо SDRAM придется поставить 4 микросхемы SRAM общим объемом 2 M.
Один экран 256x256 точек по 16 бит = 128 К. Видимых 256х192 как у ZX Spectrum или 256x224 как у NES.

s_kosorev
10.08.2016, 19:21
SDRAM если правильно юзать, не уступает SRAM а цена/емкость не сравнимо в пользу sdram, не говоря уже о количестве ног

Lethargeek
10.08.2016, 19:44
Оба пишут, что слои облегчили бы написание игр.
Это только лозунг. Пусть обоснуют.


Один человек пишет, что хорошо бы для игр иметь 4 слоя.
Повторяю, Кладов пишет про слои на 3-4 цвета.
С чего ты решил, что его рассуждения пригодны для хайколоров?


Второй пишет, что надо 8.
Повторяю, а второму еще больше нравится "сколько хочешь"
С чего ты решил, что 8 аппаратных слоёв лучше, чем программных "сколько получится"?


Я предлагаю 8 слоев по 2 экрана каждый.
Просто "предлагать" любой умеет - ты обоснуй (с расчётами, сколько в каждом случае успеем отрисовать)


Для фона 2 экрана используются для аппаратного скроллинга.
Ограниченный и неудобный аппаратный скроллинг не нужен с блиттером.


Для спрайтов - чтобы на одном экране рисовать спрайты пока второй отображается на телевизор.
Всё равно придётся чистить эти слои, так почему не обойтись перезаливкой фона блиттером в одном общем? Потом сверху там же рисовать и спрайты в нужном порядке, и закончить наложением интерфейса (и при том располагая б0льшим запасом свободных циклов, не истраченных бездарно ради слоёв)


А вообще бред кучу слоев, пару слоев с головой, при наличии блиттера.
Да и в паре смысла не особо больше, чем в десяти.


Единственный плюс блиттера - это можно в внеэкранном буфере подготовить кусок один раз и его потом одним махом выводить, тем самым по потреблению шины +- выйти на один уровень с спрайтовым движком
У блиттера полно преимуществ, он может больше, и при этом вся выполняемая блиттером работа - полезная.


Для скорости вместо SDRAM придется поставить 4 микросхемы SRAM общим объемом 2 M.
Один экран 256x256 точек по 16 бит = 128 К. Видимых 256х192 как у ZX Spectrum или 256x224 как у NES.
Ну, начинается - выберем бессмысленное решение, ради него урежем характеристики :v2_dizzy_facepalm:

Sayman
11.08.2016, 05:14
Видимых 256х192 как у ZX Spectrum или 256x224 как у NES.
С этого и надо было начинать. Очередное денди/сега поделие.

zx-kit
11.08.2016, 05:48
С этого и надо было начинать. Очередное денди/сега поделие.

Основное разрешение ZX Spectrum

Sayman
11.08.2016, 08:22
когда это у Спектрума разрешение сделалось 256x224 как у NES? кому оно вообще нужно? для NES есть другой раздел и другие железки.

Hacker VBI
11.08.2016, 10:46
Есть такая игра от Дениса Грачёва как Лирус
http://prods.tslabs.info/screens/Lirus.png
в общем, я её переделывал под ТС-конфигурацию.
Для фона я использовал блиттер, заполнив ним полностью весь экран графики повторяющимися графическими паттернами. При движении корабля графический слой аппаратно скроллится в нужном направлении, и достигая макс. размера паттерна - сбрасывается в 0 позицию.
Поверх него лежат тайлы карты и обьекты игры - игровое поле. Весь этот блок - с прозрачными областями, под которыми виден "нижележащий" фон с паттернами - это тайловая карта №1, которая аппаратно отображается, я лишь меняю номера тайлов в карте.
над ней, сверху, расположены служебные элементы - радар, счёт, прочее - этим занята тайловая карта №2.

Выглядит всё это так:
http://i.imgur.com/YfUd2Kj.jpg

К чему я веду. Слои - вещь хорошая и полезная. Но это не значит что "чем больше - тем лучше".
8 штук - супер, но и на троих специализированных можно хорошо отработать.

найти саму игру можно здесь (http://prods.tslabs.info/index.php?t=2)

Продолжу.
MultiDude - два слоя, оба тайловых. на одном - вся игра, на втором - вывод текста :)
http://66.media.tumblr.com/e67f33f7b827469e87926700ab7b1a70/tumblr_inline_o39p808Sp81t3povm_500.jpg

Сaptain Drexx - два слоя. Один - тайлы игровой карты с башнями, поверх неё - спрайты крипов (врагов), взрывы.
служебная инфа - внизу экрана, в собственной служебной области.
http://viva-games.ru/wp-content/uploads/2014/09/drexx-384x288.png

Sayman
11.08.2016, 11:52
Hacker VBI, ты про этот (https://www.youtube.com/watch?v=GCQpq8TIoxU) Lirus на ТС-конфе говоришь?
отбой. запустил в эмуле. сильно отличается, но если честно, не понятно, ожидал увидеть супер быстрый вывод спрайтов, типа, фрейм и всё такое. Но что-то нету фреймовости...

- - - Добавлено - - -

и вапще, когда уже 3д ускорители будут на спектруме?!))))

Hacker VBI
11.08.2016, 12:07
Sayman, про этот :)
я постарался максимально сохранить существующий геймплей, и сделал обвязку под другое видео.
а то вышла бы совсем другая игра.

фрейм? всё там нормально

Sayman
11.08.2016, 12:31
Hacker VBI, ну если эмуль не врёт, то я бы сказал, что игра не успевает всё нарисовать во фрейм. т.е. там ясно не 50 фпс, на глаз, я бы сказал, около 20, наверное. хотя может эмуль не корректно что-то делает.

Hacker VBI
11.08.2016, 14:06
Sayman, основной цикл игры - это 2 фрейма. отсюда и 25фпс.
на 50 играть, для данной игы - сложно.

но это не значит что 50 недостижимо :)

Nesser
12.08.2016, 01:28
Тс-conf идёт в правильном направлении, разрешение надо увеличивать, какие проблемы запихать в плис настройки VGA/SVGA ? Супер-пупер разрешений никто не просит, но 640x480 хотя бы, только с нормальным выводом спрайтов, спрайтовому DMA какая разница какого разрешения экран, он тупо копирует из одной области памяти в другую, только с коррекцией переход x, y.
Это же всё несложно в плис делается, да и насколько я помню слои прекрасно делаются тупо сменой очерёдности вывода спрайтов, но перед многослойным экраном имеется очевидное преимущество - многослойка обязана прочитать все уровни слоёв, то есть сделать 256x192x8=393 216 выборок для 8 слоёв, а для разрешения 640x480 нужно всего лишь 307 200 выборок, по мне так лучше 640x480 с аппаратным перебросом спрайтов чем 256x192 с 8 аппаратными слоями и программным выводом.
Редактор под TSFM даже сделать не можем, тупо текст на экран не помещается, а если я вдруг надумаю корюзлый excel слепить? :)
Разве такая проблема к плис подключать динамическую память? (я сам кстати с плисинами ещё не работал :D )
И вообще, вся эта идея как то поплыла, без обид, если и переделывать старые игры по графону, ага а музыку оставим древнюю, и музыку естесно, то надо кардинально изменить подход к лепке, городить огород поверх старой игры это мягко говоря туповато, её в итоге всё равно придётся заново делать.
Взять к примеру Exolon, там за глаза 256 цветов, но должна быть именно аппаратная поддержка.

Нууу к примеру мои мысли вслух.

Делаем редактор для спрайтов, 256/32768 цветов на пиксель, аппаратный SpriteDMA поможет самому редактору комфортно двигать редактируемый экран, сам z80 никогда в жизни с этим не справиться.
Лепим к примеру 512 спрайтов по 16x16 1 байт на цвет, код 255 - прозрачный, итого 131 кБ файл спрайтов.
Память видео 1-8 Мб, грузим файл с спрайтами в память видео.
Включаем нужное разрешение и в адресный регистр заносим с какого места в видеопамяти будет выводится на экран, а в экран по другому адресу будем кидать спрайты.
Заносим в регистры размер спрайтов 16x16, вычитающие регистры с перезагрузкой.
Заносим размер экрана в сумматор перехода по X. (коррекция разрешения, по сути хоть 256x192 хоть 1920x1080, главное что бы цап успел)
-----------------------
Заносим координаты для вывода x,y
Заносим адрес спрайта
Вывести спрайт, пока он выводится, CPU никто не держит.
Повторяем последние 3 пункта
-----------------------
При частоте выборки из памяти 100 МГц, гораздо выгоднее работать с спрайтами 32x32.

Утрированно при 3.5 МГц (а почему нельзя поставить Z84C0020 на 12-24 МГц ?) 70 тысяч тактов в фрейме, используем половину 35 тыс на 512 спрайтов 16x16x256c (их хватает и на задний фон и на 3-4 динамичных слоя), получится что есть 68 тактов на передачу данных о спрайте, аппаратную скорость копирования можно не считать, при хреновом раскладе это 2 тысячи спрайтов во фрейм, весь упор в процессор :D... но даже и с 3.5 МГц всё будет пучком и полно времени ещё и на музыку и на ИИ.
Да и максимальный размер спрайта в таком случае получается 4096 на 4096 (при 12 битных счётчиках координат) больше нет никакого смысла делать, а меньше только 8 бит 256x256 буээээ, то есть никто не мешает мне добавить всего лишь 2 счётчика для организации плавающего количества аппаратных слоёв, включаем к примеру 2 слоя, включаем разрешение 640x480, кидаем команду копирования спрайта размером 640x480 по адресу 1 слоя, через 20 тысяч (одна треть фрейма) тактов CPU 3.5 МГц появится красочный задний фон, и там и будет висеть пока его не удалить, если его же кидать при помощи проца то на это уйдёт порядка 8 миллионов тактов, потом кидаем на второй слой иконки и windows готов.
Так же и окно ссссссс текстовым редактором например рисуется, чертишь всё в памяти а потом шлёпаешь куда надо, скорость реакции окна на мышку столько же сколько кадров стоит на вывод, так как даже открытый на полный экран всё равно успевает за фрейм выводится, и CPU при этом никаким боком не нагружается, 100-150 тактов и хай оно там себе перекидывается.

Ну это так, дурные мысли в голову лезут.
----------
Ага, и ещё дурная мысль - 0-ым слоем можно выводить текст, тупо текстовый экран, при 640x480 это 80 на 30/40/60 символов, рисуем допустим музыкальный редактор для TSFM (по сути это готовый bmp/сжатый на весь экран), а все нотки через текстовый слой, бред конечно, но у нас же плис?

Reobne
12.08.2016, 18:35
Как отображать 8 слоёв.
Можно для каждого слоя, пусть 16 бит/пиксель, хранить альфа канал: 1 бит/пиксель = 16 бит/(16 пикселей - горизонтальный блок)
Вот эти горизонтальные блоки, кэшируемо, вычитывать из памяти для всех 8-ми слоёв.
Потом логическая функция скажет нам, какой наименьший слой непрозрачен. Для каждого пикселя читаем 16 бит цвета только этого слоя.
Итого в среднем 24 бит на пиксель.

Sayman
12.08.2016, 19:52
в среднем 24 бит на пиксель.
24bpp это крута. ну давайте сразу 3д, шейдеры, "dx12"))) щутка...
а вот если серьёзно - уже было предложено хорошее решение - на борту видяхи сколько то мегабайт видеопамяти, как на современных. туда скинули "текстурки", скинули "шейдеры" (типа дисплей лист), а видяха по ним работает. между делом, ваши конкуренты в лице тслаба уже контроллер ft8xx прикрутили к эве (мегатупо правда). это как бы намёк что уже давно есть готовые решения в виде gpu или подобных. нужно только подобрать нужный и накидать это в виде подключаемого девайса.

Nesser
12.08.2016, 21:46
Как отображать 8 слоёв.
Можно для каждого слоя, пусть 16 бит/пиксель, хранить альфа канал: 1 бит/пиксель = 16 бит/(16 пикселей - горизонтальный блок)
Вот эти горизонтальные блоки, кэшируемо, вычитывать из памяти для всех 8-ми слоёв.
Потом логическая функция скажет нам, какой наименьший слой непрозрачен. Для каждого пикселя читаем 16 бит цвета только этого слоя.
Итого в среднем 24 бит на пиксель.

Это уже проходили :)
Экономия мощности относительная, больше 2-3 слоёв уже нет никакого графического прироста, и в 1 слой прекрасно делается и задний фон и все спрайты, игра всё равно динамически обновляет экран.
А отдельный битовый экран и отдельно пиксельный это в старой Амиге используется, на те года это был единственный выход из положения, частоты то были 5-30 МГц, но в 2016 году копеечная память работает на частотах 100-3000 МГц и за 1 такт выдаёт сразу 64 байта данных.
Во много раз проще тупо швыряться спрайтами в экран, тем более никто не запрещает использовать логику коллизии спрайтов, задне-фоновые спрайты из низа списка тупо не появятся если выше них по списку есть более крупный спрайт на ближнем фоне, один раз делается логический автомат по такому отбору а потом в качестве апгрейда только увеличиваем частоту и размер списка переходом на более мощную плисину, хотя и сразу можно нормально сделать, многослойность давно уже делается тракторным способом на обычном однослойном экране, то ли один экран очистить то ли восемь, тем более один экран и очищать то не надо, задний фон сам всё очистит, в конце вывода остаётся только смачно кинуть 16x16 в виде стрелки мышки, на следующем фрейме задний фон всё равно всё сотрёт.

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

За сколько тактов плиса сможешь сделать каждый цикл?
Нуу это всё классно....а графику то кто рисовать будет?
Значит надо дополнительно в циклы перебора ещё и вносить вычисление смещения 0-15 адреса координат x,y для смещения слоя перед отрисовкой движения, значит реальный размер экрана должен быть на 16 пикселей больше с каждой стороны, экран 256x192 в памяти должен быть как 288x208, в 8-битные регистры уже не лезет, надо 9 бит, ну да фиг с ними, и это надо для 8 слоёв, не кратная организация памяти грозит серьёзными техническими проблемами :) требуются сложные параллельные сумматоры адреса, при чём сразу куча, или делать вычисление по циклам, так сказать 1 пиксель 64 такта даже с учётом одновременного просмотра битовой карты 8 слоёв.

Нууу и так далее.
п.с. это всего лишь моё неадекватное понимание :)

s_kosorev
12.08.2016, 22:35
Вот эти горизонтальные блоки, кэшируемо, вычитывать из памяти для всех 8-ми слоёв.
Потом логическая функция скажет нам, какой наименьший слой непрозрачен. Для каждого пикселя читаем 16 бит цвета только этого слоя.
Т.е при записи теперь еще и маску писать нужно? А если каждый слой сдвинут аппаратно относительно друг друга? то внезапно нам нужно в 2 раза больше этих альфа кешей читать?

- - - Добавлено - - -


требуются сложные параллельные сумматоры адреса
это кто такой? и с какого перепугу сумматоры стали сложные?

Reobne
13.08.2016, 06:47
Т.е при записи теперь еще и маску писать нужно?
Да. Зато для стирания всего слоя достаточно стереть только маску.

А если каждый слой сдвинут аппаратно относительно друг друга?
Я и думал про аппаратные скроллинги. Это просто небольшая оптимизация для режима, о котором пишет zst, восемь 16-ти битных слоёв, с раздельным x y аппаратным скроллингом. Вместо 8*16=128, получается 24 бита на пиксель. Да, альфакеши нужны. Да, при записи нужно и альфаканал заполнять. Я-же не настаиваю, просто такой вариант.


в 2 раза больше этих альфа кешей читать?
Не понимаю, в каком смысле? Размер кешей в 2 раза больше, или обращений к памяти?

- - - Добавлено - - -

Nesser, А мы вот не хотим ставить большие ПЛИСины, когда можно поменьше. Не хотим гигагерцы, когда можно обойтись мегагерцами.
И, по крайней мере для отображения, сумматоры не необходимы. Достаточно счётчиков адреса и регистров инициализации счётчика.

Lethargeek
13.08.2016, 14:58
Хватит балабольства, считать давайте. Как пример, определим нагрузку на память карты для гипотетического фреймового движка. Пусть площадь растра R, площадь выводимых "спрайтов" S, тогда для самой тупой и примитивной однослойной схемы с полным обновлением фона в кадре получим:

3R + S + s (где s<S процентов на 20-30 для типичных спрайтов, так как прозрачные пиксели лишь читаются)

Для самой примитивной схемы при n слоёв, в лучшем случае (когда фон не изменяется вообще):
(2n-1)R + S + s

то есть для восьми слоёв с тупой полной очисткой верхних семи:
15R + S + s !!

Если же "нетупо" стирать только "спрайты" прошлого кадра:
8R + 2S + s
данные которых придётся сохранять и перебирать при стирании
(да-да, расскажите мне, как слои "удобней для программиста")))

для предложения Reobne у меня получилось в лучшем случае:
1.875R + S + (от 1.0625 до 1.125)s
но в худшем, с полным обновлением фона, уже:
3.875R + S + (от 1.0625 до 1.125)s
притом надо городить кучу непростой логики
да и программно, вероятно, тоже как-то учитывать

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

...ну и где же вероятней "обойтись плисиной поменьше и мегагерцами"?

- - - Добавлено - - -


многослойность давно уже делается тракторным способом на обычном однослойном экране, то ли один экран очистить то ли восемь, тем более один экран и очищать то не надо, задний фон сам всё очистит, в конце вывода остаётся только смачно кинуть 16x16 в виде стрелки мышки, на следующем фрейме задний фон всё равно всё сотрёт.
вот почему Свидетели Слоёв этого никак не поймут? :)

zx-kit
13.08.2016, 17:19
Хватит балабольства, считать давайте. Как пример, определим нагрузку на память карты для гипотетического фреймового движка. Пусть площадь растра R, площадь выводимых "спрайтов" S, тогда для самой тупой и примитивной однослойной схемы с полным обновлением фона в кадре получим:

3R + S + s (где s<S процентов на 20-30 для типичных спрайтов, так как прозрачные пиксели лишь читаются)

В однослойном варианте с тремя слоями со скроллингом:
7R + S + s.

Для многослойного варианта с 2 слоями (1 слой фона со скроллингом и 1 слой спрайтов):
2R + 2S + s + SCR.

Для многослойного варианта с 4 слоями (3 слоя фона со скроллингом и 1 слой спрайтов):
4R + 2S + s + 3 * SCR.

Где SCR - время рисования столбика справа экрана при скроллинге.

Таким образом, загрузка памяти мало отличается.

Lethargeek
14.08.2016, 16:41
В однослойном варианте с тремя слоями со скроллингом:
7R + S + s.
Нет. Все передние логические слои с прозрачностью учтены как "спрайты" в S+s и рисовать их можно кусками. Но даже если запоминать передние слои целыми экранами, то нагрузка в реале не 2R, а R+r (причём в этом случае r скорее всего будет отличаться от R в разы, а не на десятки процентов).


Где SCR - время рисования столбика справа экрана при скроллинге.
Такой скроллинг будет слишком тупым и скучным. Блиттер может перебросить любой участок, имитируя прокрутку лишь там, где нужно, и в любом темпе. Так, легко можно получить параллакс переброской нескольких десятков полосок разной высоты, на которых нарисованы объекты (например, деревья) - нагрузка будет прямо пропорциональна общей площади полосок и их заполненности. Или даже не полоски, а у каждого объекта скорость своя, смотря на какой пиксельной строке он "стоит".

Таким образом, нагрузка может отличаться весьма немало, не говоря уже о восприятии игроком.

Nesser
14.08.2016, 23:43
Т.е при записи теперь еще и маску писать нужно? А если каждый слой сдвинут аппаратно относительно друг друга? то внезапно нам нужно в 2 раза больше этих альфа кешей читать?

- - - Добавлено - - -


это кто такой? и с какого перепугу сумматоры стали сложные?

А с каких пор однотактовые параллельные сумматоры адресов стали простые, на них уйма логики уходит, поэтому и делают в несколько тактов.

- - - Добавлено - - -



Nesser, А мы вот не хотим ставить большие ПЛИСины, когда можно поменьше. Не хотим гигагерцы, когда можно обойтись мегагерцами.
И, по крайней мере для отображения, сумматоры не необходимы. Достаточно счётчиков адреса и регистров инициализации счётчика.

А я и не говорил про гигагерцы и гигантские плисины, 50-100 МГц и обычной плис вполне хватит.
Мы же не отображение обсуждаем а видеокарту, z80 с отображателем и стандартный экран еле еле во фрейм запихивает, и то извращённым способом через стек, вывод графики дело не центрального процессора и одними тактовыми регистрами с загрузкой не обойтись, хотя это по сути уже схемотехника плис.
У нас даже концепции никакой нет :) тс-конфиг далёк от необходимого.

Может надо сначала решить а что вообще надо? только не про подкрашивание старых игр, их проще сделать заново, был бы только смысл и желание, у кого руки чешутся тот сделает :)
Только системной концепции никакой нет, что вообще надо то? флешки и hdd уже давно читаем а никаких редакторов так и нету, да и желания делать не очень много, аппаратная часть не особо позволяет делать, налепить то разных ништяков налепили а в кучу слепить забыли, mp3 и тот только с отдельной флешки читается.

Reobne
15.08.2016, 05:20
только не про подкрашивание старых игр
Именно подкрашивание старых игр.
Их НЕ проще сделать заново.

s_kosorev
15.08.2016, 08:24
А с каких пор однотактовые параллельные сумматоры адресов стали простые, на них уйма логики уходит, поэтому и делают в несколько тактов.
это не умножитель, на 8 входов все равно будет простой

AlexG
15.08.2016, 14:21
А вы в курсе что в современных плисах есть DSP-блоки которые аппаратно делают умножение и суммирование грубо говоря за один такт?

s_kosorev
15.08.2016, 14:48
В современных много чего есть, а умножители уже как полтора десятка лет

AlexG
15.08.2016, 17:22
Тогда чего (народ) волнуется о сложности реализации сумматора ???

s_kosorev
15.08.2016, 17:28
Тогда чего (народ) волнуется о сложности реализации сумматора ???
ну мож на макс3000 собрался делать

AlexG
15.08.2016, 17:34
"Что то игривое у меня настроение" типа будем делать из "гов.. и палок" ???
Я понимаю теплый ламповый звук - но тут или Z80 оригинал или что-то из современного плисового. Сорри если кого обидел...

Nesser
15.08.2016, 22:08
А вы в курсе что в современных плисах есть DSP-блоки которые аппаратно делают умножение и суммирование грубо говоря за один такт?

Я про них и говорю, но дело даже не в них а в концепции :)

Z80 оригинал ещё никто не отменял, вот только частоту поднять до 20 надо, а что плохого если рассыпуха запихнута в плисину, и что бы программно было как можно проще, пока что я не видел какого то простого для программирования предложения.

- - - Добавлено - - -


Именно подкрашивание старых игр.
Их НЕ проще сделать заново.

Я пока не понял каким образом вы собираетесь подкрашивать игру на программном уровне, да и зачем это? ради 1 жёлтого спрайта диззи который ужасным образом клешует с зеленым деревом? В других играх всё равно заднего фона практически нет.
Моя непонимать как вы это собрались делать.

п.с. хочу текстовый режим больше чем 32x24 :) хочу редактор ассемблера с вкладками для подпрограмм и готовыми процедурами видеовывода, работы с hdd и sd, звуком и бла бла бла :D

zx-kit
16.08.2016, 18:27
У нас даже концепции никакой нет :) тс-конфиг далёк от необходимого.

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

Основная проблема экрана ZX Spectrum - клешинг атрибутов. Это связано с тем, что в квадрате 8 на 8 точек могут быть точки только двух цветов. Поэтому движение цветных персонажей по цветному фону невозможно. Или они изображаются с клешингом. Было бы хотя бы 3 цвета на знакоместо...
Поэтому для добавления нового режима без клешинга нужна видеокарта Meteor.
Она позволит убрать клешинг в старых цветных играх и упростит разработку новых.

Количество цветов в спрайтах ограничено до трех, а в тайлах до четырех. Но есть отличие от Денди, где всего 12 цветов на спрайты и 12 цветов на тайлы из 64 цветов. В новой видеокарте активные/рабочие 4 цвета можно менять в любой момент. Так можно отобразить на одном экране до 32768 разных цветов.
У Денди также ограничение на количество спрайтов в строке не более 8. У меня спрайты рисуются на слои программным способом с элементами ускорения. Что упрощяет вывод спрайтов в старых играх. В дальнейшем рисование спрайтов можно проапрегейдить до блиттера.

Разрешение увеличивать пока не надо. Максимум разрешение 256 х 224. Вдруг кто захочет сделать BATTLE CITY 2.
Вместо аппаратных спрайтов Денди будут использоваться 8 слоев с возможностью наложения с использованием прозрачного цвета.
Наверно для построения уровней можно будет использовать редакторы, написанные для Денди.

Lethargeek
16.08.2016, 21:39
на дворе стоял 2016 год, но спектрумисты всё пытались сделать из Спектрума пародию на приставки тридцатилетней давности :v2_dizzy_facepalm:

это как при наличии нормального большого бассейна внутрь поставить маленький надувной и водой наполнить только его

основная проблема Спектрума и спектрумистов - их ограниченность ;)

Nesser
16.08.2016, 22:05
на дворе стоял 2016 год, но спектрумисты всё пытались сделать из Спектрума пародию на приставки тридцатилетней давности :v2_dizzy_facepalm:

это как при наличии нормального большого бассейна внутрь поставить маленький надувной и водой наполнить только его

основная проблема Спектрума и спектрумистов - их ограниченность ;)

+100500 :D

Если уж решили и делать так делайте сразу нормально, я к примеру не хочу лопатить nether earth (самая распространённая русифицированная версия была мной переведена :D ) только ради того что бы убрать клешинг на жёлто-черном экране, мне его проще сделать заново если будет нормальная аппаратная организация спрайтов 8 бит на точку. То же самое и с soldier of fortune, exolon, r-type, renegade, zybex и т.д. их проще нахрендячить заново, заодно может и серию сделать. Но только не на программном экране. Я сожму спрайты с 1 байтом на пиксель плавающим битом, потом распакую сразу в память видеокарты, и пусть она мне по команде рисует спрайт из адресу туда куда мне надо.

Хочу так :)

И да, никаких С++ и прочей лабуды.
Я даже за то что бы делать вызовы через какой нибудь отключаемый RST, с пзу сейчас проблем явно нет, да и если стоит плис, пусть она с флешки в озу кинет прошивку при старте.
Я с tr-dos биосом не разбирался, но он там что действительно на все 16 кБ ? или его можно нормализовать и пихнуть туда и ide и sd на fat`е ? тем более от ВГ достаточно кинуть всего 1 проводок на прерывание, и не ждать пока она там бамбук курить, считала байт - кинула прерывание - забрали байт - занимаемся своими делами.
Порядок надо в системе навести, программ с использованием пзу бейсика и тр-дос по пальцам пересчитать можно, (демы с параллельно-корявой загрузкой с диска я не считаю, 1 проводок от ВГ до CPU решает все проблемы) да и в свойствах файла не проблема прописать байтик совместимости с программным считыванием, один хрен сейчас 16 килобайтовыми образами пзу никого не удивить, на самую примитивную dip флешку их больше 64 впихивается.

Ну это так, дурные мысли в голову лезут.

NEO SPECTRUMAN
16.08.2016, 23:57
на дворе стоял 2016 год, но спектрумисты всё пытались сделать из Спектрума пародию на приставки тридцатилетней давности :v2_dizzy_facepalm:

это как при наличии нормального большого бассейна внутрь поставить маленький надувной и водой наполнить только его

основная проблема Спектрума и спектрумистов - их ограниченность ;)

Пральна давайте пилить 16-ядерный спектрум
с частотой проца овер 2ГГц
с 8 гигами рамы
и 3-мя слотами PCI-E x16 для вставляния в них 3-х джфорсов
:D

Lethargeek
17.08.2016, 01:50
Если уж решили и делать так делайте сразу нормально, я к примеру не хочу лопатить nether earth (самая распространённая русифицированная версия была мной переведена ) только ради того что бы убрать клешинг на жёлто-черном экране, мне его проще сделать заново
тебе проще, а кому-то интересно перелопатить, но ведь можно сделать, чтоб удобно было тем и другим


если будет нормальная аппаратная организация спрайтов 8 бит на точку
и ты тоже)) 8 недостаточно для нормальной, а 16 и на физическую память лучше ложится


Я сожму спрайты с 1 байтом на пиксель плавающим битом, потом распакую сразу в память видеокарты, и пусть она мне по команде рисует спрайт из адресу туда куда мне надо.
а зачем, пускай пожатыми и хранятся, а блиттер распакует при отрисовке (заодно на память меньше нагрузка)
ох, о чём я... тут вообще, вон, не понимают, зачем он нужен, и что сможет даже самый простой...

- - - Добавлено - - -


Пральна давайте пилить 16-ядерный спектрум
с частотой проца овер 2ГГц
с 8 гигами рамы
и 3-мя слотами PCI-E x16 для вставляния в них 3-х джфорсов
не, столько в наш плисовый бассейн не поместится :p

zx-kit
17.08.2016, 05:58
на дворе стоял 2016 год, но спектрумисты всё пытались сделать из Спектрума пародию на приставки тридцатилетней давности :v2_dizzy_facepalm:
это как при наличии нормального большого бассейна внутрь поставить маленький надувной и водой наполнить только его
основная проблема Спектрума и спектрумистов - их ограниченность ;)

Не надо так реагировать на слово Денди или приставка. Клешинга там нет. Что полезного в графике Денди можно использовать и улучшить:
Цвета:

Спектрум: 1 бит на цвет точки. Атрибут на область 8х8 точек, 15 цветов, яркость общая для PAPER и INK. Малополезный FLASH. Атрибут хранится в памяти.
Денди: 2 бита на цвет точки. Атрибут на область 16х16 точек, 3 цвета + прозрачный из 12 цветов для тайлов из 64 возможных. Атрибут хранится в памяти.
Метеор: 2 бита на цвет точки. Атрибут на область 8х1 точек, рабочие 4 цвета из 32768, любой из четырех можно указать как прозрачный. Атрибут не хранится в памяти, а перекрашивает точки в 4 цвета при рисовании тайла или спрайта.
Скроллинг:

Спектрум: программный, при этом атрибуты не двигаются.
Денди: один слой с аппаратным скроллингом, атрибуты двигаются вместе с тайлами.
Метеор: до 8 слоев с аппаратным скроллингом, двигается весь слой, состоящий из точек по 16 бит на точку.
Спрайты:

Спектрум: программно по маске. Читается байт из экрана, накладывается графика по маске и записывается результат на экран. При цветных спрайтах появляется клешинг атрибутов. Координаты вычисляются по сложной формуле, что замедляет вывод. Чтобы не было мерцаний надо успеть нарисовать спрайт до луча телевизора. Или использовать второй экран для 128К версии.
Денди: 64 аппаратных спрайта размером 8 х 8 точек. У всех спрайтов общие 12 цветов из 64 возможных. Координаты задаются аппаратно. Если в строке больше 8 спрайтов, то они исчезают или мерцают.
Метеор: для рисования спрайта указываются координаты спрайта, размеры, 4 цвета, затем копируются данные спрайта командой LDIR. Возможно несколько вариантов копирования, например, данные можно писать по одному адресу. Можно без изменений использовать спрайты с маской при доработке старых (уже написанных) игр. Спрайты можно накладывать, цвет спрайта можно менять в процессе рисоания. В слое возможно до 32768 цветов. 2 экрана в каждом слое. Чтобы не было мерцаний один экран отображается, а на другой в это время рисуются новые спрайты.

Reobne
17.08.2016, 07:37
я к примеру не хочу лопатить nether earth (самая распространённая русифицированная версия была мной переведена ) только ради того что бы убрать клешинг на жёлто-черном экране, мне его проще сделать заново если будет нормальная аппаратная организация спрайтов 8 бит на точку.
Так ведь были разные TS-Config-и. Они чем не устраивали, чтобы переделать под них nether earth?

Lethargeek
17.08.2016, 21:51
Не надо так реагировать на слово Денди или приставка. Клешинга там нет.
Много чего нет. Например, нормального контроля каждого пикселя. И даже тайлов не хватает на весь экран.


Что полезного в графике Денди
Ага, полезного в восемьдесят лохматом году, когда память была очень недешёвой и очень медленной.
Что в ней СЕЙЧАС полезного по сравнению с нормальным блиттером в хайколоре?


Метеор: 2 бита на цвет точки. Атрибут на область 8х1 точек, рабочие 4 цвета из 32768, любой из четырех можно указать как прозрачный. Атрибут не хранится в памяти, а перекрашивает точки в 4 цвета при рисовании тайла или спрайта.
то, что ты описал для метеора - не атрибут и не совместимо с процедурами в играх спектрума


Метеор: до 8 слоев с аппаратным скроллингом, двигается весь слой, состоящий из точек по 16 бит на точку.
Нахрена СЕЙЧАС аппаратный скроллинг? Нам что, не хватает скорости памяти, чтобы "двигать" через произвольное обновление?


Метеор: для рисования спрайта указываются координаты спрайта, размеры, 4 цвета, затем копируются данные спрайта командой LDIR. Возможно несколько вариантов копирования, например, данные можно писать по одному адресу. Можно без изменений использовать спрайты с маской при доработке старых (уже написанных) игр. Спрайты можно накладывать, цвет спрайта можно менять в процессе рисоания. В слое возможно до 32768 цветов. 2 экрана в каждом слое. Чтобы не было мерцаний один экран отображается, а на другой в это время рисуются новые спрайты.
Зачем так? В старых играх с наскока неприменимо (там не координаты, там адреса в оригинальной раскладке).
А если уж код и переделывать настолько, то ради полноцветного блитинга, а не ради жалкого двухбитного цвета.
Заодно и костыли типа аппаратного скроллинга можно выкинуть.

zx-kit
18.08.2016, 05:14
Ага, полезного в восемьдесят лохматом году, когда память была очень недешёвой и очень медленной.
Что в ней СЕЙЧАС полезного по сравнению с нормальным блиттером в хайколоре?
Нахрена СЕЙЧАС аппаратный скроллинг? Нам что, не хватает скорости памяти, чтобы "двигать" через произвольное обновление?

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



Зачем так? В старых играх с наскока неприменимо (там не координаты, там адреса в оригинальной раскладке).
А если уж код и переделывать настолько, то ради полноцветного блитинга, а не ради жалкого двухбитного цвета.
Заодно и костыли типа аппаратного скроллинга можно выкинуть.
В старых играх по координатам вычислялся адрес спрайта на экране, читался байт из памяти экрана, читалась маска, накладывалась на байт с экрана, читался байт спрайта, накладывался на результат, результат записывался на экран. Все это занимает много памяти и выполняется медленно.

Я предлагаю упростить расчеты и рисование спрайта. Мы будем использовать координаты. Вместо вычислений с маской мы просто будем записывать маску и байт спрайта в видеокарту. Поэтому новая процедура рисования спрайта будет короче и выполняться быстрее. То есть, скорость работы игры не уменьшится.

Давай пока блиттер отложим на следующий этап. На первом этапе устраним клешинг программным способом с элементами ускорения, описанным выше. Но это все программная реализация. Нам сейчас надо доделать аппаратные задачи и спроектировать плату. Желательно предусмотреть заранее аппаратные требования для типовых игр уровня Денди и PC времен MSDOS 6.22. Дальше предлагаю не усложнять требования.

Сейчас для 8 слоев предусмотрена быстрая 10 ns память SRAM объемом 2M. Предлагаю подумать о выборе:
1. Для блиттера увеличить в два раза скорость операций чтения и записи из/в SRAM за счет удвоения ширины шины данных с 16 до 32. Для этого добавить еще SRAM 2M. Читаться и писаться будет по две точки вместо одной.
2. Добавить SDRAM 32M для памяти тайлов/спрайтов и буфера VGA. Читаться и писаться будет по одной точке.

Lethargeek
18.08.2016, 09:15
Предлагаю предусмотреть и 8 слоев с аппаратным скроллингом и блиттер в каждом слое. Неспользуемые слои будем отключать для освобождения времени на работу блиттера. Программист сам выберет, каким способом будет создавать изображение.
Предлагаю не тащить в девайсы пыльный старый ненужный мусор, не превращать в свалку древних костылей, и не ломать о них здоровые ноги.


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

Я предлагаю упростить расчеты и рисование спрайта. Мы будем использовать координаты. Вместо вычислений с маской мы просто будем записывать маску и байт спрайта в видеокарту. Поэтому новая процедура рисования спрайта будет короче и выполняться быстрее. То есть, скорость работы игры не уменьшится.
Ты так не упрощаешь, а усложняешь задачу для "модернизатора старых игр". Ускорять при модернизации нужно мало где, раз уж Спектрум успевал и в оригинале. Самое простое - найти код, непосредственно записывающий в экран, остальное дольше и неприятнее, а ты предлагаешь до координат цепочку раскручивать, процедуры полностью переписывать, да еще подойдёт не каждый формат у спрайтов. И хоть альтернативная раскладка (в отличие от совершенно лишних слоёв) полезна, но как дополнение, а не как единственный вариант. Ты не там предоставляешь выбор для программиста.


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


Желательно предусмотреть заранее аппаратные требования для типовых игр уровня Денди и PC времен MSDOS 6.22. Дальше предлагаю не усложнять требования.
Желательно начинать с уяснения потенциала современного железа, а не с "неусложнения" наугад до уровня пародии на приставки или старые песюки.


Сейчас для 8 слоев предусмотрена быстрая 10 ns память SRAM объемом 2M. Предлагаю подумать о выборе
Предлагаю выкинуть бесполезные слои на мороз.


1. Для блиттера увеличить в два раза скорость операций чтения и записи из/в SRAM за счет удвоения ширины шины данных с 16 до 32.
у тебя же ног у плис не хватало)))


Читаться и писаться будет по две точки вместо одной.
и еще с выравниванием возиться? лучше подумать на тему будущего блитинга с распаковкой


2. Добавить SDRAM 32M для памяти тайлов/спрайтов и буфера VGA. Читаться и писаться будет по одной точке.
что еще за тайлоспрайты опять полезли?

s_kosorev
18.08.2016, 10:30
и еще с выравниванием возиться? лучше подумать на тему будущего блитинга с распаковкой
rle очень просто делается

Sayman
18.08.2016, 11:16
Хорошо, что у меня Спринтер и таких вот "денди" костылей у меня там нет. читать с экрана байт для выделения маски, что за вздор? куча разной фигни не нужной. ббррррр.

Читаться и писаться будет по две точки вместо одной.
это тоже очередной костыль. ТСлаб тоже сделал подобный баян в своём конфиге, только в дма, который умеет только по 2 байта (кратность 2 байта). если надо кратно 1 байту, то ловим пачку багов. нет уж, сами с этим играйтесь...

Hacker VBI
18.08.2016, 11:27
Sayman, баян баяном, но проц при пересылке остаётся свободным.
а что за пачка багов, расскажи?

мне для расширения кругозора интересно.

Sayman
18.08.2016, 13:28
Hacker VBI, непосредственно про баги может рассказать автор. лично я такое наблюдал. к примеру, в демке ротатора, которую там на форуме выложил любезно с исходниками jerry. белые дыры при вращении спрайта - вина не кодера или алгоритма, а железа. учитывая пересылку строго по 2 байта, очень сильно мне бы не хотелось громоздить спрайты, как пример, кратные 2 байтам. очень сильно не хочется извращаться на предмет "подстраиваться под какую то кратность" там, где без неё реально можно было бы обойтись. на спринтере при пересылке данных проц тоже отдыхает. тот же дма, только обозвали его тут модным в то время словом "акселератор". только он пересылает данные с точностью до байт и нет потребности в отдельных извратах.

Hacker VBI
18.08.2016, 13:50
Sayman, ты бред несёшь.

Эффект я видел. Дма там юзается только для обновления фона. Вот обсуждение этого эффекта (forum.tslabs.info/viewtopic.php?f=24&t=581)
Слова джерри: "ДМА да использую чтобы восстановить фон. но восстанавливаю с запасом ибо лень считать было"

Читай за DMA (http://hype.retroscene.org/blog/dev/180.html), а не придумывай и выдавай выдумки за правду.

Sayman
18.08.2016, 14:11
Hacker VBI, я сижу в отладчике и вижу как оно работает.
если ты считаешь. что я гоню отсебятину, обрати внимание на мануалы и факи от тслаба:


Q: Почему в регистрах младших битов адресов не используется 0-й бит?
А: Для получения наибольшего быстродействия и минимальных затрат логики ДМА работает с 16-битными данными, следовательно адреса четные.
Записывая в младший байт регистра адреса число, младший бит НЕОБХОДИМО занулять.