NeoPiGamer
-
@gamester_47 - I used the diagram below to wire the pinouts from the GBA's PCB directly to the GPIO pins on the Pi Zero.
I cut out the middle/green portion of the PCB in order for the signals to work properly. The Gameboy Pocket and Nintendo DS have the same issue. I needed the space for the LCD screen anyway so it all worked out.
The square pinouts under the right shoulder button and between the start and select buttons are ground.
Then I used the Adafruit retrogame utility described here to remap the buttons to keyboard presses.
-
Hi. I'm trying to do something similar to what you did. The only issue I am having is finding a display that I really like. Your display seems perfect (even bragging about 60fps). Could I get a link to the display that you used and describe what part of it that you modded? Thanks a bunch ^_^
-
I used a SainSmart 3.2" TFT LCD Module touch screen display. I believe it's a re-badge or clone of the WaveShare32 TFT touch screen display. I got it from my local Micro Center.
First I disconnected the flex cable and separated the driver board from the actual TFT display. They're held together with double sided mounting tape, so that part was easy.
Then I used a dremel tool to cut right along the 4 slim tactile button switches on the side of the driver board. This both resized the width of the board to the same width as the display as well as removed the buttons.
Next I cut off the thick plastic portion of the GPIO connector and desoldered the remaining pins.
Then I soldered wires from the appropriate pinouts directly to the GPIO on pi zero based on the pinout specs available on the page linked above. The manual linked on the same page also has more pinout details. I put electrical tape on the opposite side of the pin holes on the driver board to prevent any contact with the back of the TFT display.
Lastly, I removed the mounting tape, reattached the driver board to the back of the TFT display using double sided masking tape to reduce the thickness of the display, and reconnected the flex cable.
Drivers are included in raspbian jessie which makes enabling the display so much easier. You simply have to place the parameters below into the config.txt file in the boot folder.
hdmi_force_hotplug=1 hdmi_group=2 hdmi_mode=87 hdmi_cvt=320 240 60 1 0 0 0 dtparam=spi=on dtoverlay=waveshare32b,speed=80000000,fps=60,rotate=270
The first set of parameters setup the display resolution. The second to last parameter enables SPI. The last parameter specifies the hardware overlay for the display so the correct kernel modules are loaded along with maxing out the speed and frames per second for the display. I also had to specify rotating the display 270 degrees since I have the display turned around for shorter wiring between the pi zero and the display in the GBA case. More info on the software side of things can be found here.
Since The SainSmart 3.2" TFT LCD Module has a resistive touch screen , I highly recommend you also blacklist the ads7846 touch input kernel module. Otherwise, the kernel will get continuous interrupts from any pressure between the touch screen and the back of the front of the GBA which will affect both input and game performance.
-
@Tekkaman_Slade Thanks you the best :)
-
@Jeff-H I have found that if you want to keep the plastic screen on the front, a 2.8" screen just fills the gap nicely. Im planning a GBA/Zero project but im struggling to find a good 2.8" screen that works with the Pi, and doesn't have too much overhang on the ends. There isn't a massive amount of space from the edge of the display to the buttons
-
I used a 3.2" TFT LCD Module because I wanted a larger screen than the original GBA. But if you or Jeff-H are looking to retain the original GBA screen lens, than the Adafruit PiTFT Plus 320x240 2.8" TFT + Capacitive Touchscreen may work for you. I made the same modification to the Adafruit PiTFT Plus 2.8" for another project minus desoldering the pins. You can actually trim the driver board on both sides leaving a very little overhang above the pins. The B+/Pi 2 Version fabrication print schematics make it very clear where it's safe to trim the driver board without damaging the circuit paths. You will need a high watt soldering iron to desolder the pins as industrial grade solder is used on the driver board. There is a resistive touch screen version of the same board that comes with the pins unsoldered, but I haven't reviewed the fabrication print schematics to see how well that display's driver board can be trimmed.
Cool thing about the Adafruit PiTFT Plus 320x240 2.8" TFT + Capacitive Touchscreen is that drivers are included in raspbian jessie. You simply have to place the parameter described here in the config.txt.
@Jeff-H - I updated the parameter information in the previous post.
-
@Tekkaman_Slade thanks for the info, i will investigate the adafruit screens.
did you have any issues with the I2S audio board you used clashing with the pins for your screen? The screens i have been playing with, use GPIO18 for the backlight
-
I used a USB Stereo Audio Adapter I got from Micro Center for 8 dollars. I modded it by removing the casing and the USB port. Then I wired data, power, and ground from the audio adapter directly to a micro-usb male connector. That made it easier for me to plug and unplug the audio adapter for disassembly and debugging of the NeoPiGamer.
Here's what Adafruit has noted about the screen you are using.
"Note that if you are playing audio out the headphone jack, you can't use the PWM capabilities of GPIO #18 at the same time, the PWM function is reassigned to do audio. However, you can use it as a simple on/off pin"
So you should be able to use the screen you are using without backlighting control if GPIO 18 is being used for audio.
-
@Tekkaman_Slade thanks for the info man
i did ponder using a USB sound card, but i have been using a wifi dongle to get logged in and make changes to settings or upload games, and i dont want to start adding usb hubs in there to take up the space and battery
i can tie the backlight pin to the 3.3v feed, that wont cause any issues as the notro driver doesnt deal with any dimming anyway.
do you have any control over the volume on your usb device?
-
I know exactly what you mean. I looked at a few very small 2 port hubs for notebooks that might have worked after modding, but after replacing the 1200mah battery with a 2500mah battery, there is no room left in the case. I actually use a second pi zero for changes and updates by swapping the microSD card. That setup actually helped with debugging some of the modifications I mentioned in the update to my original post.
I use the RetroArch volume control hotkeys (select+up and select+down) to control the volume. I could have used the original GBA potentiometer, but I had to remove it to make room for the audio amplifier and some wiring.
-
@Tekkaman_Slade that volume shortcut is awesome!!! i never knew that was there, its one less thing to worry about.
Im curious as to how you blanked the cartridge hole, i did toy with the idea of getting some naff old game and gluing it in, but that extra space would be handy
-
Great minds think alike. I tried using the top 1/4 of a GBA cartridge to cover the cartridge slot, but it still took up too much room. I ended up using a modded Nintendo DS Lite cartridge slot cover.
First I disassembled the cartridge slot cover by removing the single screw. Then I simply cut away everything below the glossy top part of the cartridge slot cover and used Loctite Super Glue Ultragel Control to glue it over the cartridge slot. It matches perfectly with the blue front and the black buttons. As you can see, prior to placing the cartridge slot cover, I created holes for the pi zero microSD card slot and the microUSB charging port of the Powerboost 1000C.
-
Amazing build. I like the glitter paint job. Really sharp. =]
-
Do I correctly recognise the front-light modification cut-out at the bottom of the screen opening? Great job btw, I'm planning on doing one after the original GameBoy mod as well. This seems more of a space challenge!
I had the same front-light mod, so I ordered a new shell. Will use old one to practice first. Will also try to preserve original battery compartment and place a 3.7V 6800mAh 2-cell pack in it. -
Hi! I am an artist that has recently started refurbishing old gameboys to look really cool.. I am looking to acquire basically everything that is inside this device put together and programmed. I was planning on decorating the housing and building a structure that would look really cool. Please let me know if you would be willing to sell your work on this. thanks
-
Very observant. You are correct. I had the backlight mod done shortly after I originally purchased the GBA many many moons ago.
Space is definitely the biggest challenge. The 2500mAh battery I'm using already last a very long time, so no complaints here. I'd be interested to hear more about your project and the larger battery.
-
So im trying to go for it and make one of these.. could you explain how you wired the controls to the raspberry pi (which GPIO pins) and what software you use to emulate along with how to configure it to the GPIO pins? I think I found most of the hardware at this point. I may try to go without the additional buttons since the games I play only require four buttons. do you think its possible to use the start and select buttons that are on the original GBA?
Thanks -
I can't part with my NeoPiGamer, but I'm more than happy to answer any questions you have as you build your own.
I'll quote one of my previous posts to answer your questions regarding the GPIO pins.
@gamester_47 - I used the diagram below to wire the pinouts from the GBA's PCB directly to the GPIO pins on the Pi Zero.
I cut out the middle/green portion of the PCB in order for the signals to work properly. The Gameboy Pocket and Nintendo DS have the same issue. I needed the space for the LCD screen anyway so it all worked out.
The square pinouts under the right shoulder button and between the start and select buttons are ground.
Then I used the Adafruit retrogame utility described here to remap the buttons to keyboard presses.
You simply connect one end of a wire to a PCB pinout and the other end of the wire to a GPIO pin that's not power, reserved, or ground. Repeat for the remaining poinouts. Then you connect the ground PCB pinouts to ground GPIO pins.
Configure the retrogame utility linked above and you're ready to go.There are PCB pinouts for the start and select buttons as well, so you can use them without any issues.
-
Thanks for your help! I really appreciate it. If I can get this project to work ill make you a funky piece of clothing www.janaktull.com shows some of the stuff I make. The maps you sent me I forsee being extremely helpful, however im not sure i know what most of the abbreviations mean. will I be able to connect any TP point to any BCM pin? for example: TP0-> BCM2; TP1-> BCM3 and so on?
Also how did you cut the PCB board? i was planning on using a dremel but my friend told me i have to be careful of fusing layers of the board together and shorting the control circuit. And is there a specific place to cut the middle portion out? as in are there certain structures that I need to be sure to cut out?
thank you so much! -
Cool clothes. I have a good friend who would love the first one.
The corresponding control for each PCB pinout (e.g.: A, B, Select, Start, etc.) is designated right next to the TP# and is color coded to match the arrows pointing to the PCB pinouts in the diagram.
You can connect the PCB pinouts to any GPIO pins as long as it's not used for power, reserved (for your display, comms, etc.), and ground. Then you connect the two ground PCB pinouts to any ground GPIO pins.
I cut the PCB using a dremel tool right along where the green meets the white. You don't have to worry about shorting or fusing. In fact, the main reason for cutting the board is to terminate the paths so the pinouts work the way we want them to as briefly mentioned in the quoted post.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.