Раумеется, влезет. Просто писать её некому. Все, кто может, и так заняты.
Марио, кстати, тоже должен влезть. Он же без скролла.
Вид для печати
Почитал как-говорится "инструкцию": 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?)
Вектор прерывания лучше ставить до его разрешения :) А то вдруг кто-то успел нажать кнопку. Как только ты разрешишь прерывания, оно и случится.
Отжатие проверяется через bit #100, @#177716. Таймер считает один тик на 128 тактов процессора. Т.е. те самые 3 или 4. Можно включить дополнительные делители.
Количество тиков на кадр можно определить простым делением, но я опять напоминаю, что у БК длительность кадра -- 20,48 мс, а не ровно 20.
- - - Добавлено - - -
Кстати, можно писать прямо так:
Это же не x86...Код:KbdInt: mov @#177662, KeyCurrent
А это знать, в общем-то, ни к чему. Достаточно знать количество тактов на кадр: 192 такта в строке (для 3мгц), 320 строк. Отсюда и пляшем, программируя таймер. Manwe когда-то приводил выкладки с нужными значениями для регистров таймера, только не помню, тут или в БК-группе телеги.
перед началом очередного цикла игры:
Остается подобрать значение вместо 36000, которое устроит тебя по скорости игры.Код:mov #40000,@#177706 ;начальное значение счетчика от балды
mloop: mov #20,@#177712 ;вкл счета от 40000 до нуля
. ..... ;тут делаем все, что надо для одного кадра игры
1w: cmp @#177710,#36000 ;смотрим, сколько осталось от 40000
bgt 1w ;к примеру, ждем пока не останется 36000
jmp @#mloop
Всем помогавшим большое спасибо. Получилось сделать/перенести примитивную игрушку.
Сделано неоптимально (вместо вывода по словам, выводил тайлы по байтам ну и прочий кривой код).
Со звуком морочаться не стал. Непросто как-то хотя вроде и бипер-бипером.
Проапдейтил первый пост, бинарник там.
А где его взять как-бы? Если там 16х16 - почему-бы и не добавить набор тайлов.
Все-равно там еще править надо инициализацию скроллинга экрана, а то на 40000 не устанавливаю начало.
UPD: нашел некий болдер разноцветный, подрихтовал тайлы, добавил (переключаются по кнопке 1 между моими/марио/болдер)