RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Pi in a Gameboy Advance Build - WIP

    Scheduled Pinned Locked Moved Projects and Themes
    gameboy advancegbabuildhandheldproject
    240 Posts 18 Posters 180.6k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      backstander @obsidianspider
      last edited by

      @obsidianspider

      (Don't worry, I won't be boring you with a shot of the Pi as each component disappears.)

      You should make an animated GIF of each component disappearing ;-)

      1 Reply Last reply Reply Quote 1
      • mooseprM
        moosepr
        last edited by

        @obsidianspider i found this and thought of you

        http://www.sudomod.com/forum/viewtopic.php?f=22&p=26192

        want to get a tft into your project, look no further than here https://retropie.org.uk/forum/topic/7464/ili9341-tft-screen-guide

        obsidianspiderO 1 Reply Last reply Reply Quote 0
        • obsidianspiderO
          obsidianspider @moosepr
          last edited by obsidianspider

          @moosepr Awesome! I've seen a few guides here and there and this will be helpful. I'm also trying to save the bits I cut from the inside of the case to use as a base for gluing things together.

          Also: Removing the HDMI port SUCKED. The surface mount plus through hole pegs were too much to heat at once, and I got impatient. I ended up tearing a bunch of traces, and actually melted the L4 resister into oblivion. Thankfully though, due to an X-Ray of a Pi 3 that I found, those resistors are just for HDMI, so it was OK to remove completely.

          0_1488369638156_pi3-no-hdmi.jpg

          The good news is that the Pi still works. I left it run Street Fighter Alpha 3 and StarFox 2 for a few hours, plugged into a 1A iPhone charger (to test the theory that you can power it with a PowerBoost 1000C), with a 2500mAh LiPo sitting directly on the SOC and nothing got too hot, the battery or the chip.

          Progress!

          📷 @obsidianspider

          1 Reply Last reply Reply Quote 1
          • obsidianspiderO
            obsidianspider
            last edited by obsidianspider

            I think this is going to work.

            This morning I removed the rest of the ports aside from the power port (I'm not sure if I'll need to remove it yet, it's not much higher than some of the capacitors near it, but it's at the edge, so we'll see.

            0_1488654175721_pi3-cut-down-top.jpg
            0_1488654190655_pi3-cut-down-bottom.jpg

            I readily admit that I am a hack and that this could have been done more neatly, but this was my first time trying to strip down a board and keep it functional. And, it is!

            0_1488654244545_pi3-cut-down-ssh-in.jpg

            Why was I trying to do this? Well, based on my earlier mockups with some cardboard, I figured that if I could turn the pi sideways, trim the edge under the USB ports, and use a game cartridge to cover the sticky-outy bit, it'd fit.

            A quick mockup with the screen, 2500mAh battery, and cut down Pi make it look like this will work. I should have more room inside once I redo the ribbon cable I soldered to the screen board.

            0_1488654369796_gba-pi3-mockup-front.jpg
            0_1488654378987_gba-pi3-mockup-rear.jpg
            0_1488654387966_gba-pi3-mockup-top.jpg

            And, as @backstander requested, a GIF of the components disappearing. ;)

            Shrinking Pi 3

            📷 @obsidianspider

            mooseprM B 2 Replies Last reply Reply Quote 2
            • mooseprM
              moosepr @obsidianspider
              last edited by

              @obsidianspider hahahaha love the gif! I bet you could cut a bit more off the end with the USB and ethernet ports

              want to get a tft into your project, look no further than here https://retropie.org.uk/forum/topic/7464/ili9341-tft-screen-guide

              obsidianspiderO 1 Reply Last reply Reply Quote 0
              • obsidianspiderO
                obsidianspider @moosepr
                last edited by

                @moosepr I want to keep all four USB port pads available, so that's about as close as I could get it. I'm not sure how the board will be oriented inside the case just yet, but this is really promising.

                📷 @obsidianspider

                mooseprM 1 Reply Last reply Reply Quote 0
                • mooseprM
                  moosepr @obsidianspider
                  last edited by

                  @obsidianspider yeah it's looking good! You will have the most powerful GBA in the world! 😀

                  want to get a tft into your project, look no further than here https://retropie.org.uk/forum/topic/7464/ili9341-tft-screen-guide

                  1 Reply Last reply Reply Quote 1
                  • B
                    backstander @obsidianspider
                    last edited by

                    @obsidianspider
                    Wow! Now that's progress!
                    I love the animated GIF haha!

                    1 Reply Last reply Reply Quote 1
                    • obsidianspiderO
                      obsidianspider
                      last edited by

                      It's Friday night, so that means it's time to cut some stuff up in the garage.

                      I was trying to fit the Pi 3 inside the Gameboy Advance game that I bought from eBay (Is Madagascar any good? I still have the PCB in good shape.) and I determined that I would need to make the Pi narrower, and also a bit shorter. I decided that I would only really at most need two USB ports (Maybe one for USB audio (I haven't determined if I can live with the on board audio from the Pi) and maybe one for a USB port for plugging in a keyboard or something.) so I could trim the end of the Pi down a bit more.

                      0_1489186713319_pi3-cut-down-more.jpg

                      Yes, it still works. I think. It powers up, no funky red LED flashing and I can SSH to it.

                      The Pi now fits inside the Gameboy Advance case with the end covered by a trimmed and gutted Gameboy Advance game.

                      0_1489186797060_gba-pi3-inside-case-outside.jpg

                      0_1489186811019_gba-pi3-inside-case.jpg

                      0_1489186831099_gba-pi3-shell-game-apart.jpg

                      Its looking pretty good in the case with the control PCBs

                      0_1489187163679_gba-pi3-controls-in-case.jpg

                      Next up I'm going to try connecting some things to the Pi 3.

                      📷 @obsidianspider

                      1 Reply Last reply Reply Quote 3
                      • obsidianspiderO
                        obsidianspider
                        last edited by

                        I got the TFT soldered to the Pi and things seem to work.

                        0_1489203122087_pi3-soldered-to-tft.jpg

                        They seem to fit well in the case, but I don't have anything but the Pi and screen in the case in this mockup.

                        0_1489203152583_pi3-screen-in-case.jpg

                        📷 @obsidianspider

                        1 Reply Last reply Reply Quote 3
                        • obsidianspiderO
                          obsidianspider
                          last edited by

                          I don't care if it's almost 11 PM, I'm really encouraged, so I decided to try hooking up a USB port to the remnants of the board, and it works!

                          0_1489204435676_usb-port-connected.jpg

                          📷 @obsidianspider

                          mooseprM 1 Reply Last reply Reply Quote 3
                          • mooseprM
                            moosepr @obsidianspider
                            last edited by

                            @obsidianspider awesome stuff! It's really coming together now!

                            want to get a tft into your project, look no further than here https://retropie.org.uk/forum/topic/7464/ili9341-tft-screen-guide

                            obsidianspiderO 1 Reply Last reply Reply Quote 1
                            • obsidianspiderO
                              obsidianspider @moosepr
                              last edited by

                              @moosepr It's definitely not a project for the weak willed. I'm still not sure where the heck I'm going to possibly put a USB port, but today I'm going to work on connecting leads to the USB pads and then will probably work on the audio circuit. I'm not sure about how I'm going to do the battery thing yet. I've seen posts in various places about a low voltage smart shutdown and things like that. Apparently if you over-discharge a LiPo you'll kill it.

                              First though I'm in a parade this afternoon so no time to fuss around in the garage where I tend to lose track of time. ;)

                              📷 @obsidianspider

                              mooseprM 1 Reply Last reply Reply Quote 1
                              • mooseprM
                                moosepr @obsidianspider
                                last edited by

                                @obsidianspider yeah lithium batteries don't take too kindly to being really flat. I think the adafruit boost doodad has protection built in. If your not using that then there are other options. Some cells have built in protection, or you can add an extra protection board

                                want to get a tft into your project, look no further than here https://retropie.org.uk/forum/topic/7464/ili9341-tft-screen-guide

                                1 Reply Last reply Reply Quote 0
                                • obsidianspiderO
                                  obsidianspider
                                  last edited by obsidianspider

                                  Today I removed the USB port from the Pi and soldered up the appropriately colored wires. I applied some hot glue over the wires for strain relief. I sliced off the excess since I needed the board to fit inside the Gameboy Advance game.

                                  0_1489272150753_pi3-usb-leads.jpg

                                  When I tried to fit the Pi inside the gutted cartridge I found that I still needed more room as the wires and glue made the Pi too thick. I removed the top of the "front" part of the game and I also shaved the area for the screw hole flat on the inside.

                                  0_1489274610001_gba-cartridge-shaved.png

                                  Then with that going well I soldered up the test USB port to the end of the wires, and that worked, so then I tried desoldering the plug from my USB sound card. That didn't go so well. When I was putting the board in my PCB vice I heard a crack, and sure enough, the capacitor for the headphone plug ground cracked off. I thought that maybe it wouldn't be a huge deal, so I soldered across the pads to make the connection to ground. I figured that headphones can't draw that much, so eliminating the capacitor may be ok. Well, it wasn't. After I soldered up the sound card to the Pi I was getting a blinking red light and the Pi would not boot.

                                  Just in case it was my USB leads and not the sound card I tried connecting up a USB port and keyboard to the Pi along with a controller, and sure enough, everything booted just fine. That said, when I plug in a USB drive, the Pi won't detect it, and I'm not sure why. The drive does work in my Genesis hub Pi 3, so I don't think it's a Raspbian issue. I am thinking that there may not be enough power getting to the USB port, so I'm going to try an alternate power source like straight from GPIO and see what happens.

                                  I put the GBA game on the end of the Pi and it runs just fine, so even smooshed in the cartridge, no bad contacts.

                                  0_1489272897773_pi3-usb-leads-connected-to-controller.jpg

                                  📷 @obsidianspider

                                  1 Reply Last reply Reply Quote 1
                                  • obsidianspiderO
                                    obsidianspider
                                    last edited by

                                    Well, I'm thinking maybe it isn't a power issue. I tried going to GPIO for power and then I started getting lightning bolts on the screen, so instead I used a breakout board to solder up the USB power directly to the 5V in that I'm using to power the Pi and my USB drive still isn't being recognized. The controller and keyboard both work just fine, but those also aren't using USB 2.0 speeds. (Per lsusb -t they communicate at 1.5 Mbit)

                                    I also tried plugging in a USB 2.0 hub. That's not recognizing, a USB Wifi adapter isn't recognizing, and no USB drives are recognizing. The USB drive has a steady blink once per second or so.

                                    I'm not convinced I didn't mess something up with the USB ports when cutting things down, or maybe connecting up that damaged sound card fried something.

                                    📷 @obsidianspider

                                    1 Reply Last reply Reply Quote 0
                                    • obsidianspiderO
                                      obsidianspider
                                      last edited by

                                      I tried going with the "nuclear option" to get the drive to read by adding dwc_otg.speed=1 to /boot/cmdline.txt and after booting the drive is recognizing, but then the controller wasn't. Thinking maybe I fried the controller with all of my power testing I tried plugging the controller into my laptop and it worked just fine, so lowering the USB speeds seemed to break the controller functionality.

                                      Removing the "nuclear option" and rebooting caused the drive to no longer be recognized, but my controller started working again.

                                      I read somewhere that data lines for USB can be touchy and I saw somewhere that they should be twisted so you don't have issues. I'm not sure if something like that will help or not.

                                      📷 @obsidianspider

                                      1 Reply Last reply Reply Quote 0
                                      • obsidianspiderO
                                        obsidianspider
                                        last edited by

                                        It looks like twisting the data wires worked. Some searching around online showed that in USB cables the data lines are usually a twisted pair in a USB 2.0 cable, so I tried it.

                                        Plugging in two USB drives allows both of them to show up with no issues.

                                        $ lsusb -t
                                        /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
                                            |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
                                                |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
                                                |__ Port 2: Dev 10, If 0, Class=Mass Storage, Driver=usb-storage, 480M
                                                |__ Port 4: Dev 11, If 0, Class=Mass Storage, Driver=usb-storage, 480M
                                        
                                        $ lsusb
                                        Bus 001 Device 011: ID 058f:6387 Alcor Micro Corp. Flash Drive
                                        Bus 001 Device 010: ID 0781:5406 SanDisk Corp. Cruzer Micro U3
                                        Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
                                        Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
                                        Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
                                        
                                         $ df -h
                                        Filesystem      Size  Used Avail Use% Mounted on
                                        /dev/root       7.3G  2.1G  4.9G  31% /
                                        devtmpfs        364M     0  364M   0% /dev
                                        tmpfs           368M     0  368M   0% /dev/shm
                                        tmpfs           368M  5.2M  363M   2% /run
                                        tmpfs           5.0M  4.0K  5.0M   1% /run/lock
                                        tmpfs           368M     0  368M   0% /sys/fs/cgroup
                                        /dev/mmcblk0p1   57M   21M   37M  36% /boot
                                        /dev/sda1       2.0G  1.3M  2.0G   1% /media/usb0
                                        /dev/sdb1       965M  514M  451M  54% /media/usb1
                                        

                                        0_1489285177780_pi3-two-usb-drives.jpg

                                        I also tried plugging and unplugging a number of times, and also trying to plug and unplug my USB controller and a drive in and out and things seem to be ok.

                                        $ lsusb -t
                                        /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
                                            |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
                                                |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
                                                |__ Port 2: Dev 16, If 0, Class=Mass Storage, Driver=usb-storage, 480M
                                                |__ Port 4: Dev 15, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
                                        
                                        $ lsusb
                                        Bus 001 Device 015: ID 0583:2060 Padix Co., Ltd (Rockfire) 
                                        Bus 001 Device 016: ID 0781:5406 SanDisk Corp. Cruzer Micro U3
                                        Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
                                        Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
                                        Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
                                        
                                        $ df -h
                                        Filesystem      Size  Used Avail Use% Mounted on
                                        /dev/root       7.3G  2.1G  4.9G  31% /
                                        devtmpfs        364M     0  364M   0% /dev
                                        tmpfs           368M     0  368M   0% /dev/shm
                                        tmpfs           368M  5.2M  363M   2% /run
                                        tmpfs           5.0M  4.0K  5.0M   1% /run/lock
                                        tmpfs           368M     0  368M   0% /sys/fs/cgroup
                                        /dev/mmcblk0p1   57M   21M   37M  36% /boot
                                        /dev/sda1       2.0G  1.3M  2.0G   1% /media/usb0
                                        

                                        I'm really glad that it was an issue of the data wires needing to be twisted and not something I fried on the Pi.

                                        While I was trying various things and moving power around I removed the micro USB port for power. I had the same problem as the HDMI port with the surface mount contacts and the through hole pads being too hard to heat up all at the same time. I ended up messing up some more traces down there. I really need to learn a better way to do that, but everything works.

                                        That's enough for today.

                                        Tomorrow I'll do some messing around with the onboard audio to see how crummy it is, or to see if I need to shop for another USB sound card and not crack a capacitor off.

                                        📷 @obsidianspider

                                        mooseprM 1 Reply Last reply Reply Quote 0
                                        • mooseprM
                                          moosepr @obsidianspider
                                          last edited by

                                          @obsidianspider I was going to say try twisting the data lines but you beat me to the punch! I think is so that any interference hits both wires together and kind cancels itself out. Or maybe USB is just magic, and the twisting helps make the magic flow

                                          want to get a tft into your project, look no further than here https://retropie.org.uk/forum/topic/7464/ili9341-tft-screen-guide

                                          obsidianspiderO 1 Reply Last reply Reply Quote 1
                                          • obsidianspiderO
                                            obsidianspider @moosepr
                                            last edited by

                                            @moosepr From what I read online it's to reduce/eliminate crosstalk. Kind of like in an Ethernet cable.

                                            📷 @obsidianspider

                                            1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last 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.