Hi All,
I'm currently converting my Chihiro Outrun 2 SP single chassis to use the Lindbergh system.
My Chihiro seems to be slowly dying. The usual capacitor and CPU/GPU heatsink fixes don't seem to have helped. So rather than replace the Chihiro I though I would install a Lindbergh system.
Everything should in theory work as-is, with the exception of the Force Feedback Board. The Chihiro talks MIDI to the board I have, whereas the Lindbergh wants to speak RS232/RS422 with the 838-14592-91 board.
I have tried to find a 838-14592-91 board, but haven't been successful.
This got me to wondering if it would be possible to make some sort of adapter/conversion board based on an Arduino that would allow a Lindbergh to connect to a MIDI system.
So with a weekend with not much on, I started doing some research.
The Outrun cabinet wiring diagrams were a big help and allowed me to quickly zero in on which connections would be of use. The ones I am interested in are CN2 on the 838-14174 DRIVER BD MIDI.
CN2 has 5 wires connected: shield/gnd, TXD,TXD_R,RXD, and RXD_R.
Figuring this was a good place to start I connected my logic analyzer to those 4 pins and captured the cabinet booting until the game loaded. This includes the self test where it asks you to stand clear and it rotates the steering wheel full right.
As luck would have it, my analyzer already knew how to decode the MIDI protocol. So I ran the software just to see what would happen.
The first group of data that caught my eye, was the Chihiro repeatedly sending the packet:
FD 00 00 7D
Which was answered by the FFB board with:
0x44
So I went digging into the Midi protocol spec and quickly discovered that 0xFD is a system message that's undocumented and should be ignored. Great.
Fast forward a few hours and I had the basics of an Arduino with a Midi interface shield wired up to my Chihiro so it could capture (via passthrough) any commands sent from the Chihiro to the FFB.
This led me to my first eureka moment. Sega have added a CRC to the usual 3 byte midi protocol.
Fantastic, this means I could now determine if the data I was capturing was legit.
Here's a sample of the output:
The first field is the time in milliseconds, then the 4 bytes and an OK if the crc checks out.
Notice that the FD 00 00 7D matches what i saw in the logic analyzer.
The Midi spec says the first byte is the command. And that command 0xFF means reset. Stands to reason the first thing the Chihiro would do is tell the board to reinitialize.
The FD 00 00 7D seems to be an "are you there?" type of message. I suspect if the FFB doesn't answer then you'll get an error.
But there's a lot of other stuff in there that doesn't make sense yet.
Next thing I did was bring up the game service menu. This allows you to test the feedback board.
One of the tests you can do is turn the wheel left/right or stop the motor.
You better believe I logged that test real quick.
Full right
80 01 01 00
84 00 60 64
Full left
84 01 20 25
Stop
80 00 00 00
My guess is 80 01 01 00 means turn the motor on, then 84 xx xx xx is a position.
And 80 00 00 00 turns the motor off again.
How does all of this help?
My hope is that the Lindbergh is sending the same commands over RS232 and all I need to do is convert them to Midi. However, I doubt things will be that simple.
More likely I will need to capture the RS232 command, convert it to a similar Midi command and send it to the FFB. Get the response back and then send an appropriate response to the Lindbergh.
Many times per second. I fear my Arduino Uno won't be up to the task. This might be the excuse I've been looking for to try out one of the new Arduino Due boards.
I've attached the full dump of the one way comms to the FFB. Its not 2-way yet because I need to hand build a second Midi interface and I wanted to prove this was even slightly possible before proceeding.
If anyone has a 838-14592-91 board and is able to log the RS232 comms (or is willing to loan/sell it to me so I can log it) please speak up.
I'll post more as I discover it.
Matt.
I'm currently converting my Chihiro Outrun 2 SP single chassis to use the Lindbergh system.
My Chihiro seems to be slowly dying. The usual capacitor and CPU/GPU heatsink fixes don't seem to have helped. So rather than replace the Chihiro I though I would install a Lindbergh system.
Everything should in theory work as-is, with the exception of the Force Feedback Board. The Chihiro talks MIDI to the board I have, whereas the Lindbergh wants to speak RS232/RS422 with the 838-14592-91 board.
I have tried to find a 838-14592-91 board, but haven't been successful.
This got me to wondering if it would be possible to make some sort of adapter/conversion board based on an Arduino that would allow a Lindbergh to connect to a MIDI system.
So with a weekend with not much on, I started doing some research.
The Outrun cabinet wiring diagrams were a big help and allowed me to quickly zero in on which connections would be of use. The ones I am interested in are CN2 on the 838-14174 DRIVER BD MIDI.
CN2 has 5 wires connected: shield/gnd, TXD,TXD_R,RXD, and RXD_R.
Figuring this was a good place to start I connected my logic analyzer to those 4 pins and captured the cabinet booting until the game loaded. This includes the self test where it asks you to stand clear and it rotates the steering wheel full right.
As luck would have it, my analyzer already knew how to decode the MIDI protocol. So I ran the software just to see what would happen.
The first group of data that caught my eye, was the Chihiro repeatedly sending the packet:
FD 00 00 7D
Which was answered by the FFB board with:
0x44
So I went digging into the Midi protocol spec and quickly discovered that 0xFD is a system message that's undocumented and should be ignored. Great.
Fast forward a few hours and I had the basics of an Arduino with a Midi interface shield wired up to my Chihiro so it could capture (via passthrough) any commands sent from the Chihiro to the FFB.
This led me to my first eureka moment. Sega have added a CRC to the usual 3 byte midi protocol.
Fantastic, this means I could now determine if the data I was capturing was legit.
Here's a sample of the output:
Code:
> [202040] FF 00 00 7F [OK]
> [202100] 81 30 7F 4E [OK]
> [202115] 81 30 7F 4E [OK]
> [202130] 81 30 7F 4E [OK]
> [202144] FC 00 20 5C [OK]
> [202160] FD 00 00 7D [OK]
> [202175] FD 00 00 7D [OK]
> [202189] FD 00 00 7D [OK]
Notice that the FD 00 00 7D matches what i saw in the logic analyzer.
The Midi spec says the first byte is the command. And that command 0xFF means reset. Stands to reason the first thing the Chihiro would do is tell the board to reinitialize.
The FD 00 00 7D seems to be an "are you there?" type of message. I suspect if the FFB doesn't answer then you'll get an error.
But there's a lot of other stuff in there that doesn't make sense yet.
Next thing I did was bring up the game service menu. This allows you to test the feedback board.
One of the tests you can do is turn the wheel left/right or stop the motor.
You better believe I logged that test real quick.
Full right
80 01 01 00
84 00 60 64
Full left
84 01 20 25
Stop
80 00 00 00
My guess is 80 01 01 00 means turn the motor on, then 84 xx xx xx is a position.
And 80 00 00 00 turns the motor off again.
How does all of this help?
My hope is that the Lindbergh is sending the same commands over RS232 and all I need to do is convert them to Midi. However, I doubt things will be that simple.
More likely I will need to capture the RS232 command, convert it to a similar Midi command and send it to the FFB. Get the response back and then send an appropriate response to the Lindbergh.
Many times per second. I fear my Arduino Uno won't be up to the task. This might be the excuse I've been looking for to try out one of the new Arduino Due boards.
I've attached the full dump of the one way comms to the FFB. Its not 2-way yet because I need to hand build a second Midi interface and I wanted to prove this was even slightly possible before proceeding.
If anyone has a 838-14592-91 board and is able to log the RS232 comms (or is willing to loan/sell it to me so I can log it) please speak up.
I'll post more as I discover it.
Matt.
Attachments
Last edited: