Сделал тест для джойстиков на портах $07/$0e/$0f и их шадковых доппельгангеров на $27/$2e/$2f: [отсыл к прекрасному]
(Я неправильно считываю порт 7, следовало бы настроить порт А второго PPI).
У меня при включенных Шадках картинка такая:
Сделал тест для джойстиков на портах $07/$0e/$0f и их шадковых доппельгангеров на $27/$2e/$2f: [отсыл к прекрасному]
(Я неправильно считываю порт 7, следовало бы настроить порт А второго PPI).
У меня при включенных Шадках картинка такая:
Больше игр нет
Привет !!
Подскажите как правильно опрашивать Джойстик П (ПУ) ?
Вот что я насочинял и поставил в прерывания:
joy:
mvi a,83h
out 4
in 06h
cma
ana 0fh
cpi 1; vpravo
jnz joykon2
mvi a,0BFH
sta KEYKOD
jmp joykon5
joykon2:
cpi 2 ; vlevo
jnz joykon3
mvi a,0EFH
sta KEYKOD
jmp joykon5
joykon3:
cpi 4 ; vverx
jnz joykon4
mvi a,0DFH
sta KEYKOD
jmp joykon5
joykon4:
cpi 8 ; vniz
jnz joykon5
mvi a,7FH
sta KEYKOD
joykon5:
Вектор-06Ц reboot http://metamorpho-games.blogspot.com/p/blog-page.html
В "Байте №8" за 1992 год приведена немного другая подпрограмма для джойстика ПУ:
К ней только надо добавить анализ результатов...Код:JOY: PUSH B ; сохраняем рег. пару ВС Выходной параметр: XRA A ; обнуляем аккумулятор OUT 07 ; обнуляем порт 07 в (A)-код IN 07 ; считываем число из порта 07 бит: 0-"СС" MOV B,A ; сохраняем его в регистре В 1-"УС" IN 01 ; считываем число из порта 01 2-"FIRE2" ANI 60H ; выделяем биты клавиш "УС" и "СС" 3-"FIRE1" RAL ; передвигаем их на 3 разряда влево 4-"влево" RAL ; 5-"вниз" RAL ; 6-"вправо" ORA B ; "накладываем" регистр В на аккумулятор 7-"вверх" POP B ; восстанавливаем рег. пару ВС RET ; возврат из п/п
Последний раз редактировалось Improver; 02.08.2021 в 14:22.
metamorpho (02.08.2021)
Это разные джойстики. -П - это кишиневский центр компьютер (Вектор-USER 7), -ПУ (в девичестве УСПИД) - это изначально УСПИД, а в центре байт его стали называть -ПУ, вероятно чтобы не рекламировать конкурентов.
metamorpho (02.08.2021)
Improver, ivagor спасибо !!
Меня попросили добавить в игру "Binorum" возможность управлять джойстиком.
Просьба звучала так: "поддержка джойстика ПУ, он на порте 06H висит разъема ПУ"
Поэтому теперь я немного подзапутался как сделать его опрос
- - - Добавлено - - -
Ещё как пример сказали "сделай как в River Raid", поэтому svofski пожалуйста напиши как ты в River Raid опрос джойстика сделал
Последний раз редактировалось metamorpho; 02.08.2021 в 16:30.
Вектор-06Ц reboot http://metamorpho-games.blogspot.com/p/blog-page.html
Это ржачно, потому что я как раз ничего не успел сделать -- Сергей подхачил Рива Рейд раньше, чем я успел пошевелиться. Но у меня уже был сделан опрос джойстиков, просто на других портах:
https://github.com/svofski/incursion...ster/input.inc
Больше игр нет
metamorpho (02.08.2021)
Это как раз -П, он тоже висит на ПУ, порт 6 (на чтение).
- - - Добавлено - - -
Раскладка битов желаемого -П и реализованного у тебя -C совпадают, возможно он просто изменил номер порта в опросе. Но у такого минималистичного варианта есть подводные камни, надеюсь он все же инициализацию ПУшной ВВ55 добавил (пусть даже у него скорее всего работает и без инициализации в игрушке).
metamorpho (02.08.2021)
svofski, ivagor спасибо !!
Например вот опрос порта джойстика:
in JOYC1
cma
mov m, a
Мне непонятно зачем делается инверсия аккумулятора (сма) ?
Зачем нужна инициализация ПУшной ВВ55 ? И обязательна ли она ? Если да, то как она делается ?
В моём варианте опроса джойстика делается так:
- в подпрограмме прерывания идёт опрос клавиатуры и записывается в ячейку KEYKOD код нажатой клавиши или если ничего не нажато записывается код того что ничего не нажато
- далее в этой же подпрограмме прерывания идёт опрос порта джойстика и если там есть нажатие (влево,вправо,вверх,вниз) тогда в ячейку KEYKOD записывается код аналогичный коду стрелок с клавиатуры
- далее в основном цикле программа обрабатывает только то что находится в KEYKOD
Такой одновременный опрос клавиатуры и джойстика будет ли работать или в опросе джойстика есть какие-то "подводные камни" ?
- - - Добавлено - - -
Где лучше делать опрос джойстика в подпрограмме прерываний или разницы нет где ?
Вектор-06Ц reboot http://metamorpho-games.blogspot.com/p/blog-page.html
Разные начальные загрузчики могут оставить ПУшную ВВ55 в разном состоянии.
Если загрузка была из внешнего пзу/картриджа, то порт 6 запрограммирован на ввод, но остается вопрос насчет порта 5, который управляет выбором джойстиков. Теоретически может получится ситуация, когда один или оба джойстики будут отключены, но я так понимаю, что это может быть неактуально для упрощенного подключения -П с одним джойстиком.
А вот 512 байтный загрузчик, который был штатно установлен в большинстве векторов, программирует порт 6 на вывод и опрос джойстика без инициализации не получится.
Это и есть инициализация для опроса джойстика-п (даже сразу двух джойстиков).
metamorpho (02.08.2021)
Я проверяю не абсолютное состояние контактов, а инверсию относительно того состояния порта, которое было при старте. Таким образом если мы опрашиваем несуществующий порт, нам неважно ноль там или единица.
Дальше все порты пробегаем и сравниваем с нейтральным положением, если в каком-то бите была инверсия, это определяется как повернутая палка, или нажатая кнопка. Инверсия чтобы удобно было ксорить со считанным значением и потом and-ить, это детали реализации.
Больше игр нет
metamorpho (02.08.2021)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)