Почитал как-говорится "инструкцию": http://www.emuverse.ru/wiki/%D0%91%D...B5%D0%BB%D1%8F
Стало немного более понятно. Клавиатура вообщем отлавливается таким образом.
Непонятно конечно как понять "отжатие" клавиши, но пока мне это не требуется.Код:bic #^B01000000, @#177660 ; allow keyboard interrupt mov #KbdInt, @#60 ... KbdInt: mov R0, -(SP) mov @#177662, R0 mov R0, KeyCurrent ...
Теперь разборки с таймером чтобы синхронизировать игрушку на 50фпс (а то слишком быстро шпарит)
Вот тут похоже самое непростое.
- - - Добавлено - - -
Нашел про таймер. https://code.google.com/archive/p/bk...kis/Timer.wiki
Но как-говорится "смотришь в книгу видишь фигу". Сколько он должен отсчитать для 50фпс? Что это за Ft = Fosc? Мегагерцы процессора (3-4?)
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
Вектор прерывания лучше ставить до его разрешенияА то вдруг кто-то успел нажать кнопку. Как только ты разрешишь прерывания, оно и случится.
Отжатие проверяется через bit #100, @#177716. Таймер считает один тик на 128 тактов процессора. Т.е. те самые 3 или 4. Можно включить дополнительные делители.
Количество тиков на кадр можно определить простым делением, но я опять напоминаю, что у БК длительность кадра -- 20,48 мс, а не ровно 20.
- - - Добавлено - - -
Кстати, можно писать прямо так:
Это же не x86...Код:KbdInt: mov @#177662, KeyCurrent
Последний раз редактировалось Sandro; 16.07.2023 в 21:23.
BlaireCas(17.07.2023)
А это знать, в общем-то, ни к чему. Достаточно знать количество тактов на кадр: 192 такта в строке (для 3мгц), 320 строк. Отсюда и пляшем, программируя таймер. Manwe когда-то приводил выкладки с нужными значениями для регистров таймера, только не помню, тут или в БК-группе телеги.
BlaireCas(17.07.2023)
перед началом очередного цикла игры:
Остается подобрать значение вместо 36000, которое устроит тебя по скорости игры.Код:mov #40000,@#177706 ;начальное значение счетчика от балды mloop: mov #20,@#177712 ;вкл счета от 40000 до нуля . ..... ;тут делаем все, что надо для одного кадра игры 1w: cmp @#177710,#36000 ;смотрим, сколько осталось от 40000 bgt 1w ;к примеру, ждем пока не останется 36000 jmp @#mloop
Последний раз редактировалось grf; 17.07.2023 в 09:08.
Блог проекта "The Goonies для БК11М"
БК-0011М, БК-0011М-01, SMK-512, AZ
BlaireCas(17.07.2023)
Всем помогавшим большое спасибо. Получилось сделать/перенести примитивную игрушку.
Сделано неоптимально (вместо вывода по словам, выводил тайлы по байтам ну и прочий кривой код).
Со звуком морочаться не стал. Непросто как-то хотя вроде и бипер-бипером.
Проапдейтил первый пост, бинарник там.
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
Oleg N. Cher(28.08.2023), reddie(17.07.2023), Sandro(24.07.2023)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
BlaireCas(18.07.2023)
Последний раз редактировалось BlaireCas; 19.07.2023 в 09:54.
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
А где его взять как-бы? Если там 16х16 - почему-бы и не добавить набор тайлов.
Все-равно там еще править надо инициализацию скроллинга экрана, а то на 40000 не устанавливаю начало.
UPD: нашел некий болдер разноцветный, подрихтовал тайлы, добавил (переключаются по кнопке 1 между моими/марио/болдер)
Последний раз редактировалось BlaireCas; 19.07.2023 в 14:51.
Шедевр портирования на УКНЦ - игра Highway Encounter
Эмуляторы: UKNCBTL, EmuStudio (респект авторам)
CodeMaster(19.07.2023)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)