I also want to take a minute to talk about the guns. I use 8-pin GX16 sockets for the lightgun ports. Again, not too much detail since there is a lightgun forum, but I just wanted to show how the cabinet is connected.
It has 4 ports total, supporting up to 4 players. Then, there are dual power buttons to disable the recoil if desired. Each power button affects 2 ports. So each side has 2 sockets + 1 power button.
My cabinet software will do a bunch of calculations to determine which lightgun socket should be assigned to each player #. For example, if there is just 1 gun plugged in and it's on ports 3 or 4, then I assign it as player 2 because it's plugged into the right side of the cabinet. If the game happens to only support 1 player, then I assign it to player 1. If the game is a 4-player game and a gun is plugged into port 3, then it is assigned to player #3.
I configure the guns per game. The software also runs in the background to handle outputs (i.e. replacing mamehook). So it reads DemulShooter and Mame network outputs to trigger the recoil, rumble when damaged or when a coin is inserted, and whatnot.
The GX16 sockets are a combined USB2.0, and then 12+24v pins are used for the remaining 4 pins. This will allow me to create lightguns that have a 12v or 24v recoil, without the need remember which guns are 12v or 24v in order to plug into the appropriate socket. So, the 12v guns will use the 12v pins, and the 24v gun will use the 24v pins. Just plug an play.