Our group decided to create Frogger on FPGA as our final project for the F2020 section of CPE-487. Our initial idea was to create a frogger game with cars and logs, a movable frog, and a goal area. We also wanted to make the game work on both FPGAs we had available, the Nexys A7 100T and the Cmod A7 15T.
We began the process of creating the game by referencing previous labs and projects so that we would know where to begin with drawing and controlling the different aspects of the game.
After thoroughly reviewing the Lab 3 and Lab 6 code, we had an idea of where to start. We began by using our knowledge from the Lab 3 code to draw a 'frog' on the screen -- creating a green square that could move across the screen differently depending on what parameters we gave. From here, drawing the car enemies was easy -- almost the same code as the ball for Lab 3, but moving horizontally instead. We made several cars with variable speeds. We decided to pass on the logs idea, since it would be difficult to make the frog both controllable and move when on a log depending on where on the screen the frog was, as well as adding extra penalties for landing in a 'river'.
The next aspect was the most important for the MVP. We made the frog controllable in steps through the buttons the FPGA board, and then set up collision detection for the cars and frog. Once this was done, setting up the collision detection for the goal area of the screen was simple, using the same methods as the cars. With this, we had our MVP. The color changes in the video are not easy to see, but we will be messing around with the appearance some more.
Now, we've been able to add some improvements -- we have the frog change color based on whether it's dead, won, or restarting, and added a reset option using another button from the board.
From here, we have several improvements planned. We are working on making the colors of the game look nicer, although the processes used to draw the different parts of the game make this a challenge. Additionally, we'll be trying to add a display on the screen and on the LED display to keep track of the score of the player. We are also going to try and make the cars change speed depending on the lives and score of the player, while adding a life system in the background with a game over sequence. With finals piling on these are all stretch goals, but we are happy to have a working frogger game and have met our MVP goals. We may continue working on this code over winter break, so even if the game is not as polished as our stretch goals by the end of the finals period, we are excited to use this project to further our VHDL development skills. The code can be found the final project repositories here for the Cmod code and here for the Artix code.
12/11/2020: FINAL UPDATE: Our project is finished! The fully updated code is on the provided repositories and a video of the final game can be found above.