The team builds the ultimate retro gaming controller using an ESP8266 WiFi Module, a transmitter controller, and a receiver on the game console. Universal support includes Nintendo, Super Nintendo, Sega, and Atari. To make the universal controller wireless they use the inexpensive ESP8266 WiFi Module. It runs on NodeMCU firmware which can be programmed using LUA. Once you write the script in LUA and NodeMCU executes it the controller module and the console module can talk to each other. The controller module is the transmitter and the console module is the receiver. The plan is to build a custom controller with two shift registers in it. The shift registers are used to read the buttons. Each shift register has 8 bits for total of 16 bits. 16 bits are used as there will not be more than 16 buttons. The controller module can shift the data out of the shift registers and into itself which is similar to how a Nintendo controller actually works. Because it reads in 16 bits it does not care what the buttons are for each console, it just gets the data. The custom controller then transmits a 16 bit package in one word to the receiver unit. The receiver takes that data and recreates it on its side with two more shift registers. These would be output registers which would be 74HC595 shift registers. Once again each shift register has 8 bits total for 16 bits, and they are going to be 0 or 1. From that point they connect up the console plugs. The way they connect the plugs to these shift depends on what the buttons actually do. After wiring everything up they use a multimeter to determine what button are being pressed. They then wire up their controllers to match. Each controller is different. In the case of the Nintendo and Super Nintendo there is going to be input shift registers to connect to the output shift registers. For the Sega Genesis they’ll need to take apart an old Sega Genesis and hook the pads beyond the chip directly to the output shift registers