After examining Family Trainer - Meiro Daisakusen (J).nes and Family Trainer - Manhattan Police (J).nes, I came to the realization that the Family Trainer Mat interacted differently with the Famicom than the Power Pad interacted with the NES (dispite hearing claims that they were "internally identical").
So I yutzed around with those two games and tried to decipher how this nonsense works.
They seem to do things in the following manner:
- write $FB
- read
- write $FD
- read
- write $FE
- read
- write $00 (and/or strobe joypads and read normal controller input)
seemed strange until I looked at it in binary:
%1011 $B
%1101 $D
%1110 $E
It appears the clear bit selects which row to read (row 'B' being buttons 1-4, row 'D' being 5-8 and 'E' being 9-12). The inverted state (ie: 0=pressed, 1=released) is then read through bits 1-4 of $4017.
From what I can tell, there is NO input scrambling (unlike the power pad, whose buttons are read in a total back-asswards order). Buttons are arranged completley logically assuming side A is face-up. Bit 4 gives you the left-most button for the current row, bit 1 gives you right-most (vice versa if side B is face up).
There may be some timing nonsense involved. Games seem to wait a moderately long time after writing before they attempt to read $4017. Who knows.
Anyway just thought I'd post this. My 10 minutes of googling didn't come up with any info on the Family Trainer Mat (but then again my googling skills aren't exactly very sharp), and emulating this the same as the Power Pad wasn't working. If you see any errors or if I'm conflicting info in some other doc, lemme know.
So I yutzed around with those two games and tried to decipher how this nonsense works.
They seem to do things in the following manner:
- write $FB
- read
- write $FD
- read
- write $FE
- read
- write $00 (and/or strobe joypads and read normal controller input)
seemed strange until I looked at it in binary:
%1011 $B
%1101 $D
%1110 $E
It appears the clear bit selects which row to read (row 'B' being buttons 1-4, row 'D' being 5-8 and 'E' being 9-12). The inverted state (ie: 0=pressed, 1=released) is then read through bits 1-4 of $4017.
From what I can tell, there is NO input scrambling (unlike the power pad, whose buttons are read in a total back-asswards order). Buttons are arranged completley logically assuming side A is face-up. Bit 4 gives you the left-most button for the current row, bit 1 gives you right-most (vice versa if side B is face up).
There may be some timing nonsense involved. Games seem to wait a moderately long time after writing before they attempt to read $4017. Who knows.
Anyway just thought I'd post this. My 10 minutes of googling didn't come up with any info on the Family Trainer Mat (but then again my googling skills aren't exactly very sharp), and emulating this the same as the Power Pad wasn't working. If you see any errors or if I'm conflicting info in some other doc, lemme know.