Пошаговая инструкция:
1. Запускаем эмулятор.
2. Выбираем конфигурацию БК-0010-01
3. Выходим из Бейсика в Монитор командой MO<Ввод> признак монитора - знак '?'
Дальше возможны варианты.
А. Если включена опция "Эмулировать загрузку ленты".
4.а. Набираем M<Ввод>
На запрос 'Имя ?' жмём <Ввод>
Появится диалоговое окно для выбора файла. Выбираем там нужный нам файл (BOLDER.BIN), и он загружается. Поскольку он снабжён автозапуском, то и сам запускается.
Б. Если вЫключена опция "Эмулировать загрузку ленты".
4.б. Набираем M<Ввод>
На запрос 'Имя ?' набираем "BOLDER"<Ввод>
Выбираем пункт меню "Файл\Загрузить ленту...", появится диалоговое окно выбора wav файлов. Переходим в директорию bin и выбираем файл BOLDER.BIN (Это стало возможно в последней версии сборки). Ждём загрузки и наслаждаемся ностальгическими звуками. По окончании загрузки файл сам запускается.
5. Кликаем мышкой на экране, чтобы передать фокус ввода с клавиатуры эмулятору.
(Этот косяк будет исправлен в следующем обновлении. А если бы хоть кто-нибудь хоть раз указал на конкретное место, что вот тут вот фокус теряется, то исправлено было бы уже давным-давно.)
Нужно переносить фокус ввода для того, чтобы в отладчике менять значения регистров, набивать в машкоде простенькие программки в дампере памяти. Было бы неприятно, если бы мы пытались задать новое значение какому-нибудь регистру, а вместо этого все нажатия клавиш передавались бы в эмулятор
6. Играем.
Играть с клавиатуры крайне не удобно, ровно так, как и на оригинальной БК, поэтому лучше играть с эмуляцией джойстика.
Выключаем NumLock, в игре задаём управление от джойстика и играем с бОльшим комфортом.
--------------
В процессе обнаружился наверное неустранимый косяк. Поскольку инструкции, укладывающиеся во фрейм выполняются авансом, за как можно меньшее время, а нажатия на клавиши клавиатуры обрабатываются в реальном времени, то появляется рассинхрон.
И в играх, вот как конкретно в BOLDER, в которых опрос клавиатуры делается не по прерыванию, а через бит 6 порта 177716 клавиатура просто не синхронизирована по времени выполнения с игрой.
В общем игра думает, что клавиша не нажата, в то время как она нажата, т.к. инструкции опроса клавиатуры давно выполнились, опросили бит 6 убедились, что ничего не нажато, а клавишу только нажали.
Как это исправить я не знаю. Возможно придётся обратно уменьшить время фрейма до 20 мс, чтобы немного увеличить отзывчивость. Но это скажется на производительности.
Нажатие реальной клавиши фиксируется по событию OnKeyDown, отжатие - по событию OnKeyUp ведь надо же обрабатывать бит 6 в регистре 177716 чтобы зафиксировать нажатие и отжатие. А эти события приходят когда им вздумается, а не когда начинается фрейм.
наверное можно как-то привязывать результаты событий клавиатуры к границам фрейма, но нужно городить уже диспетчер привязки событий, чтобы они привязывались каждое к своему фрейму в порядке прихода. Делать очередь фреймов и событий, синхронизировать их.
Причём OnKeyDown приходит циклично, пока клавиша нажата. а OnKeyUp - однократно при отжатии клавиши.
Я вот не вижу простого решения.
что там городить, дребезг, что ли, эмулировать собираешься? был за фрейм хоть один keydown? ну и нажата, значит, на время следующего
Прихожу без разрешения, сею смерть и разрушение...
сейчас видео выложу.
это просто...
у меня нет слов как назвать ЭТО !
по сравнению с прошлыми эмуляторами мрак.
- - - Добавлено - - -
https://youtu.be/yt8-dwoo2t8
запускал одинаковые игры в новом и 3.1 версии эмулятора.
менюшки и окошки отклеиваются и живут самостоятельной жизнью.
большая часть игр так и не запускается, хотя в остальных эмуляторах всё нормально работает.
эмулятор зависает так, что его приходится прибивать из диспетчера задач.
баг на баге и багом погоняет.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
У меня было (проскочило)
предложение к тов. Patron'у
Сделал очередь событий клавиатуры, откуда события берутся в начале фрейма. Статус нажатия/отжатия держится весь фрейм целиком. Ничего не изменилось. Никаких улучшений.
Повезло. Словил дедлок. А я думал, что уже все места костылями подпёр. Значит ещё одно было незамеченное.
Я - за. Ибо на меня надежды мало.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)