С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
что-то вроде:
при эмуляции спека еще проще, не нужно обрабатывать изменение как событие, портов только многоКод:// вызывается один раз в начале фрейма old_portX_value = new_portX_value; new_portX_value = 0xFF; // ничего не нажато kb_state = getKeyboardState(); // что сейчас нажато на пц-клаве if (kb_state[some_key]) new_portX_value &= some_key_mask; // и так далее // обработка изменения состояния, тоже однократно if (old_portX_value != new_portX_value) { ... } // и далее в течение фрейма при любых чтениях порта X подставляем new_portX_value
БК знаю плохо, но, вероятно, эмуляция лишь одного события по началу фрейма сильно упростит жизнь,
субъективных ощущений не вызывая (всё равно человек так быстро кнопки не долбит)
Прихожу без разрешения, сею смерть и разрушение...
Нажатие реальной клавиши фиксируется по событию OnKeyDown, отжатие - по событию OnKeyUp ведь надо же обрабатывать бит 6 в регистре 177716 чтобы зафиксировать нажатие и отжатие. А эти события приходят когда им вздумается, а не когда начинается фрейм.
наверное можно как-то привязывать результаты событий клавиатуры к границам фрейма, но нужно городить уже диспетчер привязки событий, чтобы они привязывались каждое к своему фрейму в порядке прихода. Делать очередь фреймов и событий, синхронизировать их.
Причём OnKeyDown приходит циклично, пока клавиша нажата. а OnKeyUp - однократно при отжатии клавиши.
Я вот не вижу простого решения.
что там городить, дребезг, что ли, эмулировать собираешься? был за фрейм хоть один keydown? ну и нажата, значит, на время следующего
Прихожу без разрешения, сею смерть и разрушение...
сейчас видео выложу.
это просто...
у меня нет слов как назвать ЭТО !
по сравнению с прошлыми эмуляторами мрак.
- - - Добавлено - - -
https://youtu.be/yt8-dwoo2t8
запускал одинаковые игры в новом и 3.1 версии эмулятора.
менюшки и окошки отклеиваются и живут самостоятельной жизнью.
большая часть игр так и не запускается, хотя в остальных эмуляторах всё нормально работает.
эмулятор зависает так, что его приходится прибивать из диспетчера задач.
баг на баге и багом погоняет.
У меня было (проскочило)
предложение к тов. Patron'у
Сделал очередь событий клавиатуры, откуда события берутся в начале фрейма. Статус нажатия/отжатия держится весь фрейм целиком. Ничего не изменилось. Никаких улучшений.
Повезло. Словил дедлок. А я думал, что уже все места костылями подпёр. Значит ещё одно было незамеченное.
Я - за. Ибо на меня надежды мало.
Эту тему просматривают: 4 (пользователей: 0 , гостей: 4)