Kaboom - Ece
Personal tools

Kaboom

From Ece

Jump to: navigation, search

Contents

Objective

Our objective is to make a game based on the game Kaboom, using the FPGA for a processor, a Nintendo GameCube controller for input, and a VGA monitor for output.

Team Members

Team Kaboom members are as follows:

Patrick Duckworth - Checker

Matt Steiner - Coordinator

Joey S. Ward - Recorder

Phase 1

Introduction

The Spartan board will run a game similar to that of Kaboom. The user will control the basket to catch incoming objects before they hit the ground. The user will use a Nintendo Gamecube controller to control the basket. The output will be displayed on a VGA monitor. The output of the score will be sent to the Seven Segment display found on the Spartan development kit.

The FPGA will be controlling the logic between the controller and VGA monitor. All vertical movements made by the controller will be ignored, so that the basket will only move horizontally. Buttons on the controller will be used to start and pause the game.

Concept

A Nintendo Gamecube controller will be used to control movements and events of objects. A VGA monitor provides the visual cues needed to know what the mouse is controlling. In this project, Gamecube controller will be controlling the basket that catches the objects before they hit the base. The FPGA will be responsible for controlling all logic between the monitor and controller. The FPGA will also be responsible for generating the objects, including the random speed and direction. The FPGA will also keep track of the score and output it to the seven segment display.

Proposed Work

  1. The FPGA will contain an gamecube module to read incoming signals from the Gamecube controller.
  2. The FPGA will contain a VGA module to control signals to the VGA monitor.
  3. The FPGA will contain a SCORE module that keeps track of the score and displays it to the seven segment display.
  4. The FPGA will contain a GAME module that interconnects all other modules and contains the logic to actually play the game.

Required Parts

  • Spartan III development board.
  • Nintendo Gamecube controller.
  • VGA monitor.

Expected Deliverables

Using the parts listed, we will created a simplified version of the game Kaboom. We will use a Nintendo Gamecube controller to control the movements of the basket, and to start and pause the game. The VGA monitor will be used to output the game to a screen.

Phase 2

Introduction

The Spartan board will run a game similar to that of Kaboom. The user will control the basket to catch incoming objects before they hit the ground. The user will use a Nintendo Gamecube controller to control the basket. The output will be displayed on a VGA monitor. The output of the score will be sent to the Seven Segment display found on the Spartan development kit.

The FPGA will be controlling the logic between the controller and VGA monitor. All vertical movements made by the controller will be ignored, so that the basket will only move horizontally. Buttons on the controller will be used to start and pause the game.

Concept

A Nintendo Gamecube controller will be used to control movements and events of objects. A VGA monitor provides the visual cues needed to know what the mouse is controlling. In this project, Gamecube controller will be controlling the basket that catches the objects before they hit the base. The FPGA will be responsible for controlling all logic between the monitor and controller. The FPGA will also be responsible for generating the objects, including the random speed and direction. The FPGA will also keep track of the score and output it to the seven segment display.

Proposed Work

  1. The FPGA will contain a gamecube module to read incoming signals from the Gamecube controller, which will be configured by Joey S. Ward.
  2. The FPGA will contain a VGA module to control signals to the VGA monitor, which will be configured by Patrick Duckworth.
  3. The FPGA will contain a SCORE module that keeps track of the score and displays it to the seven segment display, which will be configured by Matt Steiner.
  4. The FPGA will contain a GAME module that interconnects all other modules and contains the logic to actually play the game, which will be configured by Patrick Duckworth.

Required Parts

  • Spartan III development board.
  • VGA monitor.
    • We will be using the lab models.
    • On hand-In lab.
  • Gamestop G3 controller, which is a generic version of the Nintendo Gamecube controller.
    • Price: $24.95
    • On hand.

Expected Deliverables

Using the parts listed, we will created a simplified version of the game Kaboom. We will use a Nintendo Gamecube controller to control the movements of the basket, and to start and pause the game. The VGA monitor will be used to output the game to a screen.

Phase 3

Review Module Descriptions

  1. A module to read input from the Nintendo Gamecube controller must be implemented. (Joey Ward)
  2. A module that writes to the VGA moniter must be implemented. (Patrick Duckworth)
  3. A module that keeps up with the score and number of lives that a player has must be implemented. (Matt Steiner)
  4. A module that handles the logic of the game must be implemented. This module will work hand in hand with the other three modules, and may actually incorporate some of their duties. (Patrick Duckworth)

The following is a simple block diagram of the individual modules. The score and lives module is not included.

modules.jpg

Modules Descriptions

  • gamecube module:
    • Inputs: clk
    • Bidirectional: data
    • Outputs: left, right, start, a, b
    • The gamecube controller only has one data line, which is bidirectional. The gamecube module will send a command word to the controller, which will reply with the state of all buttons and directions.
  • paddle_left module:
    • Inputs: clk, opcode[1:0]
    • Outputs: paddleY[9:0]
    • This module controls the logic of the paddle. It takes in two inputs from the gamecube module, which indicate if the paddle should move right or left.
  • ball_control module:
    • Inputs: clk, paddleY[9:0]
    • Outputs: ballX[9:0], ballY[9:0], lives[7:0], score[7:0]
    • This module controls the movement of the ball. Since the logic for scoring and losing a life is dependent on the location of the ball, these two modules are included in this one.
  • vga_sync module:
    • Inputs: clk
    • Outputs: h_sync, v_sync, video_on, pixel_row[9:0], pixel_column[9:0]
    • This module handles the syncing of the video to the VGA module.
  • draw_vga module:
    • Inputs: clk, video_on, paddleY[9:0], ballX[9:0], ballY[9:0], row[9:0], col[9:0]
    • Outputs: red, green, blue
    • This is the module that actually draws the picture out to the moniter.

Expected Deliverables

At the end of this phase, the individual modules should be close to working. If they are not, then a back up plan should be formed. Unfortunately, this may be the case with the gamecube module. All of the information found on how the controller works is only approximate. Since timing is a huge factor in getting this module to work, this may be an obstacle that can't be cleared. Only time will tell.

Phase 4

Review of work

The final product is a game similar to that of the Atari game Kaboom. Balls will be dropped randomly from the top of the screen. The user will use a controller to control the paddle at the bottom of the screen. When the user successfully "catches" a ball, the ball will bounce off to the side of the screen and a new one will be dropped. If a ball makes it past the user, then a life will be lost. If the user runs out of lives, then the game is over. Each time the user successfully deflects a ball, his score will increase. Lives and score will be outputted by the seven segment display and the leds.

Last minute changes

Unfortunately, due to not being able to get the Game Cube controller to function properly, this is more like the Atari version than we anticipated. Without the use of the Game Cube controller, we had to go to a back up plan. This back up plan was an Atari 2600 controller. This was a little more simplistic than we would have liked, but given the amount of time that we had to modify our design, this is what we had to do. We also have a version that can be run with a ps/2 keyboard.

What our project ended up being:

final_kaboom.jpg

source code