{"id":6465,"date":"2026-09-20T12:02:02","date_gmt":"2026-09-20T03:02:02","guid":{"rendered":"https:\/\/the-world-star.com\/?p=6465"},"modified":"2026-11-14T15:44:16","modified_gmt":"2026-11-14T06:44:16","slug":"minimalist-socd-cleaner-circuit-for-leverless-controllers-built-with-just-two-74hc132-logic-ics","status":"publish","type":"post","link":"https:\/\/the-world-star.com\/en\/miscnote\/minimalist-socd-cleaner-circuit-for-leverless-controllers-built-with-just-two-74hc132-logic-ics-6465\/","title":{"rendered":"Minimalist SOCD Cleaner Circuit for Leverless Controllers: Built with Just Two 74HC132 Logic ICs!"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Intro: I've Been Arguing with Gemini Lately<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Lately, I've been getting into endless technical debates (and heated back-and-forths) with Google Gemini.<br>When I asked Gemini to design an SOCD (Simultaneous Opposite Cardinal Direction) cleaner circuit for a custom leverless fightstick, the AI constantly slipped up and exposed its limitations.<br>At first, it confidently suggested, \"Just cross-couple two NAND gates.\" That produced a terrible latch circuit where inputs stay permanently locked even after letting go of the buttons (or worse, rapidly oscillate)\u2014completely unusable in real matches. When I pointed this out, it then said, \"Use AND gates (74HC08),\" and smugly offered formulas that fed identical inputs and logic to both Left and Right\u2014a mathematically broken mess.<br>AI models trained purely on shallow web snippets struggle with foundational logic design. In the end, I had to completely refute its nonsense with the definitive logic circuit I had envisioned from the start, finally forcing the AI to admit the correct design.<br>In this post, I am sharing the real, fully functional circuit design compliant with official Capcom Pro Tour tournament rules: \"Left + Right = Neutral\" and \"Up + Down = Up Priority.\" It uses only two 74HC132 ICs (quad 2-input NAND Schmitt-trigger gates, 8 gates total) with zero external components required.<br>Because standard gamepad donor boards already handle pull-ups internally, you don't need any external resistors. Simply wire these ICs between your switches and the donor board, and it works flawlessly.<br>------------------------------<br>## \ud83d\udcca 1. Truth Tables (The Operational Baseline)<br>First, let's establish the truth tables that define our non-negotiable operational requirements. This assumes an active-low configuration (button pressed = 0, released = 1).<br>## [Left \/ Right: Neutral Cleaning (1 IC, 4 Gates)]<br>When both Left and Right are pressed simultaneously (0, 0), both outputs must be forced to 1, 1 (unpressed\/neutral).<br><br>| State | Left Button (L) | Right Button (R) | Final Left Out ($L_{out}$) | Final Right Out ($R_{out}$) | Game Recognition |<br>|---|---|---|---|---|---|<br>| Both Released | 1 | 1 | 1 | 1 | Neutral (No Input) |<br>| Left Pressed Only | 0 | 1 | 0 | 1 | Left Input (Active) |<br>| Right Pressed Only | 1 | 0 | 1 | 0 | Right Input (Active) |<br>| Both Pressed | 0 | 0 | 1 | 1 | Neutral (Cancelled) |<br><br>## [Up \/ Down: Up-Priority Cleaning (1 IC, 4 Gates)]<br>When both Up and Down are pressed simultaneously (0, 0), Up (0) takes priority while Down (D) is forced to 1 (cut off).<br><br>| State | Up Button (U) | Down Button (D) | Final Up Out ($U_{out}$) | Final Down Out ($D_{out}$) | Game Recognition |<br>|---|---|---|---|---|---|<br>| Both Released | 1 | 1 | 1 | 1 | Neutral (No Input) |<br>| Up Pressed Only | 0 | 1 | 0 | 1 | Up Input (Active) |<br>| Down Pressed Only | 1 | 0 | 1 | 0 | Down Input (Active) |<br>| Both Pressed | 0 | 0 | 0 | 1 | Up Priority (Down Cut Off) |<br><br>------------------------------<br>## \ud83e\udde0 2. Deriving the Boolean Expressions from the Truth Tables<br>To satisfy these truth tables with 100% precision, we use Karnaugh maps and De Morgan's laws to mathematically derive boolean formulas constructible solely with NAND gates (74HC132).<br>By inverting (NOT) each opposing signal and feeding it into the opposite gate, we achieve clean interlock logic that completely eliminates feedback loops and parasitic oscillation.<br>## 1. Derivation for Left\/Right Neutral Cancellation<br>The final left output ($L_{out}$) should be 0 if and only if \"L = 0 AND R = 1\".<br>We transform this into an inverted product so it can be expressed purely with NAND gates.<br><br>* Final Left Output: $L_{out} = overline{overline{L} cdot R}$ (De Morgan expansion: $L + overline{R}$)<br>* Final Right Output: $R_{out} = overline{overline{R} cdot L}$ (De Morgan expansion: $R + overline{L}$)<br><br>This produces an elegant mutual interlock: \"Output 0 (ON) only when my own button is pressed (0) AND the opposing button is released (1).\"<br>## 2. Derivation for Up\/Down Up-Priority Cancellation<br>From the truth table, the Up output ($U_{out}$) always mirrors input U directly. The Down output ($D_{out}$) should be 0 only when \"D = 0 AND U = 1\"\u2014meaning Up is released.<br><br>* Final Up Output: $U_{out} = overline{overline{U} cdot overline{U}} = U$ (*Passes through NAND twice as NOT gates to match propagation delay and retain polarity)<br>* Final Down Output: $D_{out} = overline{overline{D} cdot U}$ (De Morgan expansion: $D + overline{U}$)<br><br>This gives us an asymmetric formula that forcibly shuts down the Down output to 1 (OFF) whenever Up is pressed (0), regardless of the Down input.<br>------------------------------<br>## \ud83d\udee0\ufe0f 3. Elegant Gate Mapping on the 74HC132 (8 Gates Total)<br>We map our derived expressions perfectly across the four gates of each IC (IC1 for Left\/Right, IC2 for Up\/Down). Because there are no feedback loops whatsoever, this design is entirely immune to deadlocks and hazards.<br>## [IC1: Left\/Right Neutral]<br><br>* Gate 1 (Left NOT): Inputs 1A & 1B to Left Button \u27a1\ufe0f $1Y = overline{L}$<br>* Gate 2 (Right NOT): Inputs 2A & 2B to Right Button \u27a1\ufe0f $2Y = overline{R}$<br>* Gate 3 (Left Output): Input 3A to Left Button, 3B to $2Y(overline{R})$ \u27a1\ufe0f $3Y = L_{out}$<br>* Gate 4 (Right Output): Input 4A to Right Button, 4B to $1Y(overline{L})$ \u27a1\ufe0f $4Y = R_{out}$<br><br>## [IC2: Up\/Down Up-Priority]<br><br>* Gate 1 (Up NOT): Inputs 1A & 1B to Up Button \u27a1\ufe0f $1Y = overline{U}$<br>* Gate 2 (Down NOT): Inputs 2A & 2B to Down Button \u27a1\ufe0f $2Y = overline{D}$<br>* Gate 3 (Up Output): Inputs 3A & 3B to $1Y(overline{U})$ \u27a1\ufe0f $3Y = U_{out}$<br>* Gate 4 (Down Output): Input 4A to Up Button, 4B to $2Y(overline{D})$ \u27a1\ufe0f $4Y = D_{out}$<br><br>------------------------------<br>## \ud83d\udca1 Wrap-up<br>By stripping away all unnecessary peripheral circuits and pull-up resistors and taking full advantage of the gamepad board's internal pull-ups, two simple 74HC132 chips deliver a flawless, tournament-legal SOCD cleaner.<br>By mastering the true versatility of the NAND gate and paring everything down to the essentials, this circuit stands as the sleekest and most robust hardware modding solution for leverless builds. Furthermore, the 74HC132 features Schmitt-trigger inputs, making it exceptionally resilient against noise and contact bounce during intense gaming sessions.<br>Don't get misled by overly complicated wiring guides online or flawed AI schematics. Try breadboarding this clean \"design by subtraction\" build for yourself!<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When playing fighting games like Street Fighter 6 on a leverless controller, an SOCD (Simultaneous Opposite Cardinal Direction) cleaner is mandatory. Its primary job is resolving opposite inputs like Left + Right into Neutral (no input registered).<br>Modern DIY arcade controllers typically run microcontroller boards like the Raspberry Pi Pico, handling SOCD cleaning automatically through firmware.<br>However, if you're building a padhack controller\u2014soldering wires directly to the PCB of an existing commercial gamepad\u2014the board usually lacks built-in SOCD cleaning. Pressing opposing directions can cause glitches or register unintended diagonals. To fix this, you must clean the signals in the hardware layer before they reach the controller PCB.<br>A quick search online often brings up convoluted schematics combining multiple distinct logic ICs (NOT, AND, OR), or simplistic latch circuits that cross-couple two NAND gates. The former adds unnecessary part count and wiring headaches, while the latter can cause inputs to stay stuck on even after you release the buttons.<br>Going back to digital logic fundamentals, the NAND gate is a universal gate capable of creating any logic function. Here, we build a seamless, loop-free cancellation circuit by fully utilizing a single 74HC132 chip containing four 2-input NAND gates.<br>------------------------------<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">## \ud83e\udde0 Circuit Logic & Design Philosophy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><br>In an active-low setup (button pressed = 0, released = 1), we craft our lockout logic by inverting (NOT) each button's signal and routing it into the opposing gate.<br>Let $L_{out}$ and $R_{out}$ represent the final signals sent to the gamepad PCB.<br>## [Logic Expressions]<br><br>* Left Output (to PCB): $L_{out} = overline{overline{L} cdot R}$ (De Morgan expansion: $L + overline{R}$)<br>* Right Output (to PCB): $R_{out} = overline{overline{R} cdot L}$ (De Morgan expansion: $R + overline{L}$)<br><br>This creates lean mutual inhibition: \"Only output 0 (active) when self is pressed (0) AND opposing button is released (1).\"<br>## [74HC132 Gate Allocation (4 Gates)]<br>We allocate every single one of the four gates (Gates 1 to 4) inside a single 74HC132 IC with zero waste.<br><br>* Gate 1 (Left NOT): Inputs 1A & 1B to Left Button \u27a1\ufe0f $1Y = overline{L}$<br>* Gate 2 (Right NOT): Inputs 2A & 2B to Right Button \u27a1\ufe0f $2Y = overline{R}$<br>* Gate 3 (Left Output): Input 3A to Left Button, 3B to $2Y(overline{R})$ \u27a1\ufe0f $3Y = L_{out}$<br>* Gate 4 (Right Output): Input 4A to Right Button, 4B to $1Y(overline{L})$ \u27a1\ufe0f $4Y = R_{out}$<br><br>------------------------------<br>## \ud83d\udcca Complete Truth Table Proving Circuit Behavior<br>Below is the complete truth table mapping every intermediate and final output. Because there are no feedback loops, the circuit tracks button transitions instantaneously without lag.<br><br>| State | Left (L) | Right (R) | Gate 1 Out ($1Y = overline{L}$) | Gate 2 Out ($2Y = overline{R}$) | Final Left Out (3Y) ($overline{1Y cdot R}$) | Final Right Out (4Y) ($overline{2Y cdot L}$) | Game Recognition |<br>|---|---|---|---|---|---|---|---|<br>| Both Released | 1 | 1 | 0 | 0 | 1 | 1 | Neutral (No Input) |<br>| Left Only | 0 | 1 | 1 | 0 | 0 | 1 | Left Input (Active) |<br>| Right Only | 1 | 0 | 0 | 1 | 1 | 0 | Right Input (Active) |<br>| Both Pressed | 0 | 0 | 1 | 1 | 1 | 1 | Neutral (Cancelled) |<br><br>## \ud83d\udd0d Step-by-Step Truth Table Breakdown<br><br>* When only one button is pressed:<br>For example, when Left alone is pressed (L=0, R=1), Gate 3's input evaluates to 1Y(1) \u00b7 R(1), producing an output of 0 (active ON signal). Meanwhile, Gate 4's input is 2Y(0) \u00b7 L(0), maintaining an output of 1 (inactive OFF signal). Single directional inputs pass cleanly to the game.<br>* When both buttons are pressed simultaneously:<br>The moment both buttons drop to 0, both inverted signals (1Y and 2Y) jump to 1. This sets Gate 3's inputs to 1Y(1) \u00b7 R(0) and Gate 4's inputs to 2Y(1) \u00b7 L(0). By the fundamental NAND rule\u2014where any 0 input forces the output to 1\u2014the final outputs (3Y, 4Y) are locked to 1 and 1 (unpressed state), achieving clean, instant cancellation.<br><br>------------------------------<br>## \ud83d\udca1 Conclusion: Maximum Impact with Minimal Parts<br>No excessive ICs, no risky feedback loops that cause deadlocks or oscillation\u2014just all four gates of a 74HC132 put to perfect use. That is the essence of minimalist digital design and the smartest approach to hardware SOCD cleaning.<br>Thanks to the Schmitt-trigger inputs of the 74HC132, the circuit is also naturally resilient to switch bounce and contact chatter, providing battle-ready reliability.<br>If you're building a padhack leverless controller using budget controllers or first-party gamepad PCBs, definitely test out this clean single-chip NAND setup on a breadboard!<br>------------------------------<br>Here is the refined, polished technical breakdown.<br>Would you like to add a detailed DIP pinout wiring list or notes on where to place optional 10k\u03a9 pull-up resistors? Let me know anytime, and I'll be glad to help!<br><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro: I've Been Arguing with Gemini Lately Lately, I've been getting into endless technical debates (and heated back-and-forths) with Google Gemini.When I asked Gemini to design an SOCD (Simultaneous Opposite Cardinal Direction) cleaner circuit for a custom leverless fightstick, the AI constantly slipped up and exposed its limitations.At first, it confidently suggested, \"Just cross-couple two [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2137,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"en_US","_original_post":"https:\/\/175.41.248.22\/?p=5845","_lightning_design_setting":[],"footnotes":""},"categories":[37],"tags":[1067],"class_list":["post-6465","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-miscnote","tag-tech-notes","en-US"],"_links":{"self":[{"href":"https:\/\/the-world-star.com\/wp-json\/wp\/v2\/posts\/6465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/the-world-star.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/the-world-star.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/the-world-star.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/the-world-star.com\/wp-json\/wp\/v2\/comments?post=6465"}],"version-history":[{"count":1,"href":"https:\/\/the-world-star.com\/wp-json\/wp\/v2\/posts\/6465\/revisions"}],"predecessor-version":[{"id":6466,"href":"https:\/\/the-world-star.com\/wp-json\/wp\/v2\/posts\/6465\/revisions\/6466"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/the-world-star.com\/wp-json\/wp\/v2\/media\/2137"}],"wp:attachment":[{"href":"https:\/\/the-world-star.com\/wp-json\/wp\/v2\/media?parent=6465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/the-world-star.com\/wp-json\/wp\/v2\/categories?post=6465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/the-world-star.com\/wp-json\/wp\/v2\/tags?post=6465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}