F19: Road Max Fury
Contents
Project Title
Road Max Fury- Game using FreeRTOS
Abstract
Road Max Fury is a game based on a classic car racing arcade game developed in 1984 by Konami named Road Fighter. We planned to reproduce this game as a part of our CMPE 244 project. The goal is to reach the finish line without running out of time, avoiding other cars on the road or running out of fuel .The fuel is refilled by hitting petrol pump which the player can encounter at random location during the course of the game. The player also needs to prevent car from hitting the edge of the road to prevent the collision.
Objectives & Introduction
The primary goal of this project is to develop a racing game based on Road Fighter using FreeRTOS using SJ2 Board and to drive the LED matrix. The game's objective is to finish the finish line before running out of fuel and avoiding the obstacles and other cars on the road. The LED matrix is interfaced using the GPIO pins and the on board accelerometer is interfaced using I2C communication protocol.
Objectives:
- Write drivers to display road, car, traffic, score, fuel status on the RGB LED matrix and update the display continuously.
- Write drivers to give directions from the input devices ie accelerometer and filter the values to get accurate and desired values.
- Implement game algorithm for movement of car, random obstacle car and update scores and fuel status.
- Create FeeRTOS tasks for display, accelerometer values, game logic and understand the communication and synchronization between them.
Team Members & Responsibilities
Schedule
Week# | Date | Deliverables | Status |
---|---|---|---|
1 | 09/29 |
|
|
Week# | Date | Deliverables | Status |
2 | 10/12 |
|
|
Week# | Date | Deliverables | Status |
3 | 10/16 |
|
|
Week# | Date | Deliverables | Status |
4 | 10/23 |
|
|
Week# | Date | Deliverables | Status |
5 | 10/30 |
|
|
Week# | Date | Deliverables | Status |
6 | 11/06 |
|
|
Week# | Date | Deliverables | Status |
7 | 11/13 |
|
|
Week# | Date | Deliverables | Status |
8 | 11/24 |
|
|
Week# | Date | Deliverables | Status |
9 | 12/1 |
|
|
Week# | Date | Deliverables | Status |
10 | 12/8 |
|
|
Week# | Date | Deliverables | Status |
11 | 12/13 |
|
|
Parts List & Cost
Part | # | Cost | Source |
---|---|---|---|
SJ2 Board | 1 | $55.00 | Preet |
Azerone 32 x 64 LED Matrix | 1 | $34.95 | https://www.amazon.com/gp/product/B07F2JW8D3/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1 |
HiLetgo MP3 Decoder | 1 | $7.64 | https://www.amazon.com/gp/product/B0725RHR4D/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1 |
Female Male DC Power Plug Terminal Adapter | 1 | $6.54 | https://www.amazon.com/gp/product/B00W058HHQ/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1 |
Design & Implementation
The design section can go over your hardware and software design. Organize this section using sub-sections that go over your design and implementation.
Hardware Design
The hardware design employs the use of 64x32 RGB LED matrix panel which is the most important part of the project, this uses four data lines namely A,B,C and D which can be addressed and used to control each LED which has following technical specifications:
Dimensions:
- 110.1 x 5 x 0.2 inches
Operation Power
- AC100-240V 50-60HZ Switch-able
- 5V regulated power input, 4A max (all LEDs on)
- 5V data logic level input
- 4mm pitch
- Module Refresh: 1560hz
Hardware Interface
In this section, you can describe how your hardware communicates, such as which BUSes used. You can discuss your driver implementation here, such that the Software Design section is isolated to talk about high level workings rather than inner working of your project.
Software Design
Show your software design. For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level. Do not show the details of the code. For example, do not show exact code, but you may show psuedocode and fragments of code. Keep in mind that you are showing DESIGN of your software, not the inner workings of it.
Display Module
RGB LED Matrix:
SJ One Board Pin | Name | Description |
---|---|---|
P1_14 | R1 | Top half red data |
P4_29 | G1 | Top half green data |
P0_7 | B1 | Top half blue data |
P4_28 | R2 | Bottom half red data |
P0_6 | G2 | Bottom half green data |
P0_8 | B2 | Bottom half blue data |
P0_26 | addrA | Address Input A |
P1_31 | addrB | Address Input B |
P1_20 | addrC | Address Input C |
P1_28 | addrD | Address Input D |
P2_0 | Clock | Shift clock |
P2_2 | Latch | Shift in row data/Active High |
P2_5 | Output Enable | Turn on selected rows/Active Low |
Implementation
This section includes implementation, but again, not the details, just the high level. For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash. You can include sub-sections for each of your component implementation.
Testing & Technical Challenges
Describe the challenges of your project. What advise would you give yourself or someone else if your project can be started from scratch again? Make a smooth transition to testing section and described what it took to test your project.
Include sub-sections that list out a problem and solution, such as:
<Bug/issue name>
Discuss the issue and resolution.
Conclusion
Conclude your project here. You can recap your testing and problems. You should address the "so what" part here to indicate what you ultimately learnt from this project. How has this project increased your knowledge?
Project Video
Upload a video of your project and post the link here.
Project Source Code
- []