[Windows Mobile Development and Hacking General] Kona_Mtbkr:
Background

Background:

A few weeks back, I was inspired by the work of a couple of fellows who were working on a project to get the HTC TouchFLO Cube working on other HTC devices. You've probably seen the installation cab floating around in a couple of different threads. Like many of you, I quickly became enamored with the cube ... and jumped through all of the hoops to get it working (and I was one of the lucky ones who got it working).

The original work by jasjamming and bepe provided a cube that could spin to the right via a hardware button. Then, with the release of efrost's FTouchFlo ... you could get the cube to spin right with a finger motion. It was all great, but I wanted more! Two things bothered me greatly ... you could not spin the cube left, and once you launched a program ... the only way to return to the cube would be to spin it again.

So began a intensive week-long, late-night effort to learn as much as I could about the TouchFLO Cube, and if/how we could get it do more. I am very happy to report that much progress has been made ... and it is definitely feasible that we can have finger controlled spin left, right, open, and close.

How the HTC TouchFLO Cube works

The HTC TouchFLO Cube is really the collaboration of four separate executables, and an "interface". The four executables consist of one app per each each face of the cube (ApLauncher.exe = App Launcher; MediaHubMini.exe = Music, Photos, Video; QuickDial.exe = Contacts), and an application that facilitates the animation sequences for the cube (Biotouch.exe). Now, at this point I guess I'll point out that "cube" is really a bit of a misnomer. Since there are only 3 faces to this object + top and bottom, it's really more of a pentahedron, or a triangular prism if you like the sound of that better. The "interface" part is where things get interesting. On an HTC Touch (Elf) or Touch Dual ... the "interface" that detects finger swipes and translates them into calls to the biotouch application is the main touchscreen library: touch.dll. This is where we start running into problems trying to run the cube on other devices. Without modifying the touch.dll on a given device ... there will be nothing to interpret finger swipes and communicate to biotouch. This is the point the original work by jasjamming and bepe went down the path of attempting to map a hardware button to be used to spin the cube. An executable needed to be created that would interact with biotouch in the same manner that the touch.dll file would, and trigger it to run the spin right animation. I'm not exactly sure what process these guys went through to figure this out ... but they did. From there ... it was efrosts creation of FTouchFlo that brought the next revolution. FTouchFlo is an app that allows you to map a file to be called when it detects one of the four finger swipe motions (up-down, down-up, left-right, right-left). With this, you could now map that same executable that was assigned to the hardware button to the left-right swipe action in FTouchFlo ... and now your cube spins with a finger swipe.

That's pretty much where the development stopped. I did a lot of research on this ... but pretty much all I could find from that point on was various people's input about it not working on this device, sort of working on another, etc. I simply couldn't believe that no one was pushing to enable the other cube interactions! It frustrated me to no end to know that I had a cube that was capable of spinning left, but no way to tell it to do so. So I rolled up my sleeves, read through countless pages of posts about what had been done so far, downloaded a disassembler, performed a lot analysis and theorizing ... and here we are today.