Breakout on ARM7 LPC2148

An implementation of "Breakout" game, originally developed by 'Atari' in 1976

Similar projects worth following
We are porting the original game on our 32-bit ARM7 board. We are using a 128x64 glcd. The game has some bricks placed horizontally on upper part of the screen. On the lower part is a paddle. The paddle can move left and right and is controlled by the user. A ball moves across the screen bouncing off the top and side walls of the screen. When a brick is hit, the ball bounces off and the brick vanishes. The player looses half the points when the ball touches the bottom of the screen. The ball can touch the ground 4 times before the game gets over.
The paddle has three parts: left, center, right. If the ball strikes left side of paddle, it gets reflected towards left side and similarly for right side. For center of paddle, the ball moves vertically without any angle.
There are some bomb bricks. If the ball hits bomb brick, it explodes upto 8 bricks in it's vicinity.
There are 2 points for normal brick, 10 points for bomb bricks.

Note that the welcome splash screen logo belongs to old skull games( and is taken purely for educational purposes.

Game video can be watched on youtube :

The implementation details can be found at the following link:


It implements the glcd interfacing and graphics routines

plain - 10.64 kB - 11/30/2017 at 17:46



It stores the character maps for variable width tahoma font.

plain - 28.14 kB - 11/29/2017 at 11:51



It implements precise timer accurate upto 1 us.

plain - 2.30 kB - 11/29/2017 at 11:51



It stores the monochrome bitmap arrays for splash images.

plain - 20.88 kB - 11/29/2017 at 11:51



It implements the game logic.

plain - 9.73 kB - 11/29/2017 at 11:51


View all 6 files

  • 1 × ngx lpc2148 board Arm7 board
  • 1 × USB A to B cable
  • 1 × 128x64 GLCD
  • 1 × Two tactile switches
  • 2 × 10K pullup resistor for switches

View all 11 components

  • Progress as on 18 Nov 2017

    gaurav sharma11/19/2017 at 07:41 0 comments

    Connected the glcd, two switches to the micro controller board.

    Attached a 10K potentiometer to set contrast on glcd.

    Implemented a timer(using builtin hardware timers) for precise timings correct to 1 microsecond.

    Initialized the GLCD using commands from GLCD datasheet.

    Implemented functions to set and clear pixels at arbitrary coordinates on the glcd.

    Tested the user input through buttons and all other connections.

View project log

Enjoy this project?



Devesh Samaiya wrote 12/03/2017 at 20:18 point


  Are you sure? yes | no

gaurav sharma wrote 12/04/2017 at 12:18 point

Thank you sir.

  Are you sure? yes | no

Himanshu Shekhar wrote 12/04/2017 at 12:31 point

Thanks Sir !   It's quite encouraging and motivating to have appreciation from YOU

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates