0

我一直在 gbdk 的“示例”文件夹中花费了一些时间,并且我有一些与“comm.c”示例相关的问题,希望有人可以帮助我。

一方面,我想通过串行链路电缆将数据缓冲区从 Raspberry Pi 发送到 Gameboy 需要以 gameboy 的时钟速率发送。我知道电缆的引脚 5 是时钟引脚,但我不确定我必须如何在我的 Raspberry Pi 上定制我的 python 代码才能发送给它。我了解较旧的 Gameboys(我用于此项目)的时钟频率为 8192Hz。我想我只需要在发送数据之前检查时钟的上升沿,但我不确定我是否必须以某种方式或其他方式更改波特率(如果这样的事情存在于raspPi) 以便正确发送信息。

此外,comm.c 示例似乎提供了一个很好的示例,说明如何通过链路电缆从 GB 发送/接收数据。尽管似乎很多细节都隐藏在编写库的程序集中。如果我想用python编写一个程序来与gameboy交互,或者至少只是发送字节,我怎么能做到这一点?在示例中,send_byte 方法似乎通过电缆自动发送 _io_out 缓冲区中的数据,而语句 while(_io_status == IO_SENDING && joypad() == 0) 用于等待它完全发送。然后,检查 _io_status 以查看数据是否已正确发送。

仔细查看 serial.s 中的 send_byte 程序集,我得到以下代码:

    ;; Send byte in __io_out to the serial port
.send_byte:
_send_byte::
    LD  A,#.IO_SENDING
    LD  (__io_status),A ; Store status
    LD  A,#0x01
    LDH (.SC),A     ; Use internal clock
    LD  A,(__io_out)
    LDH (.SB),A     ; Send data byte
    LD  A,#0x81
    LDH (.SC),A     ; Use internal clock
    RET

我希望能够在 python 脚本中实现这个功能,它将字节发送到我的 gb 程序,但我不完全确定如何。我对汇编不是最有信心的,我认为,在我可以让串行传输按照我想要的方式工作之前,我需要更好地理解这段代码片段的具体工作原理。任何帮助将非常感激 :)

编辑:另外,如果我希望能够通过按下按钮从我的 rasp pi 向我的游戏机发送一个字节,例如,我的 gb 程序是否需要将其 IO 状态永久设置为 IO_RECEIVING?

4

0 回答 0