Подумал, что ты выложил код из исходников игры
Даже удивился, что игра таки опрашивала XYZM.
хоть убей - не помню что эта команда делает
not.b d0
Просто инвертирует биты.
Добавлено позже:Не хотел настолько углубляться, больше ожидал, что всё это дилетантское безобразие увидят специалисты и расскажут что к чему. Но что-то нет терпения их ждать, но есть сильное любопытство, поэтому продолжил расследование.
Изучая техдоки по МегаДрайву заметил, что значения нажатых кнопок и вообще все порты находятся прямо в адресном пространстве Z80 - отдельном процессоре, отвечающем за звук. Странно же? Поэтому сразу вспомнил, что Z80 использовался в предыдущей консоли как центральный процессор - в Master System, и что в МегаДрайве была обратная совместимость с ней (через Power Base Converter). Глянул на её порты, и действительно - точно такие входы для геймпада! А у геймпада только крестовина и две кнопки, даже Старта нет. Всё стало ясно теперь, почему только эти кнопки и доступны в памяти при первом обращении и почему надо опрашивать остальные у геймпада через дополнительный бит. Это ж память в памяти в памяти [тут картинка с Ди Каприо из "Начала"] - ячейки контроллера в памяти Z80, которая в свою очередь в памяти Сеги. Скорее всего и геймпады SMS без проблем работают на МегаДрайве, и геймпады МегаДрайва работают на SMS, +на МегаДрайве в режиме обратной совместимости с SMS. В этом случае двумя кнопками геймпада SMS на геймпаде МегаДрайва будут выступать кнопки B и C. Шестикнопочный надо переводить в трёхкнопочный, по идее. Кроссовместимость, обратно-передняя совместимость... не знаю как такое назвать.
Скорее всего вся эта информация где-то есть, и может даже на русском, но я не встречал и Википедия ничего не знает.
В итоге SNES даёт нажатые кнопки сразу в двух байтах ("просто, как два байта прочитать"
), а у Сеги из-за обратной совместимости всё сложно как аппаратно, так и программно.
Так что предположение, что
типа изначально делали 3 кнопочный контроллер. следовательно вся архитектура была запилена именно под 3
не подтверждается. Изначально всё рассчитывалось на крестовину и две кнопки
Добавлено позже:Нашёл сайт фанатов SMS (
), там на форуме подтвердилось всё: и геймпады МегаДрайва работают на SMS в большинстве игр, и кнопки именно B и C, и в трёхкнопочный режим переводить надо. Т.е. выходит, что кнопка Mode не только из-за 16-битных игр Сеги, но и 8-битных предыдущего поколения.
Добавлено позже:Ого, не знал, что игра вышла в августе в Стиме
Просто эмулятор, мультиплеера нет, сами игры удалили с официального сайта. Похоже, свободно их распространять теперь не выйдет, только патчами