Не, не кривой, это эмулятор кривой.
Я тут поэкспериментировал, в дебажной сборке вообще всё чётко работает, на кнопки реагирует сразу. А вот в релизной - прям беда, жмёшь-жмёшь, а толку нету, но в игре - всё нормально, только в заставке проблема. И я этот косяк не могу отловить и исправить уже много лет, ещё Hobot на него ругался.
Спасибо, я знаю, я везде опаздываю.
BlaireCas (20.07.2023)
Что-то происходит с регистром 177660.
Этот болдер на начальной заставке постоянно делает его tstb и мол по bmi должен переходить дальше .. но старший бит в байте (я так понимаю нажатая клавиша) почему-то не устанавливается.
Там еще дальше есть момент когда все-же прокатит начальная заставка или тупо влезть в дебагер и отменить проверку Будет тоже черный экран где он опять-же делает 1$: tstb @#177660 / bpl 1$ и собственно ждет.
Возможно на этот регистр влияют какие-то сетапы начальные в CSIDOS или в самом болдере или в эмуляторе - тут уж даже фиг его знает.
Как например пропустить начальную заставку - остановить эмулятор - увидеть что он постоянно тестирует этот регистр, вписать туда вместо tstb @#177660 например mov #177777, r0 (012700 177777) - запустить дальше
Потом будет черный экран где будет то-же самое, но туда вписывать такую команду не надо ибо чревато другими приколами
Вообщем где-то тут собака порылась
(кстати офигенная вещь в эмуляторе на ходу менять память просто ну очень хорошо на самом деле - зачетно!)
Последний раз редактировалось BlaireCas; 20.07.2023 в 15:25.
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
А черт его знает, может он "пореже" обнуляет регистр 177660 из каких-то своих предпочтений Ну скажем не 50 раз в секунду, а только 25 (грубо говорю, но как-то так)
Дальше кроме как в меню этот регистр похоже не используется и вообщем поэтому сама игра идет нормально. Он юзается только на начальной заставке видимо и в менюшке начальной (о да, там он используется, уже проверил)
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
Пока что я остановился на предположении, что на реальной машине при чтении из 177662 бит 7 в 177660 сбрасывается не сразу а с какой-то задержкой, а в эмуляторах - мгновенно.
В игре разрешены прерывания от клавиатуры, где читается код из 177662, и одновременно с этим делается проверка на новый код в 177662 путём тестирования бита 7 в 177660. И вот тут-то и получается конфликт, в релизной версии с оптимизациями, что-то слишком соптимизировалось.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Там есть кусок кода где просто висит на нем:
Для примера загружается этот болдер-даш-3 уровни 0. Лезем в эмулятор, после звука заставки остановить эмулятор и в адресе 001436 меняется команда на скажем tstb #377 (вместо tstb @#177660) ну чтобы сразу флаг взвелся без вопросов.
(кстати еще не сказал - но редактирование прямо ассемблера в эмуляторе это мегакруть!!!! вот уж НЕ ОЖИДАЛ!)
Далее - продолжить. Эта вылезающая заставка исчезнет и .. игра виснет дальше на вот таком куске кода (уже по другому адресу):
001674: tstb @#177660
001700: bpl 001674
Ну и оно уходит в цикл на эмуляторе. Бит не выставляется хотя звук клавиш слышен дефолтный, а других команд вообще нет.
Этот код тоже можно заменить на тот-же tstb #377, но тогда меню игры будет "весело работать" (не будет ждать нажатия клавиши).
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
Не могу сказать как в 1801ВМ1, а в 1801ВМ2 в этом случае, когда возникает прерывание VIRQ, то оно отрабатывается спустя одну команду. В UKNCBTL прерывание возникает сразу, потому такой же цикл с клавиатурой не сработает. А вот на реальной УКНЦ работает.
Попробуйте при возникновении запроса на прерывание отработать его спустя одну команду.
Для игры в этот болдер можно просто когда вот крутится заставка - в окне системных регистров в 177660 записать 100 да и всё, прерывание запретится, игра будет работать как задумано.
Видимо где-то автор это забыл сделать. Либо действительно реальный процессор запускает прерывание на команду позже.
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)