BMO GBZ Complete Build Guide

Show off your completed Game Boy Zero, or post your build logs here!
Post Reply
User avatar
infinitLoop
Posts: 376
Joined: Mon Dec 24, 2018 11:46 am
Has thanked: 159 times
Been thanked: 127 times
Contact:

BMO GBZ Complete Build Guide

Post by infinitLoop » Wed Sep 11, 2019 6:22 pm

Hey everyone. :) As promised, here is a (pretty) complete build guide on how to do your own BMO GBZ. I took lots of pictures, and will document my whole build, even the common stuff usually covered elsewhere.
Early Videos - In ActionShow


This is based around the Pocket Adventures "basic" Assist setup, but if you want an easier build (I'd say that the PA stuff is on the harder side of "easy"), then if you opt for Tinkerboy's v2 or v3 board, it will eliminate the need for the Audio DAC/amp, headphone jack, and battery monitor, and you only have to connect the board to the pi via USB, which is as easy as you're going to get. (i have not yet tried running my battery monitor with his board setup, but he does have instructions for his monitor software at his website).

I uploaded the printed stand I designed to Thingiverse, here: https://www.thingiverse.com/thing:3855445

and I put everything I wrote and pulled together for the software here: https://github.com/infinitLoop/BMO_GBZ (instructions for these are also in a later post, here)

I made everything into easy shell script installs, so each step is basically one command, and you can choose which bits you want to do.

First, the parts...
IMG_5707.jpg
IMG_5707.jpg (1.25 MiB) Viewed 516 times
RPi0
the shell, buttons and screen protector all came from RetroModding.com
GPIO Assist, Power Assist (in White!), and common ground button board from Pocket Adventures
3.5" composite screen from Gearbest
I2S DAC and Amp from Adafruit
3-way navigation toggle for volume and hotkey from SparkFun
soft tactiles for the rear buttons
speaker
usb port
ads-1x15
DPDT switch (don't know where i got this, but pretty much any will do)
audio jack (save yourself a little hassle and get a button board with an integrated audio jack, like this one on PA or Tinkerboy's boards
125054 li-ion 4000mah battery off e-bay
silicon pads off e-bay

the printed parts...
IMG_5704.jpg
IMG_5704.jpg (915.87 KiB) Viewed 516 times
rear buttons
i2s amp bracket
ads bracket
screen stencil
power switch holder
Power hole plug (or, put a barrel jack in the spot, or another hotkey button if you want)
screen bracket (a remix of this one by sixteenbit):
Composite Bracket.stl
(218.05 KiB) Downloaded 15 times
and here's one for 3.2in SPI screens:
SPI bracket.stl
(290.22 KiB) Downloaded 11 times
game cart / power assist holder:
game cartridge.stl
(99.79 KiB) Downloaded 12 times
audio jack holder:
audio jack holder.stl
(2.23 KiB) Downloaded 9 times
hole drill guide:
hole guide.stl
(17.27 KiB) Downloaded 11 times
I used this filament for the print (look for "mint green" or"mint blue"), and I think it turned out to be a pretty good match for what I was looking for.

Now, off to the modding...


start off by clearing out the tabs around where the screen mounts, and where the x/y button will be on the front shell, and sand down the audio jack holder on the rear case (if the board and/or jack you use fits with it, then leave it):
IMG_5677.jpg
IMG_5677.jpg (598.64 KiB) Viewed 516 times

next, we can mark off the screen border with the stencil, and cut it out with a hand tool:
IMG_5678.jpg
IMG_5678.jpg (537.97 KiB) Viewed 516 times
IMG_5679.jpg
IMG_5679.jpg (467.82 KiB) Viewed 516 times
IMG_5680.jpg
IMG_5680.jpg (545.86 KiB) Viewed 516 times

then clean it up and sand down the inside area around the screen so that it doesn't press up against it when it is mounted:
IMG_5681.jpg
IMG_5681.jpg (603.91 KiB) Viewed 516 times


and that's attachment limits folks... on to the next steps in replies....

:arrow:



:arrow:
.
Last edited by infinitLoop on Sat Sep 14, 2019 12:28 pm, edited 13 times in total.

User avatar
infinitLoop
Posts: 376
Joined: Mon Dec 24, 2018 11:46 am
Has thanked: 159 times
Been thanked: 127 times
Contact:

Re: BMO Build Guide

Post by infinitLoop » Wed Sep 11, 2019 6:28 pm

now that the screen area is cleared out, we can use the bracket and the hole guide to drill pilot holes, for the most accurate holes, finishing it will a step-up drill bit...
I'm using a different hole guide in this picture, but using the snap-in one with the actual bracket you use will produce better results
IMG_5683.jpg
IMG_5683.jpg (514.64 KiB) Viewed 515 times
IMG_5684.jpg
IMG_5684.jpg (384.39 KiB) Viewed 515 times
IMG_5685.jpg
IMG_5685.jpg (498.96 KiB) Viewed 515 times

cut out the rear button holes using the step-up drill, and the middle screw holes as guides:
IMG_5686.jpg
IMG_5686.jpg (517.97 KiB) Viewed 515 times
IMG_5687.jpg
IMG_5687.jpg (497.5 KiB) Viewed 515 times

make sure the screen area is sanded well, and then go over the inside with a black oil-based paint sharpie. do it from the INSIDE of the case, or when you slip and paint a black mark across your gameboy, you will be sorry. ;) the sharpie can be skipped, but does help hide the screen cut-away nicely behind the screen protector:
IMG_5682.jpg
IMG_5682.jpg (750.15 KiB) Viewed 514 times
IMG_5689.jpg
IMG_5689.jpg (684.27 KiB) Viewed 514 times
IMG_5690.jpg
IMG_5690.jpg (442.85 KiB) Viewed 514 times

a little test fitting, to make sure everything fits pretty well and nothing is pressing against the screen too much...
IMG_5688.jpg
IMG_5688.jpg (1.19 MiB) Viewed 514 times

mounting the bracket
make sure you have tested the screen, and are confident it's working before doing this!

use some glue or epoxy (i'd recommend hot glue if this is you are not a confident builder here, since you might have to remove it to replace or adjust things, and hot glue comes off very easy with some alcohol, but with more permanent / cleaner solutions, it's much harder getting things apart with breaking something) and just go around the edge of the bracket (if you are using one of the ones linked here, you should not need a lot of glue - just some along the top would be enough).
IMG_5708.jpg
IMG_5708.jpg (631.97 KiB) Viewed 514 times



and now to assemble the insides...


in the next reply...
Last edited by infinitLoop on Sat Sep 14, 2019 11:10 am, edited 1 time in total.

User avatar
infinitLoop
Posts: 376
Joined: Mon Dec 24, 2018 11:46 am
Has thanked: 159 times
Been thanked: 127 times
Contact:

Re: BMO Build Guide

Post by infinitLoop » Wed Sep 11, 2019 6:36 pm

my preference with these builds is usually to mount the rear buttons on the screen bracket, using soft-press tactile buttons, since that keeps nearly everything (except the Power Supply and battery) mounted to the front case, and minimizes the wires needed. i think the position just feels better here too than at the common, above-the-battery mount position. i designed some rear buttons that utilize the gameboy's rear walls for stability and smooth action (link in my bio and in the first post). after printing them, i sand them down a bit and then coat with a couple coats of clear-coat, and they usually are pretty much unmistakable from "real", injection-molded buttons.

using the GPIO Assist (and other Assist boards) makes wiring everything pretty straight-forward, assuming you get it soldered to the pi correctly. it's pretty much, solder A to A, Start to Start, etc. since i used i2s audio, i did have to re-route a couple buttons though. One pin goes to the pwm0 (gpio 18 -> BCLK). One goes to the Left Shoulder (gpio 21 -> DIN). And the last to the Y button (gpio 19 -> LRCLK). I just ran those two buttons to GPIO 7 and 8. You could choose PWM audio, and go with the standard setup on the board, but I think i2s sounds so much clearer (except for the occasional *pop* as it turns on). Another option is usb audio, but that will either take up your usb port, or you will need to add a hub (or, better yet, use the Pro Assist board from PA that has all that built-in).

I used the L/R Trigger (14 and 15) and the Hotkey (4) for the volume/hotkey controls. And finally I chose pins 17 and 27 for shutdown and keep-alive, respectively.

although it has worked for me in other builds, running the i2s inputs through the audio in/out on the board caused the buttons to interrupt the pi, so i had to re-route it on this one eventually.

To connect the GPIO assist, line it up with the pi, and hold it against the pi with a clamp, or with some screws and bolts through a couple of the mounting holes. Make sure to pay close attention to the usb pad/hole alignment, and solder that first, to make sure you don't bridge that (it's much harder undoing all of the GPIO soldering if you get that far before realizing it). You only need to solder the holes that are circled, but make sure you do the composite/tv one if you are using that, and the main power holes.

If running a battery monitor, make sure you wire it through the switch, to cut off the power when in the off position, or you can have a situation where it will still power the pi, or just leak power when off (also - if using the GPIO assist, just wire to the labelled pads for SCA, SCL, Gnd, and 5v, and if using one of the Power Assists from Pocket Adventures, you shouldn't need the resistor in-line).
battery monitor wiring examplesShow
generic_battery_monitor_example.png
generic_battery_monitor_example.png (196.02 KiB) Viewed 453 times
powerboost_battery_monitor_example.png
powerboost_battery_monitor_example.png (179.47 KiB) Viewed 453 times
IMG_5711.jpg
IMG_5711.jpg (964.07 KiB) Viewed 514 times
IMG_5714.jpg
IMG_5714.jpg (587.55 KiB) Viewed 514 times
IMG_5716.jpg
IMG_5716.jpg (839.52 KiB) Viewed 514 times
IMG_5718.jpg
IMG_5718.jpg (816.72 KiB) Viewed 514 times
Last edited by infinitLoop on Sat Sep 14, 2019 1:52 pm, edited 7 times in total.

User avatar
infinitLoop
Posts: 376
Joined: Mon Dec 24, 2018 11:46 am
Has thanked: 159 times
Been thanked: 127 times
Contact:

Re: BMO Build Guide

Post by infinitLoop » Wed Sep 11, 2019 6:45 pm

ok! now that should be it for the GBZ hardware, so onto the software.
IMG_5857.jpg
IMG_5857.jpg (732.52 KiB) Viewed 453 times
This was a bit of a challenge, for sure, but I think I finally got everything to a point where it's super easy to set up.

The faces for the backgrounds in the theme and splash video were all originally found online, but I did edit them some and create some derivatives for various consoles. Some crazy kid made a version of the Guardians of Sunshine that I managed to track down a Linux build of, and figured out how to get that up and going, and then into Retropie, and put all that into an install script. (i still need to do a little more tweaking to that when i have a minute - there's too much debug noise, the help screen has the old controls still, and a couple other things)

You will need to start with a RetroPie install - I have been preferring 4.3 lately over the more recent ones, for pi zero. Seems like the later ones (although Great on pi3*s) are too much for the zero. But you do you, and install whichever makes you happy.

Here we go..

if you need to setup i2s audio, just run this (say "y"es first to install, but say "n" to the next question about the background service):

Code: Select all

cd ~; curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | sudo bash
if you need to install retrogame for your controls, here is the command:

Code: Select all

cd ~; curl https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/retrogame.sh > retrogame.sh && sudo bash retrogame.sh
to edit the controls, run:

Code: Select all

sudo nano /boot/retrogame.cfg
for this setup (using the Pocket Adventure GPIO Assist, and re-routing the i2s audio), the config looks like:

Code: Select all

UP        22  # Joypad up
DOWN       1  # Joypad down
LEFT      23  # Joypad left
RIGHT      0  # Joypad right
ENTER     12  # 'Start' button
SPACE      5  # 'Select' button
A         16  # 'A' button
B          6   # 'B' button
X         26  # 'X' button
Y          7  # 'Y' button
L          8  # Left shoulder button
R         20  # Right shoulder button
H          4  # Hot key
#U         15  # Volume Up
#D         14  # Volume Down
ESC     5 12  # exit game

This is my /boot/config.txt:
config.txtShow

Code: Select all

### Disable warning overlay
avoid_warnings=1

### Memory split ###
gpu_mem_256=128
gpu_mem_512=256
gpu_mem_1024=256

### Small Screen Sizing ##
framebuffer_width=320
framebuffer_height=240

### Upside-down Screen Mount #
display_rotate=2

### Overscan Placement ###
#disable_overscan=1
overscan_scale=1
overscan_left=-5
overscan_right=-5
overscan_top=-24
overscan_bottom=1

### I2S Audio  ##############
dtparam=i2s=on
dtoverlay=hifiberry-dac
dtoverlay=i2s-mmap
audio_pwm_mode=2

### Safe Shutdown ###########
dtoverlay=gpio-poweroff,gpiopin="27",active_low="y"

### Enable I2C for Battery monitor #
dtparam=i2c_arm=on

### Disable SPI
dtparam=spi=off

#### Disable PI Status LED ######
dtparam=act_led_trigger=none
dtparam=act_led_activelow=on

### Disable Rainbow SPLASH ######
disable_splash=1

## Disable Bluetooth #########
dtoverlay=pi3-disable-bt

## Disable WIFI ##############
#dtoverlay=pi3-disable-wifi

### Disable camera ##############
start_x=0

### Disable uart
enable_uart=0


The BMO stuff...

Install the library
Download the library and update permissions to allow scripts to execute:

Code: Select all

cd ~ && sudo git clone http://github.com/infinitLoop/BMO_GBZ && sudo chmod 777 -R ~/BMO_GBZ
Install BMO EmulationStation Theme
theme screenshotShow
IMG_5858.jpg
IMG_5858.jpg (862.38 KiB) Viewed 453 times
Install the BMO theme for ES (you will need to select it in the Start button menu, UI Options). Enable Instant transition for best effect.

Code: Select all

sudo ~/BMO_GBZ/./theme_install.sh
Install Splashscreen
splash screen screenshotShow
IMG_5866.jpg
IMG_5866.jpg (877.44 KiB) Viewed 453 times
Copy the "Who wants to play video games" splash screen to the proper folder (you will need to select it in the RetroPie Options / Splashscreen).

Code: Select all

sudo cp ~/BMO_GBZ/WhoWantsToPlay640.mp4 ~/RetroPie/splashscreens/'Who Wants To Play Video Games.mp4'
Install Guardians of Sunshine Game
guardians of sunshine screenshotsShow
IMG_5859.jpg
IMG_5859.jpg (777.46 KiB) Viewed 453 times
IMG_5861.jpg
IMG_5861.jpg (528.76 KiB) Viewed 453 times
IMG_5860.jpg
IMG_5860.jpg (662.6 KiB) Viewed 453 times
Install the Adventure Time game and details for Emulationstation

Code: Select all

sudo ~/BMO_GBZ/./gos_install.sh
Install Battery Monitor icon
Install the battery monitor icon (requires an ADC hooked into the battery connection, such as an ADS-1015/ADS-1115 or arduino/pro-micro):

Code: Select all

sudo ~/BMO_GBZ/./monitor_install.sh
if you need to adjust voltage settings or ADC type

Code: Select all

sudo nano ~/BMO_GBZ/battery_monitor.py
Install GPIO Controls
Volume screenshotsShow
IMG_5867.jpg
IMG_5867.jpg (513.26 KiB) Viewed 453 times
IMG_5869.jpg
IMG_5869.jpg (584.85 KiB) Viewed 453 times
IMG_5870.jpg
IMG_5870.jpg (644.16 KiB) Viewed 453 times
Shutdown screenShow
IMG_5865.jpg
IMG_5865.jpg (691.44 KiB) Viewed 453 times
Install options for digital volume, safe shutdown and a hotkey to change the visibility of the Battery Monitor icon with GPIO buttons:

Code: Select all

sudo ~/BMO_GBZ/./gpio_controls_install.sh
Edit this file to enable/disable the controls and configure the GPIO pins

Code: Select all

sudo nano ~/BMO_GBZ/gpio.config
by default it will be:

Code: Select all

DoVolumeControl = True
DoMonitorControl = True
DoShutdownControl = True

GPIO_VolumeUp = 15
GPIO_VolumeDown = 14
GPIO_Monitor = 4
GPIO_Shutdown = 17
Install Safe Shutdown
If you have a PSU or Safe Shutdown circuit that requires a signal during the software shutdown, run this to set up keep-alive/powerdown signal. Update the pin from 27 if you are using a different one.

Code: Select all

sudo echo 'dtoverlay=gpio-poweroff,gpiopin="27",active_low="y"' >> /boot/config.txt
Fix Video Splash Screen for Digital Audio
Digital audio devices can cause a stutter and lack of audio on the intro splash screen. Run one of these to fix it:

RetroPie 4.3-

Code: Select all

sudo sed -i 's/omxplayer -o both -b --layer 10000/omxplayer -o alsa -b --layer 10000/g' /opt/retropie/supplementary/splashscreen/asplashscreen.sh
RetroPie 4.4+

Code: Select all

sudo sed -i 's/omxplayer -o both -b --layer 10000/omxplayer -o alsa -b --layer 10000/g' /etc/init.d/asplashscreen
Last edited by infinitLoop on Fri Sep 13, 2019 4:54 pm, edited 4 times in total.

User avatar
infinitLoop
Posts: 376
Joined: Mon Dec 24, 2018 11:46 am
Has thanked: 159 times
Been thanked: 127 times
Contact:

Re: BMO GBZ Complete Build Guide

Post by infinitLoop » Thu Sep 12, 2019 6:37 pm

and for that final BMO touch, you can print up this stand that I designed. I did a combined one and put it in the bunch on Thingiverse, if you only can do one color, and just want to paint the BMO on the side.

i had to fix a broken bracket on the printer, and finally had time to do it, so i haven't been able to even try the dual extruder in a while... it did not go smoothly.

starting off well..
IMG_5703.jpg
IMG_5703.jpg (570.01 KiB) Viewed 453 times
then, not so much :cry: :cry: :oops: :x
IMG_5713.jpg
IMG_5713.jpg (703.81 KiB) Viewed 453 times
a couple more tries/fails, and finally got everything set up correctly - lookin good...
IMG_5717.jpg
IMG_5717.jpg (634.29 KiB) Viewed 453 times
and... B M O ! :D :D :D
E77718B5-07F8-4793-A4D9-998F1AC85F93.JPG
E77718B5-07F8-4793-A4D9-998F1AC85F93.JPG (542.68 KiB) Viewed 451 times

Post Reply

Who is online

Users browsing this forum: Bing [Bot] and 1 guest