Заодно привяжи к нему и синхронизацию игрового цикла.
Привяжи - это не значит, помести обработку игрового цикла внутрь обработчика кадровых пререываний.
На спектруме, повторюсь, так и делают. На кадровых прерываниях, например, висит музыка. А так же по ним синхронизируется игровой цикл.
S_V_B(05.04.2020)
Поясню:
Допустим есть десять подвижных объектов.
В основном цикле мы заранее просчитали положение сдвиг спрайта и сохранили в буфере (экранные координаты, размеры, адрес для стирания)+признак активности.
На основании этого сформировали список из 10 позиций который будет крутить таймер.
Единожды отобразив на экарне сбрасывается признак активности и выводятся только те объекты в которых произошли изменения.
т.е. сдвинул спрайт в буфере, установил признак активности - в следующем кадре он выводится.
- - - Добавлено - - -
я догадываюсь
т.е. там же сделать некий счетчик и мы будем знать сколько кадров прошло с прошлого раза.
БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO
Включить\Выключить сетевой таймер из ЦП можно только так?
Или есть еще варианты?Код:.ASCIZ <33><267> ;влючить сетевой таймер ЦП .ASCIZ <33><277><267> ;вылючить сетевой таймер ЦП
БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Обновление:
https://yadi.sk/d/XLyQ-qbc_17P5w
Можно уже стрелять и геноцидить
Возможны глюки, все в процессе отладки.
БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO
Не молоти пробел как угорелый.. разбираюсь с этой проблемой, также в упор врагов не расстреливай (негуманно)
- - - Добавлено - - -
Такова цена асинхронности отрисовки.. глюки вылазят где не ждали, поэтому выше спрашивал про таймер.. все дружно промолчали
- - - Добавлено - - -
Еще неприятность - пробел пересекается с кнопкой вправо, так что при движении вправо стрелять не получится.
БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO
hobot(16.04.2020)
Бит 9 регистра 0177054 в магистрали ПП, установлен в 1 - не работает, сброшен в ноль - работает.
BIC #400,@#177054 - разрешить сетевой таймер в магистрали ЦП.
BIS #400,@#177054 - запретить сетевой таймер в магистрали ЦП.
Но есть одно НО. События сетевого таймера поступают на вход EVNT процессора, там по данному случаю устанавливается триггер, по установленному состоянию которого и производится прерывание по вектору 100. При удовлетворении прерывания триггер очищается. Теперь представим такую ситуацию: у нас в ЦП запретили прерывания командой MTPS #200. Установлен 7-й бит в PSW, прерывания не возникают, но импульсы на вход EVNT поступают, поэтому триггер сетевого таймера установлен. В магистрали ПП командой BIS #400,@#177054 запрещаем подавать импульсы на вход EVNT ЦП. Но триггер сетевого таймера остался в установленном состоянии. Поэтому при разрешении прерываний командой MTPS #0 всё равно проскочит одно прерывание по сетевому таймеру.
hobot(16.04.2020)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)