3d Printing, Electronics, Laser, Programing, Gaming

Another Portable RetroPi Build

The Witch is a retroPie build. Now, I know everyone builds one and that's why I had to build mine. And it just so happened that I pulled inspiration from the Nintendo Switch(No relation).

I ended up overclocking my raspberry pi 3 to 1.3 gHz and I had to incorporate a salvaged Macbook pro 2012 fan. Now I’m not sure but I think I'm the first to put a fan in my portable Retropie build but who's bragging?

My boss said someone donated a 9 in LCD to the lab and i was like I’ll figure out someway to use it. And this was it.

There was a lot of interesting parts to this project.

The redesign:

I had decided to do it right by completely building it out in Fusion360 then making it in reality but it was ugly, clunky and heavy, So instantly destroyed it, I’m surprised I didn’t burn it but I’ll do that next time.


The analog stick:

Now Retropie only accepts digital inputs. I was going to write a script that ran on boot to interpret the analog signals to keyboard clicks. But I figured that would be overkill and might slow down performance. Instead I used an Adafruit trinket Pro 3v due to its size and amount of GPIO. The Trinket converted the analog inputs in a threshold to digital outputs and I then tied those to raspberry pi pins and mapped those to keyboard clicks. It's a long journey but it worked very well. My only problem is that I am using the ADC and that takes a lot of mA’s

analog stick.JPG

I Wrote a simple Arduino sketch to acheve this.

int joyPin1 = 0;                 // slider variable connecetd to analog pin 0
int joyPin2 = 1;                 // slider variable connecetd to analog pin 1
int value1 = 0;                  // variable to read the value from the analog pin 0
int value2 = 0;                  // variable to read the value from the analog pin 1

const int left = 13;
const int right = 12;
const int up = 11;
const int down = 10;

void setup() {
  pinMode(left, OUTPUT);
  pinMode(right, OUTPUT);
  pinMode(up, OUTPUT);
  pinMode(down, OUTPUT);
  digitalWrite(left, HIGH);
  digitalWrite(right, HIGH);
  digitalWrite(up, HIGH);
  digitalWrite(down, HIGH);

void loop() {
  // reads the value of the variable resistor 
  value1 = analogRead(joyPin1);   
  // this small pause is needed between reading
  // analog pins, otherwise we get the same value twice
  // reads the value of the variable resistor 
  value2 = analogRead(joyPin2);

  if (value1 == 0){
    digitalWrite(up, LOW);
  else if (value1 == 1023){
    digitalWrite(down, LOW);
  else if (value2 == 0){
    digitalWrite(left, LOW);
  else if (value2 == 1023){
    digitalWrite(right, LOW);
    digitalWrite(right, HIGH);
    digitalWrite(left, HIGH);
    digitalWrite(up, HIGH);
    digitalWrite(down, HIGH);

The Standoffs:

Back in the day I had an idea for clapping to faces together invisibly, but keeping it serviceable. The design is 2 complementary rabbits with a hole through them. That way a screw kept them together. After gluing both rabbits to there respective faces I drove a m4 screw threw them both to clamp the Witch together.


This was a very fun project and later I will make a custom carrying case using EVA foam. Should be FUN!

Game Play


While The glue dried.

I researched how to overclock my Raspberry Pi to allow the n64 emulator to run properly. I still haven’t gotten it to work.