Просмотр полной версии : Вектор-06Ц: Эмуляция - бордюр и скроллинг
Эмуляторы все ближе к реальному вектору, надо бы разобраться и со скроллингом. Вот как бы тестик
13680
В b2m, VV и ve27 работает по-разному, а на реале, надеюсь, совсем иначе :).
Еще забыл в readme написать, что шрифт взят у b2m :)
Чес говоря непонял в чем тест заключается и что должно быть?
А я, в свою очередь, выдернул шрифт из тестов таймера i8253*.rom :)
Как я понял этот тест проверяет, а что же будет, если скролл изменить в определённый момент, когда "луч" находится в определённой точке с определённой координатой X, которая зависит от задержки. Сразу скажу, у меня в эмуляторе это не предусмотрено.
В b2m, VV и ve27 работает по-разному, а на реале, надеюсь, совсем иначе
На реале при любых задержках картинка стабильна. Прилагаю три скриншота. Халтурите, господа эмуляторщики ;)
Честно говоря я надеялся, что изменение регистра скроллинга, если не в любой момент, то хотя бы в некоторые моменты при отрисовке картинки будет успешным. Т.е. думал, что будет ближе к b2m или VV, а оказалось, что правильно работает только ve27 :(.
---------- Post added at 08:47 ---------- Previous post was at 08:39 ----------
Мне все же интересно, почему так? svofski, b2m - скажите что-нибудь умное по этому поводу.
А может, если сделать дискретность изменения задержки меньше, то найдется "уязвимый" момент, или все же дергать экран при его отрисовке на векторе принципиально невозможно?
Блин, я ведь видел, как организован скролл, но почему-то не задумался о том, он задаётся на весь кадр - значение порта скроллера записывается в счётчик адреса по кадровому импульсу, а дальше счётчик просто увеличивается. Но это сделать как раз проще простого.
Tim0xA, а запусти macsit.rom на реале, там в заставке растровый эффект на бордюре, и что интересно на шесть линий там тратится 1140 тактов, что соответствует 190 тактам на линию (должно быть 192), теоретически должен быть косяк внизу с права на бордюре, хотелось бы увидеть скриншот
partscrl у меня держится четко (если то, что надо было сделать, это понажимать CC пока не переберутся все цифирки?). Скролл -- это просто значение, которым инициализируется счетчик строк. В середине кадра его можно менять, но в следующий раз оно занесется только в начале следующего кадра.
Это, кстати, вопрос невыясненный: по кадровому импульсу, или сигнал защелкивания снимается в момент начала видимой области. Нужен еще тест.
Это, кстати, вопрос невыясненный: по кадровому импульсу, или сигнал защелкивания снимается в момент начала видимой области.
Это почти телепатия - как раз сижу и пялюсь в схему и техническое описание.
Момент важный, т.к., если я все правильно понял, можно опрашивать клавиатуру без ущерба для изображения не только сразу после прерывания, но и во время отрисовки изображения. Главное - чтобы к моменту (который нужно уточнить) переписывания в счетчик в порту 3 было нужное значение.
---------- Post added at 17:37 ---------- Previous post was at 17:25 ----------
Вроде сигнал /WVA, по которому, судя по описанию, осуществляется запись в счетчик экранного адреса, не совпадает с сигналом, по которому происходит прерывание проца.
Судя по тому, что счётчик адреса вычитается всегда, то запись ведётся по строчному СИ перед началом видимой области.
Tim0xA, если не затруднит, сделай еще фотку с результатом тестика
13694
Это не про скроллинг, но тоже интересно (по крайней мере мне, а b2m и svofski может уже разобрались с этим вопросом).
ivagor, если бы ты вслух прокомментировал суть теста, может быть b2m и svofski могли бы понять с каким вопросом они уже разобрались, чтобы второй раз уже к нему не возвращаться =)
Там практически нечего комментировать - вверху экрана риски, относительно которых видно, где на бордюре нечто.
---------- Post added at 23:36 ---------- Previous post was at 23:33 ----------
Проще запустить в разных эмулях и посмотреть чем отличается. В старых и новых версиях b2m (я их коллекционирую) тоже не одинаково.
Риска не совпала - еще один момент, который нужно поправить в эмуляторах.
---------- Post added at 09:09 ---------- Previous post was at 09:01 ----------
Насчет macsitа - вполне возможно, что на большинстве обычных ТВ "недорисованности" бордюра справа внизу не было видно, т.к. отображаемая область была уже, чем захватывает тюнер.
---------- Post added at 09:13 ---------- Previous post was at 09:09 ----------
Обратил внимание, что в border не только несовпадение с риской, но и в верхнем левом углу "черный пробел" - этого я не понимаю.
Вернемся к скроллингу
13706
CC - увеличение задержки
УС - уменьшение
РУС - начальное значение (я задал 7Ah)
Цель теста - найти момент, когда в D24 и D25 записывается значение из порта 3. В ve27 это 7Eh (последнее до) и 7Fh (первое после). Для большей наглядности еще можно следить за моментом и по бордюру.
Возможна ситуация, когда момент записи попадет не между mvi a,127/ out 3 и mvi a,255/ out 3, а между mvi a,255/ out 3 и mvi a,127/ out 3 - тогда скачка не будет. Простейший способ борьбы с этим - "подстроить фазу" nopами, которые закомментированные стоят до метки delay. Т.е. надо их раскомментировать по одному и перекомпилировать тест, и так пока не появится скачек.
Обратил внимание, что в border не только несовпадение с риской, но и в верхнем левом углу "черный пробел" - этого я не понимаю.
Шириной в левую часть бордюра. Видимо, это сигнал гашения запаздывает, такая вот логика. Опять где-то сэкономили.
Шириной в левую часть бордюра. Видимо, это сигнал гашения запаздывает, такая вот логика. Опять где-то сэкономили.
Может это доработка синхры, которую сделал Tim0xA, чтобы сигнал лучше соответствовал ТВ-стандарту, так сказалась?
Нет, это похоже связано с тем, что цвет бордюра задерживается в сдвиговом регистре на 8 точек, прежде чем он на экран попадает. У меня тоже теперь такая полоска есть, после того как я подвинул бордюр в соответствие с реальным скриншотом. Только вопрос, почему нужно было задержать на 10 точек, а не на 8. Хотя по скриншоту трудно сказать - 10 или 9.
Чето я невкурю, почему в тесте clrspace.rom в сдвиговый регистр записано 0, что соответствует максимальному сдвигу вниз, а на реале и в b2m его невидно? или порт проинициализировать забыли?
Нуда, порт 0 непроинициализирован :(
В общем разобрался, инициализация портов происходит в начальном загрузчике, а в програмке clrspace.rom вообще нет обращения к порту скролинга. Это ни есть гуд.
Ещё раз просматривал схему, не нашёл подтверждения наличия полоски вверху. Не буду я её делать. :)
Вернемся к скроллингу
scrltst.zip
На реале, как в ve27: 7Eh (последнее до) и 7Fh (первое после) для теста с 4-мя NOP-ами.
На реале, как в ve27: 7Eh (последнее до) и 7Fh (первое после) для теста с 4-мя NOP-ами.
Скорее почти как в ve27, т.к. пришлось раскомментировать 4 nopа, т.е. задержать дополнительно на 16 тактов.
Обновил эмулятор, подвинул бордюр.
А с последним тестом я так и не понял, правильно у меня или нет.
А с последним тестом я так и не понял, правильно у меня или нет.
Пока нет. В scrltst раскомментировал 4 nopа (т.е. привел к варианту, результаты которого написал Tim0xA) и попробовал в твоем эмуляторе - у тебя скачек при переходе от 81 к 82, а на реале - при переходе от 7E к 7F.
Чтобы поставить точку в разборках со скроллингом, сделал прецизионный тест 13717. В нем дискретность изменения задержки 4 такта (1 nop).
Результаты в эмуляторах:
ve27
Первый скачек: 0F - 10
Второй скачек: 13 - 14
b2m
Первый скачек: 3F - 40
Второй скачек: 43 - 44
Не хватает результата на реале, Tim0xA :v2_wink2:
b2m, еще одно пожелание по эмуляции вектора - у тебя сейчас ширина бордюра по бокам - 16 точек с каждой стороны. Вместе с активной областью это 48 мкс, что, конечно, соответствует ширине реально отображаемой большинством ТВ, но:
1. Тюнер (как видно на скриншотах Tim0xи) может захватывать практически всю активную ширину строки
2. В техописании вектора сказано, что ширина бордюра по 32 точки с каждой стороны (стр. 7 из 124 страничного сборника, справа внизу)
3. Для некоторых компов у тебя отображается фактически 51,2 мкс :)
Может добавишь, если не по 16, то хотя бы по 8 точек справа и слева?
Можно и добавить. Я сначала по 32 с каждой стороны сделал, но смотрится это отвратительно :) Мне не понравилось, и я сделал по 16, так как подумал, что всё равно телевизор отъедает часть бордюра.
Тогда может так - добавь в конфиг настройку full/wide/complete/"или еще как-нибудь"border=0/1. Нормальные люди будут использовать вариант 0 (наверно лучше если он будет по умолчанию), а извращенцы вроде меня будут включать полный бордюр.
Это получается что здвиговый регистр перезаписывается только во время обратного хода 16-й строки т.е. перед самым началом отрисовки изображения ?
Не хватает результата на реале, Tim0xA
1й скачок - из 13 в 14
2й скачок - из 17 в 18
1й скачок - из 13 в 14
2й скачок - из 17 в 18
получается самое начало 16-й строки
Обновил эмулятор. У меня получается за 8 точек до начала информационной части 16-той строки, хотя может это фича только моего эмулятора, но тест теперь правильно "скачет". :)
Попробовал bord и scrltst2 - результаты как у Tim0xи, т.е. его доработка не повлияла на временные параметры бордюра и скрола.
Запускал nqsnail (последний вариант). Все ОК, только улитка шахматная, но я думаю, что это не является неожиданностью.
Результаты Теста Устройств кратко в ветке с барахолкой.
Еще запускал tank, тест техпрогона (недолго), все ОК.
Я чего-то не могу скачать ни одного вложения из этой ветки, наверное они испортились. Можно мне заново залить тест с рисками и прецизионным скроллом?
Пардон, это я их испортил, думал все уже скачали
Спасибо! Ты уж их не удаляй, вдруг когда еще кому пригодятся.
Я думаю, надо эти тесты в картотеку выложить, если ivagor не против.
Обещанного три года ждут. Наконец-то тест в картотеке ----> (http://www.sensi.org/~svo/scalar/ware/861/)
Господа эмуляторщики, Ramiros, b2m, может все-таки сделаете в своих эмуляторах бордюр реального размера? Слева-справа по 32 точки, а сверху-снизу по 16. Можно опционально.
А то взялся освежить свой эмулятор Вектора для Dingoo, надо с чем-то сравнивать, отлаживать растровые и бордюрные эффекты, а у вас бордюр обрезанный.
Господа эмуляторщики, Ramiros, b2m, может все-таки сделаете в своих эмуляторах бордюр реального размера? Слева-справа по 32 точки, а сверху-снизу по 16.
Сверху-снизу у меня именно столько и есть, да и слева-справа тоже по 32 точки, в режиме 512х256 :)
слева-справа тоже по 32 точки, в режиме 512х256
Да мне бы в режиме 256х256
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot