我在gameboy模拟器中添加了一个linkcable模拟器:https ://github.com/maxbit89/GBEmulator
链接电缆在https://github.com/maxbit89/GBEmulator/blob/master/serial2sock.c中实现
主要的是我不移动 SB(0xff01) 我只是交换它,当传输完成时我清除 SC 标志 (0xff02) 并触发串行中断 0x58。(从技术上讲,我认为它应该等于移位和触发中断。)
我使用了 gbdev 的 comm.c 示例。(https://github.com/maxbit89/GBEmulator/blob/master/test/roms/free/linkcable.gb)示例工作正常。但是当我用我的实现启动俄罗斯方块时,游戏菜单工作正常(两个实例中都显示了选择)但是当游戏开始时,游戏冻结并挂起循环。
模拟器可以这样开始测试:
GBemulator 实例 1:
./GBemulator Tetris.gb -l 8008
GBemulator 实例 2:
./GBemulator Tetris.gb -c 127.0.0.1 8008
注意:当前源没有在 Windows(MinGW) 中编译,因为我没有实现 winsock。(代码是 Debian Buster 的 Testet)
有人能告诉我为什么俄罗斯方块会这样吗?