A gaming controller for a mobile device, comprising: a first hardware gaming controller comprising a first programmable controller, a first battery, and at least one input switch, the at least one input switch of the first hardware gaming controller configured to be manipulated by a user's left thumb and/or fingers to generate a left controller input with the first programmable controller; and a second hardware gaming controller comprising a second programmable controller and at least one input switch, the at least one input switch of the second hardware gaming controller configured to be manipulated by a user's right thumb and/or fingers to generate a right controller input with the second programmable controller; the first hardware gaming controller and the second hardware gaming controller each configured to be removably coupleable with the mobile device, the mobile device comprising a second battery and a mobile device processor coupled to a memory module and configured to run a software application; wherein the first hardware gaming controller is configured to be mechanically secured to a side portion of a housing of the mobile device, and the second hardware gaming controller is configured to be mechanically secured to an opposing side portion of the housing of the mobile device; wherein the second battery is coupled to the first battery, for priority charge dissipation, wherein the second battery is configured to be drained first while not utilizing charge on the first battery; wherein the mobile device processor is configured to receive the left controller input and the right controller input as distinct data packets; and wherein each of the data packets corresponding to the left controller input and the right controller input comprises a respective identifier to identify the corresponding data packet as being from the first hardware gaming controller or the second hardware gaming controller; and a virtual controller module configured to combine the left controller input and the right controller input received in the mobile device processor into a single controller input representation for providing to the software application. a first hardware gaming controller comprising a first programmable controller, a first battery, and at least one input switch, the at least one input switch of the first hardware gaming controller configured to be manipulated by a user's left thumb and/or fingers to generate a left controller input with the first programmable controller; and a second hardware gaming controller comprising a second programmable controller and at least one input switch, the at least one input switch of the second hardware gaming controller configured to be manipulated by a user's right thumb and/or fingers to generate a right controller input with the second programmable controller; the first hardware gaming controller and the second hardware gaming controller each configured to be removably coupleable with the mobile device, the mobile device comprising a second battery and a mobile device processor coupled to a memory module and configured to run a software application; wherein the first hardware gaming controller is configured to be mechanically secured to a side portion of a housing of the mobile device, and the second hardware gaming controller is configured to be mechanically secured to an opposing side portion of the housing of the mobile device; wherein the second battery is coupled to the first battery, for priority charge dissipation, wherein the second battery is configured to be drained first while not utilizing charge on the first battery; wherein the mobile device processor is configured to receive the left controller input and the right controller input as distinct data packets; and wherein each of the data packets corresponding to the left controller input and the right controller input comprises a respective identifier to identify the corresponding data packet as being from the first hardware gaming controller or the second hardware gaming controller; and a virtual controller module configured to combine the left controller input and the right controller input received in the mobile device processor into a single controller input representation for providing to the software application.