Ihr Browser kann keine SVG, PNG und GIF Grafiken anzeigen.

Flip Flip Force Feedback (FFFF) Controller

The reviews on this site are the text versions of the videos on my YouTube channel. The text based reviews use (if at all) very little pictures. Please follow the link to the corresponding video in order to see in game graphics.

The arcade light guns of Namco's Razing Storm and Time Crisis 5 both use a so called bistable rotary solenoid. The ones Namco is using were made by Takano and are of a high quality. These solenoids differ from normal, linear solenoids in at least two characteristics: They stay in position, after the power is gone, and they can take either polarity of direct current (DC). Having the plus and minus terminals connected one way, will for example, make the solenoid run clockwise and having the terminals inverted will make the solenoid run counter clockwise. In a light gun application this gives the user much more control over the pacing of the force feedback without emitting excess heat. Furthermore both movements, fore and back, will benefit from the strong magnetic force of the solenoid and are not limited to the static energy of a compressed return spring like it would be the case for normal, linear solenoids. That said, in practice bistable rotary solenoids usually have a lower impulse to their impacts, because the travel distance is typically shorter and thus a lower velocity can be reached.

Curiously Namco themselves don't seem to be in clear favor or dismiss of bistable rotary solenoids. After they were used for the 2009 released game Razing Storm, 2014's Lost Land Adventure just used a rumble motor as sole mean of force feedback. In 2015 Time Crisis 5 again relied on bistable rotary solenoids, but for some reason parted with the flip flop power control circuits. Instead Namco relies on gravity to reset the mechanism. This is the reason why the guns don't work properly when held sideways. For the 2018 released cabinet Shoot Away Pro linear solenoids were used, just like for most classic arcade guns.

Knowing that a DC polarity flip flopping circuit will only be of a very limited application, I put its development onto the backlog of projects. But then two friends of the channel got themselves a bistable rotary solenoid based light gun and the topic got interesting for me again. Gustav Wingburen, who is also from Swedishzerland, owns a Razing Storm gun too. Over at his channel he does awesome light gun builds and restorations. He uses his guns mostly for emulation purposes. Wallmachine owns Time Crisis 5 guns. The lovely videos of the gun's internals and the force feedback mechanism were kindly provided by him. As Chinese reproductions began to surface on Aliexpress, a flip flop force feedback circuit will become more and more attractive, not just to owners of the genuine controller.

The flip flopping of the DC polarity is a challenge towards the control circuit. Normally I design discrete electronics, like my force feedback signal generator, which I have shown in episode 118. To cut down the complexity of the circuit this time I went with a micro controller based approach, which should be easier to reproduce for my audience. I will also show how to use this DC flip flop force feedback controller as a substitute for my discrete signal board. In this video I take the opportunity to show the process of how I typically develop a new design. I am working step by step, just taking very little steps at a time, accompanied by lots of tests and measurements.

I like to completely separate the force feedback power from the electronics of the sensor and logic in order to ensure preservation of perfect performance. That's why I will be using solid state relays, which are abbreviated SSR, rather than a MOSFET, albeit the cost difference. The circuit is comparably simply. Depending on how the microcontroller sends out its signals in the worst case two short circuits can be created. To circumvent this, I originally planned to have the SSR control signals running over logic elements, which would make short circuits impossible. The clean way would have been to use a tri-state buffer NOT gate and an AND gate. However I figured I can get away using fewer parts by using a XOR gate, which I forcefully turn into an input enabled tri-state device by connecting its power terminal to signal one instead to power. I bought the fastest XOR gate I was able to source and did test on a bread board. Manual tests were looking promising, but sadly the timing behavior didn't fully satisfy me. I ended up removing the logic circuit altogether and running the force feedback circuit without protection. The power supply I am using can take short circuits no problem but sports an indicator which shows them. This indicator just lights up very briefly in single shot mode and there just if I spam the trigger very fast. The measured current never reached worrisome levels and thus I will continue to test normal power supplies with this circuit, still without the protective logic circuit.

Next I tried to evaluate cheaper alternatives to DC SSRs as these are about 20 USD each when bought new. In comparison AC SSRs are typically cheaper by a factor of three. AC SSRs work in this application, but they are far from ideal, as they will lower the voltage of the source which they switch. Even worse, the attenuation is strongly current dependant and thus it's difficult to compensate the voltage drop by overvolting the load input. If your load is tolerant towards voltage spikes, an AC SSR can be used for this application, but it would be a better idea to buy used DC SSRs from China. It's easy to find used ODC5 for about 7 USD a piece. Personally I went with new units of the Crydom CMX60D series, but another modern alternative would be the Crydom DO061 series. Finally I want to add an important detail on using AC SSRs on a DC source: zero crossing models can't be used for this application, as these will latch open to wait for the never coming zero crossing of the DC source.

The next step was to choose and program a micro controller. I chose the ATmega32U4 based Arduino Micro. Most likely other ATmega32U4 micro controllers will also work with my code if the pin identities are adjusted. If the timing lines are adapted the compatibility to other boards is potentially even vaster. I programmed step by step and mapped one of the LEDs redundantly to the force feedback forward signal as a simple indicator. First I simply made sure that I am interacting with the correct pins and that they are responsive. Then I created a time domain and actions that take place in that domain. Next I made sure that not only my indicator LED works, but also the two electronic signal events.Then I introduced the concept of debounce. Autofire was established as a next step. This is before single fire mind you. I will be using the circuit with the trigger switch connected to a normally high pin on the micro controller. Gustav and Wallmachine however plan to hook up their recoil circuit to the Gun4IR system, which I have covered in episode 199. The Gun4IR system has a force feedback signal which is normally low and thus I created an alternative output trigger which is normally low as well. In a last step I created a version of the code which pays attention to a shot mode selector switch, which offers either full auto fire or single shots. This selector just makes sense for usage with the normally high pin, but if you really need it on the normally low pin, you can change the code like this for it to work.

I mounted the SSRs on a dot prototype board and doing so I regretted cheeping out on the boards, as the dots were barely wetting. Into a generic soap box I cut the holes for the used sockets and held the parts in place with two compound stone putty. After doing the wiring I fitted everything inside. Make sure to always compare at least two sources for pinouts, because smarty-pants often gets this wrong. Apart from the gender identity there is solder- and connection side perspectives to look out for. I hook the box up to the gun via a Cat 6e Ethernet cable, because I don't appreciate arcade metal hoses much.

The duration of how long the slide is kept back and how long it stays up in the front can be defined by the user in the code prior flashing. Also adjustable is the pause in between shots, which allows dialing in the cadency independently from the slide movement speed. Keeping the pause duration at 1 ms I did tests with several paces. Personally I like putting both position durations to 80 ms each the best. That way the feedback is strong, reasonably fast in auto fire, yet won't double fire at single trigger presses. I can understand why somebody would dial in the two durations as low as 50 ms, which actuates much faster and still feels great. But after that I feel the occurring pulse width modulation of the load input becomes more and more noticeable. At 20 ms the movement isn't fully executed anymore and of the original 0.67 A just 0.40 A are drawn.

Depending on the needs of the player my circuit can be drastically simplified. If the player won't ever change the fire mode of the gun, the toggle switch can be left away. Depending on whether the player is using an external trigger signal, or wants to pay attention to the trigger switch state itself, one would just wire one of the two but not both. Please pay attention to pull the normally low pin low regardless the choice. In contrast, the pull up resistor of the normally high pin can be left away in any case, because the ATmega32U4 is set up to do so on its own over 40 kOhm. The resistor is just there to increase the wetting current which in turn increases the useful life span of the trigger switch. Insufficient wetting current and a poor choice of sub miniature micro switches are the main reasons for the recent computer mouse mass failing, which the school of planned obsolescence has brought us. If the player isn't interested in flip flopping the polarity of the DC power at all and is merely looking for an easy to build alternative to my discrete signal generator of episode 118, the schematic diagram reduces significantly in complexity. The cost also comes down a lot, because just a single SSR is needed to switch a normal solenoid.

On my website the code for the micro controller and schematics are available for download. As with most of my projects the code is open source but I claim the copy right. Gain my permission before using the code on own, unrelated projects.

Personally I am pleased by how this project turned out. Now I am able again to feel the Namco Razing Storm force feedback. I missed it so much after experiencing it in Nerima once. For the low amount of noise it makes it feels substantial and I like it a lot. Furthermore I am happy to offer an easy improvement to the splendid Namco Time Crisis 5 gun. Lastly I am glad to finally also have a micro controller based signal generator in my repertoire. Even as a discrete electronics enthusiast I have to admit that this solution has its fair share of advantages.

Schematic diagram of a circuit which changes the polarity of the applied direct current.

The schematic diagram uses the pinout names valid for an Arduino Micro. All employed pins are of course digital, but the A names is what is printed on the silk screen. Just green dots indicate a junction. Other crossing lines are not directly electronically connected.


(respect the copyrigth)

Parts: R1: 10 kΩ; R2: 10 kΩ; R3: 10 kΩ; R4: 10 kΩ; S1: your trigger switch (e.g. ZF Friedrichshafen AG DB2C-A1RC); S2: Any SPST or SPDT switch (e.g. RND Components RND 210-00471); DC SSR: 4 pieces (any DC SSR with the correct rating will do. Examples: Crydom CMX60D5 Crydom DO061A ODC5); ATmega32u4 based micro controller (e.g. Arduino Micro A000093, Arduino Nano Every ABX00028)