Closed GoogleCodeExporter closed 8 years ago
не помешало бы фото :)
с какой стороны, как сильно залазит на
экран ?
а вообще сделаю ещё персональную
настройку, потому, что контроллер экрана
подключён асинхронно и его refresh rate зависит
от температуры. то-есть сразу после
включения одно а через время как
прогреется другое.
Original comment by scorp...@gmail.com
on 17 Nov 2012 at 11:04
Мерцает белым большей частью в правой
половине экрана. На фото это не видно, так
что залил видео - http://www.youtube.com/watch?v=XleAwqH5F90
Хотя на нем тоже плохо видно - белый цвет
очень быстро мерцает, да еще и камера так
близко не фокусируется.
Кстати, ты помнится хотел попробовать
смиксовать BEEPER+AY+TAPE для Динги (как на
Андроиде) и попробовать потянет ли на
дефолтной частоте проца (хотя, ради такого
дела имхо можно и разогнать - 400Мгц держат
вроде бы все динги).
И еще, заметил что на Динге не хватает
функции паузы. На андроиде для этого
достаточно в настройки залезть, а тут
никак. Есть предложение смиксовать звук и
освободившийся правый шифт использовать в
качестве паузы.
Original comment by volga...@gmail.com
on 17 Nov 2012 at 4:24
scorpizx>а вообще сделаю ещё персональную
настройку...сразу после включения одно а
через время как прогреется другое
))) OMG, это же надо настройку делать с учетом
подогрева, чтобы она менялась
соответственно :)
volgalom>ты помнится хотел попробовать
смиксовать BEEPER+AY+TAPE для Динги (как на
Андроиде)
scorpizx, ты хотел? :) попробуй - там микшер
прикрутить 5-10 минут дела.
Original comment by djd...@gmail.com
on 17 Nov 2012 at 10:10
volgalom>И еще, заметил что на Динге не хватает
функции паузы. На андроиде для этого
достаточно в настройки залезть, а тут никак
в настройках есть пункт "pause"))
Original comment by djd...@gmail.com
on 17 Nov 2012 at 10:13
У меня девайс вроде не разогревается. По
крайней мере минут за 15-20 характер мерцания
экрана при включенной синхронизации не
изменяется. Кстати, в старой версии с
включенной синхронизацией ничего не
моргало.
Быстренько состряпал и собрал версию с
микшером (diff во вложении, только из меню
переключатель источника звука не убирал) -
в плане производительности никаких
проблем нет. Вот только почему-то из
динамиков какой-то низкочастотный гул
слышу (в наушниках его нет, но возможно они
просто такую частоту не тянут/фильтруют).
По поводу паузы - совсем позабыл про этот
пункт в меню. %)
Original comment by volga...@gmail.com
on 18 Nov 2012 at 10:14
Attachments:
По поводу гула из динамиков - микшер
оказывается тут ни при чем, просто раньше
этот гул я не замечал. %)
Original comment by volga...@gmail.com
on 18 Nov 2012 at 11:14
В общем, собрал для себя версию с покером и
куртизанками (во вложении). :)
Добавил в меню выбора источника звука
пункт "all" (микшировать все источники) и
повесил на правый шифт паузу. Красота!
Осталось еще только с синхронизацией
разобраться. Может подскажешь что можно
подкрутить? Я в этом совсем ничего не
понимаю.
Original comment by volga...@gmail.com
on 18 Nov 2012 at 11:25
Attachments:
у меня 31й контроллер, подогрев
укладывается в blank период и лагов не вижу но
это достигалось экспериментальным
подбором.
раньше vsync это был фэйк который улучшал но
не искоренял проблему, сейчас нет.
раз уж вы такие резвые :) подберите у себя
параметры, мне надо знать в каком диапазоне
разброс.
чё крутить, R_PORCHES это blank период в линиях
(задержка), от 0x0101 до 0x0f0f. у меня выставлен в
0x0909, чем больше тем лучше туда должна
укладываться погрешность прогрева :). ну и
R_FRAME_RATE, говорит сам за себя, выставил в
51герц. попробуйте соседние значения, если у
вас справа залазит это свидетельствует о
том, что lcd спешит и надо замедлять
попробуйте 48герц.
frame rate:
ILI9325: 2(45гц), 3(48гц), 4(51гц), 5(55гц), 6(59гц)
ILI9331: 6(43гц), 7(47гц), 8(51гц), 9(56гц), 10(62гц)
Original comment by scorp...@gmail.com
on 18 Nov 2012 at 2:38
звук когдато микшировал, но услышал щелчки.
начал разбираться, выяснилось что device_sound
выдаёт на разных девайсах разную длину
буфера. в звуке я был не бельмес, короче
забил, а так источник один качество
максимальное производительность тоже,
меня лично устраивало.
как там дела с переполнением в микшере,
если одновременно будут несколько
источников шпилить не поглючит?
есть идея с общим рендер таргетом чтобы
писать каждый девайс в общий буфер, там
правда теже глабли с переполнением да и
первый источник придётся писать со
стиранием буфера. но зато экономия по
количеству операций чтения/записи, так 7, а
так 5.
Original comment by scorp...@gmail.com
on 18 Nov 2012 at 3:02
scorpizx
Да нормально микшер на андроиде работает
уже давно, ничего не переполняется.
Если dingoo успевает, то надо оставить версию
с микшером, и убрать опцию, как это сделано
в psp версии.
Original comment by djd...@gmail.com
on 18 Nov 2012 at 4:09
scorpizx
У меня тоже 31й контроллер, но иногда
поблымывает вертикальная полоса справа
возле бордера, и как бы луч стоит, правее
этой полосы отображается предыдущий кадр.
Original comment by djd...@gmail.com
on 18 Nov 2012 at 4:22
оно всё так нормально, только как начинаешь
разбираться, багов вагон и маленькая
тележка
Original comment by scorp...@gmail.com
on 18 Nov 2012 at 4:34
Смена частот (попробовал все доступные)
почти никак не влияет - характер мерцания
только едва заметно меняется.
Пытался подкрутить еще Porches - пробовал
пограничные значения (0x109 и 0xf09). Характер
мерцания тоже изменяется очень
незначительно.
Так и должно быть или я что-то делаю не так?
Мне казалось изменения должны были быть
более визуально заметными.
Я правил возвращаемые значения в классе
eLcd9325 функциях Porches() и FrameRate() для ray_sync=true.
Еще обратил внимание, что метод RaySync() в
классе eLcd9338 реализован совсем иначе.
А ты на каких контроллерах экрана тестил?
Original comment by volga...@gmail.com
on 18 Nov 2012 at 4:59
Попробовал на динге свой эталонный тест -
Dizzy 4 ( сборку скачал здесь:
http://lu0.nitroroms.com/download/file/145604/Sinclair_ZX_Spectrum/Dizzy%20Colle
ction%2001%20(19xx)(-)(Ru).trd ).
Также как и на андроиде во время игры
спикерный звук прыжка иногда так
накладывается на AY-музыку, что слышны
щелчки (и в наушниках, и во встроенных
динамиках). Без микширования (только бипер
или ау) никаких щелчков нет.
Original comment by volga...@gmail.com
on 18 Nov 2012 at 5:19
[deleted comment]
о чём я и говорю, звук надо править, а как
пока непонятно :)
насчёт экрана, даа, вот ведь задачка. у меня
31й контроллер и такого жестяка нет, если и
видно лаг то незначительный типо вылазит
предыдущий кадр и иногда промаргивает
полосочка белая толщиной в один пиксел но
это если левые значения вписывать а так оно
всё в blank'е происходит и на экране это не
видно. нужно этот лаг за экран сдвинуть,
если у тебя ничего не помогает то дело в чём
то другом.
попробуй dingear там можно покрутить в сетапе
параметры но подозреваю что не поможет
Original comment by scorp...@gmail.com
on 18 Nov 2012 at 9:40
Attachments:
А как микширование в оригинальном UnrealSpeccy
сделано? Оттуда выдрать код не получится?
Запустил на своем девайсе Dingear 2.4. Экран
сразу же оказался зеркалирован по
горизонтали и точно также моргает белым,
как и в USP с включенной синхронизацией.
Потыкался в Calibrate Screen. Смена Frequency и Blank Period
ни на что не влияет.
При попытке покрутить Pixel Clock в большую
сторону (до максимального 0x10) тоже ничего
не дает, а при 0x08 экран переглючивает и уже
не восстанавливается - помогает только
ресет. В общем, этот эмуль совершенно не
пригоден для использования на моем девайсе.
Original comment by volga...@gmail.com
on 19 Nov 2012 at 5:52
весело :(
попробуй поколдовать с Reset() скорей всего в
ней проблема а именно в
for(int i = 0; i < 5; ++i) //wait for lcd reset
Set(R_RESET, (1 << 4)|(1 << 5)|(1 << 8));
можешь закоментить Set чтобы убедиться что
дело в нём
попробуй увеличить задержку цикл не до 5 а
скажем до 10
ещё попробуй тот Set который в цикле
поменять на
Set(R_RESET, 1|(1 << 4)|(1 << 5)|(1 << 8));
или
Set(R_RESET, 2|(1 << 4)|(1 << 5)|(1 << 8));
но у меня в таком случае экран не ресетится,
подозреваю что и у тебя не будет
проверять надо на двухэкранных мерцающих
эффектах лучше всего в демах, в идеале
изображение на экране должно быть сплошным
без разрывов
насчёт оригинального эмуля посмотрим, но
подозреваю что микшер виндовый, там же под
win32 и можно несколько потоков сразу
отдавать, но возможно я и ошибаюсь
ps: а ты кто, бывший спектрумист?
Original comment by scorp...@gmail.com
on 19 Nov 2012 at 9:43
1. Для начала закомментил первые две
строчки в Reset(). Белые мерцания полностью
пропали, но экран стал еле-еле заметно
рябить для некоторых цветов. Синхронизации
картинки при этом совсем нет - экран
обновляется как попало (еще хуже чем с
отключенной синхронизацией). Кстати, с
отключеной синхронизацией у меня границы
двух кадров видны как диагональные полосы
(растояние между ними - примерно 1/2 экрана),
двигающиеся с левого нижнего до правого
верхнего угла.
2. В следующем билде увеличил цикл в Reset() с 5
до 10. Экран стал мерцать белым с более
низкой частотой (раза в 2 реже) и затрагивая
почти весь экран (ранее мерцала белым
только правая часть экрана).
3. Еще один билд сделал с циклом из 1 шага
(всего один сет в цикле). Экран стал мерцать
вертикальными темными черезколоночными
полосами (т.е. сначала полоса обычная, потом
темнее) с шириной колонки в ~1/3 экрана со
случайным положением по горизонтали (т.е.
колонка из обычных/темных полос прыгает по
горизонтали по экрану).
4. Затем поменял в цикле сет на Set(R_RESET, 1|(1 <<
4)|(1 << 5)|(1 << 8)); и сделал цикл как было до 5.
Получилось как в первом случае - экран едва
заметно рябит (но с белым не мерцает) и
синхронизации нет.
5. После прописал в цикле Set(R_RESET, 2|(1 << 4)|(1 <<
5)|(1 << 8));. Сам цикл остался до 5. Получилось
опять как в первом варианте.
Еще какие варианты есть?
P.S.:
В каком смысле кто я? Спекки у меня был в
90-ые (Ленинград 48Кб, потом какая-то 48Кб
самоделка и затем Пентагон 128Кб). На
спекки-сцене я вообще никак не засветился -
программил убогие демки/гифты чисто для
себя/родни/друзей, уже почти ничего и не
сохранилось, потом ушел на ПиСи, но со
времен ДОСа юзал разные спектрумские
эмуляторы. Сейчас я программер в крупной
финансовой организации (программил в
разное время на более десятка ЯП - от x86 asm до
java/python/c#). Вот и вся типичная история
спктрумиста. :) Если интересны какие
подробности, то могу написать лично.
Original comment by volga...@gmail.com
on 19 Nov 2012 at 11:03
[deleted comment]
попробуй так
virtual void Reset()
{
Set(R_RESET, (1 << 4)|(1 << 5)|(1 << 8));
for(int i = 0; i < 5; ++i) //wait for lcd reset
Set(R_GRAM_WRITE);
Set(R_RESET, 3|(1 << 4)|(1 << 5)|(1 << 8));
Set(R_GRAM_WRITE);
}
>>P.S.: В каком смысле кто я? Спекки у меня был
в 90-ые
да ладно забей, просто часто проскакивают
знакомые лица типа pROF'а Fil'а, они тут тоже
бывают
Original comment by scorp...@gmail.com
on 19 Nov 2012 at 11:25
Попробовал. Экран мерцает белым в правой
части эрана, а в левой чуть заметно рябит.
На черном бордюре временами полосами
отображаются светлые куски изображения
(как и раньше). Т.е. вроде бы все так же как и
было.
Original comment by volga...@gmail.com
on 19 Nov 2012 at 11:36
>Запустил на своем девайсе Dingear 2.4. Экран
сразу же оказался зеркалирован по
горизонтали и точно также моргает белым,
как и в USP с включенной синхронизацией.
Потыкался в Calibrate Screen. Смена Frequency и Blank Period
ни на что не влияет.
При попытке покрутить Pixel Clock в большую
сторону (до максимального 0x10) тоже ничего
не дает, а при 0x08 экран переглючивает и уже
не восстанавливается - помогает только
ресет. В общем, этот эмуль совершенно не
пригоден для использования на моем девайсе.
Это при том, что hhhikr в нем vsync пилил пол года.
Original comment by djd...@gmail.com
on 19 Nov 2012 at 8:47
>>В общем, этот эмуль совершенно не пригоден
для использования на моем девайсе.
>Это при том, что hhhikr в нем vsync пилил пол года.
Может это у меня девайс какой-то особенный
или он вообще для моего контроллера экрана
не тестил.
Original comment by volga...@gmail.com
on 20 Nov 2012 at 6:25
угадал!
просто хичхикер запилил под себя сразу но
под остальные контроллеры так и не
получилось. я делал на основе его идеи
только проще. у него ещё был баг, нужно было
поставить задержку чтобы не глюкало на 31х
контроллерах.
по поводу твоего бага, я его у себя
воспроизвёл, но выводы не радостные.
короче, баг воспроизводится если в первом
Set'е сбросить 5й бит. у меня весь экран
заливает светлым градиентом и мерцает.
в даташыте написано, что:
GON(5бит) and DTE(4бит) Set the output level of gate driver G1 ~ G320 as
follows:
GON DTE G1 ~G320 Gate Output
0 0 VGH
0 1 VGH
1 0 VGL
1 1 Normal Display
тобиш как я понял выставляет напругу на
строки лцд матрицы. заметь я эти биты
устанавливаю в 1цу и это правильно, но на 25х
контроллерах при отключении дисплея GON
зануляется чтоли. видать илитековцы чтото
поменяли. и скорей всего такая борода на
всех 25х, насчёт 38х я тоже не уверен, там
вообще всё переколбасили все адреса
регистров и не только. вот такая ерунда.
Original comment by scorp...@gmail.com
on 20 Nov 2012 at 10:06
Я нифига не понял (хотел было приложить
картинку на знаменитый мем, но потом решил,
что здесь все-таки культурное общество), но
в общем-то лично меня отсутствие
синхронизации не очень напрягает. :)
Original comment by volga...@gmail.com
on 20 Nov 2012 at 1:51
попробуй ещё на последок в первом Set'е
который в цикле
Set(R_RESET, (1 << 4)|(1 << 5)|(1 << 8));
перебрать все комбинации 4го и 5го бита
ну тоесть:
(0 << 4)|(0 << 5)
(0 << 4)|(1 << 5)
(1 << 4)|(0 << 5)
(1 << 4)|(1 << 5)
если не поможет то я незнаю чем помочь.
сделаю этот режим экспериментальным, у
кого не заработает будут юзать предыдущий.
Original comment by scorp...@gmail.com
on 20 Nov 2012 at 2:33
scorpizx
может, лучше прикрутить vsync при подключении
к TV?
это же будет rulez!!!11
Original comment by djd...@gmail.com
on 20 Nov 2012 at 2:54
Перепробовал в цикле процедуры Reset()
установку всех возможных комбинации битов
4, 5 и 8 - практически никаких изменений.
А как включить предыдущий (фейковый) режим
синхронизации? Много кода переделать
придется?
Синхронизация на ТВ - поддерживаю. А это
вообще реализуемо? Жаль только я свой
AV-шнурок от Динги куда-то задевал и
протестить не смогу.
Original comment by volga...@gmail.com
on 20 Nov 2012 at 4:28
djdron
а ты к телику подключаешь? я уж и забыл
когда в последний раз.
телевыход не ковырял совсем, а что разве
нет синхры на нём, я и не знал :)
никто не ресёрчил?
volgalom я добавлю нужные опции, будет выбор
типа vsync'а
Original comment by scorp...@gmail.com
on 20 Nov 2012 at 6:05
Ну, подрубал, когда делал отключение vsync.
Синхры нет, полоса едет плавно сверху-вниз.
Ну и плюс можно сделать фичу, чтобы если
запускаешь эмуль с подключением к тв, то
текущие опции vsync отключаются (там должен
работать свой vsync). А тосейчас надо
предварительно выключить vsync, выйти из
эмуля, потом включить выход на телек, потом
опять запустить.
Original comment by djd...@gmail.com
on 20 Nov 2012 at 7:50
scorpizx, протестил на своем девайсе твой патч
в ревизии 840 (
http://code.google.com/p/unrealspeccyp/source/detail?r=840 ).
При RAY SYNC = PERFECT смена VBLANK ни на что не влияет,
а увеличение FRAME RATE увеличивает частоту
мерцания и уменьшает время белой заливки
при мерцании. Т.е. чем больше значение, тем
чаще и быстрее мерцает белым правая
половина экрана.
Идеальным вариантом для меня остается
режим RAY SYNC = RAW.
Original comment by volga...@gmail.com
on 26 Nov 2012 at 7:54
да всё уже ясно :) для того и сделал разные
режимы синхры, у кого не заработает для тех
лучшим вариантом остаётся RAW.
перфект к сожалению на 9325 не прокатит, ибо
это злой хак. даже по дашашиту сказано что
при сбросе контроллера надо выдерживать
паузу в несколько фреймов и выполнять
поэтапно, ну а тут передёргивает его
практически мгновенно.
ещё бы владельцы 9338х отозвались, для меня
это тёмный лес.
Original comment by scorp...@gmail.com
on 26 Nov 2012 at 1:48
Original comment by djd...@gmail.com
on 14 Mar 2013 at 4:38
Original issue reported on code.google.com by
volga...@gmail.com
on 16 Nov 2012 at 7:14