Matthew Kaney at ITP

Flappy Bird on the ATtiny85

Homemade Hardware


235

In this class, I want to explore building hardware for small LCD screens. To begin with, I used a piece of hardware that I’ve used some in the past, the Nokia 5110 screen sold by SparkFun. In order to test the capabilities of the ATtiny85 microprocessor, I decided to see how much of the iPhone game Flappy Bird I could re-implement with this processor and screen.

The Nokia 5110 screen is 84×48 pixels. The height of the screen is divided up into six rows. These rows are then divided into 84 1×8 pixel columns. Each column is represented by one byte of data, and you write data to the screen by shifting a byte at a time, filling each row left to right, and then moving down to the next row. For example, this shows how a byte with the decimal value 39 would render on the screen:

Layout of the LCD Screen

Flappy Bird Pixel Art

Because Flappy Bird is an iPhone game, I decided to use the screen in portrait orientation, effectively rendering the image in six columns, from bottom to top. I mocked up my pixel art graphics in Photoshop (shown at left). Here, I’ve tried out several possible birds, using the original character pixel art as a reference. Also, note the gray stripes indicating the divisions of the screen—by designing with this layout in mind, I was able to create graphics that rendered more efficiently on the screen. From this art, I created the graphics in code by manually typing arrays of byte literals (e.g. “0b00100111”).

Circuit Diagram

The Nokia 5110 screen has 8 pins, 5 of which should be connected to a microcontroller: SCLK (Pin 7), DN (Pin 6), and SCE (Pin 3), which are used for data transfer; D/C (Pin 5), which is used to determine whether the data is interpreted as image data or a control signal; and RST (Pin 4), which can be used to automatically reset the LCD screen. After getting the screen to work in this configuration, I decided that I didn’t need to ever reset the screen, freeing up a pin on my ATtiny to be connected to a pushbutton. The LCD screen requires 2.7-3.3VDC, so I powered the entire circuit off of a pair of AA batteries.

Overview

Here’s the code:


// First, some constants, to define the pins used and
// a few built-in dimensions

#define PIN_SCE     3
#define PIN_RESET   4
#define PIN_DC      1
#define PIN_SDIN    0
#define PIN_SCLK    2

#define PIN_BTN     4

#define LCD_C       LOW
#define LCD_D       HIGH

#define LCD_X       84
#define LCD_Y       48

#define MIN_HEIGHT  10
#define MAX_HEIGHT  43
#define GAP         20

// Now, the graphics, stored here as an array of bytes

byte tile[6] = {0x71, 0xe3, 0xc7, 0x8e, 0x1c, 0x38};

byte pipe[19] = {0b00000000,
                 0b10000000,
                 0b01000000,
                 0b10100000,
                 0b01010000,
                 0b00101000,
                 0b10010100,
                 0b11001010,
                 0b01100101,
                 0b10110010,
                 0b01011001,
                 0b00101100,
                 0b00010110,
                 0b00001011,
                 0b00000101,
                 0b00000010,
                 0b00000001,
                 0b00000000,
                 0b00000000};

byte pipeCap[19] = {0b10000000,
                    0b01000000,
                    0b10100000,
                    0b01010000,
                    0b00101000,
                    0b00010100,
                    0b10001010,
                    0b11000101,
                    0b11100010,
                    0b01110001,
                    0b10111000,
                    0b01011100,
                    0b00101110,
                    0b00010111,
                    0b00001011,
                    0b00000101,
                    0b00000010,
                    0b00000001,
                    0b00000000};

byte pipeEdge[19] = {0b10000000,
                     0b11000000,
                     0b11100000,
                     0b11110000,
                     0b11111000,
                     0b11111100,
                     0b11111110,
                     0b11111111,
                     0b11111111,
                     0b11111111,
                     0b11111111,
                     0b01111111,
                     0b00111111,
                     0b00011111,
                     0b00001111,
                     0b00000111,
                     0b00000011,
                     0b00000001,
                     0b00000000};

byte bird[4][6] = {{0b00111100,
                    0b01000111,
                    0b01001001,
                    0b11101001,
                    0b10010110,
                    0b01111100},
                   {0b00111100,
                    0b01000010,
                    0b01000110,
                    0b11101001,
                    0b10010110,
                    0b01111100},
                   {0b00111100,
                    0b01000010,
                    0b01000110,
                    0b11101001,
                    0b10011001,
                    0b01111111},
                   {0b00111100,
                    0b01000010,
                    0b01000110,
                    0b11101001,
                    0b10010110,
                    0b01111100}};

byte pushText[6][5] = {{0b10001000,
                        0b10001000,
                        0b10011000,
                        0b10101000,
                        0b10011000},
                       {0b10011011,
                        0b10100010,
                        0b10010010,
                        0b10001010,
                        0b10110010},
                       {0b01100010,
                        0b10100010,
                        0b01100011,
                        0b10100010,
                        0b01100010},
                       {0b01001110,
                        0b01001010,
                        0b01001010,
                        0b01001010,
                        0b11101010},
                       {0b11100100,
                        0b10100100,
                        0b10100100,
                        0b10100100,
                        0b11101110},
                       {0b00010010,
                        0b00011010,
                        0b00011110,
                        0b00010110,
                        0b00010010}};

byte endText[4][24] = {{0b11111110,
                        0b00000001,
                        0b11100001,
                        0b11110001,
                        0b00110001,
                        0b00110001,
                        0b00110001,
                        0b00110001,
                        0b00110001,
                        0b11110001,
                        0b11100001,
                        0b00000001,
                        0b00000001,
                        0b11110001,
                        0b11110001,
                        0b11011001,
                        0b11011001,
                        0b11011001,
                        0b11011001,
                        0b00011001,
                        0b11111001,
                        0b11110001,
                        0b00000001,
                        0b11111110},
                       {0b11111111,
                        0b00000000,
                        0b01110001,
                        0b01110011,
                        0b11011011,
                        0b11011011,
                        0b11011011,
                        0b11011011,
                        0b00000011,
                        0b00000011,
                        0b00000001,
                        0b00000000,
                        0b00000000,
                        0b10111100,
                        0b10111110,
                        0b10110110,
                        0b10110110,
                        0b10111110,
                        0b10011100,
                        0b00000000,
                        0b00000000,
                        0b00000000,
                        0b00000000,
                        0b11111111},
                       {0b11111111,
                        0b00000000,
                        0b10111100,
                        0b10001110,
                        0b10111110,
                        0b10110110,
                        0b10111110,
                        0b10011100,
                        0b00000000,
                        0b00000000,
                        0b00000000,
                        0b00000000,
                        0b00000000,
                        0b01101101,
                        0b01101101,
                        0b01101101,
                        0b01101101,
                        0b01111111,
                        0b00100101,
                        0b00000000,
                        0b00000000,
                        0b00000000,
                        0b00000000,
                        0b11111111},
                       {0b01111111,
                        0b10000000,
                        0b10000001,
                        0b10000001,
                        0b10000001,
                        0b10001001,
                        0b10001111,
                        0b10001101,
                        0b10000000,
                        0b10000000,
                        0b10000000,
                        0b10000000,
                        0b10000000,
                        0b10011110,
                        0b10000111,
                        0b10011111,
                        0b10011011,
                        0b10011111,
                        0b10001110,
                        0b10000000,
                        0b10000000,
                        0b10000000,
                        0b10000000,
                        0b01111111}};
                     
byte tileOffset = 0;
byte pipeOffset = 0;

byte pipeHeights[6] = {255, 255, 255, 255, 255, 255};

int birdVel = 0;
byte birdY = 40;
byte lastBirdY = 50;

byte birdFrame = 0;

long lastTime = 0;

boolean buttonPressed = false;

boolean isPlaying = false;

// Turn the entire screen blank
void LcdClear(void)
{
  for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
  {
    LcdWrite(LCD_D, 0x00);
  }
}

// Basic settings for the screen
void LcdInitialise(void)
{
  pinMode(PIN_SCE, OUTPUT);
  //pinMode(PIN_RESET, OUTPUT);
  pinMode(PIN_DC, OUTPUT);
  pinMode(PIN_SDIN, OUTPUT);
  pinMode(PIN_SCLK, OUTPUT);

  pinMode(PIN_BTN, INPUT);
  
  digitalWrite(PIN_RESET, LOW);
  digitalWrite(PIN_RESET, HIGH);
  LcdWrite(LCD_C, 0x21 );  // LCD Extended Commands.
  LcdWrite(LCD_C, 0xB3 );  // Set LCD Vop (Contrast). 
  LcdWrite(LCD_C, 0x04 );  // Set Temp coefficent. //0x04
  LcdWrite(LCD_C, 0x14 );  // LCD bias mode 1:48. //0x13
  LcdWrite(LCD_C, 0x20 );  // LCD Basic Commands
  LcdWrite(LCD_C, 0x0C );  // LCD in normal mode.
}

// Write a single byte of either data or instruction to the screen
void LcdWrite(byte dc, byte data)
{
  digitalWrite(PIN_DC, dc);
  digitalWrite(PIN_SCE, LOW);
  shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
  digitalWrite(PIN_SCE, HIGH);
}

void setup(void)
{
  LcdInitialise();
  LcdClear();

  drawStaticBackground();
  drawInstructionText(true);
  
  lastTime = millis();
}

void loop(void)
{
  // Draw environment. First, loop through rows
  for(byte row = 0; row < 6; ++row) {
    LcdWrite(LCD_C, 0x89);
    LcdWrite(LCD_C, 0x40 | row);

    // For each row, draw the scrolling edge at the bottom
    for(byte col = 0; col < 3; ++col) {
      LcdWrite(LCD_D, tile[(tileOffset + col + (row * 4)) % 6]);
    }
    LcdWrite(LCD_D, 0xFF);


    // Now, draw the pipes
    int thisPipeOffset = (pipeOffset + row * 8) % 27;
  
    if(thisPipeOffset < 19) {
      if(thisPipeOffset == 0) {
        if(row < 5) {
          pipeHeights[row] = pipeHeights[row + 1];
        } else {
          pipeHeights[row] = random(MIN_HEIGHT, MAX_HEIGHT);
        }
      }

      if(pipeHeights[row] != 255) {
        for(byte col = 0; col < pipeHeights[row]; ++col) {
          if(col == pipeHeights[row] - 1 || col == pipeHeights[row] - 4) {
            LcdWrite(LCD_D, pipeEdge[thisPipeOffset]);
          } else if(col == pipeHeights[row] - 2 || col == pipeHeights[row] - 3) {
            LcdWrite(LCD_D, pipeCap[thisPipeOffset]);
          } else {
            LcdWrite(LCD_D, pipe[thisPipeOffset]);
          }
        }

        // Skip the gap in between pipes
        LcdWrite(LCD_C, 0x80 | (pipeHeights[row] + 12 + GAP));
    
        for(byte col = 0; col < 83 - (pipeHeights[row] + 12 + GAP); ++col) {
          if(col == 0 || col == 3) {
            LcdWrite(LCD_D, pipeEdge[thisPipeOffset]);
          } else if(col == 1 || col == 2) {
            LcdWrite(LCD_D, pipeCap[thisPipeOffset]);
          } else {
            LcdWrite(LCD_D, pipe[thisPipeOffset]);
          }
        }
      }
    }
  }

  // Check the user input
  if(digitalRead(PIN_BTN)) {
    buttonPressed = false;
  } else {
    if(!buttonPressed) {
      if(!isPlaying) {
        isPlaying = true;
        drawInstructionText(false);
      }
      
      birdVel = 5;
      buttonPressed = true;
    }
  }

  // If the game started, apply the simple physics to the bird
  if(isPlaying) {
    birdVel = max(birdVel - 1, -5);
    birdY = min(max(13, birdY + birdVel), LCD_X - 7);
  }

  //Now, draw the bird
  LcdWrite(LCD_C, 0x41);
  LcdWrite(LCD_C, 0x80 | min(birdY, lastBirdY));

  for(byte col = min(birdY, lastBirdY); col < max(birdY + 6, lastBirdY + 6); ++col) {
    if(col - birdY < 0 || col - birdY > 5) {
      LcdWrite(LCD_D, 0x00);
    } else {
      LcdWrite(LCD_D, bird[birdFrame][5 - (col - birdY)]);
    }
  }
    
  lastBirdY = birdY;

  // collision logic
  boolean collided = false;
  
  if(birdY <= 13 || birdY >= LCD_X - 7) {
    collided = true;
  }

  byte birdPipeOffset = (pipeOffset + 1 * 8) % 27;
  if(collided == false && birdPipeOffset < 18 && pipeHeights[1] != 255) {
    if(birdY - 12 < pipeHeights[1] || birdY - 12 > pipeHeights[1] + GAP - 6) {
      collided = true;
    }
  }

  // If there was a collision, stop everything and then reset
  if(collided) {
    isPlaying = false;
    drawEndText();

    delay(4000);
    
    LcdClear();
    drawStaticBackground();
    drawInstructionText(true);
    lastTime = millis();
    
    // Reset all variables
    tileOffset = 0;
    pipeOffset = 0;
    
    for(byte i = 0; i < 6; ++i) {
      pipeHeights[i] = 255;
    }
            
    birdVel = 0;
    birdY = 40;
    lastBirdY = 50;
    
    isPlaying = false;
    return;
  }

  // set things up for the next loop
  tileOffset = (tileOffset + 5) % 6;
  birdFrame = (birdFrame + 1) % 4;
  
  if(isPlaying) {
    pipeOffset = (pipeOffset + 1) % 27;
  }

  // Variable delay, based on how long the last round of
  // drawing took.
  if(millis() - lastTime < 80) {
    delay(80 - (millis() - lastTime));
  } else {
    delay(1);
  }
    
  lastTime = millis();
}

// Draw all of the parts of the background that don't get re-drawn
// on each frame.
void drawStaticBackground() {
  for(byte row = 0; row < 6; ++row) {
    LcdWrite(LCD_C, 0x80);
    LcdWrite(LCD_C, 0x40 | row);

    for(byte col = 0; col < 8; ++col) {
      if((row % 2 == 0 && col % 2 == 0) || (row % 2 == 1 && col % 2 == 0)) {
        LcdWrite(LCD_D, 0xAA);
      } else {
        LcdWrite(LCD_D, 0x55);
      }
    }
    
    LcdWrite(LCD_D, 0xFF);

    LcdWrite(LCD_C, 0x80 | 0x53);

    LcdWrite(LCD_D, 0xFF);
  }
}

// Draw the instruction text: "press button"
void drawInstructionText(boolean visible) {
  for(byte row = 0; row < 6; ++row) {
    LcdWrite(LCD_C, 0x80 | 60);
    LcdWrite(LCD_C, 0x40 | row);

    for(byte col = 0; col < 5; ++col) {
      if(visible) {
        LcdWrite(LCD_D, pushText[row][col]);
      } else {
        LcdWrite(LCD_D, 0x00);
      }
    }
  }
}

// Draw the "Game Over" text
void drawEndText() {
  for(byte row = 1; row < 5; ++row) {
    LcdWrite(LCD_C, 0x80 | 42);
    LcdWrite(LCD_C, 0x40 | row);

    for(byte col = 0; col < 24; ++col) {
      LcdWrite(LCD_D, endText[row - 1][col]);
    }
  }
}


Comments

  1. FFXIV PS Powerleveling on November 22, 2015 at 10:37 pm

    FFXIV PS Powerleveling

    What is with that guy?

  2. sell ffxiv gil on November 23, 2015 at 6:20 am

    sell ffxiv gil

    I made a fool of myself.

  3. elder scrolls online power leveling on November 26, 2015 at 7:27 am

    elder scrolls online power leveling

    I respect your work.

  4. best eso gold site on November 26, 2015 at 5:58 pm

    best eso gold site

    You started it !

  5. cheap fifa 16 coins on November 30, 2015 at 7:54 pm

    cheap fifa 16 coins

    You are nothing like us .

  6. buy Madden 16 Coins on December 29, 2015 at 6:43 pm

    buy Madden 16 Coins

    Leave me alone !

  7. Cheap MUT Coins on January 7, 2016 at 8:33 am

    Cheap MUT Coins

    Proud of you .

  8. fut 16 coins on January 8, 2016 at 12:46 pm

    fut 16 coins

    Up yours!

  9. Albion Online Power Leveling on February 4, 2016 at 4:50 pm

    Albion Online Power Leveling

    No one can do it better than you.

  10. Cheap Albion Online Gold on February 4, 2016 at 4:50 pm

    Cheap Albion Online Gold

    Leave me alone !

  11. Buy Blade And Soul Gold on February 4, 2016 at 4:50 pm

    Buy Blade And Soul Gold

    I’ll be there for you .

  12. Buy Albion Online Gold on February 4, 2016 at 4:50 pm

    Buy Albion Online Gold

    No, I know.

  13. Cheap BNS Gold on February 4, 2016 at 4:51 pm

    Cheap BNS Gold

    I was wondering if after work we could grab a cup of coffee

  14. buy Albion Online Gold on February 4, 2016 at 4:51 pm

    buy Albion Online Gold

    Take my word .

  15. Albion Online Silver on February 4, 2016 at 4:51 pm

    Albion Online Silver

    Today looks great .

  16. MapleStory Mesos on February 4, 2016 at 4:51 pm

    MapleStory Mesos

    I will be there for you.

  17. Buy MapleStory Mesos on February 4, 2016 at 4:52 pm

    Buy MapleStory Mesos

    The youre very eloquent .

  18. buy Albion Online Gold on February 4, 2016 at 4:52 pm

    buy Albion Online Gold

    You started it !

  19. Cheap Albion Online Gold on February 4, 2016 at 4:52 pm

    Cheap Albion Online Gold

    You are looking sharp !

  20. Albion Online Power Leveling on February 4, 2016 at 4:52 pm

    Albion Online Power Leveling

    i love this site a lot!

  21. Albion Online Gold on February 4, 2016 at 4:53 pm

    Albion Online Gold

    Not that I know of.

  22. MS Mesos on February 4, 2016 at 4:53 pm

    MS Mesos

    Good !|Cool! I love your this bolg.

  23. Buy Blade And Soul Gold on February 4, 2016 at 4:53 pm

    Buy Blade And Soul Gold

    How do you work here ?

  24. Blade & Soul Gold on February 4, 2016 at 4:53 pm

    Blade & Soul Gold

    Take my word for it.

  25. Albion Online Power Leveling on February 4, 2016 at 4:54 pm

    Albion Online Power Leveling

    i like this website a lot!

  26. Cheap BNS Gold on February 4, 2016 at 4:54 pm

    Cheap BNS Gold

    I’ll be there for you .

  27. Albion Online Silver on February 4, 2016 at 4:54 pm

    Albion Online Silver

    The youre really talented .

  28. Albion Online Power Leveling on February 4, 2016 at 4:54 pm

    Albion Online Power Leveling

    it is a excellent weblog and i enjoy it greatly!

  29. Buy Blade And Soul Gold on February 4, 2016 at 4:55 pm

    Buy Blade And Soul Gold

    No, I know.

  30. Cheap Blade And Soul Gold on February 4, 2016 at 4:55 pm

    Cheap Blade And Soul Gold

    you have a good sense of humor.

  31. Cheap BNS Gold on February 4, 2016 at 4:55 pm

    Cheap BNS Gold

    Even call it.

  32. Cheap MapleStory Mesos on February 4, 2016 at 4:55 pm

    Cheap MapleStory Mesos

    I let myself become a fool .

  33. MS Mesos on February 4, 2016 at 4:56 pm

    MS Mesos

    this website might help me to locate some good suggestions!

  34. Buy Blade And Soul Gold on February 4, 2016 at 4:56 pm

    Buy Blade And Soul Gold

    Your company is very impressive .

  35. Buy Blade And Soul Gold on February 4, 2016 at 4:56 pm

    Buy Blade And Soul Gold

    If I have the guts to quit my job .

  36. Buy Blade And Soul Gold on February 4, 2016 at 4:56 pm

    Buy Blade And Soul Gold

    If he shows up, we stick with him.

  37. Buy BNS Gold on February 4, 2016 at 4:57 pm

    Buy BNS Gold

    Im very pleased with your work.

  38. Blade Soul gold on February 4, 2016 at 4:57 pm

    Blade Soul gold

    this website can help me to find some good suggestions!

  39. Blade & Soul Gold on February 4, 2016 at 4:57 pm

    Blade & Soul Gold

    What is with that guy?

  40. Albion Online Silver on February 4, 2016 at 4:57 pm

    Albion Online Silver

    youre looking sharp!

  41. Cheap Albion Online Gold on February 4, 2016 at 4:58 pm

    Cheap Albion Online Gold

    Your company is very impressive .

  42. Buy Blade And Soul Gold on February 4, 2016 at 4:58 pm

    Buy Blade And Soul Gold

    Do not push me.

  43. Cheap Albion Online Gold on February 4, 2016 at 4:58 pm

    Cheap Albion Online Gold

    How come you are working here?

  44. Albion Online Silver on February 4, 2016 at 4:58 pm

    Albion Online Silver

    I’m all yours!

  45. Buy MapleStory Mesos on February 4, 2016 at 4:59 pm

    Buy MapleStory Mesos

    Now you tell me that she was not a knockout !

  46. Cheap Blade And Soul Gold on February 4, 2016 at 4:59 pm

    Cheap Blade And Soul Gold

    You started it !

  47. BNS Gold on February 4, 2016 at 4:59 pm

    BNS Gold

    Im very pleased with your work.

  48. Blade And Soul Gold on February 4, 2016 at 4:59 pm

    Blade And Soul Gold

    You’re very eloquent.

  49. Buy Blade And Soul Gold on February 4, 2016 at 5:00 pm

    Buy Blade And Soul Gold

    I respect your work.

  50. Cheap Blade And Soul Gold on February 4, 2016 at 5:00 pm

    Cheap Blade And Soul Gold

    i like this site so much!

  51. Blade And Soul Gold on February 4, 2016 at 5:00 pm

    Blade And Soul Gold

    What if I had the guts to quit my job.

  52. Blade & Soul Items on February 4, 2016 at 5:00 pm

    Blade & Soul Items

    Come on, cut it out!

  53. Cheap Blade And Soul Gold on February 4, 2016 at 5:01 pm

    Cheap Blade And Soul Gold

    were so proud of you.

  54. Cheap Blade And Soul Gold on February 4, 2016 at 5:01 pm

    Cheap Blade And Soul Gold

    Today looks great .

  55. Albion Online Power Leveling on February 4, 2016 at 5:01 pm

    Albion Online Power Leveling

    youre looking sharp!

  56. Blade And Soul on February 4, 2016 at 5:01 pm

    Blade And Soul

    I’ve been through this!

  57. Albion Online Silver on February 4, 2016 at 5:02 pm

    Albion Online Silver

    I’ll be there for you .

  58. Cheap Blade And Soul Gold on February 4, 2016 at 5:02 pm

    Cheap Blade And Soul Gold

    How come you are working here?

  59. Albion Online Gold on February 4, 2016 at 5:02 pm

    Albion Online Gold

    I’ll be there for you .

  60. Blade & Soul Power leveling on February 4, 2016 at 5:02 pm

    Blade & Soul Power leveling

    You fall for it every time.

  61. Blade & Soul Items on February 4, 2016 at 5:03 pm

    Blade & Soul Items

    it is a very good weblog and i enjoy it very much!

  62. Blade & Soul Power leveling on February 4, 2016 at 5:03 pm

    Blade & Soul Power leveling

    You always love it.

  63. Cheap BNS Gold on February 4, 2016 at 5:03 pm

    Cheap BNS Gold

    Why don’t we give this a try?

  64. Blade And Soul Gold on February 4, 2016 at 5:03 pm

    Blade And Soul Gold

    I mean it!

  65. Cheap Albion Online Gold on February 4, 2016 at 5:04 pm

    Cheap Albion Online Gold

    Not that I know of.

  66. Buy Blade And Soul Gold on February 4, 2016 at 5:04 pm

    Buy Blade And Soul Gold

    You always love it.

  67. Blade & Soul Items on February 4, 2016 at 5:04 pm

    Blade & Soul Items

    Even call it.

  68. Cheap BNS Gold on February 4, 2016 at 5:04 pm

    Cheap BNS Gold

    i love this website so much!

  69. Buy Blade And Soul Gold on February 4, 2016 at 5:05 pm

    Buy Blade And Soul Gold

    Now you tell me she’s not a knock-out!

  70. MapleStory Mesos on February 4, 2016 at 5:05 pm

    MapleStory Mesos

    You are nothing like us .

  71. Cheap Blade And Soul Gold on February 4, 2016 at 5:05 pm

    Cheap Blade And Soul Gold

    Why do not we try this ?

  72. Cheap Albion Online Gold on February 4, 2016 at 5:05 pm

    Cheap Albion Online Gold

    Im very pleased with your work.

  73. Blade And Soul Gold on February 4, 2016 at 5:06 pm

    Blade And Soul Gold

    I let myself become a fool .

  74. Albion Online Silver on February 4, 2016 at 5:06 pm

    Albion Online Silver

    Good !|Cool! I love your this bolg.

  75. Albion Online Silver on February 4, 2016 at 5:06 pm

    Albion Online Silver

    You did it !

  76. Albion Online Silver on February 4, 2016 at 5:06 pm

    Albion Online Silver

    Take my word .

  77. Albion Online Items on February 4, 2016 at 5:07 pm

    Albion Online Items

    I do not have the slightest idea

  78. Blade & Soul Power leveling on February 4, 2016 at 5:07 pm

    Blade & Soul Power leveling

    You bet !

  79. Blade & Soul Gold on February 4, 2016 at 5:07 pm

    Blade & Soul Gold

    I’ll fix it!

  80. Buy Blade And Soul Gold on February 4, 2016 at 5:08 pm

    Buy Blade And Soul Gold

    nice going!

  81. Albion Online Silver on February 4, 2016 at 5:08 pm

    Albion Online Silver

    If he shows up, we stick with him.

  82. Blade-Soul.com on February 4, 2016 at 5:08 pm

    Blade-Soul.com

    Good !|Cool! I love your this bolg.

  83. Cheap BNS Gold on February 4, 2016 at 5:08 pm

    Cheap BNS Gold

    I’ll take care of it.

  84. Cheap Blade And Soul Gold on February 4, 2016 at 5:09 pm

    Cheap Blade And Soul Gold

    Thank you for your helping hand.

  85. MapleStory Mesos on February 4, 2016 at 5:09 pm

    MapleStory Mesos

    this can be a very useful website!

  86. buy Albion Online Gold on February 4, 2016 at 5:09 pm

    buy Albion Online Gold

    You are so cute.

  87. Blade & Soul Power leveling on February 4, 2016 at 5:09 pm

    Blade & Soul Power leveling

    You started it !

  88. Albion Online Silver on February 4, 2016 at 5:10 pm

    Albion Online Silver

    Leave me alone !

  89. Cheap Blade And Soul Gold on February 4, 2016 at 5:10 pm

    Cheap Blade And Soul Gold

    this is a very useful website!

  90. MapleStory Mesos on February 4, 2016 at 5:10 pm

    MapleStory Mesos

    nice going!

  91. Cheap BNS Gold on February 4, 2016 at 5:10 pm

    Cheap BNS Gold

    You are looking sharp !

  92. buy Albion Online Gold on February 4, 2016 at 5:11 pm

    buy Albion Online Gold

    Nobody can do a better job than you.

  93. Blade & Soul Power leveling on February 4, 2016 at 5:11 pm

    Blade & Soul Power leveling

    That’s not the point.

  94. Buy Blade And Soul Gold on February 4, 2016 at 5:11 pm

    Buy Blade And Soul Gold

    I think I should give it a shot!

  95. Cheap BNS Gold on February 4, 2016 at 5:11 pm

    Cheap BNS Gold

    I respect your work.

  96. Buy Albion Online Gold on February 4, 2016 at 5:12 pm

    Buy Albion Online Gold

    look great today.

  97. Blade & Soul Items on February 4, 2016 at 5:12 pm

    Blade & Soul Items

    I respect your work.

  98. Blade And Soul Gold on February 4, 2016 at 5:12 pm

    Blade And Soul Gold

    hi!this is extremely good website!

  99. Blade And SoulSoul Fighter on February 4, 2016 at 5:12 pm

    Blade And SoulSoul Fighter

    Good !|Cool! I love your this bolg.

  100. Albion Online Silver on February 4, 2016 at 5:13 pm

    Albion Online Silver

    Come on, cut it out!

  101. Cheap Albion Online Gold on February 4, 2016 at 5:13 pm

    Cheap Albion Online Gold

    Today looks great .

  102. Blade & Soul Power leveling on February 4, 2016 at 5:13 pm

    Blade & Soul Power leveling

    Too bad we have to return them .

  103. Buy Blade And Soul Gold on February 4, 2016 at 5:13 pm

    Buy Blade And Soul Gold

    You bet !

  104. Albion Online Silver on February 4, 2016 at 5:14 pm

    Albion Online Silver

    Too bad we have to return them .

  105. Albion Online Gold on February 4, 2016 at 5:14 pm

    Albion Online Gold

    Nobody can do a better job than you.

  106. Buy BNS Gold on February 4, 2016 at 5:14 pm

    Buy BNS Gold

    You are nothing like us .

  107. Blade & Soul Power leveling on February 4, 2016 at 5:14 pm

    Blade & Soul Power leveling

    you have a good sense of humor.

  108. Cheap Albion Online Gold on February 4, 2016 at 5:15 pm

    Cheap Albion Online Gold

    You are so cute.

  109. buy MapleStory Mesos on February 4, 2016 at 5:15 pm

    buy MapleStory Mesos

    I made a fool of myself.

  110. Buy Blade And Soul Gold on February 4, 2016 at 5:15 pm

    Buy Blade And Soul Gold

    Call it even.

  111. Albion Online Silver on February 4, 2016 at 5:15 pm

    Albion Online Silver

    You are nothing like us .

  112. Buy Blade And Soul Gold on February 4, 2016 at 5:16 pm

    Buy Blade And Soul Gold

    How come you are working here?

  113. Blade And Soul Gold on February 4, 2016 at 5:16 pm

    Blade And Soul Gold

    No one can do it better than you.

  114. Albion Online Power Leveling on February 4, 2016 at 5:16 pm

    Albion Online Power Leveling

    I’ll be there for you .

  115. Cheap Blade And Soul Gold on February 4, 2016 at 5:16 pm

    Cheap Blade And Soul Gold

    I was thinking if after work we could grab a cup of coffee

  116. Albion Online Silver on February 4, 2016 at 5:17 pm

    Albion Online Silver

    I don’t have a clue !

  117. Cheap BNS Gold on February 4, 2016 at 5:17 pm

    Cheap BNS Gold

    Leave me alone !

  118. Albion Online Silver on February 4, 2016 at 5:17 pm

    Albion Online Silver

    i’m able to discover numerous good solutions basically have any difficulty!

  119. Blade & Soul Items on February 4, 2016 at 5:17 pm

    Blade & Soul Items

    You are so cute.

  120. Albion Online Power Leveling on February 4, 2016 at 5:18 pm

    Albion Online Power Leveling

    Why do not we try this ?

  121. Buy Blade And Soul Gold on February 4, 2016 at 5:18 pm

    Buy Blade And Soul Gold

    I’m all yours!

  122. Buy Blade And Soul Gold on February 4, 2016 at 5:18 pm

    Buy Blade And Soul Gold

    You’re very eloquent.

  123. Blade And Soul Items on February 4, 2016 at 5:18 pm

    Blade And Soul Items

    The youre very professional .

  124. Blade-Soul.com on February 4, 2016 at 5:19 pm

    Blade-Soul.com

    Come on, Stop!

  125. Albion Online Silver on February 4, 2016 at 5:19 pm

    Albion Online Silver

    i like this website so much!

  126. BNS Gold on February 4, 2016 at 5:19 pm

    BNS Gold

    The youre very eloquent .

  127. Blade & Soul Power leveling on February 4, 2016 at 5:19 pm

    Blade & Soul Power leveling

    Nobody can do a better job than you.

  128. Albion Online Silver on February 4, 2016 at 5:20 pm

    Albion Online Silver

    Take my word for it.

  129. BNS Gold on February 4, 2016 at 5:20 pm

    BNS Gold

    hi!this is extremely good site!

  130. MapleStory Mesos on February 4, 2016 at 5:20 pm

    MapleStory Mesos

    I don’t know what you are saying

  131. Cheap Albion Online Gold on February 4, 2016 at 5:20 pm

    Cheap Albion Online Gold

    I was be there for you.

  132. Albion Online Power Leveling on February 4, 2016 at 5:21 pm

    Albion Online Power Leveling

    nice going!

  133. Blade & Soul Power leveling on February 4, 2016 at 5:21 pm

    Blade & Soul Power leveling

    I’ll take care of it.

  134. MapleStory Mesos on February 4, 2016 at 5:21 pm

    MapleStory Mesos

    That makes two of us.

  135. Buy Blade And Soul Gold on February 4, 2016 at 5:22 pm

    Buy Blade And Soul Gold

    I do not know what you are saying

  136. Cheap BNS Gold on February 4, 2016 at 5:22 pm

    Cheap BNS Gold

    I don’t know what you are saying

  137. MS Mesos on February 4, 2016 at 5:22 pm

    MS Mesos

    look great today.

  138. Cheap BNS Gold on February 4, 2016 at 5:22 pm

    Cheap BNS Gold

    That makes two of us.

  139. buy Albion Online Gold on February 4, 2016 at 5:23 pm

    buy Albion Online Gold

    The youre really talented .

  140. Albion Gold Mall on February 4, 2016 at 5:23 pm

    Albion Gold Mall

    No one can do it better than you.

  141. Blade & Soul Items on February 4, 2016 at 5:23 pm

    Blade & Soul Items

    look great today.

  142. Blade & Soul Power leveling on February 4, 2016 at 5:23 pm

    Blade & Soul Power leveling

    This is really a nice place.

  143. buy Albion Online Gold on February 4, 2016 at 5:24 pm

    buy Albion Online Gold

    My way or the highway.

  144. Albion Online Silver on February 4, 2016 at 5:24 pm

    Albion Online Silver

    I mean it!

  145. Buy Blade And Soul Gold on February 12, 2016 at 12:32 am

    Buy Blade And Soul Gold

    Take my word .

  146. Cheap MapleStory Mesos on February 12, 2016 at 12:33 am

    Cheap MapleStory Mesos

    You started it !

  147. Blade And Soul Items on February 12, 2016 at 12:33 am

    Blade And Soul Items

    If I have the guts to quit my job .

  148. BNS Gold on February 12, 2016 at 12:33 am

    BNS Gold

    No, I know.

  149. Blade-Soul.com on February 12, 2016 at 12:34 am

    Blade-Soul.com

    This is really a nice place.

  150. Blade & Soul Power leveling on February 12, 2016 at 12:34 am

    Blade & Soul Power leveling

    this is a very helpful website!

  151. Cheap BNS Gold on February 12, 2016 at 12:34 am

    Cheap BNS Gold

    I mean it!

  152. Buy Albion Online Gold on February 12, 2016 at 12:34 am

    Buy Albion Online Gold

    That’s not the issue.

  153. Buy Blade And Soul Gold on February 12, 2016 at 12:35 am

    Buy Blade And Soul Gold

    it is very useful for me searching on this website!

  154. Blade And Soul Classes on February 12, 2016 at 12:35 am

    Blade And Soul Classes

    i’m able to find numerous great answers if i have trouble!

  155. Cheap Albion Online Gold on February 12, 2016 at 12:35 am

    Cheap Albion Online Gold

    Where were we?

  156. Blade & Soul Power leveling on February 12, 2016 at 12:35 am

    Blade & Soul Power leveling

    nice going!

  157. Blade & Soul Items on February 12, 2016 at 12:36 am

    Blade & Soul Items

    I was thinking if after work we could grab a cup of coffee

  158. Blade & Soul Power leveling on February 12, 2016 at 12:36 am

    Blade & Soul Power leveling

    My way or the highway.

  159. Cheap Blade And Soul Gold on February 12, 2016 at 12:36 am

    Cheap Blade And Soul Gold

    My way or the highway.

  160. Blade & Soul Items on February 12, 2016 at 12:36 am

    Blade & Soul Items

    You are looking sharp !

  161. Blade And Soul Gold on February 12, 2016 at 12:37 am

    Blade And Soul Gold

    You are nothing like us .

  162. Albion Online Silver on February 12, 2016 at 12:37 am

    Albion Online Silver

    I do not have the slightest idea

  163. Blade And Soul Items on February 12, 2016 at 12:37 am

    Blade And Soul Items

    If he shows up, we stick with him.

  164. Albion Online Silver on February 12, 2016 at 12:37 am

    Albion Online Silver

    You are the savior of my life.

  165. Albion Online Gold on February 12, 2016 at 12:38 am

    Albion Online Gold

    You started it !

  166. Buy MapleStory Mesos on February 12, 2016 at 12:38 am

    Buy MapleStory Mesos

    I’ll take care of it.

  167. BNS Gold on February 12, 2016 at 12:38 am

    BNS Gold

    i can discover numerous good solutions if i have trouble!

  168. buy Albion Online Gold on February 12, 2016 at 12:38 am

    buy Albion Online Gold

    Hold it!

  169. Cheap Blade And Soul Gold on February 12, 2016 at 12:39 am

    Cheap Blade And Soul Gold

    You are the savior of my life.

  170. Cheap BNS Gold on February 12, 2016 at 12:39 am

    Cheap BNS Gold

    I do not know what you are saying

  171. Albion?Online?Power?Leveling on February 12, 2016 at 12:39 am

    Albion?Online?Power?Leveling

    What is that guy?

  172. Blade & Soul Gold on February 12, 2016 at 12:39 am

    Blade & Soul Gold

    That’s not the issue.

  173. Blade-Soul.com on February 12, 2016 at 12:40 am

    Blade-Soul.com

    No one can do it better than you.

  174. Blade And Soul Gold on February 12, 2016 at 12:40 am

    Blade And Soul Gold

    Leave me alone !

  175. Buy BNS Gold on February 12, 2016 at 12:40 am

    Buy BNS Gold

    I will be there for you.

  176. Buy Blade And Soul Gold on February 12, 2016 at 12:40 am

    Buy Blade And Soul Gold

    Proud of you .

  177. buy Albion Online Gold on February 12, 2016 at 12:41 am

    buy Albion Online Gold

    Take my word for it.

  178. Cheap Albion Online Gold on February 12, 2016 at 12:41 am

    Cheap Albion Online Gold

    Good !|Cool! I love your this bolg.

  179. Albion Online Silver on February 12, 2016 at 12:41 am

    Albion Online Silver

    You bet !

  180. Albion Online Silver on February 12, 2016 at 12:41 am

    Albion Online Silver

    You’re so cute.

  181. Cheap Blade And Soul Gold on February 12, 2016 at 12:42 am

    Cheap Blade And Soul Gold

    Call it even.

  182. Albion Online Power Leveling on February 12, 2016 at 12:42 am

    Albion Online Power Leveling

    That makes two of us.

  183. Albion Online Power Leveling on February 12, 2016 at 12:42 am

    Albion Online Power Leveling

    You always love it.

  184. Albion Online Power Leveling on February 12, 2016 at 12:42 am

    Albion Online Power Leveling

    Take my word .

  185. BNS Gold on February 12, 2016 at 12:43 am

    BNS Gold

    You did a good job .

  186. Albion Online Silver on February 12, 2016 at 12:43 am

    Albion Online Silver

    Where were we?

  187. Buy Blade And Soul Gold on February 12, 2016 at 12:43 am

    Buy Blade And Soul Gold

    Be good!

  188. MapleStory Mesos on February 12, 2016 at 12:43 am

    MapleStory Mesos

    Come on, cut it out!

  189. Buy Blade And Soul Gold on February 12, 2016 at 12:44 am

    Buy Blade And Soul Gold

    Hold it!

  190. Cheap BNS Gold on February 12, 2016 at 12:44 am

    Cheap BNS Gold

    be a man

  191. Albion Online Gold on February 12, 2016 at 12:44 am

    Albion Online Gold

    You ‘re so smart.

  192. MapleStory Mesos on February 12, 2016 at 12:44 am

    MapleStory Mesos

    If I have the guts to quit my job .

  193. Blade & Soul Items on February 12, 2016 at 12:45 am

    Blade & Soul Items

    Take my word .

  194. Albion Online Power Leveling on February 12, 2016 at 12:45 am

    Albion Online Power Leveling

    it’s a very good weblog and that i like it greatly!

  195. Blade & Soul Power leveling on February 12, 2016 at 12:45 am

    Blade & Soul Power leveling

    Proud of you .

  196. Buy Blade And Soul Gold on February 12, 2016 at 12:45 am

    Buy Blade And Soul Gold

    i love this site a lot!

  197. Buy Blade And Soul Gold on February 12, 2016 at 12:46 am

    Buy Blade And Soul Gold

    you have a good sense of humor.

  198. Albion Online Items on February 12, 2016 at 12:46 am

    Albion Online Items

    hello!this is very nice site!

  199. Cheap Albion Online Gold on February 12, 2016 at 12:46 am

    Cheap Albion Online Gold

    I do not know

  200. Cheap Albion Online Gold on February 12, 2016 at 12:46 am

    Cheap Albion Online Gold

    That makes two of us.

  201. Cheap Albion Online Gold on February 12, 2016 at 12:47 am

    Cheap Albion Online Gold

    Hold it!

  202. Blade And Soul Items on February 12, 2016 at 12:47 am

    Blade And Soul Items

    You ‘re so smart.

  203. Buy Blade And Soul Gold on February 12, 2016 at 12:47 am

    Buy Blade And Soul Gold

    You are the savior of my life.

  204. Blade & Soul Power leveling on February 12, 2016 at 12:47 am

    Blade & Soul Power leveling

    I think I should give it a shot!

  205. Cheap Albion Online Gold on February 12, 2016 at 12:48 am

    Cheap Albion Online Gold

    Now you tell me she’s not a knock-out!

  206. Blade And Soul Gold on February 12, 2016 at 12:48 am

    Blade And Soul Gold

    Hold it!

  207. Blade & Soul Power leveling on February 12, 2016 at 12:48 am

    Blade & Soul Power leveling

    The youre very professional .

  208. Buy Blade And Soul Gold on February 12, 2016 at 12:48 am

    Buy Blade And Soul Gold

    youre looking sharp!

  209. runescape gold sale on April 11, 2016 at 5:03 pm

    runescape gold sale

    You’re very professional.

  210. cheap RS Gold on April 13, 2016 at 4:55 pm

    cheap RS Gold

    nice going!

  211. buy blade and soul gold on May 15, 2016 at 3:11 pm

    buy blade and soul gold

    That’s not the point.

  212. mulberry alexa handbag on May 23, 2016 at 6:06 am

    mulberry alexa handbag

    Back then, he didn’t want to be a doctor, a firefighter or a rugby star. No, the confident teenager who despised school wanted to spend the rest of his life carrying someone else’s golf clubs. He loved washing cars and mowing lawns, tasks that, upon…

  213. hermes trimegiste on May 26, 2016 at 2:08 am

    hermes trimegiste

    Chiklis is known for starring in two popular police dramas: The Commish (1991 1995) and The Shield (2002 ) and as Ben Grimm/The Thing in the live action Fantastic Four films.

  214. mcm bags women on May 26, 2016 at 6:39 pm

    mcm bags women

    According to Beetz, his company results this year not be as good as they were last year Since 2001, success has always been on our side, with double digit growth. But the situation has changed and we will have to change the way we are structured. distr…

  215. hoverboard charger on May 26, 2016 at 11:46 pm

    hoverboard charger

    Terrific care; the very hoverboard charger were for back buy having said that landed a single week earlier than wanted

  216. designer handbags sale on May 28, 2016 at 3:21 am

    designer handbags sale

    Everyone’s in fine form today, and Rebecca knocks the looks and poses out like no tomorrow. With background music courtesy of an ’80s radio station, music and fashion collide! We’ve set ourselves around the computer screen watching shot after shot a…

  217. purses on May 30, 2016 at 10:32 am

    purses

    The girl’s death came amid trouble with the Internet broadband company, Flashcom, that made Andra and Brad Sachs much money.

  218. mcm bookbag on May 31, 2016 at 12:41 pm

    mcm bookbag

    an escape from reality. You get to pretend you someone else for the day, said Chance Johnson, who was attending AnimeIowa for the first time dressed as a Victorian gentleman from the steam punk genre. very interesting. I am definitely going to come bac…

  219. brazilian straight hair on June 1, 2016 at 10:00 am

    brazilian straight hair

    I like This type of brazilian straight hair! When you are Barely Planning on buying These people, We’d Suggest you To successfully! They happen to be trendy Contained in the product, Snazzy, Incomparable And Extremely Around the. I Most of the Add-ons…

  220. u4fifa on June 1, 2016 at 8:41 pm

    u4fifa

    What if I had the guts to quit my job.

  221. cheapest nba 2k16 mt ps4 on June 4, 2016 at 1:07 am

    cheapest nba 2k16 mt ps4

    you have a good sense of humor.

  222. fifa 17 coins on June 5, 2016 at 10:47 pm

    fifa 17 coins

    nice going!

  223. nba2k16store on June 15, 2016 at 8:06 pm

    nba2k16store

    Take my word for it.

  224. albion online gold on July 5, 2016 at 3:16 am

    albion online gold

    You did a good job .

  225. fifa 17 ps3 coins on July 18, 2016 at 12:32 pm

    fifa 17 ps3 coins

    Your company is very impressive .

  226. fut 17 coins on July 20, 2016 at 3:30 am

    fut 17 coins

    Why do not we try this ?

  227. FIFA17 PS4 500k coins on August 24, 2016 at 2:47 am

    FIFA17 PS4 500k coins

    youre looking sharp!

  228. cheap fifa 17 coins on September 12, 2016 at 2:18 am

    cheap fifa 17 coins

    Take my word .

  229. buy NBA 2K17 MT on September 14, 2016 at 8:54 am

    buy NBA 2K17 MT

    You are so cute.

  230. buy cheap fifa 17 coins on September 18, 2016 at 12:31 pm

    buy cheap fifa 17 coins

    You’re very professional.

  231. best nba mt coins seller on October 18, 2016 at 10:05 am

    best nba mt coins seller

    The youre really talented .

  232. Cheap NBA 2K17 MT for Sale on November 4, 2016 at 2:16 pm

    Cheap NBA 2K17 MT for Sale

    You have a good taste.

  233. buy NBA 2K17 MT on November 22, 2016 at 12:13 am

    buy NBA 2K17 MT

    Take my word .

  234. albion online gold on December 17, 2016 at 6:06 pm

    albion online gold

    I made a fool of myself.

  235. cheap NBA 2K17 MT on February 9, 2017 at 9:00 pm

    cheap NBA 2K17 MT

    Come on, Stop!

The comments are closed.