|
3 | 3 | Communication between two Game Boy systems happens one byte at a time. One |
4 | 4 | Game Boy generates a clock signal internally and thus controls when the |
5 | 5 | exchange happens. In SPI terms, the Game Boy generating the clock is |
6 | | -called the "master." The other one uses an external clock (receiving |
7 | | -it from the other Game Boy) and has no control over when the |
8 | | -transfer happens. If it hasn't gotten around to loading up the next |
| 6 | +called the "master" while the other one (the "slave" Game Boy) receives it. |
| 7 | +If it hasn't gotten around to loading up the next |
9 | 8 | data byte at the time the transfer begins, the last one will go out |
10 | 9 | again. Alternately, if it's ready to send the next byte but the last |
11 | 10 | one hasn't gone out yet, it has no choice but to wait. |
@@ -46,12 +45,10 @@ that the transfer is complete in two ways: SC's Bit 7 will be cleared |
46 | 45 | (that is, SC will be set up \$01), and also a [Serial interrupt](<#INT $58 — Serial interrupt>) |
47 | 46 | will be requested. |
48 | 47 |
|
49 | | -The other Game Boy will load up a data byte and can optionally set SC's |
50 | | -Bit 7 (that is, SC=\$80). Regardless of whether or not it has done this, if |
51 | | -and when the master wants to conduct a transfer, it will happen |
52 | | -(pulling whatever happens to be in SB at that time). The externally clocked |
| 48 | +The other Game Boy will load up a data byte and has to set SC's |
| 49 | +Bit 7 (that is, SC=\$80) to enable the serial port. The externally clocked |
53 | 50 | Game Boy will have a [serial interrupt](<#INT $58 — Serial interrupt>) requested at the end of the |
54 | | -transfer, and if it bothered to set SC's Bit 7, it will be cleared. |
| 51 | +transfer, and SC's Bit 7 will be cleared. |
55 | 52 |
|
56 | 53 | ### Internal Clock |
57 | 54 |
|
@@ -108,7 +105,7 @@ two Game Boy systems could switch between internal and external clock for each |
108 | 105 | transferred byte to ensure synchronization. |
109 | 106 |
|
110 | 107 | Transfer is initiated when the master Game Boy sets its Transfer |
111 | | -Start Flag, regardless of the value of this flag on the other device. |
| 108 | +Start Flag. |
112 | 109 | This bit is automatically set to 0 (on both) at the end of transfer. |
113 | 110 | Reading this bit can be used to determine if the transfer is still |
114 | 111 | active. |
0 commit comments