Вход

Просмотр полной версии : Глупый вопрос от новичка про такты и кадры



trefas
30.12.2019, 23:25
Прошу не пинать. В сети и тут на форуме поискал, тесты провел.
Никак в толк не возьму как правильно привязываться к кадрам.
Понимаю, что машинный такт это при 3.5Мгц, т.е. 1/3500000 секунды и команды кушают их по нескольку штук за раз (знаю про таблицы с указанием тактов)
Понимаю, что ULA 50 раз в секунду шарится в ОЗУ и данные из экранной области и области атрибутов превращает в картинку на экране.
Таким образом между кадрами есть порядочное количество машинных тактов, чтобы поменять картинку и получить по максимуму 50 кадров в секунду.

Вроде как команда HALT тормозит ЦП до ближайшего кадра

Почему тогда такой код (ниже) не приводит к желаемому результату - смешение цветов:
10 ORG 28000
20 ENT $
30 LD HL,22865
40 loop LD A,8 ; синий paper для знакоместа в центре экрана
50 LD (HL),A
60 HALT
70 LD A,48 ; желтый
80 LD (HL),A
90 HALT
100 JR loop

Но получаю мерцание
Надо видимо юзать прерывания, а не HALT, но я с ними пока на вы. Если не сложно, покажите кто-нибудь на примере этой задачи нужный код. Потому как дизассемблить демки в поисках реализации мультиколора не вариант. Остатка моей жизни на это не хватит ;)

Lethargeek
30.12.2019, 23:36
Понимаю, что ULA 50 раз в секунду шарится в ОЗУ
неправильно понимаешь, на самом деле юла "шарится в озу" аж 614 400 раз в секунду :D
и к тому же неравномерно, с перерывами на бордюр, но во время вывода растра - каждые 4 такта гребёт два байта

Titus
30.12.2019, 23:40
Но получаю мерцание
Правильно, будет мерцание. Один кадр синий квадратик, другой желтый.

А что ты хотел получить?

Spectramine
31.12.2019, 00:00
Надо видимо юзать прерывания, а не HALT, но я с ними пока на вы. Если не сложно, покажите кто-нибудь на примере этой задачи нужный код. Потому как дизассемблить демки в поисках реализации мультиколора не вариант. Остатка моей жизни на это не хватит
Программа правильная, её можно даже на бейсике писать. Только если ты её запускаешь на эмуляторе на PC, из-за разных частот обновления монитора (60Гц) и обновления экрана Спектрума (50Гц) на эмуляторах Спектрума на PC будет мерцание более сильное и неравномерное, чем на реальном Спектруме - на котором оно будет хоть и заметным, но равномерным, и в целом даст смешивание цветов. Но мерцание никуда не денется, гигаскрин и мерцание завязаны.

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


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

trefas
31.12.2019, 11:46
Спасибо за ответы.

Destr
31.12.2019, 12:56
Никогда не получишь 50 в сек, ибо железо так и не привели в порядок.
Максимум что можно сделать - убрать IM1 (свой обработчик прерываний сделать придётся, IM2 который)
А лучше их вообще убрать. HALT ловить и после него по-шустрому что нужно рисовать
И потом (когда кадр отрисовался) так-же шустро убирать...
Только так из спека можно вытащить хоть какой-то видеопоток...
Всё это жуткое колдунство, тут только асм в помощь, никакие бейсики-паскали-и прочие дела не помогут...
Пичаль, но жёсткий код - единственное что сможет...

Titus
31.12.2019, 12:58
Никогда не получишь 50 в сек, ибо железо так и не привели в порядок.
Что за ерунда. Какое железо? В какой порядок?

Destr
31.12.2019, 13:03
У тебя попытка неплохая, но если разобратся - устанавливаешь тупо переменные, за тебя их обрабатывает ПЗУ
А это очень и очень неторопливый зверь...

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

Титус. Стандарта нет и не было никогда. Разве что фирменный спек (но кто его видел?)

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

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

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

На Большом Адронном Коллайдере наконец-то добрались до Гейнзенберга, но до чистого кристалла задающей частоты - ещё как до Китая на карачках...
Грустно всё это, но в целом - спек как-то живёт (ну в смысле справляемся, кодим что-то :) )

Titus
31.12.2019, 13:04
Титус. Стандарта нет и не было никогда. Разве что фирменный спек (но кто его видел?)
Не пугай человека.
Отмечай новый год)

Destr
31.12.2019, 13:13
Ок :)
Я просто для справки :)
И кстати - поздравте меня братишки - я не зря видимо так упорно ковырялся со всяким электронных хламом...
Назначили админом области...
Отмечаю, радуюсь, офигеваю, перевариваю...
Даже как-то неожиданно (думал будет через пару лет, а тут так сразу...)

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

Тест прикольный придумал:
Как узнать что пить уже хватит
Берёшь 2 стакана (обычные, советские, 200 гр.)
Наливаешь один водки
Второй воды
Закрываешь глаза
Рандомно берёшь любой
Пьёшь
Если не понял где вода а где водка - знчит хватит...

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

Rindex хлопает в ладоши!

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

(как скучаю по Дэну порой, прикольный чел был, ладно встретимся ещё...)

Spectramine
31.12.2019, 13:30
trefas, вот похожая программа, но на бейсике, и цвета смешиваются на бордюре:
10 PAUSE 1:BORDER 1:PAUSE 1:BORDER 6:GOTO 10

Странно, что смешивание желтого и синего дает сероватый, а не зеленый)

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


И кстати - поздравте меня братишки - я не зря видимо так упорно ковырялся со всяким электронных хламом...
Назначили админом области...
Поздравляю! Успехов на новом поприще. И с бухлом полегче)

Всех с наступающим)

Lethargeek
31.12.2019, 13:53
Если не понял где вода а где водка - знчит хватит...
потому что спьяну налил одно? :D


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

Destr
31.12.2019, 14:27
Не слушайте Летарга, он злой как собака, всегда со всеми ссорится, но как-то терпим, свой ведь всё-таки, брат-спектрумист...
Не пужайтесь... Это пройдёт...


И с бухлом полегче)
Да-да, постараюсть, спасибо бро, тебя тоже с НГ!
(не накалякал на этот год дему, не до дем тут было, ага...)

CodeMaster
31.12.2019, 14:27
так и должно быть в аддитивном случае излучения
Дико извиняюсь, но давно интересовало, почему тут используется зелёный, а не жёлтый? Точнее не почему (это скорее из-за большего цветового диапазона RGB), а как и почему это работает только на мониторах, никто на вскидку не видел описания физики процесса?

Destr
31.12.2019, 14:34
Дико извиняюсь, но давно интересовало, почему тут используется зелёный, а не жёлтый? Точнее не почему (это скорее из-за большего цветового диапазона RGB), а как и почему это работает только на мониторах, никто на вскидку не видел описания физики процесса?
Это из-за ЭЛТ - частота возбуждения люминофорных частиц, это жуткий квантмех, но для простоты - когда-то выяснили что из смешения цветов (RGB) можно получить весь диапазон...
Это спек так тупо приколочен был к телеку, на самом деле это всё ещё интересней, но вот в данном случае оперируется этими цветами...
(хоть это конечно и не особо грамотный подход, но для пробы - сойдёт...)
По сути зелёный - просто его легче всего отобразить (раньше, когда устройство видеоконтрольное представляло из себя Ч/Б телевизор, зелёнка была лучшей частотой подачи на вход видеосигнала. Это лютая жесть была, и вишь как - до сих пор повелось так...)

Lethargeek
31.12.2019, 14:38
как и почему это работает только на мониторах,
почему "только на мониторах"? для любых источников излучения (а не отражения от окрашенных)
а зелёный - кроме "проще прикрутить" еще связано с особенностями глаза (человечьего, а не каких-нить раков и осьминогов))

CodeMaster
01.01.2020, 19:06
почему "только на мониторах"? для любых источников излучения
Не ссуть, почему смещение цветов при излучении работает иначе чем при отражении.


еще связано с особенностями глаза (человечьего
Это очевидно связано с глазом человека ;-) Вопрос, в чём отличие восприятие глазом эмитированного и отражённого фотона?

Bolt
01.01.2020, 20:04
Да ни в чём.

Если, условно, в глаз прилетел красный и зелёный фотон - это жёлтый. Добавим синий - получим белый (серый).

Жёлтая краска - это которая поглощает синий, отражает красный и зелёный.
Синяя краска - поглощает красный и зелёный, отражает синий.
Смешали - получили чёрный (серый).

Для зелёного надо смешать жёлтый и... назовём его голубой, но это не так. Загугли CMYK.

CodeMaster
01.01.2020, 21:15
Загугли CMYK
Да уже не первый раз. И, в принципе, уже почти всё понял. Осталось только понять...


Жёлтая краска - это которая поглощает синий, отражает красный и зелёный.
Синяя краска - поглощает красный и зелёный, отражает синий.
Смешали - получили чёрный (серый).
... почему, если в реальной жизни смешать жёлтую и синюю краску, получаем зелёный (тёмно-, грязно-зелёный, но не серый) цвет?


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

Bolt
02.01.2020, 01:13
... почему, если в реальной жизни смешать жёлтую и синюю краску, получаем зелёный (тёмно-, грязно-зелёный, но не серый) цвет?
Чем светлее оттенок синего, тем чище будет получаться зелёный, принципа это не изменит.
Если смешать жёлтую краску и синюю, результат будет зависеть от красок и от освещения, причём не только от спектра красок, но и как они будут себя вести при перемешивании.

Излучаемых цветов не три, а сплошной спектр. В глазах три интегратора со светофильтрами (вообще 3+1, три вида колбочек и палочки, у дальтоников 2+1, а у тетрахроматов аж 4+1). Если в глаз светим "красным" - реагирует "красный", если светим "зелёным" - реагирует "зелёный".

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

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

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

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

Bolt
02.01.2020, 05:57
Ещё добавлю.

В телевизоре люминофор, светодиоды или светофильтры трёх цветов: красный, зелёный, синий.
Жёлтый это красный+зелёный.
0.5*жёлтый+0.5*синий = 0.5*(красный+зелёный+синий) = серый.
Выбраны такие цвета потому что колбочки реагируют именно на них. Можно получить практически любой цвет, любой чистоты.

С краской сложнее, у неё спектр равномерней.
Голубая краска отражает синий и зелёный, поглощает красный.
Жёлтая краска поглощает синий, отражает зелёный и красный.
Смешали в пропорции 1:1, получили отражение синего и красного на 50%, зелёного на 100%. Грязно-зелёный.

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

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

И откопал у себя в архиве фото светофильтра:

71143

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


результат будет зависеть от красок и от спектра освещения
Вот, всё, теперь теория сошлась ;-) Спасибо.

Destr
02.01.2020, 13:38
Странно кстати что никто не вспомнил о красках (ну тупо которые смешиваем вживую, не на экране, а например из баллончика, или там масляные, или акварель...)
Ведь тоже бывают по-разному, мелкодисперсность частиц (в случае с коллоидными растворами) или тупо от свойств раствора истинного (зависит ЧТО именно обеспечивает поглощение-отражение, какая молекула)...
Углубились конечно неплохо :)
Но сути это не меняет, в принципе схема цветообразования понятна, просто глаз человечий (как там Летарг сказал) он работает по своему эволюционному принципу, и люди до сих пор не сумели создать 1-в-1 аналог, ну вот не было у техники ни целей ни задач таких, да и времени на эволюцию...
Максимум сумели неплохо приблизится к отображению нужной картинки, но до сих пор это всё достаточно условно (к тому-же технические решения чаще делаются исходя и простоты достижения цели - отобразить хотя-бы приближённо что нужно, дешевезны исполнения ну и конечно надёжности).
Какое там эмулировать полную картину мира, отрисовалось на экране что-то похожее на нужную картинку - и Слава Богу, мозги наблюдателя распознают и сами додумают как оно должно быть...

Bolt
02.01.2020, 13:55
Странно кстати что никто не вспомнил о красках (ну тупо которые смешиваем вживую, не на экране, а например из баллончика, или там масляные, или акварель...)
"Да, жаль, что нам так и не удалось послушать начальника транспортного цеха..." :v2_lol: