TXC/Ross Sega Gamepad protocol (executor help please?)

If you have learned signals that don't get decoded when you look at them in IR.exe, post your file to the Diagnosis Area then post your question here (including a link to the file).

Moderator: Moderators

Post Reply
Knuckx
Posts: 67
Joined: Wed Jul 15, 2015 9:25 pm
Location: UK

TXC/Ross Sega Gamepad protocol (executor help please?)

Post by Knuckx »

The Ross Micro Genius RCG-200 (TXC) is a wireless Controller/Receiver pair for the Sega Mega Drive/Sega Genesis. I have one, but only one controller (the reciever supports two players/controllers simultaneously).

Could someone please help me write or write a executor (HCS08 please; S3F80 would be nice as well if possible) for this protocol. All 3 parameters per function (nothing as a protocol parameter) would be most useful.

I have tested the below IRP with IRScrutinizer, and generated learns, which do work. I did have a go with Protocol Builder, but I could not see any way of having the 1 burst start low as this protocol requires (like Xmit '0' Reversed, but for the 1 burst).



IRP={75.7k,msb}<-190,20|-56,154>(630,-210,0:1,S:1,F:4:4,D:2,F:4,^13500)+[D:0..3,S:0..1,F:0..255]

This is the protocol used by the TXC Sega Mega Drive/Genesis IR controller, branded in the UK as the Ross Micro Genius RCG-200.

Device is the player number: 1 or 2 under normal circumstances; 3 for Slow button; 0 invalid.
Subdevice is the speed switch: 0 normally; 1 for speed (turbo) mode.
Function/OBC is a bitfield containing the buttons currently pressed:
1 A; 2 B; 4 C; 8 Start; 16 Up; 32 Down; 64: Left; 128 Right.

The Slow button sends both Left and Start with both player flags set (device 3), with all other bits varying based on controller state; To send just the slow button: D=3 S=0 F=72.

The original controllers send a frame with F=0 for the relevant player/device when all buttons are released; however this does not appear to actually be necessary.

Frame length varies by player/device on the original controllers, if D=1 frame length is always 13.5ms, if D=2 frame length alternates every frame between 6.8ms and 20.2ms. The IRP uses 13.5ms.

Duty cycle of the original controller is 56.666%.
Last edited by Knuckx on Wed Mar 08, 2017 10:14 am, edited 1 time in total.
In Use: 3x URC7781 / 2x Nevo C2 / Harmony PS3 -|- Learner: Nevo C2
The Robman
Site Owner
Posts: 21887
Joined: Fri Aug 01, 2003 9:37 am
Location: Chicago, IL
Contact:

Post by The Robman »

It would help if you posted an IR or RMIR file containing learns, so that if someone were to try to re-create this, they'd have something to compare the test results to.
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
Knuckx
Posts: 67
Joined: Wed Jul 15, 2015 9:25 pm
Location: UK

Post by Knuckx »

I'm afraid I don't have any, none of the remotes I have managed to capture this. I built the IRP by using a digital oscilloscope hung across the IR LED, using measure cursors. I have screenshots from the scope, if that helps?

I suppose I could use IrScrutinizer and the IRP to generate some UEI learns or Pronto hex if that would help - though they wouldn't be original?
In Use: 3x URC7781 / 2x Nevo C2 / Harmony PS3 -|- Learner: Nevo C2
Barf
Expert
Posts: 1524
Joined: Fri Oct 24, 2008 1:54 pm
Location: Munich, Germany
Contact:

Post by Barf »

Interesting. Most peculiar is the modulation frequency, 75.7kHz! I do not think any such has been seen before; the ones we know are 30-56kHz (with the exception of the 455kHz ones in B&O etc). That also explains why your learning remotes failed.
I built the IRP by using a digital oscilloscope hung across the IR LED, using measure cursors.
The sending IR Led on the remote?

@Rob:

I put the IRP at the end of IrpProtocols.ini, loaded it it IrScrutinizer, in Generat put D=*, S=*, and F=#4 (four random values), exported as text with Pronto, Raw, parmeters, and UEI learned. Gave this file:

Code: Select all

segagamepad_D0S0F220: segagamepad Device: 0.0 Function: 220 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 0004 000C 0004 000C 000E 0002 0004 000C 000E 0002 000E 0002 0004 000C 0004 000C 000E 0002 000E 0002 0300

+630 -400 +20 -190 +20 -56 +154 -56 +154 -190 +20 -56 +154 -190 +20 -190 +20 -56 +154 -56 +154 -190 +20 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 13 CE 8D 01 23 42 41 23 41 50

segagamepad_D0S0F208: segagamepad Device: 0.0 Function: 208 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 0004 000C 0004 000C 000E 0002 0004 000C 000E 0002 000E 0002 000E 0002 000E 0002 000E 0002 000E 0002 0300

+630 -400 +20 -190 +20 -56 +154 -56 +154 -190 +20 -56 +154 -190 +20 -190 +20 -190 +20 -190 +20 -190 +20 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 13 CE 8D 01 23 42 41 11 11 50

segagamepad_D0S0F116: segagamepad Device: 0.0 Function: 116 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 000E 0002 0004 000C 0004 000C 0004 000C 000E 0002 000E 0002 000E 0002 0004 000C 000E 0002 000E 0002 0300

+630 -400 +20 -190 +20 -190 +20 -56 +154 -56 +154 -56 +154 -190 +20 -190 +20 -190 +20 -56 +154 -190 +20 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 13 CE 8D 01 12 33 41 12 41 50

segagamepad_D0S0F5: segagamepad Device: 0.0 Function: 5 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 000E 0002 000E 0002 000E 0002 000E 0002 000E 0002 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 0300

+630 -400 +20 -190 +20 -190 +20 -190 +20 -190 +20 -190 +20 -190 +20 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -10140
00 00 1F 00 6A 05 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 5F 00 4D 13 CE 8D 01 11 11 11 12 32 40

segagamepad_D0S1F2: segagamepad Device: 0.1 Function: 2 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 000E 0002 000E 0002 000E 0002 000E 0002 000E 0002 000E 0002 000E 0002 000E 0002 0004 000C 000E 0002 0300

+630 -400 +20 -56 +154 -190 +20 -190 +20 -190 +20 -190 +20 -190 +20 -190 +20 -190 +20 -190 +20 -56 +154 -190 +20 -10140
00 00 1F 00 6A 05 01 3B 00 C8 00 0A 00 1C 00 4D 00 5F 00 0A 00 5F 00 0A 13 CE 8D 01 23 33 33 33 12 40

segagamepad_D0S1F206: segagamepad Device: 0.1 Function: 206 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 0004 000C 0004 000C 000E 0002 000E 0002 000E 0002 000E 0002 0004 000C 0004 000C 0004 000C 000E 0002 0300

+630 -400 +20 -56 +154 -56 +154 -56 +154 -190 +20 -190 +20 -190 +20 -190 +20 -56 +154 -56 +154 -56 +154 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 00 5F 00 0A 13 CE 8D 01 22 34 44 12 23 50

segagamepad_D0S1F139: segagamepad Device: 0.1 Function: 139 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 0004 000C 000E 0002 000E 0002 000E 0002 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 0004 000C 0300

+630 -400 +20 -56 +154 -56 +154 -190 +20 -190 +20 -190 +20 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -56 +154 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 00 5F 00 4D 13 CE 8D 01 23 44 44 13 12 50

segagamepad_D0S1F153: segagamepad Device: 0.1 Function: 153 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 0004 000C 000E 0002 000E 0002 0004 000C 000E 0002 000E 0002 0004 000C 000E 0002 000E 0002 0004 000C 0300

+630 -400 +20 -56 +154 -56 +154 -190 +20 -190 +20 -56 +154 -190 +20 -190 +20 -56 +154 -190 +20 -190 +20 -56 +154 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 00 5F 00 4D 13 CE 8D 01 23 41 34 13 41 50

segagamepad_D1S0F39: segagamepad Device: 1.0 Function: 39 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 000E 0002 000E 0002 0004 000C 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 0004 000C 0004 000C 0300

+630 -400 +20 -190 +20 -190 +20 -190 +20 -56 +154 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -56 +154 -56 +154 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 5F 00 4D 00 1C 00 4D 13 CE 8D 01 11 23 12 32 44 50

segagamepad_D1S0F92: segagamepad Device: 1.0 Function: 92 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 000E 0002 0004 000C 0004 000C 0004 000C 000E 0002 000E 0002 0300

+630 -400 +20 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -190 +20 -56 +154 -56 +154 -56 +154 -190 +20 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 5F 00 4D 00 1C 00 0A 13 CE 8D 01 12 32 32 44 31 50

segagamepad_D1S0F132: segagamepad Device: 1.0 Function: 132 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 0004 000C 000E 0002 000E 0002 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 000E 0002 000E 0002 0300

+630 -400 +20 -190 +20 -56 +154 -190 +20 -190 +20 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -190 +20 -190 +20 -10140
00 00 1F 00 6A 05 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 5F 00 0A 13 CE 8D 01 23 11 12 32 31 40

segagamepad_D1S0F170: segagamepad Device: 1.0 Function: 170 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 0004 000C 000E 0002 0004 000C 000E 0002 000E 0002 0004 000C 0004 000C 000E 0002 0004 000C 000E 0002 0300

+630 -400 +20 -190 +20 -56 +154 -190 +20 -56 +154 -190 +20 -190 +20 -56 +154 -56 +154 -190 +20 -56 +154 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 5F 00 4D 00 1C 00 0A 13 CE 8D 01 23 23 12 43 23 50

segagamepad_D1S1F190: segagamepad Device: 1.1 Function: 190 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 0004 000C 000E 0002 0004 000C 0004 000C 000E 0002 0004 000C 0004 000C 0004 000C 0004 000C 000E 0002 0300

+630 -400 +20 -56 +154 -56 +154 -190 +20 -56 +154 -56 +154 -190 +20 -56 +154 -56 +154 -56 +154 -56 +154 -190 +20 -10140
00 00 1F 00 6A 05 01 3B 00 C8 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 13 CE 8D 01 23 12 31 22 23 40

segagamepad_D1S1F220: segagamepad Device: 1.1 Function: 220 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 0004 000C 0004 000C 000E 0002 0004 000C 000E 0002 0004 000C 0004 000C 0004 000C 000E 0002 000E 0002 0300

+630 -400 +20 -56 +154 -56 +154 -56 +154 -190 +20 -56 +154 -190 +20 -56 +154 -56 +154 -56 +154 -190 +20 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 00 5F 00 0A 13 CE 8D 01 22 31 31 22 34 50

segagamepad_D1S1F75: segagamepad Device: 1.1 Function: 75 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 000E 0002 0004 000C 000E 0002 000E 0002 000E 0002 0004 000C 0004 000C 000E 0002 0004 000C 0004 000C 0300

+630 -400 +20 -56 +154 -190 +20 -56 +154 -190 +20 -190 +20 -190 +20 -56 +154 -56 +154 -190 +20 -56 +154 -56 +154 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 1C 00 4D 00 5F 00 0A 00 5F 00 4D 00 1C 00 4D 13 CE 8D 01 21 23 31 42 14 50

segagamepad_D1S1F29: segagamepad Device: 1.1 Function: 29 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 000E 0002 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 0004 000C 0004 000C 000E 0002 0004 000C 0300

+630 -400 +20 -56 +154 -190 +20 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -56 +154 -56 +154 -190 +20 -56 +154 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 1C 00 4D 00 5F 00 0A 00 5F 00 4D 00 1C 00 4D 13 CE 8D 01 23 31 21 44 21 50

segagamepad_D2S0F202: segagamepad Device: 2.0 Function: 202 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 0004 000C 0004 000C 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 000E 0002 0004 000C 000E 0002 0300

+630 -400 +20 -190 +20 -56 +154 -56 +154 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -190 +20 -56 +154 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 13 CE 8D 01 23 41 24 24 24 50

segagamepad_D2S0F41: segagamepad Device: 2.0 Function: 41 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 000E 0002 0004 000C 000E 0002 000E 0002 0004 000C 0300

+630 -400 +20 -190 +20 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -190 +20 -56 +154 -190 +20 -190 +20 -56 +154 -10140
00 00 1F 00 6A 05 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 5F 00 4D 13 CE 8D 01 11 23 23 23 12 40

segagamepad_D2S0F44: segagamepad Device: 2.0 Function: 44 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 000E 0002 0004 000C 0004 000C 000E 0002 000E 0002 0300

+630 -400 +20 -190 +20 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -190 +20 -56 +154 -56 +154 -190 +20 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 5F 00 4D 00 1C 00 0A 13 CE 8D 01 11 23 23 24 31 50

segagamepad_D2S0F206: segagamepad Device: 2.0 Function: 206 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 0004 000C 0004 000C 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 0004 000C 0004 000C 000E 0002 0300

+630 -400 +20 -190 +20 -56 +154 -56 +154 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -56 +154 -56 +154 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 13 CE 8D 01 23 41 24 23 34 50

segagamepad_D2S1F103: segagamepad Device: 2.1 Function: 103 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 000E 0002 0004 000C 0004 000C 000E 0002 0004 000C 000E 0002 000E 0002 0004 000C 0004 000C 0004 000C 0300

+630 -400 +20 -56 +154 -190 +20 -56 +154 -56 +154 -190 +20 -56 +154 -190 +20 -190 +20 -56 +154 -56 +154 -56 +154 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 1C 00 4D 00 5F 00 4D 00 1C 00 0A 00 5F 00 4D 13 CE 8D 01 21 32 12 41 33 50

segagamepad_D2S1F255: segagamepad Device: 2.1 Function: 255 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 000E 0002 0004 000C 0004 000C 0004 000C 0004 000C 0300

+630 -400 +20 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -190 +20 -56 +154 -56 +154 -56 +154 -56 +154 -10140
00 00 1F 00 6A 05 01 3B 00 C8 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 4D 13 CE 8D 01 22 22 23 12 22 40

segagamepad_D2S1F197: segagamepad Device: 2.1 Function: 197 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 0004 000C 0004 000C 000E 0002 000E 0002 0004 000C 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 0300

+630 -400 +20 -56 +154 -56 +154 -56 +154 -190 +20 -190 +20 -56 +154 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 00 5F 00 4D 13 CE 8D 01 22 34 13 41 31 50

segagamepad_D2S1F41: segagamepad Device: 2.1 Function: 41 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 000E 0002 0004 000C 000E 0002 000E 0002 0004 000C 0300

+630 -400 +20 -56 +154 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -190 +20 -56 +154 -190 +20 -190 +20 -56 +154 -10140
00 00 1F 00 6A 05 01 3B 00 C8 00 0A 00 1C 00 4D 00 5F 00 0A 00 5F 00 4D 13 CE 8D 01 23 12 12 12 31 40

segagamepad_D3S0F250: segagamepad Device: 3.0 Function: 250 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 000E 0002 0004 000C 000E 0002 0300

+630 -400 +20 -190 +20 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -190 +20 -56 +154 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 13 CE 8D 01 23 33 33 34 24 50

segagamepad_D3S0F19: segagamepad Device: 3.0 Function: 19 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 000E 0002 000E 0002 000E 0002 0004 000C 0004 000C 0004 000C 000E 0002 000E 0002 0004 000C 0004 000C 0300

+630 -400 +20 -190 +20 -190 +20 -190 +20 -190 +20 -56 +154 -56 +154 -56 +154 -190 +20 -190 +20 -56 +154 -56 +154 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 4D 13 CE 8D 01 11 12 33 41 23 50

segagamepad_D3S0F90: segagamepad Device: 3.0 Function: 90 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 000E 0002 0004 000C 000E 0002 0004 000C 0004 000C 0004 000C 0004 000C 000E 0002 0004 000C 000E 0002 0300

+630 -400 +20 -190 +20 -190 +20 -56 +154 -190 +20 -56 +154 -56 +154 -56 +154 -56 +154 -190 +20 -56 +154 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 5F 00 4D 00 1C 00 0A 13 CE 8D 01 12 32 44 43 23 50

segagamepad_D3S0F230: segagamepad Device: 3.0 Function: 230 S=0
0000 0037 0000 000D 0030 001E 0002 000E 0002 0004 000C 0004 000C 0004 000C 000E 0002 0004 000C 0004 000C 000E 0002 0004 000C 0004 000C 000E 0002 0300

+630 -400 +20 -190 +20 -56 +154 -56 +154 -56 +154 -190 +20 -56 +154 -56 +154 -190 +20 -56 +154 -56 +154 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 5F 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 13 CE 8D 01 23 34 23 42 34 50

segagamepad_D3S1F254: segagamepad Device: 3.1 Function: 254 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 000E 0002 0300

+630 -400 +20 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -190 +20 -10140
00 00 1F 00 6A 05 01 3B 00 C8 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 13 CE 8D 01 22 22 22 22 23 40

segagamepad_D3S1F201: segagamepad Device: 3.1 Function: 201 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 0004 000C 0004 000C 000E 0002 000E 0002 0004 000C 0004 000C 0004 000C 000E 0002 000E 0002 0004 000C 0300

+630 -400 +20 -56 +154 -56 +154 -56 +154 -190 +20 -190 +20 -56 +154 -56 +154 -56 +154 -190 +20 -190 +20 -56 +154 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 00 5F 00 4D 13 CE 8D 01 22 34 12 23 41 50

segagamepad_D3S1F160: segagamepad Device: 3.1 Function: 160 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 0004 000C 000E 0002 0004 000C 000E 0002 0004 000C 0004 000C 000E 0002 000E 0002 000E 0002 000E 0002 0300

+630 -400 +20 -56 +154 -56 +154 -190 +20 -56 +154 -190 +20 -56 +154 -56 +154 -190 +20 -190 +20 -190 +20 -190 +20 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 00 5F 00 0A 13 CE 8D 01 23 13 12 34 44 50

segagamepad_D3S1F207: segagamepad Device: 3.1 Function: 207 S=1
0000 0037 0000 000D 0030 001E 0002 0004 000C 0004 000C 0004 000C 000E 0002 000E 0002 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 0004 000C 0300

+630 -400 +20 -56 +154 -56 +154 -56 +154 -190 +20 -190 +20 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -56 +154 -10140
00 00 23 00 6A 06 01 3B 00 C8 00 0A 00 1C 00 4D 00 1C 00 4D 00 5F 00 0A 00 5F 00 4D 13 CE 8D 01 22 34 12 22 22 50


Knuckx
Posts: 67
Joined: Wed Jul 15, 2015 9:25 pm
Location: UK

Post by Knuckx »

Barf wrote:Interesting. Most peculiar is the modulation frequency, 75.7kHz! I do not think any such has been seen before; the ones we know are 30-56kHz (with the exception of the 455kHz ones in B&O etc). That also explains why your learning remotes failed.
I did get some kind of learn out of my Nevo C2, but IIRC it didn't work and was not anywhere near 75KHz. No other remote I tried managed to learn anything at all, just kept failing.
Barf wrote:
I built the IRP by using a digital oscilloscope hung across the IR LED, using measure cursors.
The sending IR Led on the remote?
Yep, the LED on the original remote.
Image
That would be D=1 S=0 F=0. Please ignore the upside-down-ness, I had the probe connected backwards.
In Use: 3x URC7781 / 2x Nevo C2 / Harmony PS3 -|- Learner: Nevo C2
3FG
Expert
Posts: 3434
Joined: Mon May 18, 2009 11:48 pm

Post by 3FG »

Perhaps I don't understand the time scale on the oscilloscope, but it looks to me like the period of the modulation is 500us/12.5 periods or 40us. This would be 25KHz.
Knuckx
Posts: 67
Joined: Wed Jul 15, 2015 9:25 pm
Location: UK

Post by Knuckx »

That screenshot is a whole frame; the modulation is in the blurred bits. This is a zoom in of the leadin showing the modulation:
Image
BTW the timescale is given by division (the grey grid squares), not for the whole screen. Multiply the timescale by 12 for the whole screen width.

It seems that the modulation frequency of the original remote does vary a fair bit, this screenshot shows 74.6 KHz.
In Use: 3x URC7781 / 2x Nevo C2 / Harmony PS3 -|- Learner: Nevo C2
3FG
Expert
Posts: 3434
Joined: Mon May 18, 2009 11:48 pm

Post by 3FG »

Here's one approach to an executor in S3F80 format. I can't really test this since my remotes won't learn it. An IR Widget suggests that the signal is roughly correct. You'll probably need to adjust the durations, especially of the on pulses.

Basically this approach doesn't use the ordinary IR engine, and instead explicitly sends the lead in, each on or off burst individually, and the lead out. I tested using a protocols.ini entry:

Code: Select all

[RossMicro]
PID=01 FF
CmdParms=D:2=0, S:1=0, OBC:8=0
CmdTranslator=Translator(1,1,1) Translator(2,4,2,4) Translator(0,2,6) Translator(2,4,8)
DefaultCmd=00 00
Code.S3C80=40 90 02 8B 12 88 04 00 08 00 1A 00 3A 00 0D 00 47 61 A8 01 3B 00 55 38 03 48 04 1C 1E F6 01 4C 5C 0C 10 C4 10 C3 FB 0E C6 F8 00 3A F6 01 58 1C 14 F6 01 64 8B 0C C6 F8 00 47 F6 01 58 1C 18 F6 01 64 5A DE C6 F8 14 78 F6 01 58 F6 01 0A 7B C7 AF
An brief explanation of the executor:

Code: Select all

	DB	40H						;Carrier ON: 8.250uSec
	DB	90H						;Carrier OFF: 18.250uSec
	DB	02H						;dev 0, cmd 2 bytes
	JR	L0			
	DB	88H						;pf0: R28
	DB	04H						;pf1: R29
	DW	0008H					 ;pd00/pd01: R12/R13
	DW	001AH					 ;pd02/pd03: R14/R15
	DW	003AH					 ;pd04/pd05: R16/R17
	DW	000DH					 ;pd06/pd07: R18/R19
	DW	0047H					 ;pd08/pd09: R1A/R1B
	DW	61A8H					 ;pd0A/pd0B: R1C/R1D
	DW	013BH					 ;pd0C/pd0D: R1E/R1F
	DW	0055H					 ;pd0E/pd0F: R20/R21
L0:LD	W3, DCBUF			   ;put data into temporary registers
	LD	W4, DCBUF+1			 ;and refresh before each repeat
	LD	W1, #1EH				 ;the register address of lead in
	CALL	IRMarkSpaceByPtr	;send lead in
	LD	W5, #0CH				 ;12 bits
L1:RLC	RC4				     ;rotate bits into carry flag
	RLC	RC3
	JR	NC, L2				   ;a one bit sets carry flag to 1
	LDW	RRF8, #003AH		  ;3A = 116 + 40 us
	CALL	IRSpaceByReg		 ;send the off duration
	LD	W1, #14H				 ;point to on duration
	CALL	IRMarkByPtr	     ;send the on pulse
	JR	L3						 ;done sending a one bit
L2:LDW	RRF8, #0047H	     ;47 = 142 + 40 us
	CALL	IRSpaceByReg		 ;send the off duration
	LD	W1, #18H				 ;point to on duration
	CALL	IRMarkByPtr	     ;send the on pulse
L3:DJNZ	W5, L1		       ;loop until 12 bits are sent
	LDW	RRF8, #1478H		  ;1478 = 10480 + 40us
	CALL	IRSpaceByReg		 ;send the leadout
	CALL	TestRptReqd
	JR	C, L0					 ;carry flag is set if repeat is required
	RET	
See the Functions tab of the Manual Settings editor to see the meaning of the various CALL instructions. This executor wastes some space in the timing registers, but that was easier for me to keep track of.
Knuckx
Posts: 67
Joined: Wed Jul 15, 2015 9:25 pm
Location: UK

Post by Knuckx »

That S3F80 Executor doesn't work, and I can't figure out why. The LED on the reciever lights up, but it doesn't do anything. Thanks for having a go anyway.

Nevertheless, I had a go at writing a HCS08 executor, cos it looked a lot simpler to do than I thought it was. This one works properly, but as far as I can tell, the output should be identical to 3FGs S3F80 executor (It's basically the same logic).

Code: Select all

Code.HCS08=20 15 12 23 02 88 04 00 08 00 4D 00 1C 00 0A 00 5F 13 88 01 3B 00 69 6E 0C 55 4E 60 56 4E 61 57 45 00 76 CD FF 65 39 57 39 56 25 0D 55 72 CD FF 74 45 00 70 CD FF 68 20 0B 55 6E CD FF 74 45 00 6C CD FF 68 3B 55 DF 55 74 CD FF 74 CD FF 92 25 C6 81

	PROC	HCS08
		ORG	$0100	;Byte count = 82
BitCtr:	EQU	$0055
LByte:	 EQU	$0056
HByte:	 EQU	$0057
		BRA	ST
		DB	$12		;Carrier ON: 4.500uSec
		DB	$23		;Carrier OFF: 8.750uSec
		DB	$02		;dev 0, cmd 2 bytes
		DB	$88		;pf0: $A2
		DB	$04		;pf1: $A3
		DW	$0008	;pd00/pd01: $6A/$6B
		DW	$004D	;pd02/pd03: $6C/$6D
		DW	$001C	;pd04/pd05: $6E/$6F
		DW	$000A	;pd06/pd07: $70/$71
		DW	$005F	;pd08/pd09: $72/$73
		DW	$1388	;pd0A/pd0B: $74/$75
		DW	$013B	;pd0C/pd0D: $76/$77
		DW	$0069	;pd0E/pd0F: $78/$79
ST:	MOV	#$0C,BitCtr	;12 Bits to Xmit
		MOV	DCBUF,LByte	;Copy command
		MOV	DCBUF+1,HByte	;values away
		LDHX	#$0076	;HX -> Leadin
		JSR	IRMarkSpaceByPtr	;Leadin Mark/Space
LP:	ROL	HByte	;Rotate bit
		ROL	LByte	;thru carry
		BCS	X1	;bit=1?
X0:	LDHX	$72	;HX = 0 Off Time
		JSR	IRSpaceByReg	;0 Space
		LDHX	#$0070	;HX -> 0 On Time
		JSR	IRMarkByPtr	;0 Mark
		BRA	ED	;to end check
X1:	LDHX	$6E	;HX = 1 Off Time
		JSR	IRSpaceByReg	;1 Space
		LDHX	#$006C	;HX -> 1 On Time
		JSR	IRMarkByPtr	;1 Mark
ED:	DBNZ	BitCtr,LP	;BitCtr=0?
		LDHX	$74	;HX -> Leadout Time
		JSR	IRSpaceByReg	;Leadout Space
		JSR	TestRptReqd	;Repeat?
		BCS	ST	;Restart
		RTS		;Done.

BTW, I think that the protocol name should be MicroGenius, not RossMicro, as the Ross part was the UK importer - the manufacturer was TXC, and the brand was Micro Genius. I suspect that this protocol may also be used by the IR SNES and NES controllers they made.
In Use: 3x URC7781 / 2x Nevo C2 / Harmony PS3 -|- Learner: Nevo C2
The Robman
Site Owner
Posts: 21887
Joined: Fri Aug 01, 2003 9:37 am
Location: Chicago, IL
Contact:

Post by The Robman »

What tool are you guys using to generate these executors?

I have generated a PB file based on the 2 executors posted:
http://www.hifi-remote.com/forums/dload ... e_id=14471
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
3FG
Expert
Posts: 3434
Joined: Mon May 18, 2009 11:48 pm

Post by 3FG »

I use RMIR instead of PB. I think it is faster, and executors are saved in a text file so it's easy to read. It's very helpful to me to have the various functions disassembled with a name rather than just an address.
Here's a post from some time back where I described the workflow I use.
Knuckx
Posts: 67
Joined: Wed Jul 15, 2015 9:25 pm
Location: UK

Post by Knuckx »

Well it's the first executor I've ever written, but I used RMIR as well. I have got ProtocolBuilder but I think thats what put me off trying to write a protocol myself - RMIR's protocol editor is much nicer and less indimidating.
In Use: 3x URC7781 / 2x Nevo C2 / Harmony PS3 -|- Learner: Nevo C2
vickyg2003
Site Admin
Posts: 7104
Joined: Sat Mar 20, 2004 12:19 pm
Location: Florida
Contact:

Post by vickyg2003 »

Congratulations on a job well done

I use PB and RM to do protocol creation. I like the documenation from a decode better in RM. I copy that to PB to start.

My problem with RM and RMIR is that I take too many attempts and I make RMIR sick. I'm not as efficient as the rest of the people that do this stuff.
Remember to provide feedback to let us know how the problem was solved and share your upgrades.

Tip: When creating an upgrade, always include ALL functions from the oem remote, even if you never plan on assigning them to a button. Complete function lists makes an upgrade more helpful to others.
Post Reply