Creating Asteroids from Scratch in C For an FPGA - ECE243

Gameplay image

In the ECE243 computer organization course, I delved into the intricacies of graphics programming from scratch on an FPGA board, a journey that provided invaluable insights into low-level computer graphics and driver operations. My teammate and I, despite the challenges of remote learning, took on the semester project with enthusiasm, creating an engaging Asteroids game that went beyond the curriculum.

Key Achievements and Contributions:

  1. Multilayered Graphics Programming:
    • Explored graphics programming in both assembly (ARM V7) and C code, using low level commands to generate a game and interact with the board’s IO.

    • Developed a feature-rich Asteroids game, leveraging the features of the FPGA board to implement stereo audio, particle effects, and additional displays for lives and scores.

  2. Extra Features:
    • Enriched the gaming experience by incorporating stereo audio, providing a more immersive dimension to the project.

    • Implemented complementary LED and 7-segment displays to showcase lives and scores.

HEX and LED displays

Skills and Learning:

  • In-Depth Understanding:
    • Gained a profound understanding of the lower-level operations involved in computer graphics and drivers.

    • Delved into the complexities of FPGA board emulation.

  • Collaborative Programming:
    • Worked collaboratively with a teammate to design and implement the Asteroids game, honing collaborative programming skills.

    • Navigated the intricacies of teamwork in a remote environment, ensuring seamless integration of diverse features.

More gameplay on the emulation website

Career Relevance:

  • Software Development Skills:
    • Acquired hands-on experience in programming at a low level, a skillset valuable in various software development scenarios.

    • The project’s complexity and scope enhanced problem-solving abilities, laying the foundation for tackling intricate challenges in a professional setting.

  • Holistic Integration:
    • Integrated various hardware components with software functionalities, showcasing the ability to work on both hardware and software aspects of a project.

    • These skills are directly applicable to a career as a software developer.

Conclusion:

The Asteroids game project in ECE243 was a pivotal experience, offering a hands-on exploration of graphics programming and hardware-software integration. From enhancing gaming features to navigating remote collaboration challenges, this project equipped me with practical skills and a deeper understanding of computer organization. As I pursue a career in software development, the lessons learned from this project will undoubtedly contribute to my success in tackling complex and multifaceted challenges.