A multiplayer racing game engine written in C for the TI MSPM0G3507 microcontroller. This project contains real-time physics, sprite rendering, and UART communication between two microcontrollers.
Click the image above to watch the gameplay demo.
Voted "Best Game" in ECE319K Class Competition (Fall 2025)
- Multiplayer: UART-based protocol handling data packets for position syncing and item events (Banana/Bomb).
- Physics Engine: Custom collision detection (AABB), velocity and breaking mechanics, and bounce mechanics.
- Hardware Drivers: Direct register-level drivers for:
- UART: Interrupt-driven networking.
- SPI: display communication.
- ADC: Joystick input processing.
- DAC/Timer: Sound generation and game loop timing (30Hz).
- Microcontroller: TI MSPM0G3507 LaunchPad.
- Display: ST7735 128x160 TFT LCD.
- Input: Analog Joystick (2-axis) + Buttons.
- Audio: DAC made with resistors + amplifier.
- Clone the repo:
git clone https://github.com/bshihab/Embedded-Multiplayer-Racer.git
- Import the project folder into Code Composer Studio.
- Build and Flash to the LaunchPad.
- Multiplayer: Connect two boards via UART (Tx to Rx, Rx to Tx, GND to GND).
/images: Raw sprite data arrays converted from BMPs./sounds: Audio data arrays for game sound effects.Lab9Main.c: Main game loop and state machine.Graphics.c/h: LCD rendering logic.GameObjects.c/h: sprite management and collision logic.
Developed by Bilal Shihab and Prarthana Balaji for ECE319K at UT Austin.
