We played Atari and other old school video games throughout our childhoods. We decided to pair old memories with new skills this weekend by learning how to code assembly for the 6502 processor.

We are also both photographers who enjoy creating art as well as tech. Now that Portratari is finished, we're enjoying using it almost as much as we enjoyed making it!

What it does

Portratari transforms modern images into black and white pixelated images! Take a photo using the app, or upload a picture you already have and watch your photos undergo a nostalgic transformation. After rendering the binary images, Portratari automatically saves them to your computer so you can keep your Atari portraits forever.

How we built it

We built Portratari using the Atari emulator Stella and Python. We used Python to process and transfer the images to assembly files, as well as manage the webcam interface and auto-saving of the photos. We displayed the altered images on Stella using assembly code.

Challenges we ran into

Neither of us knew assembly programming: other than a single course on microprocessors, we hadn't built anything in assembly before this weekend. We had to navigate working without a buffer and dealing with details like clock cycles to display the pixels in the proper order without corrupting the image content or introducing flicker.

Accomplishments that we're proud of

  • Creating a finished app that we enjoy using
  • Coding a project in assembly
  • Learning and implementing new skills

What we learned

Coding in assembly is not for the faint of heart! We dove deep into the inner workings of the 6502 processor, and gained new respect for the people who programmed the cutting edge technology a few short decades ago.

What's next for Portratari

  1. Improve the interface to allow users to edit the contrast, threshold and brightness of images.
  2. Showcase the final visuals live on the webcam.
  3. Colour images!

Hack the North 2018 Prize Entries


MLH - Best Domain Name - Winner

Built With

Share this project: