I helped design and build the Windows 8 Start screen. Wow.

Looking back over my “Windows Wish List” posts and some wild hand-drawn sketches in a spiral notebook from 2008, it’s amazing to me to look back over the last 4 years and realize not only how many of my ideas have been incorporated into Windows 7 and 8, but also the fact that I helped make much of it happen by working on the Windows shell team. The Start screen in Windows 8 has several design elements that were originally mine: the parallax scrolling effect of the background (inspired by old-school video games like “Shadow of the Beast”), the notion of making a full-screen version of the Start menu, and a way of organizing or partitioning Apps, Settings, and Files. Another one of my ideas — pinning a website from Internet Explorer to the Taskbar as its own icon with its own jumplist — was picked up and turned into a feature in newer versions of IE. It’s surreal to now see the Start screen (which I spent 3 years helping to design and build) all over the news, TV commercials, and printed Christmas shopping ads. I guess while I was busy working my butt off, I really did manage to help change the world.

Posted in Work | Tagged , , , , , | Leave a comment

SEGA D-pad analysis

Anyone who has read my previous posts knows I’ve been obsessed with game controller design for a long time. My obsession has led me to three overall questions/conclusions:

  1. The Japanese SEGA Saturn controllers (and the genuine SEGA-produced Genesis 6-button controller modeled directly after its internal design) have the best D-pad ever designed — but why?
  2. The “transforming d-pad” on the new 360 controllers works bettter but still has some problems — why?
  3. Convex-shaped analog thumbsticks are superior to concave-shaped analog thumbsticks — but why?

I have analyzed each of these topics with OCD-like attention and have come up with some explanations/answers that are actually very interesting. This post will address points 1 and 2, because they are related.

The one remaining problem with the “transforming D-pad” on the new xbox360 controllers is that it is still a tip-prone teeter-totter. Meaning, as you are trying to cleanly switch from pressing “left” to “right”, it’s all too easy for the d-pad to accidentally “tip” up or down enough to erroneously activate one of those vertical directions. This is what still infuriates many players of games like PacMan CE DX, which require accurate split-second 4-direction controls.

SEGA solved this problem in the 1990s with their D-pad design for the 6-button Genesis controller (same design used in the Japanese Saturn controller). They eliminated the tip-prone nature of the d-pad by eliminating the central pivot point altogether! See the following illustration:

I bought an old 6-button Genesis controller (the good SLS-manufactured ones, not the crappy knock-off ones manufactured by Jalesco or whoever it was and rebranded with the SEGA logo) off eBay and took it apart. I also bought off eBay a pair of the new (2009) SLS-manufactured and reissued-only-overseas “Saturn” controllers that are USB for use with PCs, and took one of them apart. The controllers are cosmetically different on the outside and have a slightly different feel, but they use the same D-pad design as illustrated above. The Saturn USB controllers, when used with emulators like MAME or KEGA Fusion, are far more accurate and “less frustrating”-feeling than the D-pads on either the PS2 or Xbox360 controllers I also hook up to my PC. The SEGA pads truly are the best design, even after all these years.

Which leaves me wondering, why don’t all the modern game makers use that design? Surely whatever patent(s) (if any) SEGA held on the design have expired by now. Maybe it’s just because the engineers at Microsoft and Sony and various third-party controller makers are unaware of this design.

Posted in Games | 7 Comments

Review of Microsoft’s Xbox 360 wireless controllers with transforming D-pad

I’ve replaced all my original Xbox 360 wireless controllers with the new silver model with the transforming d-pad. Although still far from perfect, the d-pad on these is a major improvement, and worth the upgrade now that the price on these has dropped. It’s also looking like all future controllers released by Microsoft will use the new d-pad design, such as the Gears of War 3 special release controllers.

Cons:
1. The grayscale buttons. Many games use the color codings, so it was stupid to make them all grey. Fortunately they can be swapped out for the colored buttons from an original controller.

2. The analog thumbsticks still have concave tops (rather than convex, as PS2/PS3 use). Fortunately they can be swapped out for aftermarket PS2-style sticks from online sellers such as http://www.evilcontrollers.com/

Posted in Games | Leave a comment

HOORAY! Microsoft finally to release xbox360 controller with fixed D-pad

Posted in Games | Leave a comment

CompuTrace/”LoJack” for laptops: rcpnetp.exe, rpcnetp.dll, autochk.exe

So there’s this “security” software built into the BIOS of many laptops called CompuTrace.  It is sorta like “LoJack” for laptops.  If your laptop is ever stolen, CompuTrace can “phone home” to notify a server where your laptop is.  It is written by a company called Absolute Software and then provided to laptop manufacturers so they can include it in the BIOSes they supply for their laptops.  If you have one of these laptops, then you have this software in your BIOS and there is no way for you to remove it.
CompuTrace is at least partially a rootkit.  Absolute designed it that way intentionally so that a thief cannot remove the software by formatting the disk or reflashing the BIOS.  The problem is that rootkits can cause all kinds of other horrible problems for you, the user.
The CompuTrace rootkit in your BIOS will write the following files (and possibly others) to your Windows filesystem:
c:\windows\system32\rpcnetp.exe
c:\windows\system32\rpcnetp.dll
The rootkit will also hijack the AUTOCHK.EXE process that normally runs during Windows boot, and instead run its own code.
One issue this rootkit may cause: chkdsk may not run during boot like it is supposed to.
Posted in Uncategorized | 11 Comments

Xbox360 D-pad: design flaws and fix

Summary

Like many gamers, I have major complaints about the D-pad on Microsoft’s Xbox360 wireless controllers:

  • It sometimes fails to recognize that you are pushing it in a given direction.
  • It sometimes thinks you are pushing it in a direction that you are not.
  • It feels stiff — too much force required to operate it.

The D-pad is a necessity for playing certain types of fast-action games.  Usually these are ports or remakes of old games that were designed before analog thumbsticks existed.  Examples of such games include Street Fighter II, Street Fighter IV, MegaMan 9, and PacMan C.E.  You can also use the xbox360 wireless controllers with a PC (via the Xbox 360 Wireless Gaming Receiver for Windows) for playing classic video games using emulators like ZSNES or MAME.

These games only understand eight possible directions (up/down/left/right/upper-right/upper-left/lower-right/lower-left), and they only understand if a direction is "pushed" or "not pushed" (no understanding of how far or hard you push a given direction).  Although you can use an analog thumbstick to play these games, it makes for a very frustrating gaming experience.  An analog thumbstick has a wide range of motion (which makes it slower for switching directions) and can move in any possible direction (which means you can’t tell by feel when you are accurately pushing in one of the eight exact directions the game knows about).

I researched the xbox360 D-pad problem online, and I found and tried various instructions and YouTube videos that suggested doing various things to the controller.  While some of them helped somewhat, none of them completely solved all the problems I was having.  So I investigated these problems myself until I understood their real causes. Then through some trial and error, I devised the fix I will present in this article.  If you grind the inner rim larger as per those other instructions, and then you also apply the fix presented here, your D-pad will finally work the way it should.  I have applied this fix to all four of my xbox360 wireless controllers and it has drastically improved the D-pad on all of them.

Disclaimer

I’m posting this do-it-yourself guide as a public service to gamers everywhere.  You use ths information at your own risk.  Taking your controller apart will void its warranty.  I am not your free personal technical support specialist, so while you are welcome to leave comments here or e-mail me to ask for clarification or help, don’t expect that I will necessarily respond, because I am busy and I don’t owe you anything.  Although I work for Microsoft, the problems, analysis, instructions, and opinions provided here are my own and are in no way endorsed or acknowledged by Microsoft. 

Materials and tools list

You will need all of the following materials and tools:

Pictures of some of the tools:

  

Step 1: Take apart the controller

The controller is held together by special Torx security screws (star shape with a center post), size "T8".  You can buy a matching security Torx screwdriver online if you want, but you don’t really need to.  All you really need is a standard set of jeweler’s flat-head screwdrivers in slightly different sizes.  One of the flat-head screwdrivers will fit perfectly inside the head of the Torx screw like this:

If the center post inside the Torx head breaks off, don’t panic, just use a slightly larger flat-head screwdriver, like this:

Here are all the screws you will need to remove to get the controller apart.  Notice that one of them is hidden underneath the barcode sticker, so you will need to peel the sticker off or poke a hole through it.

Once you have removed all the screws and carefully pulled the controller apart, you will need to disassemble the grey plastic D-pad by removing the two silver screws that hold it together and then gently squeezing the two plastic tabs to release the pieces.

Step 2: Understanding and fixing the first design defect

The top piece of the grey plastic D-pad sits inside a circular well on the front surface of the controller.  This well is not spacious enough to allow the D-pad to rock far enough to reliably trigger the buttons inside. 

To fix this, with the controller disassembled and the grey D-pad assembly taken out, grind the wall of the well out some using the Dremmel and the high-speed cutting bit.  You don’t need to grind out very much — maybe just about a sixteenth of an inch (or about 1mm for you metric folks.)  Be careful not to cut downward through the bottom of the well or to cut away so much material that the well breaks off.  Just grind enough to give the D-pad assembly breathing room to move. 

You’ve ground away enough when you can push the D-pad in any direction and still have a very small space between the grey plastic piece and the wall of the well.

Step 3: Clean all contact surfaces

The D-pad and controller buttons all work the same way: conductive "nubs" on the underside of rubber pads press against the graphite contact points on the circuit board to connect the switch.  Unfortunately the manufacturing quality on these things is inconsistent.  It is common for your new controller to already have crud all over the contact surfaces, preventing a good connection from being made.  For example, there was some unidentifiable white goo all over some of my controller’s contact surfaces (I’ve circled the blobs of goo in red in the photos):

  

Cleaning the contacts is a four-step process:

  1. Using your goo remover and paper towel, gently melt away any goo stuck to any contact surfaces.
  2. Use the Windex or rubbing alcohol and paper towel to clean off the oily residue the goo removers leave behind.
  3. Gently rub each surface with the pink pencil eraser to rough it up a little (you don’t want any of the surfaces to appear glossy or shiny).
  4. Be sure to blow out all eraser shavings from all the parts and completely dry all contact surfaces.

Now that all the contacts are nice and clean, they will make much better contact:

   

Step 4: Understanding the second design defect

Remember the two grey plastic pieces of the D-pad that you took apart by removing two silver screws?  The bottom half of that grey plastic assembly is poorly designed. 

The D-pad operates like a see-saw: it stands on a center post, and when you press a direction, you are actually tilting it a little bit.  Its flat undersurface does not press down evenly on the rubber nubs.  Instead, it only pushes down the outside edge of each nub.  Here’s a picture of me pressing left on the D-pad assembly so you can see how it tilts:

 

It’s tough to see exactly what’s happening here unless you place the assembly onto a flat clear surface and operate it while looking at the contact points from underneath.  Here’s a picture (looking through a clear plastic piece from underneath) of me pressing the D-pad assembly to the left:

 

You can’t see it too well in this photo, but only the outside edge of the left nub is actually touching the clear surface, because the nub itself is being titled.  This is the main reason the D-pad does not work reliably.

Making matters worse, the undersurface of the grey plastic piece is not a solid surface.  Instead, it is comprised of protruding rails that are responsible for pushing each rubber nub.  These rails only press the outer edges of each nub rather than its center.

Together, these two design defects mean that the rubber nubs don’t get pressed solidly or evenly against the circuitboard, preventing reliable contact from being made.

Step 5: Remove the protruding rails

Carefully use the utility knife to cut the protruding rails off the bottom of the D-pad assembly, like this:

   

Step 6: Create two plastic washers

This is the trickiest part of the project.  It requires precision and patience.  It is important to do a very precise job, so take your time and sweat the details.

We are going to recreate the bottom undersurface of the D-pad assembly so that it is solid and has a little bit of a stair-step.  The step will push the inner part of each nub a little extra amount, so that each nub will press down more evenly.  To accomplish this, we will create and stack two plastic washers of exactly the right thicknesses and size.

Here are the plastic washers we are going to create:

  • 1 large-size plastic washer made out of the plastic lid and the 3M Scotch Packaging tape
  • 1 small-size plastic washer made out of the overhead transparency film and the 3M Scotch Packaging tape

First, cut out a rough 2-inch circle (doesn’t have to be perfect, just guesstimate the size and shape) of each type of plastic.  This will give you smaller raw pieces that will be easier to work with and cut precisely later.

Next we need to thicken up each piece of plastic a bit by sticking on layers of packaging tape.  Peel off a 2-inch piece of the packaging tape and stick it carefully to one side of the thick plastic circle you cut out of the bowl lid.  Be careful not to get any air bubbles or wrinkles in the tape as you apply it.  Then peel off another 2-inch piece of packaging tape and stick it to the opposite side of the same piece of plastic.  Finally, peel off another 2-inch piece of the packaging tape and stick it carefully to one side of the thin plastic circle you cut ouf of the overhead transparency film.

Now we are ready to make the center hole in each washer.  Using the hole punch, create a hole located roughly (again, just guesstimate, it doesn’t have to be perfect) in the center of each plastic circle.  Unfortunately we need a hole a little bigger than a standard hole punch will create.  We need the hole to be about 0.25-inch diameter so it will fit completely over the center post on the bottom of the grey D-pad piece.  Carefully use the hole punch to nibble away the edges of the hole to slightly enlarge it to the needed size.  Try to keep the hole as perfectly circular-shaped as possible when you do this.  Test-fit each piece of plastic over the grey piece’s center post to make sure you’ve got it right.  It should fit just a little bit loose — enough that you can easily "spin" the post in the hole, but not so loose that the post can shift around in the hole.  If the fit is too tight, it will make your D-pad feel too stiff later.

Now it’s time to exactly cut the washers out..  The thick plastic washer needs to be almost (but not quite) the same diameter as the bottom piece of the plastic D-pad assembly.  Just stick the center post through the hole you already created, and trace around the edge with the fine-point Sharpie marker.  Then use your scissors to cut out the washer using that line as your guide.  When you cut, you want to cut just inside the line, so that you end up with a washer that is just slightly smaller than the grey piece itself.  Test-fit the washer by putting it over the center post and making sure it does not extend past the edge of the grey piece anyplace.  If it does, carefully trim the edge of the washer with the scissors to get it down to the right size.

  

The thin washer needs to be the same diameter as a U.S. quarter (25-cent coin).  It just conveniently happens to be the right size.  The idea is that the thin washer is out "stair step" that will push down on only the inner half of the rubber nubs to give them a little extra push.

In this picture, I’m using a nickel (U.S. 5-cent coin) to demonstrate the basic idea.  But in my trial and error I have found that a quarter (which is slightly larger diameter) works better, so make sure you use a quarter.

 

To make sure your center hole actually gets centered, put the quarter under the plastic and visually center the hole over it.  Then just trace the outer edge of the quarter using your Sharpie pen.  This time, cut along the outside of the line you traced, so that the washer turns out slightly larger than the actual quarter.

 Here are photos of me placing the transparency film over a nickel and tracing its outline.  Again, in my experience a quarter works better than a nickel, so make sure you are using a quarter.

 

 

Step 7: Reassemble the controller using the washers

Reassemble the D-pad assembly into the front face of the controller.  Don’t forget to put the two silver screws back in.  Place the large thick plastic washer over the center post.  Then place the small thin washer over the center post.

Here’s what it should look like with the washers stacked:

 

Double-check that both washers fit loosely (but not too loose) over the center post and into the well around the D-pad assembly.  If the washers are too tight around the center post, or the outside edge of the large washer rubs against the inside of the well, the D-pad will feel stiff later and won’t work properly.

Now carefully reassemble the rest of the controller. First, put all the buttons and rubber nub pads back into place.  Then put the circuit board (and the vibration motors) back into place.  The circuit board should gently snap into place tighly over all the controls.  Try not to bump the D-pad assembly or washers out of place as you stack the circuit board back into place.  Then put the back cover on.  This can be a bit tricky, but it helps if you put the holes over the triggers first, and then then gently push in on the metal battery terminals as you slide the back cover on.  Pick up the controller with both hands, gently squeezing it to keep everything held together, and inspect around the seams to make sure everything is fitting together nicely before screwing it all back together.

Step 8: Try it out

Make sure you have already completely screwed the back half of the controller on using all the screws before you test things out.  The screws squeeze everything together tightly inside the controller.  Without the screws in place, the insides will be looser and there will be too much slack inside the D-pad assembly for a fair test.

You should notice a major improvement in the D-pad right away as you play old-school 2D action games with it.  Try it on Street Fighter 2 or PacMan C.E. (demos of both are available for free on the Live Arcade).  You should be able to hit all directions easily and reliably, without feeling like you have to pressing very hard.  It should feel a little bit "clicky" rather than mushy.  You should also still feel the rocking/tilting motion of the D-pad that indicates the center post is preventing you from pressing opposing directions (up/down or left/right) simultaneously.

Step 9: Troubleshooting

If you are having problems, there are a couple possibilities.

Maybe you didn’t reassemble the controller correctly.  It’s very important that all pieces get seated properly and everything get "sandwiched" back together seamlessly like it was before you took it apart.  This can be delicate work but it’s important to get right.

Or, if you’ve ruled that out, maybe you need to adjust the thickness of the two washers by adding/removing packaging tape.  After all, not all butter bowl lids, transparency films, or xbox360 controllers are exactly the same, so you may need to use more or fewer layers of tape than what worked for me.  If you are not able to hit diagonals reliably, or certain directions still seem to occasionally not register, that means the large washer needs to be thicker.  If your D-pad now feels like it doesn’t rock around the center post properly, or feels stiff, that means the small washer needs to be thinner.  

 Conclusion

I would like to hear feedback on these instructions!  If you try them out, please leave me a comment and let me (and others) know about your experience.  The hardest part of this project is making the plastic washers, so if you come up with a better/easier way to make them, or if you find an online seller of nylon/teflon washers that happen to be exactly the right size and thickness, please let me know.

 

Posted in Games | 15 Comments

Who’s really to blame for the current financial crisis?

The government is trying to rush through a proposal to use $700 billion of taxpayer’s money to pay for all the bad debt run up by big Wall Street financial companies.  This plan would effectively dilute the pain of that debt by spreading it over the entire population over a longer time period.  Fundamentally, it’s unethical to ask people who had nothing to do with causing this mess to foot the bill for cleaning it up.
Okay, it’s easy for me to complain, so what do I suggest instead?  Make the folks who are truly at fault pay for it.
I’m not talking about the executives of those big Wall Street companies.  They were doing what any good participant in an unrestricted market is supposed to do: maximize profits through any legal means possible.  Their behavior was a natural and direct result of the rules of the system.
Nor am I talking about the everyday people who took out ludicrous subprime loans to buy more house than they could afford.  Again, their behavior was a natural and direct result of the rules of the system.  Make predatory lending easily available to folks, and pretty soon house prices go up since people can get approved for bigger loans, and then everyone has to take out bigger loans to afford the houses.  That housing bubble was the natural and direct result of people following the rules of the system.
No, the people truly at fault are the government officials who many years ago approved relaxing the regulations that would have prevented all this.  They took bribes from big corporations to loosen the regulations.  Those are the folks who ought to be sent the bill for the bailout.  They ought to be thrown in prison.
And to prevent this kind of thing from happening again, we desperately need to outlaw lobbying.
Posted in News and politics | Leave a comment