The source code and Eagle files are available from my local download.

After I finished a working prototype I created an Arduino shield.

8 Momentary Push Button Switch generic 12mm (I ordered from SparkFun)
1 Resistor 330Ω orangeorangebrowngold
2 Resistor 470Ω yellowpurplebrowngold
1 Resistor 1kΩ brownblackredgold
1 Resistor 1.5kΩ browngreenredgold
1 Resistor 2.2kΩ redredredgold
1 Resistor 3.3kΩ orangeorangeredgold
1 Resistor 6.8kΩ bluegrayredgold
1 PCB board and schematic
Button Down Resistor Total Resitor Voltage Analog Read Rounded
none 5.00 1023 8
left up 0 0 0.00 0 0
left right 330 330 0.65 133 1
left down 470 800 1.33 273 2
left left 470 1270 1.83 374 3
right up 1000 2270 2.54 520 4
right right 1500 3770 3.16 646 5
right down 3300 7070 3.81 780 6
right left 6800 13870 4.32 883 7

Here is the Arduino source code for the shield (check out the download section):

const byte PIN_BUTTONS    = 0; // buttons on analog pin 0

const byte BUTTON_L_UP    = 0;
const byte BUTTON_L_RIGHT = 1;
const byte BUTTON_L_DOWN  = 2;
const byte BUTTON_L_LEFT  = 3;
const byte BUTTON_R_UP    = 4;
const byte BUTTON_R_RIGHT = 5;
const byte BUTTON_L_DOWN  = 6;
const byte BUTTON_R_LEFT  = 7;
const byte BUTTON_NONE    = 8;

byte readButtons()
{
  //return (NUM_BUTTONS * analogRead(PIN_BUTTONS) + 512) >> 10;
  return (analogRead(PIN_BUTTONS) + 64) >> 7;
}