Skip to content

Four Player Adapter improvements #608

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

bbbbbr
Copy link
Contributor

@bbbbbr bbbbbr commented Jul 11, 2025

This is a substantial overhaul of the DMG-07 Four Player Adapter content based on writing a working implementation for a game and doing logic analyzer captures of the hardware.

The main focus of the improvements are:

  • Corrections and more detail about packet timing and RATE setting
  • Clarify meaning and timing of "reply"
  • Add start transmission and ping restart indicators received by Game Boys
  • Clarification about which consoles can trigger phase/mode switches
  • Some improved and clarified tables/diagrams
  • Adapter power info
  • Some sections reorganized

This is a first pass and in particular guidance on the following would be appreciated:

  • Style
  • Diagram/table improvements
  • How and where "reply" is defined (see below)
  • Whether to include screenshots of logic analyzer captures of the protocol in use

For feedback on how and where "reply" is defined: In the current documentation it's somewhat ambiguous and for me that made it harder to understand the docs and interface with the hardware until I figured it out.

The crux of the issue is the difference between these two ways of interpreting "reply" in this context:

  • What "reply" should mean: a value loaded into the SB register to be sent during the next serial transfer in response to a given protocol byte received from the DMG-07.
  • What "reply" should not mean: a value transmitted over serial at the same time as a given protocol byte is received from the DMG-07.

To avoid that ambiguity I attached the following note to several of the diagrams/tables. I think this is a sub-optimal solution because it's repetitive and wordy.

  • Note: When a byte in the DMG-07 column is received the matching byte in the Reply
    column should be loaded into the [SB] register as a reply that will be transmitted
    during the next serial transfer.

However repeating that note for diagrams/tables avoids the issue that someone might skip or not notice a terminology note at the top when looking at diagrams/tables much farther down in the document.

- Corrections and more detail about packet timing and RATE setting
- Clarify meaning and timing of "reply" (a value loaded into SB for tx during the next transfer)
- Add start transmission and ping restart indicators
- Clarification about which consoles can trigger phase switches
- Adapter power info
where the Game Boys exchange data across the network.
connection status. Afterwards, the DMG-07 is switched to the transmission
phase where the Game Boys exchange data across the link cable network.
Later, connected Game Boys may restart the ping phase by sending specific
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"specific commands" maybe can be more precise here? or link to afterwards?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea, I can rephrase it to mention the "ping restart sequence" and link to "Restarting Ping Phase".

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes!

Later, connected Game Boys may restart the ping phase by sending specific
commands.

An important thing to note is that all Game Boys transfer data across
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this should go in a "info box"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd carried that forward (with some edits) from the previous version, but thinking about it more, I don't think it needs so much urgency. Where the clock is sourced is more like basic spec material.

I'm going to try simplifying it and splitting it to a short "Clock Control" section after "Power". That and some changes might also reduce the redundancy noted in your comment on the "Ping Phase" intro.


When the DMG-07 is powered up it will begin operation by automatically
sending out ping packets periodically on every port. In order to start
receiving these ping packets a connected Game Boy should use external
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like a repetition of the previous clock observation

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Per my reply to your info box comment, I'll try and reduce that repetition.

@avivace avivace requested a review from ISSOtm July 15, 2025 13:26
Copy link
Contributor

@Rangi42 Rangi42 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lots of these little edits, I may have missed some:

  • it's -> its
  • x -> ×
  • [REG] -> REG
  • Adding commas when helpful to structure sentences

After the DMG-07 finishes sending the indicator packet of \$FF bytes it will
immediately begin transmitting ping phase packets.

The following chart is an example of switching from transmission back to ping phase.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It feels like an introduction to the list is missing here?

The following chart [...] then a list is presented

Copy link
Contributor Author

@bbbbbr bbbbbr Jul 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The list is setting up context that's needed to interpret the chart correctly, the kind of things that might normally be in a legend. Is there a preferred way of implementing that in pandocs? (and, in particular when the items are more general and less like singular item footnotes)

Here's a couple of ideas.

Collapsing some of the bullet points into the introductory sentence:

"The following chart is an example of switching from ping to transmission phase, here the packet size is 4 bytes and only the Player 1 Game Boy is connected." (and then converting the last item to a note style below the chart)

A try at additional lead-in:

"The chart below is an example of switching from transmission back to ping phase. When reading the chart use these conditions to interpret it."

Or, moving the bullet points to below the chart with a note:

"Use the following to interpret the chart above:"


For example, say the packet size is 2 bytes; the flow of data for two consecutive
packets would look like this.
- The format shown for a player byte is P\[player num\].\[packet num\], so P3.1 is player 3, packet 1.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as the next comment, list here feels a bit confusing

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Made some changes as an attempt to address this the other charts. The lists are gone and replaced with a sentence or two, and a note at the bottom of the chart about how to interpret the Received and Reply columns.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants