Using A TeensyLC To Emulate The XBOX 360 Controller

After the release of Mortal Kombat X, [Zachery’s] gaming group wanted to branch out into the fighter genre. They quickly learned that in order to maximize their experience, they would need a better controller than a standard gamepad. A keyboard wasn’t going to cut it either. They wanted a fight stick. These are large controllers that look very much like arcade fighting controls and include a joystick and large buttons. [Zachery’s] group decided to build their own fight stick for use with a PC.

[Zachery] based his build around the TeensyLC, which is a 32 bit development board with an ARM processor. It’s also compatible with Arduino. The original version of his project setup the controller as a HID, essentially emulating a keyboard. This worked for a while until they ran into compatibility issues with some games. [Zachery] learned that his controller was compatible with DirectInput, which has been deprecated. The new thing is Xinput, and it was going to require more work.

Using Xinput meant that [Zachery] could no longer use the generic Microsoft HID driver. Rather than write his own drivers, he decided to emulate the XBOX 360 controller. When the fight stick is plugged into the computer, it shows up as an XBOX 360 controller and Windows easily installs the pre-built driver. To perform the emulation, [Zachery] first had to set the VID and PID of the device to be identical to the XBOX controller. This is what allows the Microsoft driver to recognize the device.

Next, the device descriptor and configuration descriptor had to be added to the Teensy’s firmware. The device descriptor includes information such as USB version, device class, protocol, etc. The configuration descriptor includes additional information about the device configuration. [Zachery] used Microsoft Message Analyzer to pull the configuration descriptor from a real XBOX 360 controller, then used the same data in his own custom controller.

[Zachery] programmed the TeensyLC using the Arduino IDE. He ran into some trouble here because the IDE did not include the correct device type for an Xinput device. [Zachery] had to edit the boards.txt file and add three lines of code in order to add a new hardware device to the IDE’s menu. Several other files also had to be modified to make sure the compiler knew what an Xinput device type was.  With all of that out of the way, [Zachery] was finally able to write the code for his controller.

Xbox 360 hard drive adapter (redux)

[Chlazza] let us know about their Xbox hard drive to SATA adapter, allowing the use of an Xbox 360 (original) hard drive on a PC without voiding the drive’s warranty. Looking for a fun and enriching experience read: really bored and inspired by a previous adapter we featured, [Chlazza] set out to make their own and ended up succeeding with a board that costs less than $1 in parts. Of course the drive uses its own Fat32 based file system so there is still some hacking to do if you intended to read the data, but this is a step in the right direction.

Unwrapping 360 degree video

[Golan Levin] found a way to unwrap the 360 degree images he created with his camera. He’s using a Sony Bloggie HD camera which comes with a 360 degree attachment for the lens. This produces a donut shaped image (seen in the upper left) that was not all that palatable to [Golan]. He used Processing and openFrameworks to create a program that lets him unwrap the donut into a flat image, or create a ring of video where the viewer is at the center and can scroll left or right to see the rest of the filmed environment. He released the source so you can adapt the program if you’re using a different 360 video setup.

[Thanks Kyle]

Packshotnik: 360 degree image creation

Packshotnik is a circuit designed to help with creating 360 degree images. It consists of a main board and motorized rotating platform. The board can send IR signals to a camera to snap pictures at intervals in the rotation. The source code, schematic, and pcb files are all available from the project page. While he is using this primarily for rotating 360 degree images, you could also just plop your camera onto the platform and end up with panoramic sets.

360 degree video for next-to-nothing

[Luis], a regular Hackaday reader, sent in some info about his 360 degree video experiments. He wanted a cheap device to use with a video camera, producing video that can be displayed using a free Flash software library.

The hardware consists of a mirrored light bulb, a square of glass, and some threaded rod. The camera lens attaches to the glass with the rod right in the middle. The lens will capture a donut image reflected in the mirror of the bulb. [Luis] then processes the result and uses Ryubin’s Flash Panorama to handle playback. He’s posted two clips as examples, the first of an “Existentialist Suburb Walker” and the second is some test footage while setting up for a shot. You can click-and-rotate the video while it’s playing to look around the area.

This could produce some great driving videos, without the need for multiple cameras. [Luis] does point out some problems with oscillation as the mirror on the end of a rod will amplify the effect of movement on the image.

Xbox 360 controller on NES

Some may think that linking an Xbox 360 controller to an original NES console is overkill. [Francois] would not count him self among that group. When the robotics team at his school was done using the controller with one of their projects, [Francois] used a Cortex M3 processor to get it to run with one of Nintendo’s 8-bit consoles. Part of the code for using the controller with the robot and the NES is available. Now all that is left is being able to play Duck Hunt with a Sixaxis controller.

FiSSION 3D Game Engine for Wii homebrew

[PunMaster] wrote in to tell us that he has just released the first public demo of FiSSION Project. It’s a homebrew 3D game engine for the Wii. He’s hoping it will make development easier for other people that want to get into the Wii hacking scene. The project was originally spun out of similar work he was doing targeted at XNA for the 360. This is just a demo to generate interest in the project and hopefully get some feedback as to what’s needed to make a full release possible.