PIC-PROJECTS.NET

Ideas, Circuits and Code

  • Increase font size
  • Default font size
  • Decrease font size
Home Starter Projects Hacks and Mods XBox 360 Rapid Fire (Part 1)

XBox 360 Rapid Fire (Part 1)

E-mail Print PDF

In the last year modifying XBox 360 controllers by adding a Microchip microcontroller to generate a rapid firing ability has been a hot topic on a number of electronics and gaming discussion forums. Over two articles we shall examine how these microcontroller based modz work and how you could go about making one of your own.


PIC-Projects accepts no responsibility for any damage to you, your controller, your XBox or your self esteem caused by the use of information provided in this article. You use it entirely at your own risk. We will NOT enter into any personal correspondance about modding.

A Little History

Rapid fire modifications have been around for good few years and have evolved from relatively simple techniques using features of the controller (i.e. obtaining a PWM pulse from one of the LEDs, putting a magnet on a rumble motor weight and using it to close a reed switch connected to the trigger), through basic electronic circuits based on NE555 timers and more recently to use of microcontrollers.

Whilst the early techiniques based on the controller hardware have the advantage of being relatively simple to install and cheap they offer little control over the selection of firing rates. An NE555 timer based circuit can contain a potentiometer to allow the rate of fire to be adjusted within limits but as this is an analog component is difficult to set the controller to a specific number of shots per second.

The advantage of using a microcontroller for modding is its flexibility. A single microcontroller can produce signals to drive one or two triggers at the same or different rates of fire, and if further connections are made to the controller's buttons or an external switch, it can be programmed to switch between different settings to match a selection of games.

Controller Types

There are two types of wireless controller for the XBox 360. The original controllers are usually referred to as 'Matrix' type, a name derived from the way in which the buttons share some common connections. The custom Microsoft chip at the heart of the controller is programmed to scan the buttons to see which are being pressed. The newer model controllers referred to as 'CG' or 'Common Ground' uses a simpler design in which each button has its own connection to the Microsoft control chip. In the unpressed state each of these connections is held 'HI'. Pressing the button shorts the connection to ground ('LO').

On both types of controller the left and right triggers are 10K potentiometers connected between a regulated +1.5V and 0V. Pulling and releasing the trigger moves the wiper between these limits. On a 'matrix' controller the potentiometer reads +1.4V when the trigger is released and +0.3V when fully depressed. On the 'CG' controller the signals are reversed with +0.3V when the trigger is released and +1.4V when pressed. So by forcing the wiper output 'LO' (0V) on matrix controller or 'HI' (+1.5V) on a CG controller will make the Microsoft control chip register the trigger as being pulled.

This difference means that our mod chip needs to know what type of controller it is installed in for it to produce the right output signals. Theoretically we can determine the type by making analog readings from the triggers when the controller is switched on but this technique is not very reliable. An easier approach is to use a spare input pin wired either to +3V or 0V to indicate the type of controller, or more usefully, the required active signal state.

Common Circuits

The following image shows the four circuits commonly used by most of the pre-programmed mod chips sold today for stealthy 'sleeper fire' (e.g. the controller looks unmodified) and not so stealthy 'rapid fire' (e.g. extra buttons are installed in the controller) modz. In all the circuits pin 7 (GP0) and pin 6 (GP1) provide the outputs to the triggers.

Commod rapid fire circuits

The LED output on pin 2 (GP5) is normally connected to one of the player indicators. On a CG controller the LED is illuminated by setting the output 'HI' while on a matrix controller it must be set 'LO'. The easiest way to make the output compatible with either controller is to produce an PWM signal consisting of an alternating series of 'LO' and 'HI' pulses of equal duration. If the pin is made an input then the LED will be switched off on both controllers.

The input on pin 3 (GP4) can either be connected to the SYNC button or an additional switch that shorts to ground when pressed. Short presses on the SYNC button (e.g. less than 5 seconds) are ignored by the Microsoft control chip so a mod chip can detect and use them as a signal to change firing mode without interferring with its original function.

Pin 4 (GP3) is used to indicate the type of output pulse required. When GP3 is connected to +3V the chip will produce 'HI' (+3V) output pulses on the trigger pins, and when GP3 is tied to 0V it will pulse 'LO' (0V). Between pulses the trigger pins are set into input mode which makes them a high impedance. During this period the potiometer output will reflect the state of the trigger as if the mod chip was not installed.

This ability to set the output pulse type allows the same chip to be used in either a matrix or common ground controller and to be wired as either a 'sleeper' or 'rapid fire'.

Some vendors leave out the resistors shown in these circuits which probably isn't a good idea. The controller is powered from two AA batteries, which when fresh, will deliver close to 3V to the PIC. If the PIC is producing a 'HI' output pulse to a trigger then it will be close to double the voltage normally applied across potentiometers. Only Microsoft know for sure if it's control chip can handle this level of over voltage for a sustained period of time.

How It Works

When a trigger is enabled for rapid fire then the program code continuously toggles the associated pin between being an input and being an output at the level defined by pin 4 (GP3). The length of time that each cycle takes determines the fire rate. For example to fire 10 times a second the trigger pin a single input/output cycle must be completed every 100mS (i.e. 1000mS / 10). So the code will make the pin an input for 50mS (i.e. 100mS / 2) and then an output for a further 50mS before repeating.

In the rapid fire circuits the output state of the pin only reaches the trigger wiper pin when the intervening switch is closed. So the controller registers a shot when either the trigger is pulled as normal OR the rapid fire switch is pressed and the trigger pin is in the output state (e.g. 'LO' for matrix, 'HI' for CG).

The sleeper fire circuit is similar but role of the mod chip is different. Instead of generating pulses to simulate trigger pulls the chip is actually generating what appear to the controller as trigger releases. As a result the controller registers a shot when the trigger is pulled AND the mod chip is in the input state. When the mod chip is in its output state (e.g. 'HI' for matrix, 'LO' for CG) the trigger appears unpulled regardless of its real state.

This explains why the wiring of pin 4 (GP3) is different between the sleeper and rapid fire circuits for the same controller type.

Generating these alternating pulses is clearly the main task of mod chip and as the pulses must be timed its easiest to do it within an timer based interrupt. The same interrupt could be used to toggle the LED output when needed. At other times the chip monitors the mode selection input and changes the data used to time the pulses or disable pins entirely when the rapid fire is not needed on a particular trigger.

In the next part of this article we will look at the program required to make a PIC micro-controller perform these tasks.


Last Updated on Sunday, 26 July 2009 10:07