You are browsing as a guest. Sign up (or log in) to start making projects!

UEFI Flappy Bird

  • 1 Devlogs
  • 6 Total hours

Reimagined version of Flappy Bird but for running in the UEFI Shell

Ship #1 Changes requested

A reimagined version of Flappy Bird adapted to the nature of UEFI with greater and more annoying consequences. To be exact, instead of pipes I changed it to randomly generated blocks on the screen that the bird must avoid. If the bird touches the block or goes above/below the screen, the whole system reboots!

The challenges with this kind of project was figuring out how to interop with the UEFI protocols, as they are a bit, uh, weird especially when using GNU-EFI that has an ABI mismatch. Figuring out filesystem support definitely took a bit of work but the hardest part that I didn't expect was finding a library to read images that doesn't really on stdlib.h or other standard c libraries, because UEFI is a freestanding shell. After trying a lot of options, I resorted to making my own BMP file parser that takes only a selected BMP file format and headers.

I am proud of the fact that I managed to make this even after meeting some difficulties. I learned some new stuff about BMP file parsing and surely a few ways on how EFI works and how impressive it is even for a pre-OS layer.

To try it, you only need a x86 virtual machine, QEMU suffices. Just download the flappy.efi file in github and place it in a Efi System Partition. Just be responsible! Don't use it in a real machine, no promises that it works and it won't brick anything.

  • 1 devlog
  • 6h
Try project → See source code →
Open comments for this post

5h 54m 25s logged

Just completed the first iteration of a UEFI Flappy Bird. While working in the project it didn’t cross my mind to create seperate devlogs as I didn’t think it would take me that much time, but here we are

0
0
1

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…