подобные фокусы очень хорошо получались на цветной электронике.HardWareMan wrote:Поздравляю! Вы открыли для себя дитеринг и дедитеринг!
Великий долгострой nedoSprinter
Moderator: Shaos
-
- Retired
- Posts: 1328
- Joined: 25 Jul 2011 00:14
- Location: WWW
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Ааа - dedithering - понятно :)HardWareMan wrote:Обратная дитерингу функция. Применялась на сеге, поэтому, некоторые игры через RGB выглядели несколько иначе.Shaos wrote:А вот что такое "дeдитеринг"? ;)
P.S. Поприкидывал на логике - палитра EGA2VGA тяжеловатой получается, т.е. видимо придётся аналоговые смесители на резисторах и транзисторах городить...
P.P.S. Единственное, что при аналоговом смешении коричневый будет не совсем коричневый, а скорее грязно-жёлтый: http://avga.prometheus4.com/index.php?p=2-3
P.P.P.S. Наверное можно подмухлевать с аналоговым ключом, чтобы коричневый был исключением - у него надо зелёную составляющую в 2 раза уменьшать при аналоговом смешении:
http://en.wikipedia.org/wiki/Color_Graphics_Adapterred := 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.
Last edited by Shaos on 25 May 2013 08:16, edited 3 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Retired
- Posts: 587
- Joined: 27 Mar 2013 04:55
- Location: 62.192.229.16
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Кстати я только что подсчитал - в этой палитре EGA2VGA только 85 уникальных цветов и похоже удастся построить генератор такой палитры на резисторах и диодах, правда схема коррекции коричневого цвета добавляет хлопот...Shaos wrote:Видимо только тем, что берёт в качестве источника картинку с дизерингомvinxru wrote:А чем вам dedithering (в обсуждаемом случае) отличается от изменения размера изображения (с интерполяцией)?
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Эмулируем:

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

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

У меня есть его сырцы - цвета можно будет подкорректировать...
P.S. Да и под "правильное" разрешение можно будет подогнать

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

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

У меня есть его сырцы - цвета можно будет подкорректировать...
P.S. Да и под "правильное" разрешение можно будет подогнать

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

Там правда намутнено со спектрумовыми экранами и порезано фиг знает каким образом - однако оно там есть

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

P.S. Первую картинку специально оставил в разрешении 640x350, чтобы посмотреть как оно могло бы выглядеть на широкоформатном мониторе

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Википедия говорит вот такие цифры для палитры ZX-спектрума:
Точно таких цветов нету ни в стандартной EGA, ни в микшированной палитре EGA2VGA - значит придётся создавать пользовательскую палитру только под спектрум...
P.S. Можно ещё туда добавить цвета из палитры "аппаратный GigaScreen" - это 102 цвета, получающиеся путём мерцания двух спектрумовских экранов.
P.P.S. Multicolor 8x1 тоже планирую поддержать программно - и в формате Timex/SpectrumSE, и в формате ATM2+...
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
P.S. Можно ещё туда добавить цвета из палитры "аппаратный GigaScreen" - это 102 цвета, получающиеся путём мерцания двух спектрумовских экранов.
P.P.S. Multicolor 8x1 тоже планирую поддержать программно - и в формате Timex/SpectrumSE, и в формате ATM2+...
Я тут за главного - если что шлите мыло на me собака shaos точка net