those kind of schematics does not seem to be available online
btw, opening a j-cart seems not possible without breaking anything
I made some disassembling using IDA and Pete Sampras' rom:
here is one of the routines that (I think) is used to detect/initialize the gamepads:
sub_63E: ; CODE XREF: main+216p
ROM:0000063E movea.l #$A1000B,a0
ROM:00000644 lea -6(a0),a1
ROM:00000648 move.b #$40,(a0) ; '@'
ROM:0000064C move.b #0,(a1)
ROM:00000650 nop
ROM:00000652 nop
ROM:00000654 nop
ROM:00000656 move.b (a1),d0
ROM:00000658 rol.w #2,d0
ROM:0000065A andi.b #$C0,d0
ROM:0000065E move.b #$40,(a0) ; '@'
ROM:00000662 move.b #$40,(a1) ; '@'
ROM:00000666 nop
ROM:00000668 nop
ROM:0000066A nop
ROM:0000066C move.b (a1),d1
ROM:0000066E andi.b #$3F,d1 ; '?'
ROM:00000672 or.b d1,d0
ROM:00000674 beq.w loc_6D6
ROM:00000678 move.w #1,$5F0E(a5)
ROM:0000067E move.w #0,(unk_3FFFFE).l
ROM:00000686 move.w (unk_3FFFFE).l,d0
ROM:0000068C andi.w #$40,d0 ; '@'
ROM:00000690 bne.s loc_6D0
ROM:00000692 move.w #$FFFF,(unk_3FFFFE).l
ROM:0000069A move.w (unk_3FFFFE).l,d0
ROM:000006A0 andi.w #$40,d0 ; '@'
ROM:000006A4 beq.s loc_6D0
ROM:000006A6 move.w #0,(unk_3FFFFE).l
ROM:000006AE move.w (unk_3FFFFE).l,d0
ROM:000006B4 andi.w #$40,d0 ; '@'
ROM:000006B8 bne.s loc_6D0
ROM:000006BA move.w #$FFFF,(unk_3FFFFE).l
ROM:000006C2 move.w (unk_3FFFFE).l,d0
ROM:000006C8 andi.w #$40,d0 ; '@'
ROM:000006CC beq.s loc_6D0
ROM:000006CE rts
ROM:000006D0 ; ---------------------------------------------------------------------------
ROM:000006D0
ROM:000006D0 loc_6D0: ; CODE XREF: sub_63E+52j
ROM:000006D0 ; sub_63E+66j ...
ROM:000006D0 clr.w $5F0E(a5)
ROM:000006D4 rts
ROM:000006D6 ; ---------------------------------------------------------------------------
ROM:000006D6
ROM:000006D6 loc_6D6: ; CODE XREF: sub_63E+36j
ROM:000006D6 move.w #$FF0,d3
ROM:000006DA clr.w d2
ROM:000006DC bsr.s sub_6E4
ROM:000006DE move.w #$F,d3
ROM:000006E2 moveq #8,d2
ROM:000006E2 ; End of function sub_63E
ROM:000006E2
sub_6E4: ; CODE XREF: sub_63E+9Ep
ROM:000006E4 moveq #$10,d4
ROM:000006E6
ROM:000006E6 loc_6E6: ; CODE XREF: sub_6E4+28j
ROM:000006E6 move.w #0,(unk_3FFFFE).l
ROM:000006EE move.w #$FFFF,(unk_3FFFFE).l
ROM:000006F6 move.w (unk_3FFFFE).l,d1
ROM:000006FC not.w d1
ROM:000006FE ror.l d2,d1
ROM:00000700 andi.w #$3F,d1 ; '?'
ROM:00000704 cmpi.w #1,d1
ROM:00000708 beq.w loc_714
ROM:0000070C dbf d4,loc_6E6
ROM:00000710 bra.w loc_7DC
ROM:00000714 ; ---------------------------------------------------------------------------
ROM:00000714
ROM:00000714 loc_714: ; CODE XREF: sub_6E4+24j
ROM:00000714 move.w #$FFFF,(unk_3FFFFE).l
ROM:0000071C move.w #0,(unk_3FFFFE).l
ROM:00000724 move.w #$FFFF,(unk_3FFFFE).l
ROM:0000072C move.w (unk_3FFFFE).l,d1
ROM:00000732 not.w d1
ROM:00000734 ror.l d2,d1
ROM:00000736 andi.w #$3F,d1 ; '?'
ROM:0000073A cmpi.w #2,d1
ROM:0000073E bne.w loc_7DC
ROM:00000742 move.w #0,(unk_3FFFFE).l
ROM:0000074A move.w #$FFFF,(unk_3FFFFE).l
ROM:00000752 move.w (unk_3FFFFE).l,d1
ROM:00000758 not.w d1
ROM:0000075A ror.l d2,d1
ROM:0000075C andi.w #$3F,d1 ; '?'
ROM:00000760 cmpi.w #4,d1
ROM:00000764 bne.w loc_7DC
ROM:00000768 move.w #0,(unk_3FFFFE).l
ROM:00000770 move.w #$FFFF,(unk_3FFFFE).l
ROM:00000778 move.w (unk_3FFFFE).l,d1
ROM:0000077E not.w d1
ROM:00000780 ror.l d2,d1
ROM:00000782 andi.w #$3F,d1 ; '?'
ROM:00000786 cmpi.w #8,d1
ROM:0000078A bne.w loc_7DC
ROM:0000078E move.w #0,(unk_3FFFFE).l
ROM:00000796 move.w #$FFFF,(unk_3FFFFE).l
ROM:0000079E move.w (unk_3FFFFE).l,d1
ROM:000007A4 not.w d1
ROM:000007A6 ror.l d2,d1
ROM:000007A8 andi.w #$3F,d1 ; '?'
ROM:000007AC cmpi.w #$10,d1
ROM:000007B0 bne.w loc_7DC
ROM:000007B4 move.w #0,(unk_3FFFFE).l
ROM:000007BC move.w #$FFFF,(unk_3FFFFE).l
ROM:000007C4 move.w (unk_3FFFFE).l,d1
ROM:000007CA not.w d1
ROM:000007CC ror.l d2,d1
ROM:000007CE andi.w #$3F,d1 ; '?'
ROM:000007D2 cmpi.w #$20,d1 ; ' '
ROM:000007D6 bne.w loc_7DC
ROM:000007DA rts
ROM:000007DC ; ---------------------------------------------------------------------------
ROM:000007DC
ROM:000007DC loc_7DC: ; CODE XREF: sub_6E4+2Cj
ROM:000007DC ; sub_6E4+5Aj ...
ROM:000007DC move.w #$8700,(VDP_Control).l
ROM:000007E4 move.l #$C0660000,(VDP_Control).l
ROM:000007EE move.w d3,(VDP_Data).l
ROM:000007F4 move.l #$C0000000,(VDP_Control).l
ROM:000007FE move.w d3,(VDP_Data).l
ROM:00000804 bra.s loc_7DC
ROM:00000804 ; End of function sub_6E4
ROM:00000804
it seems that it does some comparison between 2 consecutives read on DATA2 port and eventually go to loc6D6 and then sub_6E4 (which also do some other read/write on address 0x3FFFFE)
when debugging my emulator with PORTB connected to gamepad, it does not seems to go into these routines and simply do :
write 0 to 0x03FFFFE written
0x003FFFFE read
write 0xFFFF to 0x03FFFFE
0x003FFFFE read
then return
I assume that this address is used to communicate with the 2 additional ports but I still have no idea how exactly it's done