I acquired a Family Trainer mat a little while back and figured I’d share my findings.
The wiki has some unknowns about the device (like ghost inputs) and I didn’t see any schematics anywhere after a quick search. The views here are all with Side B on the top side and Side A on the underside.
Top:
Bottom:
Labeled Bottom (Colored dots are the wire colors to the console):
Membrane Connection (The chonky bit held by the screwdriver is on the bottom (Side A) of the membrane and folds over to the top to make the connection to the PCB):
Schematic:
This is the first time I’ve laid out a schematic, so please correct any mistakes I have in there. I have an idea how the pad itself is wired given the pad connection pinout, but I’m not about to do any destructive research.
In addition to figuring out the details to the board, I’ve also figured out some software stuff. The wiki mentions that ghost presses may be possible. I’ve confirmed that this is not the case, so long as you wait enough cycles between the write to $4016 and the read from $4017. If you don’t wait long enough either all buttons will be active, an entire row will be active, or ghosting in the column will occur.
And speaking of timings, it seems that the minimum number of cycles for a valid read is roughly 740 cycles between the column select and the data read (~7 scanlines). This wait time will vary with how much weight is put on the button, so adding another scanline’s worth of cycles to the delay might be a good idea for real world applications.
As a side note, I also have some other hardware that I plan on doing similar research with. I’ve got a Hori Track that I’m figuring out now and a Family Basic Keyboard that I’ll probably be doing some audio stuff with in the future. The unknowns on the wiki are too hard to pass up.