Files
site/static/strings/phobos.md
2026-01-24 20:18:55 -05:00

2.5 KiB

Phobos

One of the coolest things I've developed is a game, fully written in assembly.

I say this because it is the perfect intersection of many things I enjoy; low level programming, physics, space, simulation development, and game design. Also small enough of a project that I could complete it in under a couple of months, so another win. I even named the game based on the emulator, as Phobos is a moon of Mars

The instructions for this assignment were very broad, to develop a platformer game in assembly. This left a lot of room for creative freedom, especially due to the loose definition of platformer. With infinite time I would have developed a whole rocket simulator, and used the justification that the launchpad was a platform.

On the technical side this was a very difficult project. There are only about 16 variables actually usable in MIPS, and a lot of them are reserved to specific logical controls under best practice. Then following the many loops and recursive, real-time functionality required extensive and efficient use of the stack. Ideally accessing a few bytes shouldn't strike the fear of low framerates to mind, but the Mars-MIPS emulator I was using was far from efficient.

Notable Features

  • Raycast collision detection and repositioning
  • Sub-pixel velocity and positioning
  • Awesome pixel graphics (the rocket shoots fire!)
  • High framerates (for a low-performance emulator)
  • Enemies shooting at you!
  • Loot pickups

Probably the most annoying part of this was that the emulator couldn't handle simutaineous key inputs. Fortunately I have over a thousand hours experience landing rockets on the Mün so I was comfortable giving a few unique key inputs per second. I never imagined this is something I would be proud, and I still don't think I am. However, it works.

At this point you may have realized I am a bit of a space nerd. Enjoy this recording I made at 1am demonstrating the features of my game to a TA, compressed to the point that the audio has texture.


The source code is also available for your enjoyment.