5 # returns - xxSAxxxxxxCBMXYZxxSAxxDUxxCBRLDU
15 bl GetSega
# xxSAxxDUxxCBRLDU
16 rlwinm r3,r3,16,0,15 # save
17 bl GetSega
# xxSAxxDUxxCBRLDU
18 bl GetSega
# xxSAxxxxxxCBRLDU
19 bl GetSega
# xxSAxxxxxxCBMXYZ
20 rlwinm r3,r3,16,0,31 # xxSAxxxxxxCBMXYZxxSAxxDUxxCBRLDU
27 # returns - 0000000000000000xxSAxxDUxxCBRLDU
38 bl GetSega
# xxSAxxDUxxCBRLDU
45 # read Sega controller
49 GetSega
: rlwinm r3,r3,0,0,15
50 li r4,-0x00FF # SEL=1, dump caps
92 shl3
: rlwinm. r5,r4,0,22,22
96 shl4
: rlwinm r5,r4,1,0,31
102 shl5
: rlwinm. r5,r4,0,22,22
106 shl6
: li r4,-0x10FF # SEL=0, dump caps
134 rlwinm. r4,r4,0,24,24
136 ori r3,r3,0x1000 # A/0
138 shl11
: lhz r4,0x16(r7)
139 rlwinm. r4,r4,0,17,17
141 ori r3,r3,0x2000 # S/0
143 shl12
: lhz r4,0xC(r7)
144 rlwinm. r5,r4,0,30,30
146 ori r3,r3,0x800 # 0/1
148 shl13
: rlwinm. r5,r4,0,22,22
150 ori r3,r3,0x400 # 0/1
152 shl14
: rlwinm r5,r4,1,0,31
154 rlwinm. r5,r4,0,30,30
156 ori r3,r3,0x200 # D/1
158 shl15
: rlwinm. r5,r4,0,22,22
160 ori r3,r3,0x100 # U/1