Великий долгострой nedoSprinter

Компьютер "Спринтер" http://sprinter.nedopc.org

Moderator: Shaos

User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

HardWareMan wrote:Поздравляю! Вы открыли для себя дитеринг и дедитеринг!
подобные фокусы очень хорошо получались на цветной электронике.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

HardWareMan wrote:Поздравляю! Вы открыли для себя дитеринг и дедитеринг!
Ну что такое dithering я и так знал ;)

Мы с помощью него подправляем полноцветные изображения для вывода в RGB565

А вот что такое "дeдитеринг"? ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Shaos wrote:А вот что такое "дeдитеринг"? ;)
Обратная дитерингу функция. Применялась на сеге, поэтому, некоторые игры через RGB выглядели несколько иначе.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

HardWareMan wrote:
Shaos wrote:А вот что такое "дeдитеринг"? ;)
Обратная дитерингу функция. Применялась на сеге, поэтому, некоторые игры через RGB выглядели несколько иначе.
Ааа - dedithering - понятно :)

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

P.P.S. Единственное, что при аналоговом смешении коричневый будет не совсем коричневый, а скорее грязно-жёлтый: http://avga.prometheus4.com/index.php?p=2-3

P.P.P.S. Наверное можно подмухлевать с аналоговым ключом, чтобы коричневый был исключением - у него надо зелёную составляющую в 2 раза уменьшать при аналоговом смешении:
red := 2/3×(colorNumber & 4)/4 + 1/3×(colorNumber & 8)/8
green := 2/3×(colorNumber & 2)/2 + 1/3×(colorNumber & 8)/8
blue := 2/3×(colorNumber & 1)/1 + 1/3×(colorNumber & 8)/8

Color 6 is treated differently; when using the formula above, color 6 would become dark yellow, as seen to the left, but in order to achieve a more pleasing brown tone, special circuitry in most RGBI monitors, including the IBM 5153 color display, makes an exception for color 6 and changes its hue from dark yellow to brown by halving the analogue green signal's amplitude.
http://en.wikipedia.org/wiki/Color_Graphics_Adapter
Last edited by Shaos on 25 May 2013 08:16, edited 3 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
vinxru
Retired
Posts: 587
Joined: 27 Mar 2013 04:55
Location: 62.192.229.16

Post by vinxru »

А чем вам dedithering (в обсуждаемом случае) отличается от изменения размера изображения (с интерполяцией)?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

vinxru wrote:А чем вам dedithering (в обсуждаемом случае) отличается от изменения размера изображения (с интерполяцией)?
Видимо только тем, что берёт в качестве источника картинку с дизерингом :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
vinxru wrote:А чем вам dedithering (в обсуждаемом случае) отличается от изменения размера изображения (с интерполяцией)?
Видимо только тем, что берёт в качестве источника картинку с дизерингом :)
Кстати я только что подсчитал - в этой палитре EGA2VGA только 85 уникальных цветов и похоже удастся построить генератор такой палитры на резисторах и диодах, правда схема коррекции коричневого цвета добавляет хлопот...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Эмулируем:

Image

Shift-F8 включает/выключает "de-dithering":

Image

Вот так будет выглядеть FlexNavigator в беcпалитровом 16-цветном режиме:

Image

У меня есть его сырцы - цвета можно будет подкорректировать...

P.S. Да и под "правильное" разрешение можно будет подогнать ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Мой эмулятор стал "спектрум-совместимым" :)

Image

Это на нём запущен BasicSE IV в HiRes моде... :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Настоящими портами будут только порты вида #AAxx, которые будут выделяться динамически "интеллектуальным" платам, а все остальные порты будут одним физическим портом, при чтении или записи в который будет вызывать прерывание NMI (такое же как и при использовании команд акселератора) - обработчик прерывания будет определять что произошло, акселератор ли это или в порт обращаются (обработчик по адресу из стека может почитать какая команда была в момент прерывания), брать значение и что-то делать - так можно эмулировать переключение страниц памяти как в Спринтере (4 порта) или как в 128/Пентагоне/Скорпионе, да даже и порт #FE можно так поддержать - главно всё программно. :)
Порты видимо придётся перевернуть, т.к. случайные программы могут обращаться к портам старой однобайтовой командой и при этом на старшый байт адреса пойдёт содержимое регистра A, что может привести к случайному выбору порта вида #AAxx если в A попадётся #AA, т.е. формат стандартных портов надо сделать #xxAA. чтобы они случайно не выбрались (если потом не хватит - добавим #xxAB и т.д.)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Есть туманное осознание того, как подружить DSS, BasicSE и CP/M - попробую описать словами. Вобщем у меня не предвидится НИКАКОГО кода из старых спринтеровских биоса и эстекса - соответственно место в первом окне освобождается - туда можно затолкать BasicSE (т.е. функциональный аналог ZX-спектрума). Среди спектрумовских RST-точек есть точка 30h, которая как я думаю используется только самим ZX-ромом - туда можно поставить обработчик вызовов BIOS/ESTEX/MOUSE для спринтеровских программ (т.е. спринтеровские RST 10h и RST 18h будут превращаться в RST30h) подкорректировав ром, чтобы он туда не шёл. В точку 66h вместо бесполезной спектрумовской NMI-затычки ставим нашу - которая будет перехватывать обращения к неизвестным портам и командам акселератора. Наш код планирую расположить сверху - в самом последнем окне, причём в ОЗУ (да наверное на самом деле всё в ОЗУ будет). При необходимости код может самопереноситься в другие окна, самомодифицируясь под новые адреса. Кроме программ EXE появится возможность запускать TAP-файлы, SNA-файлы и возможно даже TRD (которые используют правильные точки входа). В случае запуска COM-файлов, система переходит в CP/M-80 режим, когда нулевое окно переключается в ОЗУ, заполняя при этом RST-точки нужными переходами в наш код - т.е. COM-файлы также могут иметь спринтеровский функционал (вызовы RST 10h и RST 18h корректировать тут уже не придётся)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

На ATM2+ тоже были 320x200 и даже 640x200 :)
Там правда намутнено со спектрумовыми экранами и порезано фиг знает каким образом - однако оно там есть ;)
Теоретически можно сэмулировать программно...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:На ATM2+ тоже были 320x200 и даже 640x200 :)
Там правда намутнено со спектрумовыми экранами и порезано фиг знает каким образом - однако оно там есть ;)
Теоретически можно сэмулировать программно...
Точнее программно-аппаратно - например делаем в этажерку ещё одну опциональную платку с пиком, которая ловит все обращения в 5 и 7 окна и, забирая шину у Z180, выводит правильные пикселы в нужные места нашей видеопамяти...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Эмулируем:

Image

Shift-F8 включает/выключает "de-dithering":

Image
Подкорректировал начальную заставку эмулятора - теперь оно будет так :roll:

P.S. Первую картинку специально оставил в разрешении 640x350, чтобы посмотреть как оно могло бы выглядеть на широкоформатном мониторе ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Википедия говорит вот такие цифры для палитры ZX-спектрума:

Code: Select all

Color number    Binary value    BRIGHT 0 (RGB)   BRIGHT 1 (RGB)  Color name
---------------------------------------------------------------------------
      0             000         #000000          #000000         black
      1             001         #0000CD          #0000FF         blue
      2             010         #CD0000          #FF0000         red
      3             011         #CD00CD          #FF00FF         magenta
      4             100         #00CD00          #00FF00         green
      5             101         #00CDCD          #00FFFF         cyan
      6             110         #CDCD00          #FFFF00         yellow
      7             111         #CDCDCD          #FFFFFF         white
Точно таких цветов нету ни в стандартной EGA, ни в микшированной палитре EGA2VGA - значит придётся создавать пользовательскую палитру только под спектрум...

P.S. Можно ещё туда добавить цвета из палитры "аппаратный GigaScreen" - это 102 цвета, получающиеся путём мерцания двух спектрумовских экранов.

P.P.S. Multicolor 8x1 тоже планирую поддержать программно - и в формате Timex/SpectrumSE, и в формате ATM2+...
Я тут за главного - если что шлите мыло на me собака shaos точка net