DIY

The perfect GameBoy – The Sequel

Posted by karios on October 30, 2019
DIY, Games / No Comments

Every time I decide what the perfect Game Boy is, something happens and I reconsider. The same can be said for many retro systems, because there seems to be an endless stream of hacks, addons and mods for almost anything from the 80s, 90s and 00s nowadays.

Previously (see here), I had considered the GBA SP 101 with a new shell and fixed shoulder buttons to be the perfect Game Boy, since I love the form factor and the screen was lights ahead the GBA SP 001 and of course the original GBA non lit screen. Since then, I modded the original GBA with a very nice backlit screen that improved things dramatically and made it very playable in all lighting conditions, on par with the SP 101.

Now, it’s time to take my SP 001 and take it to another level by installing the best screen on the market, the Funnyplay v2 IPS Laminated display.

This display is hands down the best one yet. IPS colors, 5 brighness levels (and it gets REALLY bright on the highest one), 4x the pixels of the GBA resolution, resulting in no distance between pixels, very fluid (no tearing like previous Funnyplay displays), infinite viewing angles and the display is laminated to the glass, so no dust between the glass and the screen ever and the screen seems to pop. Oh, and the price is very competitive compared to backlit aftermarket displays.

I am really struggling to find anything bad about this mod, but if I had to I would say that it may use a bit more battery. And that’s about it.

The display came in a nice orange box that kept everything safe. In there you will find the display itself, a ribbon cable with a small circuit board and a very thin wire. Oh, and a square white foam that you have to put behind the screen.

If you plug the display on the ribbon cable and plug the ribbon cable where the old SP 001 (or SP 101, works there too) display was, it just works. So if you don’t care about the different brightness levels, you are done.

I modded my only SP 001, which looked like this before the mod:

Modding was relatively easy. The hardest parts was trimming the back cover of the display to allow it to fit and soldering the thin cable to enable the brightess button to switch between the 5 brightess levels.

You have to trim only one side as shown below, and don’t forget to put the foam behind the screen before closing.

For the easy soldering part, which you should do after you pass place the display, connect the ribbon cable and pass it through the opening, the thin cable must be soldered on:

a) the solder point on the ribbon cable itself, as shown here:

b) the solder point marked Q12B on the motherboard of the SP, as shown here:

The soldered wire should look like this (with better cable routing):

This is it. Close everything up and you are good to go.

Now all my GBAs have backlit screens. Funnily enough, the original 101 screen is the worst of them now (on the SP on the left), with the aftermarket backlit taking second place (on the GBA on the right) and of course the new Funnyplay IPS taking first place (on the center SP).

Here are some close ups of the 3 screens. See if you can spot the new IPS (hint: it has 4x the number of pixels, so it’s super sharp compared to the others with no visible gaps between the pixels).

Micro Gotek replacement on my Amiga 1200

Posted by admin on March 16, 2019
DIY / No Comments

I’ve recently replaced my Gotek which I described in previous posts (http://www.karios.gr/?p=1029 and http://www.karios.gr/?p=1003) with a Micro Gotek (found here: https://www.sellmyretro.com/offer/details/32413). As a reminder, the Gotek and Micro Gotek are floppy emulators that replae the old-school floppy driver on the Amiga and can read and write on virtual floppies stored on USB sticks (called adf files).

The main difference between the two is the size that takes inside the case and convenience with the cabling. In the old Gotek, I needed to solder wires on the switches for example while the Micro has everything on normal headers, for buttons or a rotary encoder. I chose the latter, which is much more convenient for scrolling through lots of ADFs while still using the encoder as a button to load or eject virtual discs. Another big difference is that you can connect the USB outside of the case, which is very convenient if you want to change USB sticks often.

I chose the Micro Gotek version that goes directly on the motherboard to avoid using a floppy cable and the need for yet another 3d printed base to base the Micro Gotek on. I also printed a new version of the control box to accommodate the USB and the encoder. I shared the file here:

https://www.thingiverse.com/thing:3485091

This is a work in progress and I do already regret putting the USB and encoder on the same place, which I plan to change in later versions. If you push them enough though, they will fit.

I also printed the encoder cap found here:

https://www.thingiverse.com/thing:2832652

Having the Micro Gotek directly on the floppy connector on the motherboard also leaves few choices for getting the cable outside of the case of the A1200. One would be through the ventilation grills and another from the back side (e.g. the expansion port), using cable extensions.

The Micro Gotek uses the same FlashFloppy firmware which I used for my original Gotek and it updates just fine (I have it updated to version 1.0, which is the latest at the time of this writing, with no problems). It also works great.

The final result looks like this:

The perfect GameBoy

Posted by admin on December 16, 2018
DIY / 1 Comment

I just finished restoring the perfect GameBoy, in my opinion, to the perfect state! But first a little history:

First was the original GameBoy which took the world by storm by being an awesome way to play video games on the go, with the important feature of actually being able to play different games on the same portable console, a new thing at the time. Technical wise, it was not anything spectacular to speak of, it featured a few grey (well, more like puke-green) colors on the screen, which was not even lit, so no playing in the dark for you (at least without any of the numerous silly light-and-magnifying glass after market add-ons). But it was more than good enough, there were some awesome games on it and the 4 AA batteries last for a long time. 

Then we had the GameBoy Pocket, which was the same thing but smaller and only took 2 AA batteries. Other than that, it was the same machine.

Then we had the GameBoy Color. This could play all the original GameBoy games with the option to turn their grey palettes to a color palette with the same number of colors but at least there are colors. There were also games built specifically for it with better colors. But other than that, the screen remained non-lit and the quality of the games was more or less the same as the original.

Here I should mention that in Japan only there was a special version with a lit screen, called the GameBoy Light which was essentially the Pocket with a front lit screen. This never came out anywhere else.

But then we had the GameBoy Advance. Now this was the real deal. The GBA was more or less on-par with the Super Nintendo, power wise and it fit in your pocket. The future was there! It was also backward compatible with original and color GameBoy games, so at launch its software library was already huge. 

The original GameBoy Advance featured the controls on the sides of the color (but STILL not lit) screen and took 2 AA batteries for power.

The next version was the GameBoy Advance SP. Hardware wise it was a GameBoy Advance, so all of the same games played fine (including original GB and GBC games), but it now featured a much more pocket-able clam shell design. And the screen was lit for the first time!

There were two versions of the SP though, the original SP model 001 featured a rather unimpressive front lit screen that looks, well, not so good, but you could play in the dark for the first time and that was important. But the second version was the real deal. Model 101 featured a very bright and beautiful backlit which is on-par with the ones found on the DS which came after that. These are quite rare and expensive to find nowadays, but in my opinion they are the best GameBoys ever made, since they are backward compatible with ALL GameBoy games ever made (GB, GBC, GBA), they have an awesome small foot print clam shell design and they feature the best screen.

The last GameBoy SP released was the SP Micro, which was a super tiny version of the SP and played only GBA games. These are very nice, feature a smaller backlit display but they are a feature less than the SP 101. 

So, since I never had a GBA, I decided to go hunting for the perfect GameBoy. Finding a 101 was not too hard, the price was a bit high though and, since it’s now more than 15 years since it was released, there are always some problems with them.

The most common problem is of course, the state of the plastic chassis of the device. These games were meant to be carried around and played, so scratches and filth was everywhere. Repairing and cleaning was out of the question but thankfully, you can buy a replacement beautiful brand new plastic chassis for less than $10 online, which is exactly what I did.

The second most common problem is the shoulder buttons, which wear out and stop working after a while. On the device I received, both shoulder buttons were not working at all, or worked when they felt like it. Here, I had to open the device and desolder them, order new ones online and replace them and boy did this make a difference. The new shoulder micro switches work perfectly and they also have a very satisfying clicky feel to them, not present in the originals.

Lastly, the battery needed to be replaced, just so it can last for a good few hours more of gameplay. You can also get them brand new online very cheaply.

So there you have it, I am now a happy owner the of the perfect GameBoy!

Update:

Another one, this time a 001 model, is saved and added to the collection. New shell, new shoulder button microswitches, like new!

Welcome!

Update 2:

Another GameBoy Advance joins the collection. This time it’s not an SP but a regular GBA, but with a brand new plastic hell, screen crystal and backlit screen modded. This was a relatively easy mod, there are lots of tutorials on how to change the original non-lit screen to an after market backlit one (e.g. https://www.instructables.com/id/Gameboy-Advance-Backlight-LCD-Screen/).

The only things you need to be careful is the screen connector model you have on the GBA motherboard (40 pin or 32 pin – determined by the first number you see through the battery compartment – 0 for 40 pin or 1 for 32 pin. They are also called type A and type B) and to careful to solder the screen power wire correctly on the GBA motherboard to get power for the backlit screen. Other than that, it looks and plays awesome:)

Welcome old GBA with brand new screen
My GBA collection so far.

Raspberry Pi 3 based arcade box DIY

Posted by admin on February 24, 2018
DIY / No Comments

I recently built an arcade box for emulating old arcade games and old home computers but I wanted an authentic experience with a nice box around it, since emulation can be done with anything these days, computers, a pi connected to the tv with bluetooth controllers etc. I ended up having a friend (thanks Tasos) design and cut a box made out of FOREX PVC, which ended up great. I also cut a plexiglass for the top part and printed a nice retro gaming related graphic under the plexiglass. The final box looks like this:

A little explanation on how this works. I installed an 128GB RetroPie from here: http://www.arcadepunks.com/retro-pi-downloads-page/ for a 200GB microSD card that I put on my Raspberry Pi 3. This saved me a lot of trouble (finding the roms, finding marquees, screenshots, videos, putting everything together etc) but also gave me some space to put some extra stuff that I wanted (I HAD to have the first games I ever loved – namely Blue Max and Alley Cat on the Atari XE emulated in there, I just had to). I then got a USB encoder with 10 fire buttons and a 8way stick from ebay ($27 for everything), which looked like this:

This nice thingy looks like a real mess inside the box, but it gives you a USB controller which I connect from the outside of the box to the Pi, using one of the 4 USB ports available. This was by design for 2 reasons. First of all, at any time, I can disconnect the USB from the Pi and connect it to any PC or laptop and use the controller there. Also, I am planning on creating a second identical small system, without the Pi, to use as a player 2 controller which I will just connect to the same Pi and play with friends. I configured the 8 fire buttons as A,B,X,Y,LT,RT,LS,RS and the 1P and 2P buttons as Start and Select. These map nicely to all systems if they don’t require any analog controls. For these, I can still connect USB controllers (like the excellent 8BIT N30 Pro which works as USB or bluetooth if I want to) for other systems or for more authentic gameplay depending on the system.

Wow, messy I know but it works. The buttons go through the holes and screw from the underneath with their own plastic rings, while the joystick is screwed very tight with 4 metal screws. I also dug a little bit on the top of the FOREX, under the plexiglass, to bury the heads of the screws so they don’t push the plexiglass up. The USB encoder also has options for auto fire and turbo fire, which I connected with small momentary buttons on the back of the box. Speaking of the back of the box, this is what it looks like:

From left to right as we see it, we have an HDMI output (put there with a small internal extension from the Pi), the turbo and normal fire modes (mentioned above), an exhaust fan with a fan switch (more on that later), a restart and a shut down buttons (more on that later), a small hole for status leds (more on that later), the exit hole for the USB joystick and for the power cable (the standard 2.5A RPi supply), the standard Pi ethernet and 4 USB ports and a 3.5 audio jack for headphones (also connected to the Pi with a small internal extension).

Here are the initial schematics for the whole thing, slightly altered as I went along:

There are 2 leds (a red and a green) that both fit inside the small whole I mentioned above. The idea was that the green led will light up when the system starts and the red will light up during the shut down sequence (a safer way to shut down the pi than just pulling the plug). In order to do these, I connected the leds directly to GPIO pins (BCM 16 for the green and BCM 21 for the red) with respective resistors and wrote the following python script for the green led to turn it on at startup:

import RPi.GPIO as GPIO
GreenLed=16
RedLed=21
GPIO.setmode(GPIO.BCM)
GPIO.setup(GreenLed,GPIO.OUT)
GPIO.setup(RedLed,GPIO.OUT)
GPIO.output(GreenLed,GPIO.HIGH)
GPIO.output(RedLed,GPIO.LOW)

I also connected the “shut down” momentary button on BCM 23 and wrote the following python script to perform a clean “sudo shutdown -h now” and also light the red led:

import os
import time
import RPi.GPIO as GPIO
pinNum=23
GPIO.setmode(GPIO.BCM)
GPIO.setup(pinNum,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.wait_for_edge(pinNum,GPIO.FALLING)
GPIO.setup(21,GPIO.OUT)
GPIO.setup(16,GPIO.OUT)
GPIO.setup(16,GPIO.LOW)
GPIO.output(21,GPIO.HIGH)
print("Shutting down...")
time.sleep(2)
os.system("sudo shutdown -h now")

The restart momentary button is connected to the 2 holes on the pi that reset it without any code. These are the pins I refer to:

In the beginning I used very small heatsinks like these:

but let me tell you, with emulation I had huge problems with overheating, even with an NES running. Maybe it’s the enclosed casing, maybe it was the bad heat sinks, whatever the reason, I had issues. I looked it up a little bit and I found a guy on YouTube who did all sorts of test with different heat sinks, with and without fans. Bottom line, fans and a much bigger heatsink with good thermal paste is the best solution.

Here is the guy explaining why:

I used a smaller fan which I mounted sideways with a double sided tape on the board blowing through the heat sink, because putting it on top interfered with the joystick. I connected the fan to 5V (it is a 5V fan) but used a transistor connected to GCM 17, to turn the fan on and off depending on the CPU temperature. Here is the python script:

import RPi.GPIO as GPIO
import os
from time import sleep
import sys
fanPin=17
maxTmp=45
minTmp=40
def setup():
	GPIO.setwarnings(False)
	GPIO.setmode(GPIO.BCM)
	GPIO.setup(fanPin,GPIO.OUT)
def getCPUTemperature():
	res=os.popen('vcgencmd measure_temp').readline()
	temp=(res.replace("temp=","").replace("'C\n",""))
	print("CPU temperature is {0}".format(temp))
	return temp
def fanON():
	setPin(True)
	return()
def fanOFF():
	setPin(False)
	return()
def getTemp():
	CPU_Temp=float(getCPUTemperature())
	if CPU_Temp > maxTmp:
		fanON()
	else:
		if CPU_Temp < minTmp:
			fanOFF()
	return()
def setPin(mode):
	GPIO.output(fanPin,mode)
	return()

try:
	setup()
	while True:
		getTemp()
		sleep(5)
except KeyboardInterrupt:
	GPIO.cleanup()

This will pass 5V to the fan if the temperature gets higher than 45 degrees C and cut the power when it’s less than 40 degrees C (checked every 5 seconds). Since this is an enclosed space, I figured that extensive gameplay sessions could result in the heat getting trapped inside the case, so just in case (pun intended) I also added a manual exhaust fan with a simple switch to turn on and off manually if needed. This is the fan you see on the back picture with the grill. Since this is also noisier than the small one, I avoid unnecessary noise. I was also able to slightly overclock the Pi using this system to allow it to play Playstation 1 and N64 games smoother. I also positioned the transistor inside the airflow of the fan, to avoid it overheating.

Here are some pictures of the heat sink and fans:

All scripts are run at startup in the /etc/rc.local:

python /home/pi/power_led_on.py
python /home/pi/reset_button.py
python /home/pi/shutdown_button.py &
python /home/pi/fan_control.py &
exit 0

I finally configured the controls on Emulationstation, updated everything over ethernet and started playing.

How well does it play? Well, it plays GREAT. And it looks like this:

A small update on the Amiga 1200 Gotek External Control Box

Posted by admin on January 30, 2018
DIY / 1 Comment

This is an update for the previous post, where I added a FlashFloppy Gotek and an external control box to control it which you can read here: http://www.karios.gr/?p=1003

I’ve removed the initial box and replaced it with a modified 3D printed box, which allows me to fix it perfectly and firmly on top of the Amiga 1200 and also to have the OLED screen in front as well as 3 control buttons on the back (previous, select-eject, next). The modification of the 3D model was done by Tasos (thanks Tasos) to fit the buttons as well as the screen. The original box, without the holes for the buttons, was found here: https://www.thingiverse.com/thing:2701629. The modified version can be downloaded from https://www.thingiverse.com/thing:2791237

It works great AND it looks great now. I think this project is complete!

Took me a couple of hours to do a proper rewiring but it works great as you can see below: