Figured it out... At least output anyway.
First the game writes 00 to $4016 for the start bit
Then does this 8 times:
* Writes a byte out to $4016, only the least significant bit is received
* Dummy Read from $4016 for some reason (why?)
Writes a 00 to $4016 for the stop bit
The bit order (after the start bit) is least significant bit first. The 8 sent bits form a byte.
The data itself is pure MIDI. Looks like it could be easily integrated into any emulator. It will probably need a special patch map, since the Miracle does not use general midi instruments.
I'll bet MIDI input is very similar, start bit, 8 data bits, stop bit.
First the game writes 00 to $4016 for the start bit
Then does this 8 times:
* Writes a byte out to $4016, only the least significant bit is received
* Dummy Read from $4016 for some reason (why?)
Writes a 00 to $4016 for the stop bit
The bit order (after the start bit) is least significant bit first. The 8 sent bits form a byte.
The data itself is pure MIDI. Looks like it could be easily integrated into any emulator. It will probably need a special patch map, since the Miracle does not use general midi instruments.
I'll bet MIDI input is very similar, start bit, 8 data bits, stop bit.