Voting resources, early voting, and poll worker information - VOTE. ... Adafruit is open and shipping.
0

Game of Life inter-board protocol
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

Game of Life inter-board protocol

by pstemari on Tue Jun 29, 2010 12:39 am

Has anyone documented the board-to-board protocol in the Game of Life firmware beyond the not-terribly-well-commented code? Looking at the code and the comments, it appears that each board sends its configuration to each of its four neighbors, and picks out the appropriate border from the incoming messages from its neighbors based on the connection--i.e. take the E edge from the west neighbor, N edge from the south neighbor, etc. I haven't figured out how the diagonals get transmitted yet.

This all works well and good for planer configurations, but I'm finishing up a cube, which requires a number of North-to-East and South-to-West connections, This "works" but the behavior is a bit off. For example, a blinker straddling a N-E edge pair winds up with one blinking cell over on the adjacent edge.

Any thoughts on a self-configuring firmware mod to allow the boards to tell for themselves which of their neighbors edges are actually adjacent? I could flash each board with custom firmware to handle its configuration, but that would be a pain and rather inelegant.

Besides, I want to come up with layouts for triangle, pentagon, and hexagon boards and construct more complex polyhedra. A soccerball Life setup would be very cool.
--Paul

A wholly owned subsidiary of:
Persephone: DL R+W+B C 7 X L W C++ I++ T+ A E H++ S+ V-- F+ Q P B PA+ PL
Aldebaran: DM Rt H 5 Y L- W+ C+ I++ T++ A+++ E H++ S+ V+ F++ Q+ P B++ PA- PL--
User avatar
pstemari
 
Posts: 310
Joined: Sun Mar 21, 2010 6:10 pm
Location: Seattle, WA

Re: Game of Life inter-board protocol

by pstemari on Fri Jul 02, 2010 6:10 pm

No Life hackers?

I'm thinking that I could give each board an ID stored in the EEPROM, transmit it to its neighbors, and echo back the neighbor's IDs in the messages with the edge states.

As far as I can tell, the packets are 24 bits, with the states of each edge and the corners occupying 20 bits.

Say you have the following config
Code: Select all | TOGGLE FULL SIZE
          N     E
        W 1 E N 2 S
          S     W


1 announces itself to 2. Then when 2 reports status, it includes 1 as the north neighbor (since that's the direction it heard 1 from). When 1 receives status from the east edge, it looks to see which neighbor it is, and chooses the edge data based on that. In case, since 2 said 1 is its north neighbor, 1 would use the north edge from 2 as its east edge neighbor.

Does that make sense? How does it extend to the diagonals?
--Paul

A wholly owned subsidiary of:
Persephone: DL R+W+B C 7 X L W C++ I++ T+ A E H++ S+ V-- F+ Q P B PA+ PL
Aldebaran: DM Rt H 5 Y L- W+ C+ I++ T++ A+++ E H++ S+ V+ F++ Q+ P B++ PA- PL--
User avatar
pstemari
 
Posts: 310
Joined: Sun Mar 21, 2010 6:10 pm
Location: Seattle, WA

Please be positive and constructive with your questions and comments.