mcleod_ideafix escribió: ↑31 Ene 2020, 17:57
I can just say COOOOOOOOOL! This was my first home videogame I saw on my TV.
Curious about how you implemented original analog controls. May I suggest to use two PS/2 mice, one for each player? (the PS/2 connector of the ZXUNO allows for two PS/2 devices. It's up to the FPGA to determine which kind of device they must be, so no problem for the two of them implementing the same kind of device.
Это так же моя первая видео-игра из далекого 1985 года
По поводу управления PS/2 mouse.
Модуль клавиатуры я использовал из очень интересного проекта "test_produccion". Интересен тем, что вряд ли его видело подавляющее количество пользователей ZX Uno, он нужен для настройки или тестирования, или для обучения )
Так вот, в этом модуле есть и модуль PS/2 mouse, но он простой и однобайтный, проверял только нажатие трех кнопок на мышке. Пришлось его немного модифицировать под три байта.
если сделать управление правой ракеткой только от кнопок мыши - то работает без проблем, LKM + RKM - управление вверх\вниз.
Если же использовать мышь по назначению - то тут для меня все немного сложнее. Из модуля я получаю 9 нужных байт - {ps2m_data[5],ps2m_data[23:16]} :
5-й бит - Y знак + 8-мь бит Y-перемещение
Наверное только по 5 му биту мало будет отслеживать вверх или вниз, а со всеми 9ю битами пока не придумал, как делать приращение
Если просто присваиваю
player2cap <= {ps2m_data[5],ps2m_data[23:16]};
то ракетка всегда вверху, можно немного вниз дернуть конечно, но она снова убегает вверх.
Видимо надо какую то такую конструкцию
if ( ps2m_ready )
begin
r_move <= { ps2m_data[5], ps2m_data[23:16] };