Графический "сопроцессор" на ардуино - реально ли?

Старый спектрумистский форум

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Shaos »

Santa wrote: Мне почему-то кажется, что ничего сложного не должно быть. Организовать порт и реализовать прямой доступ ардуинки к видеопамяти. Единственно, по тактам придётся втиснуться, чтобы не сильно замедлялась работа остального добра.
Попытаюсь объяснить ещё раз - доступ внешнего устройства к внутренней видеопамяти усложняет всё неимоверно - напомню, что к видеопамяти обращается не только центральный процессор спектрума (чтение и запись), но и видеоконтроллер (только чтение), который формирует картинку на телевизоре - соответственно эту самую ардуину надо будет как-то вкорячить по тактам так, чтобы она не мешала видеоконтроллеру, который в отличие от процессора остановить нельзя (иначе формирование видео исчезнет и картинка на телеке пропадёт).
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Lavr »

Santa wrote:
Shaos wrote:Ведь задача "нужно быстро нарисовать окружность"
Окружности, линии, треугольники с/без заливкой, можно спрайты заранее подгруженные.
Чтобы освободить проц от большинства нагрузки на графику, не потерять совместимость с уже имеющимися программами, очень быстро рисовать графику. При этом чтобы по минимуму модифицировать сам Спектрум, не добавляя ничего в его ПЗУ, не сложнее подключения AY.
Мне кажется, вы очень жестко ставите задачу, хотя я для "Специалиста" тоже хотел именно так. :wink:
У оригинального Спектрума 48, какой он у вас есть, память по нынешним меркам слишком медленная
и определённо медленная для поставленной вами задачи.

Здесь на форуме разрабатывался клон "Специалиста" на современной статической памяти - вот с ней
еще есть возможность всяких трюков "кто первым лезет в память".
Со старой памятью и не меняя кардинально схемы, боюсь, ничего путного не получится... :-?
iLavr
Santa
Novelist
Posts: 25
Joined: 18 Feb 2006 08:19

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Santa »

Lavr wrote:Со старой памятью и не меняя кардинально схемы, боюсь, ничего путного не получится... :-?
Изменю вопрос:
Вы могли бы набросать схемку подключения ардуино к оперативной не-видео- памяти Спектрума?
Чтобы ардуина могла брать оттуда и класть туда данные?
Это хотя бы реально, раз с видеопамятью такая засада?
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Lavr »

Santa wrote:Изменю вопрос:
Вы могли бы набросать схемку подключения ардуино к оперативной не-видео- памяти Спектрума?
Чтобы ардуина могла брать оттуда и класть туда данные?
Это хотя бы реально, раз с видеопамятью такая засада?
Если у Вас обычный старый Спектрум, а не современный новодел со статической памятью, то в нём
установлена динамическая память. Эта память, даже если она физически разделена на видеопамять
и не-видео-память, регенерируется всё теми же счетчиками его видеоконтроллера.
В связи с этим лезть ардуиной в память древнего Спектрума с динамической памятью мне представляется
задачей достаточно сложной, и поэтому набросать такую схемку я не возьмусь.

Это ничего не меняет в плане сложности: видеопамять или не-видео-память...
iLavr
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Shaos »

Santa wrote:Вы могли бы набросать схемку подключения ардуино к оперативной не-видео- памяти Спектрума?
В большинстве клонов ОЗУ общее - и для видеопамяти и для не-видеопамяти...
Я тут за главного - если что шлите мыло на me собака shaos точка net
Santa
Novelist
Posts: 25
Joined: 18 Feb 2006 08:19

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Santa »

Lavr wrote:В связи с этим лезть ардуиной в память древнего Спектрума с динамической памятью мне представляется
задачей достаточно сложной, и поэтому набросать такую схемку я не возьмусь.
Теперь понятно, спасибо.
Жаль.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Lavr »

Shaos wrote:
Santa wrote:Вы могли бы набросать схемку подключения ардуино к оперативной не-видео- памяти Спектрума?
В большинстве клонов ОЗУ общее - и для видеопамяти и для не-видеопамяти...
Я просто помню, что у какой-то модели было 16К отдельно, а другая линейка отдельно.
Во времена начала ZX-Спектрум барыги продавали на рынке две линейки "целые" и "половинки".
Причем, если я правильно помню, при обращении к 16К с видеопамятью организовывалась
задержка процессора, а в остальную память он без задержки лез...

Но это никак не помогает облегчить ситуацию с вопросом топикстартера.
Висела-то вся память всё равно на одной шине.
iLavr
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Shaos »

Santa wrote:
Lavr wrote:В связи с этим лезть ардуиной в память древнего Спектрума с динамической памятью мне представляется
задачей достаточно сложной, и поэтому набросать такую схемку я не возьмусь.
Теперь понятно, спасибо.
Жаль.
А что жаль то? Я вначале объяснил как это делают другие - надо просто сделать также :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Lavr »

Shaos wrote:Я вначале объяснил как это делают другие - надо просто сделать также :)
Как ты объяснил, даже я сам не понял в чем смысл того варианта "графического сопроцессора".
По твоему объяснению быстрым микроконтроллером на внешней шине мы отслеживаем обращения
z80 к своей видеопамяти и дублируем его действия в специальной памяти микроконтроллера, из
которой сформирован видеовыход на современный VGA. Так?

Получается, что процессор z80 всё равно по-старому должен рисовать в видеопамяти - эту нагрузку
мы с него таким "графическим сопроцессором" не сняли. Я правильно твою мысль понял? :roll:
iLavr
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Shaos »

Ну как не сняли? Сняли нагрузку - он же команды теперь внешнему "сопроцессору" подаёт и он всё рисует. Разве что Z80 теперь это нарисованное прочитать не сможет т.к. будет читать только свою видеопамять - тут как бы получается 2 слоя графики - одна родная спектрумовая и вторая внешняя, наложенная на спектрумовую - юзер видит на дисплее одно (графический план с 3D объектами, альфаканалом и т.д.) поверх другого (обычный спектрумовый экран).

По аналогичному принципу работает видеокарта для ZX-Spectrum, которая называется SPECTRA:
Its primary function is to allow the Spectrum to be connected to a TV via a SCART socket to produce an RGB picture that is sharp, bright and free from dot-crawl. ...... An exciting additional feature of the SPECTRA interface is its ability to extend the Spectrum’s display to support 64 simultaneous colours and at a variety of increased vertical and horizontal resolutions, resulting in a total of 32 different display modes. At long last, the limited colour abilities of the Spectrum can be overcome, opening the potential for new visually stunning programs. In its highest resolution mode, the smallest block of clash-free colour becomes just 1 pixel high by 2 pixels wide when using a basic 8 colour palette!
http://www.fruitcake.plus.com/Sinclair/Spectrum/Spectra/SpectraInterface.htm

Примеры графики:

http://www.fruitcake.plus.com/Sinclair/Spectrum/Spectra/SpectraInterface_ScreenGallery.htm
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Lavr »

Shaos wrote:Ну как не сняли? Сняли нагрузку - он же команды теперь внешнему "сопроцессору" подаёт и он всё рисует. Разве что Z80 теперь это нарисованное прочитать не сможет т.к. будет читать только свою видеопамять - тут как бы получается 2 слоя графики - одна родная спектрумовая и вторая внешняя, наложенная на спектрумовую - юзер видит на дисплее одно (графический план с 3D объектами, альфаканалом и т.д.) поверх другого (обычный спектрумовый экран).
Ну я ж про это и говорю - обычный спектрумовый экран рисует всё тот же z80, как и было
без графического сопроцессора. Но теперь z80 ещё и замедляется, отдавать команды графическому сопроцессору.

Я всё же как-то предполагал, что графический сопроцессор только получает команды от основного z80.
А сам z80 больше рисованием в видеопамяти не занимается.
iLavr
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Shaos »

Ну z80 всё также пишет, а "сопроцессор" ловит - никакого противоречия в этом нет. И при этом никто никого не тормозит.
Просто проц обратно сможет прочитать только то, что записал в свою память, а не то, что на экране будет пользователю показываться.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Lavr »

Shaos wrote:Ну z80 всё также пишет, а "сопроцессор" ловит - никакого противоречия в этом нет. И при этом никто никого не тормозит.
Блин... мы как глухой и немой разговариваем... :-?

Я считаю, что если есть графический сопроцессор, то центральный процессор z80 больше
не должен писать в видео-ОЗУ и заниматься отрисовкой графики от слова СОВСЕМ
!

Он должен только делать расчеты и выдавать команды графическому сопроцессору типа:
поставить точку (цвет, координаты),
нарисовать линию (цвет, координаты),
нарисовать круг (цвет, координаты),
нарисовать полигон (цвет, координаты), и т.п.

В этом случае сам центральный процессор z80 больше ничего не изображает в видео-ОЗУ.

Это я так считаю. В этом случае ото всех расчетов по вычислению точки в видео-ОЗУ, алгоритмов
Брезенхэма и т.п. центральный процессор z80 ОСВОБОЖДЁН!
iLavr
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Shaos »

Ну для меня например очевидно, что новый видеовыход должен уметь выводить старую графику тоже (иначе как пользователь сможет запустить программу, использующую этот новый графический сопроцессор, если не сможет увидеть вводимые LOAD "" на новом дисплее) - поэтому и выходит, что надо ловить запись в обычную видеопамять имитируя обычный ZX-экран (таким образом даже получится например переделывать старые ZX-игры, постепенно добавляя в них новые слои новой графики поверх старой).
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Графический "сопроцессор" на ардуино - реально ли?

Post by Lavr »

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

А я хотел для "Специалиста" совсем другой графический сопроцессор, который бы совсем освобождал
бы центральный процессор от вывода графики.

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

Совместимости по всем программам, конечно же, не будет.
Но совместимость с программами на языке высокого уровня остаётся вполне.
Все эти PSET(...), LINE(...), BOX(...), CIRCLE(...) как и PRINT(...) можно сразу отдавать графическому сопроцессору.
В этом случае, я считаю, производительность поднимется значительно.
iLavr