PDA

Просмотр полной версии : Просмотрщики мультикололоров



GriV
06.03.2007, 12:13
Вроде не видел их нигде, может и ошибаюсь?
вот тут их можно скачать:

- Просмотрщик стандартных мультиколоров (http://say.da.ru/MY_SPECCY/Files/Multicolor/Multi_standart.7z)
- Просмотрщик двойных мультиколоров (http://say.da.ru/MY_SPECCY/Files/Multicolor/multi_double.7z)

Текст исходника прилагается.
Загружается и показывается картинка, которая находится сразу за телом просмотрщика "MULTICOL.C"
Контрольные кнопки - O и P.
Контрольный выстрел - Space.

P.S. Под скорпион

CityAceE
06.03.2007, 14:18
А полноэкранный просмотр невозможен?
Как конвертировать картинки в мультиколорный формат?

GriV
06.03.2007, 18:11
Полноэкранный - невозможно
причина - мультиколор рисуется программно. Точнее - идите в ZX Review'96.
Там это тонко объяснено.
Конвертить - при помощи
SpeConvertor.exe (http://say.da.ru/MY_SPECCY/Files/Multicolor/GSC001.ZIP) от Aprisobal.

CityAceE
07.03.2007, 00:52
Полноэкранный - невозможно
причина - мультиколор рисуется программно.
Я прекрасно знаю, что такое multicolor и за счёт чего он достигается. Но всё равно не понимаю, почему не возможно его сделать полноэкранным? Есть же время, пока рисуется бордюр. Или этого времени слишком мало?

GriV
07.03.2007, 07:19
Ну тут проблема в константах -
имеется 224 такта на целую строчку (за 1 такт рисуется 2 пиксела). Т.е. банальный NOP - это целое знакоместо. Соответственно чтобы вывести пару байт команда должна занимать 8 тактов (!).
Такой команды у спекка нет.
Есть Push - но она занимает 11 тактов (12 для машин М1).
Но для Push надо ещё и установку того, что будет Push. Это от 4 до 10 тактов (от ld <reg8>,<reg8> до ld rp,nn). Т.е. получается от 15 до 21 такта для вывода пары байт (от 16 до 22 для М1 машин). И это не считая установку стека для Push, различные рассчёты. Есть ещё проблема, что экран рисуется слева направо, а стек будет расти справа налево.

Практически используется другая система - не Ld затем Push, а Pop HL и Ld (NN),HL, где NN - адрес атрибутов.
Длительность - 26 тактов на пару байт, что ещё сильнее сокращает размер видимой в мультиколоре области. Теоретический предел - 224/26= 8 раз. Тогда 208 тактов это чистые затраты на вывод атрибутов, а надо ещё и стек переустановить. Кроме того, я в своей программе использовал циклы вывода, это ещё -13 (14 для М1 машин) тактов для DJNZ. Вот так и выходит.
Т.е. даже если использовать конструкцию Ld HL,nn Push HL то это всё равно не позволит отрисовать весь экран - максимум 10 пар байт (20 знакомест, до 32 никак). Эта проблема сильно пересекается с проблемой прорисовки полного экрана - она не решается, хотя кажется что решение вот вот рядом.

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

Grand
08.03.2007, 04:35
Мнение по просьбе GriV'а:
Занятно. Но если интересует, хочу ли я сделать поддерку такого в GSV, то пока ничего сказать не могу. Я версию 2.6 (http://www.zx.pk.ru/showthread.php?p=75353#post75353) писал 1,5 года - некогда заниматься в полной мере. :(

alone
10.03.2007, 18:37
Там это тонко объяснено.
Конвертить - при помощи
SpeConvertor.exe от Aprisobal.

Конвертить надо с помощью моего конвертора con18, исходники которого лежат в приложении Info Guide #7 (в конверторе Aprisobal'я мой более старый движок, он конвертит хуже).

Добавлено через 26 минут
Самую свежую версию (exe и исходники) выкладываю на сайте:
http://alonecoder.narod.ru/zx/

rasmer
10.03.2007, 21:36
Конвертить надо с помощью моего конвертора con18, исходники которого лежат в приложении Info Guide #7 (в конверторе Aprisobal'я мой более старый движок, он конвертит хуже).

Добавлено через 26 минут
Самую свежую версию (exe и исходники) выкладываю на сайте:
http://alonecoder.narod.ru/zx/мерсям от всех!!!!

GriV
11.03.2007, 13:18
Конвертить надо с помощью моего конвертора con18, исходники которого лежат в приложении Info Guide #7 (в конверторе Aprisobal'я мой более старый движок, он конвертит хуже).
Спасибо, действительно лучше... и явных горизонталей не стало...

GriV
13.03.2007, 22:25
По просьбе камрадов...

вот оно - расширенный просмотрщик (http://say.da.ru/MY_SPECCY/Files/Multicolor/multi_double_ext.7z) - кушает аж 18 знакомест (в ревю'96 писалось что это невозможно даже теоретически :-))

Добавлено через 33 минуты
Ага, и ещё
дёргание во время перемещения - нормально.
От него к сожалению никак не избавиться :-(

unbeliever
13.03.2007, 23:37
Нда.. Калькулятор и умножение тактов на байты похоже все освоили. А вот нестандартного мышления как не было с 1997 года (S4B) так и нет.... Прийдется доказывать что full screen multicolor возможен вопряки калькулятору и турборежиму. В принципе в этом и есть весь смысл demoscene!

alone
14.03.2007, 00:14
А вот нестандартного мышления как не было с 1997 года (S4B) так и нет.... Прийдется доказывать что full screen multicolor возможен вопряки калькулятору и турборежиму.
Ещё в древнем журнале ZX Guide #2 лежала процедура, выводящая во весь экран картинку из Satisfaction. Аналогичный метод (выкусывание ненужных изменений) вовсю используется в игре Hexagonal Filler. Конечно, надо в конверторе организовать поддержку этого (иначе в правой части экрана будут встречаться недопромультиколоренные глюки), но... Цвет на точку убил у меня желание заниматься мультиколорами.

CityAceE
14.03.2007, 02:35
Цвет на точку убил у меня желание заниматься мультиколорами.
Цвет на точку возможен лишь на некоторых машинах, в то время как мультиколор возможен на любом Спектруме. Так что напрасно...

GriV
14.03.2007, 08:00
Нда.. Калькулятор и умножение тактов на байты похоже все освоили. А вот нестандартного мышления как не было с 1997 года (S4B) так и нет.... Прийдется доказывать что full screen multicolor возможен вопряки калькулятору и турборежиму. В принципе в этом и есть весь смысл demoscene!

Докажи.


Ещё в древнем журнале ZX Guide #2 лежала процедура, выводящая во весь экран картинку из Satisfaction. Аналогичный метод (выкусывание ненужных изменений) вовсю используется в игре Hexagonal Filler. Конечно, надо в конверторе организовать поддержку этого (иначе в правой части экрана будут встречаться недопромультиколоренные глюки), но... Цвет на точку убил у меня желание заниматься мультиколорами.

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

Добавлено через 9 часов 23 минуты
Вот, ещё один релизик :-D без дёргания (http://say.da.ru/MY_SPECCY/Files/Multicolor/multi_double_ext1.7z), убрал стековую обработку процедуры вывода, посадил на обычные регистры и вывел в отдельный поток %)

Grand
16.03.2007, 04:12
И все-таки мультиколор жестко привязан к аппаратной части. Например, у меня на реальном Скорпионе картинка не совсем идеальна, а на эмуляторе (я использовал RealSpectrum) всё хорошо. И невозможно в программе автоматически выполнять подстройку под конкретное железо...

GriV
16.03.2007, 10:56
И все-таки мультиколор жестко привязан к аппаратной части. Например, у меня на реальном Скорпионе картинка не совсем идеальна, а на эмуляторе (я использовал RealSpectrum) всё хорошо. И невозможно в программе автоматически выполнять подстройку под конкретное железо...

Я проверял по крайней мере на двух эмуляторах (R80 и Unreal) а так же на живом железе :-) подстройку делать можно, хотя и сложно.

TmK
16.03.2007, 15:00
И все-таки мультиколор жестко привязан к аппаратной части. Например, у меня на реальном Скорпионе картинка не совсем идеальна, а на эмуляторе (я использовал RealSpectrum) всё хорошо. И невозможно в программе автоматически выполнять подстройку под конкретное железо...

Есть такая демка CrazyLove - там есть автоматическая подстройка мультиколора
Причем я пробовал в Unreal менять значение
- start of paper (тактов до начала экрана) на разные 8000-20000
и каждый раз Cr_Love правильно автодетектилось (единственное - там нет учета m1 машин)

alone
17.03.2007, 23:15
Цвет на точку возможен лишь на некоторых машинах, в то время как мультиколор возможен на любом Спектруме. Так что напрасно...
Для меня решающее - невозможен вывод спрайтов с точностью до пикселя, невозможно наложение спрайта на фон. Есть и куча других минусов.


Есть такая демка CrazyLove - там есть автоматическая подстройка мультиколора
Причем я пробовал в Unreal менять значение
- start of paper (тактов до начала экрана) на разные 8000-20000
и каждый раз Cr_Love правильно автодетектилось (единственное - там нет учета m1 машин)
Насколько помню, в той демке просто переключаются экраны через строчку. Ничего детектить не надо (и, кстати, это невозможно, если нет порта FF).

TmK
19.03.2007, 10:33
Вот мой вариант мультиколора:
Разрешение: 128х96
Кол-во цветов: 88 (каждая "точка" своим цветом из 4х зависимых цветов из палитры)

Пофиксено под Pentagon в эмуляторе Unreal (реал пока отсутствует)
Чтобы посмотреть "правильно" под эмулем, надо
1) На ПЦ поставить разрешение с частотой 60Гц
2) В эмуле поставить частоту прерываний - 60Гц

Изображение на 80% как на реале:-)
Оптимальный вариант - если ваш монитор поддерживает 50Гц, тогда выставляйте 50Гц - похожесть возрастеть до 90%

MULTI.RAR - образ дискеты для ZX с конверченными картинками

input.rar - изображения которые были сконвертированы

input_d.rar - изображения которые были сначала "задизерены" Фотошопом, потом сконвертированы

output - полученные изображения

output_d - полученные "задизереные" изображения

TmK
19.03.2007, 10:40
Собственно вот и сам конвертор (недоделанный)
При сохранении данных для ZX сохраняет на диск D четыре файла:
SCR0.COD
SCR1.COD
ATTR0.COD
ATTR1.COD

И собственно приблизительно так выглядит конвертация:

Исходное изображение:
http://tmk79.jino-net.ru/3.bmp

Конвертация:
http://tmk79.jino-net.ru/3_conv.bmp

Jukov
30.03.2007, 16:22
А есть еще какие-нибудь мультиколорные картинки (где 8-16 цветов на байт)?

GriV
03.04.2007, 17:24
Задача не очень понятно поставлена. Что значит 8-16 цветов на байт???

newart
04.04.2007, 20:25
output_d - полученные "задизереные" изображения
Я думаю что реально сделать и 1 пиксельный дитеринг, правда придеться изобратать сверхинтеллектуальный метод. :)
От текущего дитеринга толк только если рассматривать картинку на пц, на реальном спектруме не смотрится совершенно. (особенно на 54см ТВ)
Так же неплохо поддержать c64 режим, когда точка размером 2x1 (пускай и при ограниченной ширине картинки)

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

TmK
04.04.2007, 23:57
Я думаю что реально сделать и 1 пиксельный дитеринг, правда придеться изобратать сверхинтеллектуальный метод. :)
От текущего дитеринга толк только если рассматривать картинку на пц, на реальном спектруме не смотрится совершенно. (особенно на 54см ТВ)
Так же неплохо поддержать c64 режим, когда точка размером 2x1 (пускай и при ограниченной ширине картинки)

К сожалению реала нет:-) Смотрел под эмулем 60Гц



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

Это точно:-) Думаю как сделать чтоб тока атрибутами манипулировать (в текущем режиме используется и расположение пикселов) и чтоб можно было точки быстро ставить.

Jukov
08.04.2007, 07:32
Задача не очень понятно поставлена. Что значит 8-16 цветов на байт???

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

GriV
08.04.2007, 08:02
в общем то так и есть, каждая линия знакоместа описывается байтом, а там стандартные атрибуты - и яркость и фон, задействуются 7 бит - бит яркости, 3 бита фона, 3 бита чернил, или ты чтото другое имеешь в виду?

Jukov
08.04.2007, 09:57
в общем то так и есть, каждая линия знакоместа описывается байтом, а там стандартные атрибуты - и яркость и фон, задействуются 7 бит - бит яркости, 3 бита фона, 3 бита чернил, или ты чтото другое имеешь в виду?

Это фсё неважно! Я спрашиваю есть ли еще картинки, кроме той (где цветок изображен или что-то типа того), что на диске с твоим просмотрщиком!!!

GriV
08.04.2007, 18:01
Так и скажи - есть ли другие примеры :-) есть и дофига. Мыло мёое знаешь

psndcj
09.04.2007, 07:27
в общем то так и есть, каждая линия знакоместа описывается байтом, а там стандартные атрибуты - и яркость и фон, задействуются 7 бит - бит яркости, 3 бита фона, 3 бита чернил, или ты чтото другое имеешь в виду?
ну так это и получается 4 бита на линию знакоместа - а не 7 =) или белый инк выглядит иначе, чем белый папер???

GriV
09.04.2007, 09:06
На каждую точку приходится.... считали кажется 83 цвета (гигаскрин). Но бывает два типа точек - точка INK и точка PAPER. В любом случае она обладает своим из 83 цветов. А уж закрасишь ты их обоих белым или синим, твоё дело.

Jukov
09.04.2007, 16:51
Посмотрел двойные мультиколоры. Это сила! Жаль только что не на весь экран. Надо попробовать сделать под турбу.

GriV
09.04.2007, 17:54
пока в процессе... ещё парочку знокомест получится отвоевать.
Дальше проблемы - причём не только у меня. ACoder сказал что его демки (на 24 знакоместа) сильно зависели от длительности INT'а соответственно я хочу сделать так, чтобы эта зависимость была минимальна. И потом, я пишу под М1 машину, на ней всё таки потери производительности серьёзные - максимум 22 знакоместа для произвольных атрибутов.

GriV
22.04.2007, 11:34
работа завершилась - 20 знакоместный двойной мультиколор (http://say.da.ru/MY_SPECCY/Files/Multicolor/multi20_double.7z), да ещё в нём появилась функция листания - хотя и очень ограниченная - жмём пробел (Space) - и грузится следующая. Вот тут выкладываю это дело с примерчиками и естестно как всегда с исходным файлом. В целом - релиз - бета, но он работает. Есть ещё много чего оптимизировать, но когда я соображу что и как, это ещё месяц надо будет. Особенности - слабая зависимость от длительности ИНТа. Как всегда (всё моё) - только для М1 машин.

alone
22.04.2007, 22:47
Можно и во весь экран:
http://alonecoder.narod.ru/zx/MCXVIEW.rar
Конвертор там же.

Jukov
23.04.2007, 16:38
Придумано неплохо. Но некоторые картинки идут с серьёзными искажениями.

alone
24.04.2007, 15:29
Придумано неплохо. Но некоторые картинки идут с серьёзными искажениями.
Старые картинки надо переконвертировать. Цитирую описание: "Мультиколорные картинки надо
конвертировать программой Con18 от 22.4.2007 в режиме Limit MC."