What's new

winteriscoming

Champion
Joined
Feb 16, 2016
Messages
1,440
Reaction score
1,185
Location
Indiana, US
I'm just kind of thinking out loud with this idea. I don't know when I'll take time to dig into it.

I currently own an OutRun 2 Special Tours driving cabinet and have both the Chihiro and NAOMI 2 for loading up several different driving games.
OutRun2 (Chihiro) and Initial D (NAOMI 2) utilize the same Sega force feedback system.

There are some games that I believe lack FF altogether:
Crazy Taxi: High Roller (Chihiro)
Crazy Taxi (NAOMI)
Jambo Safari (NAOMI)

Then there are games that utilize the NAMCO force feedback, but are otherwise compatible with my cabinet:
Wangan Midnight Maximum Tune (Chihiro)
Mario Kart Arcade GP (Triforce - don't currently own one, but uses the same FF setup as WMMT, as far as I know)

I've got 2 goals in mind.
1. For games that don't use FF, at least make the wheel self centering and tighter. When playing these games, it's way too easy to lose control because the wheel is so loose.
2. Translate NAMCO force feedback commands into something that the Sega force feedback system can use.

Whatever is working as the new brain for the force feedback system is going to need to:
-have some way of knowing the position of the wheel (Simply read potentiometer value or somehow get it from JVS control system? I assume the port where the force feedback system plugs up isn't transmitting/receiving any information from games that don't utilize it, but will check.)
-know how to communicate with the Sega force feedback system.
-know how to communicate with the game board (Chihiro or Triforce) and receive and send communication as if it were the NAMCO force feedback system.

The NAMCO force feedback may communicate over RS-232 (the card reader that plugs into the same port uses RS-232) and the Sega one may be RS-422 (though it says MIDI, I'm seeing TDX+ TDX- RXD+ RXD-, which aligns with RS-422 standard... though I'm completely unfamiliar with MIDI standards, and almost equally unfamiliar with serial standards).
 
Ok. I own a couple of Triforce boards now and have more motivation to move on to this project. Mario Kart is a game I can get my wife excited about, so I'll have someone to play against when I build my 2nd driving cab. So while it will be great to finally have FFB working in Wangan Midnight Maximum Tune, which is a game I've fallen in love with in spite of never playing in a dedicated cab with FFB, it will also be great to have it working in Mario Kart, a game I also really like.

Documented in another thread that I'll have to dig up is some info on how to interface with the Namco force feedback board. In that thread we discovered much of the protocol for that system, and will be able to continue doing that pretty easily.

The challenge at this point is going to be sniffing the Sega MIDI force feedback signal and deciphering it.

There are various MIDI adapters available for the PC, and I might be able to start there, but I'm not sure if they present themselves as simple serial ports or not. I've got a MIDI USB adapter somewhere that I'll have to track down and see if it will work for me. Failing that, I think I can wire something up with an Arduino.

As far as I can tell, MIDI is simply serial communication through opto isolators with a very specific baud rate (31250 bps), so hopefully it won't be too complicated to interface with.
 
I've got a MIDI USB adapter somewhere that I'll have to track down
Well that part was easy! It was in the first box I opened. :P

FastLane-USB is the MIDI adapter I have:
http://motu.com/products/midi/fastlane_usb/body.html

Edit: ...and it doesn't show up as a COM port... but there might be a software solution for that:
http://projectgus.github.io/hairless-midiserial/

Edit: Why did they have to use MIDI!? Everything Windows-based that I'm coming across expects a very specific protocol. I guess it remains to be seen if the FFB falls within these specs. I can't see a way to use this USB adapter to view raw serial data. I've got a MIDI monitor program that looks to divide up packets as: STATUS DATA1 DATA2 CHAN NOTE EVENT

I guess we'll see if I can monitor anything coming to or from the FFB in this format and get intelligible data.
 
Last edited:
I'm trying to figure out the signal wiring.

Here's some MIDI info:http://www.personal.kent.edu/~sbirch/Music_Production/MP-II/MIDI/midi_physical_layer.htm

MIDI dictates that there should be opto isolation in the received signal.

We have a 7 pin connector on the NAOMI/Triforce/Chihiro going to an 8 pin connector on the FFB. I'm doing a my current analysis with the Triforce.

Here's wiring from mobo to FFB per ID3:
MIDI FFB wiring.png


On that 7 pin connector there are 2 pins (4 and 5) that stay a nearly constant 5v with slight fluctuations read with a DMM during wheel movement. These pins are not shorted together, nor is either one directly shorted to 5v. Then there are 2 other pins (1 and 2) that stay near 0v (edit: these actually float around 5v - generated by the FFB and apparently in my current setup doesn't have a shared ground with the motherboard) with very little fluctuation during wheel movement They are not shorted together and neither is shorted to ground.



The FFB has an opto isolator near its CN2 header where the wiring from the game motherboard connects. The opto isolator is a PC457L. Per the datasheet, here is a pinout:

PC457L.png


Pin 7 on the FFB's connector connects directly 3-Cathode on this opto isolator. Pin 8 on the FFB's connector goes through a 220 ohm resistor and connects to 1-Anode. This leads me to believe these are the 2 pins coming from the motherboard that drive the MIDI in on the FFB. There are other components interacting with these 2 pins, so I'll try to put together a diagram for that if it ends up being needed, but these are the most direct connections between the pins and this opto isolator.

Here's a typical diagram for wiring MIDI:
physical_layer.circuit.gif


The MIDI in port seems to match up with what I'm seeing for the pins described above. The MIDI diagram shows a diode between the 2 input lines. I don't see a diode on the FFB board between these 2 lines, but I do see a capacitor that could be serving a similar function.
 
Last edited:
I can get some garbage looking data coming in on my MIDI monitor, but this is when the motherboard is plugged right up to my MIDI adapter and no FFB board is plugged up. It apparently still sends FFB commands (or something) even when it doesn't get data back from the FFB.

I have identified what I think are the outputs on the FFB per the MIDI wiring. I think it's Pin 3 from FFB matching to Pin 4 on the MIDI port and Pin 4 on FFB matching to Pin 5 on the MIDI port. I'm still trying to comprehend the MIDI standard wiring, so it will hopefully become more clear as I work through this.
 
I'm very interested by your work here. I have the same setup (OR2 twin cab, some Naomi, Chihiro and Triforce motherboards), and the same wife ("Mario Kart is a game I can get my wife excited about", don't understand something else :D ).
First step, an auto-centering (like springs for upright cabinets) would a great, but a real translation Namco / Sega would be amazing!
 
If I remember well, there is an opto on the chihiro baseboard as well. Those are high speed opto couplers as midi is using some strange (very high) baudrate. (It's documented)

Ftdi usb serial adapters can be programmed for custom baudrates. In software, you choose something standard like 19200, but the actual hardware works on the different custom baudrate.

So, basically, you have a tx drive and return line from baseboard to ffb controller and an rx drive and return line from ffb to baseboard.

Either, the opto led kathode is connected to ground ans they drive the anode of it, or the anode is connected to 5V and they drive the kathode to ground when there is data.

Normally, I would expect both grounds to be identical, unless the ffb board produces it's own 5V power from it's AC voltage input.
 
The FFB board does produce its own 5v.

What's not clear to me is how to wire a serial adapter to MIDI without some TTL to RS232 chip like this schematic shows:
midi-rs232.png


I think I will have an easier time skipping RS232 and using a MIDI to Arduino setup where I just need an opto isolator and a couple other components and can forward it to USB and monitor it that way. I might also just be able to tap into TTL directly on the FFB and the game motherboard and forego all other components for sniffing purposes.
 
RS232 on a DB9 connector like we know it best is called the V24 standard. It uses positive and negative voltage levels on it's signal lines. The higher voltage levels should make the signals more imuum to noise when longer cables are used. A voltage between -3V and -12V is considered the idle state and a voltage between +3V and +12V is considered the driven state.

A processor with a serial port (like the arduino ones) or a separate uart (like the 82C450 chip) usually output their serial bitstream at 5V level. In idle, it's 5V and the line is pulled to GND when there is a bitstream on it.

The max232 simply converts the voltage levels from 5V - 0V to -10V + 10V other types of this chip can work on 3V3. There are types with more transmitters and receivers. Besides converting the voltage levels, The max232 also produces the necessairy voltages +10V and -10V from it's single 5V supply. That's what the capacitors are 4.

midi, RS422 and RS485 all use the same type of bitstream but different electrical signals. RS422 uses a differential signal between 2 wires. The idea is that a noise spike that is introduced on one of the signal lines will appear on the second as well. Due to that, the voltage difference between the 2 signal lines will remain identical. RS422 uses 2 wires for it's TX and 2 for it's RX. It can work full duplex, so it can receive and transmit at the same time.

RS485 uses the same system (2 differential lines), but it uses the same for RX and TX.
The transmitter of the driving chip can be disabled to allow other driving chips to take over the line. It only uses 2 wires for TX and RX and can only work half duplex. Basically, you look if the RS485 network is idle, you enable your transmitter and send the bitstream. When the last bit is sent, you disable your transmitter. You can enable your receiver to wait for an answer, or you can leave it enabled all the time. In the second case, you will also receive your own messages. RS485 allows more than 2 devices to share the same bus. JVS uses an additional sense line which is not part of the RS485 standard.

So, we arrived at midi. That standard expects an opto coupler input at the receiver side. The driver should be capable to drive the optocoupler led. I believe the required current is in the specification as well.

You don't need a max232 as you can directly amplify the 5V bitstream with a buffer so that it can drive a led. (You need between 5 and 10ma for that. To my knowledge, the midi standard is set to 5mA)

The calculation is simple. A led has a voltage drop of approximatly 1.2V. So, if you drive with 5V and have a serie resistor of 440 ohms, the current is (5 - 1.2)/440 = 0,0086A So, that's 8mA (You have a 220ohm resistor in serie with the 5V and one in serie with the kathode of the optocoupler led.)

So, if you want to do some sniffing, you could use an ftdi cable that has the signals on a 5V level at the other end. The software for a custom baudrate can be freely downloaded from their website.

You could use an arduino setup, but I doubt that the midi baudrate will be available in the normal serial libraries. If you use a "midi shield", it might have a library with those available.

Sega does not have to follow the midi protocol for their FFB communication. (You don't expect your steering wheel to play a note...) Maybe usb 2 midi have some special requirements about maximum latency. You don't want your music to lag behind if you play it. For sniffing the signals, this doesn't matter much.

And, you will only be able to monitor one direction of the communication if you only have 1 serial port.
 
You could use an arduino setup, but I doubt that the midi baudrate will be available in the normal serial libraries. If you use a "midi shield", it might have a library with those available.
Everything I'm seeing about Arduino and MIDI suggests that the baud rate of 31250 bps is achievable when instantiating a serial port.

I'll be following this schematic and will set up 2 inputs:
https://cdn.instructables.com/FHN/J43V/H6MEVNIE/FHNJ43VH6MEVNIE.LARGE.jpg

I may even go ahead and set up 2 sets of inputs and through ports to forward the signals on to either device. That way my monitor is sitting in between and hopefully not interfering with communication.


And, you will only be able to monitor one direction of the communication if you only have 1 serial port.
Now this I'm very familiar with from sniffing RS232 for card reader communication. Fortunately the MEGA 2560 has plenty of serial ports.

I'm going to go ahead with the opto-couplers since they're cheap and I won't have to invest much in this experiment, whether or not it succeeds.

I want to get an ideal setup going with an Arduino since that's what I hope to use as the main device for the end goal of this project. The Arduino will translate communication from Namco's RS232 FFB protocol to the MIDI protocol so that the MIDI FFB will work in place of the NAMCO unit.

BTW: If the MIDI FFB is sticking to the standard 31250 bps baud rate, that's significantly slower than the baudrate for JVS (115200 bps) and I've got an Arduino in place of a JVS I/O in another project, so hopefully an Arduino is up to this task.
 
Last edited:
Leave R3 out of it and place your sniffer optocoupler led in serie with the existing pad.

It will reduce the current a little, as you will have the voltage drop of your led on the circuit as well.

So, the current will be 5V -1.2 - 1.2 / 440 = 5.9 mA.

This is a bit low, but might still work. Should check the pc 410 datasheets for that.

The older force feedback systems of sega (model 3 hardware) have been reversed and their protocol can be found on the net.
It wouldn't suprise me that the midi system is showing some similarities, getting it's data serial instead of parallel on the older systems.

You could use your interface to connect a lindbergh to the midi ffb boards as well.
I am sure there is interest for such.
Now, people who are upgrading their cabinet need to install the new ffb controller pcb.
 
Yeah, I would like for it to be a solution for Lindbergh as well. I've got a Lindbergh, but no RS422 FFB system to sniff. I'm in touch with @freddiefiasco who has access to one, though. I'm not there, yet, though.

Step 1: sniff the MIDI communication.
Step 2: figure out the protocol.
Step 3: drive the FFB system directly with an Arduino... i.e. tell the wheel to self-center so that it self-centers in non-FFB games.
Step 4: Use Arduino to interface MIDI FFB with games that use Namco FFB and translate protocols, managing communication to/from MIDI FFB and RS232 on game motherboard (Triforce and Chihiro in the case of Mario Kart 1/2 and WMMT 1/2.
Step 5: Same as above, but with RS232 on Lindbergh in place of Lindbergh specific FFB (i.e. Lindbergh uses RS232 to RS422 converter which can be eliminated if I already have RS232 coming from the Arduino).

I believe I will end up needing the MAX232 once I get to the point of doing Arduino to RS232. I think there are breakout modules with this chip similar to the RS485 module I use in my JVS project.
 
I have some IR transmitter and receiver LEDs on hand so went ahead and wired up a set to an Arduino and I think I'm successfully seeing communication from the motherboard to the FFB board.

Packets seem to be up to 3 bytes which is consistent with MIDI expectations for communication.

Edit: I'm going to wait until I get the IC's in to continue with this because I'm hoping my current issue is that the LEDs I have on hand aren't up to the task. I thought I was deciphering the prototcol and had some good theories going for center, off and left, but once right started getting introduced, it threw things off. All commands for right ended up looking identical to center commands.
 
Last edited:
I have an opto isolator IC wired up for monitoring the communication coming from the game. In this test I wired up Chihiro with OR2SP.

Leave R3 out of it and place your sniffer optocoupler led in serie with the existing pad.
This seems to be working. At least I'm getting something. It remains to be seen whether or not it's garbage.

I now believe the packets to be 4 bytes long as they seem to align better when grouped that way.

During test menu DRIVE BOARD TEST I'm getting a constant stream of communication until I exit the menu. That means (at least with this game) there are nearly constant commands being sent to the FFB.

Here's an example of some lines from initialization:
Code:
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FA 0 1F 65  
83 60 4 67  
86 1 2 5  
88 0 4 C  
80 1 1 0  
84 0 76 72  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 0 76 72
FD 0 0 7D is what it appears to be sending out most of the time when there is no activity, making me think it's just a standard command to make sure communication is still live. The other numbers pop up during movement.
 
For now I'm going to call FD 0 0 7D the polling command. I would assume the answer to this most frequent command is just going to be either status or position.

The options in the test menu for OR2SP are only to roll left, roll right and stop motor. There isn't a center option like there is in F-ZERO AX.

When selecting either roll right or left, the wheel moves in that direction to the extreme position and locks on (or keeps trying to move that direction). If you manually move the wheel away from the specified direction, it fights and moves back.

The only way to stop the motor is to choose the stop option.

If you turn the wheel off center the opposite direction you tell the wheel to turn, this command shows up first, which I believe is the center command:
80 1 1 0

With the ROLL RIGHT selection in the menu, most commands are the polling command and this:
84 0 60 64

With ROLL LEFT, mostly polling command and 1 additional line:
84 1 20 25

Stop motor is this and this is also the last line when exiting the menu:
80 0 0 0
 
Full initialization sample 1:
Code:
Started!
FD 0 0 7D  
FD 0 0 7D  
FF 0 0 7F  
81 30 7F 4E  
81 30 7F 4E  
FC 0 20 5C  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FA 0 1F 65  
83 60 4 67  
86 1 2 5  
88 0 4 C  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 20 25  
80 1 1 0  
84 1 20 25  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 20 25  
80 1 1 0  
84 1 20 25  
80 1 1 0  
84 1 20 25  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
F0 0 0 70  
84 1 0 5  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D
 
Full initialization sample 2:
Code:
Started!
FD 0 0 7D  
FD 0 0 7D  
FF 0 0 7F  
81 30 7F 4E  
81 30 7F 4E  
81 30 7F 4E  
FC 0 20 5C  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FA 0 1F 65  
83 60 4 67  
86 1 2 5  
88 0 4 C  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 20 25  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
84 1 0 5  
80 1 1 0  
84 1 20 25  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 20 25  
80 1 1 0  
84 1 20 25  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 1E 1B  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 14 11  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
80 1 1 0  
84 1 A F  
80 1 1 0  
84 1 0 5  
F0 0 0 70  
84 1 0 5  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D  
FD 0 0 7D
 
I think the only way I'm going to confirm that I've got the baudrate and protocol correct is to start sending commands to the FFB board directly without a game involved and see what happens. I can monitor communication all day long and try to make sense of it, but that doesn't mean I'm monitoring correctly.
 
Back
Top