Sahil Gupta
  • Home
  • Work
    • Appian Corporation
    • Goldman Sachs Internship
    • The Coca-Cola Company Intenship
    • ADP Internship (Automatic Data Processing)
    • TLAB (Team Leader Advisory Board)
    • Undergraduate Teaching Assistant - Calc 1
    • Founder and Student Advisor - Technical Interview Preparation (TIP)
    • Team Leader - GT1000
  • Projects
    • FoodLine: Digitizing the On Campus Dining Locations
    • Wireless Communications Transceiver Scanner
    • Georgia Tech Car Rental
    • ADP Directory - Android Application
    • Karaoke Machine: an I2C Controller Implementation
    • LC3b - Assembler and Micro-architecture Emulator >
      • LC-3b Project Source Code
    • Secured Facility Entrance System
    • GT1K - GT1000 Mobile Application
    • Minesweeper Solver: An assembly program
    • Maze Escapist - Game Boy Advance Programming using C >
      • Version 1
      • Version 2
      • Version 3
    • Parallel Universe - English Class Project
  • Resume
  • Awards
  • Hobbies
    • Photography
    • Traveling
  • Contact Me

The Maze Escapist Version 3

In the third and final version, I fixed the major issue of screen lag and made the final version very smooth. These intelligent techniques were taught to me in my class. Page flipping, a type of double buffering technique used in computer graphics to remove this flickering or tear, made sure that this issue was removed. I had two video buffers where the data for the screen is written. While one video buffer was being displayed, the other video buffer was being written on. Both of these buffers are capable of being displayed (both are in video RAM or VRAM). When drawing is complete, the roles of the two are switched. This technique was achieved by modifying the value of a pointer to the beginning of the display data in the video memory. Another technique I used for increasing the efficiency was reducing the size of colors available/used for every pixel by reducing the number of colors available. Initially every color in GBA was 15 bits in the form RRRRRGGGGGBBBBB giving 2^15 combinations or 32768 colors. For this, I used a palette of colors created using enumerated data type which had 256 colors in it where I defined the values for colors in the palette as shown in the code below:
#define PALETTE ((u16 *)0x5000000)
enum {REDIDX=240, GREENIDX, BLUEIDX, CYANIDX, MAGENTAIDX, YELLOWIDX, WHITEIDX, BLACKIDX};

Even though the number of colors reduced significantly, there was not much difference in the graphics and the speed increased significantly. These two major fixes in this code made sure that the game was displayed properly without any tear or flickering, providing a smooth user experience.

You can watch a brief tutorial of the game in the Video Tutorial page. You can download the zipped version of the code and the game here:
The Maze Escapist Version 3.zip
File Size: 218 kb
File Type: zip
Download File

The Game Boy Advance *.gba File Version 3
File Size: 129 kb
File Type: gba
Download File

© COPYRIGHT 2015. ALL RIGHTS RESERVED.
  • Home
  • Work
    • Appian Corporation
    • Goldman Sachs Internship
    • The Coca-Cola Company Intenship
    • ADP Internship (Automatic Data Processing)
    • TLAB (Team Leader Advisory Board)
    • Undergraduate Teaching Assistant - Calc 1
    • Founder and Student Advisor - Technical Interview Preparation (TIP)
    • Team Leader - GT1000
  • Projects
    • FoodLine: Digitizing the On Campus Dining Locations
    • Wireless Communications Transceiver Scanner
    • Georgia Tech Car Rental
    • ADP Directory - Android Application
    • Karaoke Machine: an I2C Controller Implementation
    • LC3b - Assembler and Micro-architecture Emulator >
      • LC-3b Project Source Code
    • Secured Facility Entrance System
    • GT1K - GT1000 Mobile Application
    • Minesweeper Solver: An assembly program
    • Maze Escapist - Game Boy Advance Programming using C >
      • Version 1
      • Version 2
      • Version 3
    • Parallel Universe - English Class Project
  • Resume
  • Awards
  • Hobbies
    • Photography
    • Traveling
  • Contact Me