Todo...
Todo...
Todo...
Hexdump GameBoy to GameBoy Printer
of this image:


The data on the GameBoy Serial link is shifted in and out simultaneously.
The printer is in slave mode, so data can be clocked in at almost any
frequency under1Khz (probably more).
Description |
Commande |
Argument 1 |
Argument 2 (lng) |
Argument 3 (lng) |
|
Initialize |
0x01 |
0x00 |
0x00 |
0x00 |
|
Start printing |
0x02 |
0x00 |
0x00 |
0x04 |
0x01 ?
0x13 Margins (nibbles before 1, after 3)
0xE4 Palette
0x40 Exposure (7 bits) |
? |
0x03 |
|
|
|
|
Tile data |
0x04 |
0x00 |
Lenght LSB |
Lenght MSB |
Tile data in 2 bits per pixel (GameBoy format) |
Read status |
0x0F |
0x00 |
0x00 |
0x00 |
|
128,64,32:errors
Écriture: |
Magic bytes |
Command |
Argument 1 |
Argument 2 (lng) |
Argument 3 (lng) |
(...) |
LSB CRC |
MSB CRC |
0x00 |
0x00 |
Lecture: |
0x00 |
0x00 |
0x00 |
0x00 |
0x00 |
0x00 |
0x00 |
0x00 |
0x81 |
Status |
Status:
76543210
EEEESSSS
E: Error code
S: Status code
Status 8: ready to receive data.
Status 6: printing.
Status: 4: printing done.
The CRC is a simple 16Bit sum of all the transmited bytes, except 0x88,
0x33 and the CRC itself.
The GameBoy Printer responds during the last two bytes by 0x81, 0xXX.
To print something:
Send init, send data, check status (must be 8), send data, check status...
send 0 data, send print, check status (wait for 6), check status (wait
for 4) serial clear (16* 0x00).
Always wait for an error code during status checks. The printer won't
forget it, it's useless to continue sending data if there was a CRC mismatch
or a buffer overflow.
The GameBoy Camera buffers tile data by blocs of 2 20 tiles wide lines.
Command 4: GameBoy Camera: ((8 pixels * 8 pixels ) * 20 tiles wide * 2
lines)/4 colorrs = 640 bytes (0x0280).

Sending a command 4 (0x88, 0x33, 0x04, 0x00, 0x80, 0x02..). 0xFF's are
the first bytes of the graphical data.

Sending the first two 20 tiles wide lines with the "Nintendo"
logo. You can see where the image is completely black (SOUT stuck at 1).

Total time for printing one pixel: 4ms.
With an exposure of 64 (middle), the pulse width is between 39% (black)
et 24% (light grey).
39% gives almost a completely black pixel because of the cooling time.

GameBoy Printer answering: 0x00, (...), 0x81, 0x00.
|