Проблема реализации LinkCable в эмуляторе GameBoy - PullRequest
0 голосов
/ 17 октября 2019

Я добавил эмулятор связывания в эмулятор геймбоя: https://github.com/maxbit89/GBEmulator

Кабель связи реализован в https://github.com/maxbit89/GBEmulator/blob/master/serial2sock.c

Главное, что я не сдвигаю SB (0xff01)я просто меняю его местами, и когда передача завершена, я очищаю флаги SC (0xff02) и запускаю последовательное прерывание 0x58. (Технически я думаю, что это должно быть равно shift и запускать прерывание.)

Я использовал пример comm.c из gbdev. (https://github.com/maxbit89/GBEmulator/blob/master/test/roms/free/linkcable.gb) Пример работает нормально. Но когда я запускаю Tetris с моей реализацией, меню игры работает нормально (выборы показаны в обоих случаях) Но когда игра запускается, игра зависает и зависает в цикле.

Эмулятор можно запустить для тестирования следующим образом:

Экземпляр GBemulator 1:

./GBemulator Tetris.gb -l 8008

Экземпляр GBemulator 2:

./GBemulator Tetris.gb -c 127.0.0.1 8008

Примечание:Текущий источник не компилируется в Windows (MinGW), потому что я не реализовал winsock (код - Testet с Debian Buster)

Может кто-нибудь сказать мне, почему Тетрис ведет себя так?

...