# How To Homebrew Game Boy Games

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/133/602/medium800/hacks_gbgames.jpg?1731521772)

![](https://cdn-learn.adafruit.com/assets/assets/000/133/515/medium800/gaming_dorkyscreen_5.58.24%E2%80%AFPM.jpg?1730931193)

![](https://cdn-learn.adafruit.com/assets/assets/000/133/599/medium800thumb/gaming_dorkydemo.jpg?1731470490)

Creating your own Game Boy games and playing them on real hardware has never been easier. This guide will show you what you need get started creating games with GB Studio.

You can export game ROM files to play in an emulator, on the web, or even better, flash your own Game Boy cartridge to play on a Game Boy, Game Boy Color, or Game Boy Advance!

If you want to try it out, here's a link to the playable game on itch.io: _**[Dorky Demustard](https://itch.io/embed-upload/11974727?color=333333)**_.

https://youtu.be/fT6WPcIi1Fc

Primary: This guide was inspired by the Green Day Dookie Demastered project, which re-imagined the album for obsolete/inconvenient playback methods. But since they only made 25 copies of the Game Boy cartridge with Welcome to Paradise on it, we decided to build our own take on it.

![](https://cdn-learn.adafruit.com/assets/assets/000/133/544/medium800/gaming_gddd.jpg?1731104934)

## Game Authoring Tools
## GB Studio

You'll need to download and install **[GB Studio](https://www.gbstudio.dev/)**, the free, open source Game Boy development application for macOS, Windows, and Linux.

![gaming_icon_white.png](https://cdn-learn.adafruit.com/assets/assets/000/133/305/medium640/gaming_icon_white.png?1730136694)

## Pixel Editors

You will probably want to use a pixel art program such as [Aseprite](https://www.aseprite.org/) (or [Libresprite](https://libresprite.github.io/#!/), an open source fork) for editing sprites and backgrounds.&nbsp;

For more advanced backgrounds, the [Tiled](https://www.mapeditor.org/) map editor is indispensable.

## &nbsp;
![gaming_sp.jpeg](https://cdn-learn.adafruit.com/assets/assets/000/133/545/medium640/gaming_sp.jpeg?1731105120)

![gaming_tiled-logo-header.png](https://cdn-learn.adafruit.com/assets/assets/000/133/546/medium640/gaming_tiled-logo-header.png?1731105357)

# How To Homebrew Game Boy Games

## GB Studio

![](https://cdn-learn.adafruit.com/assets/assets/000/133/548/medium800/gaming_gbs.jpg?1731105712)

 **GB Studio** is a modern, GUI-based authoring tool for making Game Boy games. It's available for MacOS, Windows, and a few flavors of Linux.

In it, you manage the flow of your game with "scenes" that contain game levels (as well as menus, a splash screen, and a title screen) and define the look and behavior of assets within the game levels.

![gaming_dorkyscreen_5.41.24 PM.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/554/medium640/gaming_dorkyscreen_5.41.24%E2%80%AFPM.jpg?1731110067)

## Game Events

Using drag-and-drop tools, you can adjust properties and events to define interactions and game play.&nbsp;

![gaming_gbdialogues.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/558/medium640/gaming_gbdialogues.jpg?1731110311)

## Music Tracker

GB Studio contains an internal music tracker you can use to create songs in your game, or you can import tracker files created externally.

![gaming_tracker.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/557/medium640/gaming_tracker.jpg?1731110214)

## Game Assets

Visual game assets such as backgrounds and sprites are created with an external pixel art tool, such as [Aseprite](https://www.aseprite.org/), but you can also download asset packs from online repositories such as&nbsp;[itch.io](https://itch.io/game-assets).

![gaming_pixart.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/561/medium640/gaming_pixart.jpg?1731110717)

## Testing and Debugging

While you're working on your game you can test it with a one-button compiler, which launches a debugger and emulator.

![gaming_debug.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/559/medium640/gaming_debug.jpg?1731110431)

## ROM Export

Once you're ready to play your game or distribute it to others, you can export a ROM file (for use on flash cartridges or software emulators)&nbsp;

You can also export .pocket files for the GB Studio player on [Analogue Pocket](https://www.analogue.co/pocket) handhelds.

And, for even wider audiences, you can export your game for web play as an HTML game on itch.io.

![gaming_dorkyscreen_5.54.04 PM.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/560/medium640/gaming_dorkyscreen_5.54.04%E2%80%AFPM.jpg?1731110588)

Once you've downloaded and installed GB Studio, use [these docs](https://www.gbstudio.dev/docs/getting-started/) to get started creating a basic project.

# How To Homebrew Game Boy Games

## Pixel Art Fundamentals

## Pixels

What is pixel art? **Pixel** is a word for individual “picture elements” on a screen, such as your computer monitor or your handheld gaming device. They are essentially the smallest unique element of a display that is comprised of a single color (this is true of most all displays other than vector scopes). If you look really, really closely at your screen, you’ll see lots of individual pixels that make up the images you normally see when you step back and take it all in.

Here's a closeup of a section of this very webpage so you can see the individual pixel that make up the guide's main graphic.

![](https://cdn-learn.adafruit.com/assets/assets/000/074/874/medium800/gaming_screenPixels.jpg?1556124769)

## Pixel Art

For our purposes, **pixel art** refers to a type of graphics made for use in games, where the individual pieces of art (sometimes referred to as **sprites** ) are small enough to be created by hand, one pixel at a time. This is as opposed to graphics made from pre-rendered or real-time 3D models, or graphics of sufficient complexity and size that it’s impractical to create the art at the individual pixel level.

Here, we see pixel art from the game Celeste. The backgrounds and characters are artfully constructed pixel art. And incredibly appealing!

![](https://cdn-learn.adafruit.com/assets/assets/000/074/875/medium800/gaming_celeste.png?1556125519 Scene from the game Celeste)

## Software and Resources

On the next page we'll use the pixel art editor that's built right into MakeCode Arcade. However, if you'd like to explore other pixel art software, here are some good ones to check out:

- [**Piskel**](https://www.piskelapp.com/) is a free online editor for pixel art and animated sprites
- [**Aseprite**](https://www.aseprite.org/) is a paid app ($15) that many professionals use -- there's also a free trial, and it's open source, so you can [build the full version for yourself](https://github.com/aseprite/aseprite) if you are inclined.
- **[Pixilart](https://www.pixilart.com/)** is another very nice, free online editor

These [pixel art tutorials by MiniBoss](https://blog.studiominiboss.com/pixelart) are excellent (they created the fantastic artwork for Celeste). In them, they cover both static and animated sprites (and a whole lot more!)

![](https://cdn-learn.adafruit.com/assets/assets/000/074/896/medium800/gaming_minibosstute.png?1556134771)

For a deeper dive into creating graphics for the Nintendo Entertainment System (NES) [have a look here](https://megacatstudios.com/blogs/press/creating-nes-graphics).

[This Game Development magazine article on creating retro styled games](https://gamedevelopment.tutsplus.com/articles/going-old-school-making-games-with-a-retro-aesthetic--gamedev-3567) has a great look at different retro art styles.

## Color Palette

Pixel art also tends to imply the use of a limited color palette, such as 1-bit (monochrome), 4-bit (16 colors), or 8-bit (256 colors) graphics seen in game consoles of yesteryear. Modern games tend to use 16-bit (65,536 colors) or 24-bit (16,777,216 colors).

Not to say that pixel art with limited color palettes aren’t thriving now! But these color restrictions are now often chosen for stylistic reasons, not technological ones when using the latest, most powerful computers and consoles.

If we look closely at the Celeste character sprite from the scene above, we can see that she is made up of only twelve colors (including transparency as one "color").

![gaming_celeste_pallet.png](https://cdn-learn.adafruit.com/assets/assets/000/074/876/medium640/gaming_celeste_pallet.png?1556309146)

On handheld systems, such as the **PyBadge** and **PyGamer** , we can create pixel art that will look great on the small screens when compared to the relative busy-ness of higher color depth graphics. (More on aliasing in a bit.)

Want to check out some excellent examples of pixel art palettes? [Have a look over here at LOSPEC](https://lospec.com/palette-list)!

## The Canvas

When creating pixel art characters, one of the first decisions you'll make is the size of the image sprite you're going to make. Here's a typical canvas set up for a 16 pixel wide, by 16 pixel high image.

![](https://cdn-learn.adafruit.com/assets/assets/000/074/869/medium800/gaming_canvas16x16_02.png?1556118105)

Here's a similar canvas, except this time its set for a 32x32 pixel image.

![](https://cdn-learn.adafruit.com/assets/assets/000/074/870/medium800/gaming_canvas32x32_01.png?1556118342)

Each cell of the canvas can have a single pixel drawn into it, or no pixel at all. Cells with no pixel are treated as a transparent part of the image by the game engine.

First, we have Mario from the NES Super Mario Bros. game He's made in a 16 x 16 pixel canvas and has a four color palette (one color being transparency).

![](https://cdn-learn.adafruit.com/assets/assets/000/074/899/medium800/gaming_nesMariotiny.png?1556139765)

![](https://cdn-learn.adafruit.com/assets/assets/000/074/898/medium800/gaming_newMarioFour02.png?1556139661)

Next we have a 32x32 pixel Mario from SNES Super Mario World. He's now sporting a 16-color palette!

![](https://cdn-learn.adafruit.com/assets/assets/000/074/868/medium800/gaming_marioSNES_actual.png?1556118045)

![](https://cdn-learn.adafruit.com/assets/assets/000/074/864/medium800/gaming_snesMario.png?1556117577)

Finally, here's a 32x32 pixel sprite from New Super Mario Bros. for Nintendo DS. The sprite looks like it was not hand made, pixel by pixel, so much as rendered from a 3D model, since the shading is so complex. The color palette is virtually unrestricted, as evidenced by the huge number of different shades of blue, red, Mario's skin-tone, and more.

![](https://cdn-learn.adafruit.com/assets/assets/000/074/866/medium800/gaming_newMario.png?1556117597)

![](https://cdn-learn.adafruit.com/assets/assets/000/074/865/medium800/gaming_newMario_32_grid.png?1556117591)

## Sprite Sheets

If you'd like to look at examples of pixel art from existing games, search online for "sprite sheets". For example, "Mario sprite sheets" turns up images such as these, which are pulled directly from the in-game resources:

![gaming_nesMarioSheet.png](https://cdn-learn.adafruit.com/assets/assets/000/074/995/medium640/gaming_nesMarioSheet.png?1556309079)

![gaming_marioSNESSheet.png](https://cdn-learn.adafruit.com/assets/assets/000/074/996/medium640/gaming_marioSNESSheet.png?1556309093)

## Drawing Sprites

In this example, we see a palette of 16 colors (the first one isn’t a color, it allows you to make a transparent pixel) and then we have a grid of 16 x 16 pixels for the art. You can pick a color and then use the pencil tool, for example, to click and place pixels where you like.

![](https://cdn-learn.adafruit.com/assets/assets/000/074/882/medium800/gaming_wumby2.png?1556131063)

Here's a very nice example from the [MiniBoss Studio tutorials](https://blog.studiominiboss.com/pixelart). In this sprite art progression for a shovel, note how the limited color palette is still enough to

- first, create the basic form of the object
- then, "shade" it (add dimension) using additional colors
- finally, to round off the appearance of the corners using anti-aliasing techniques

![](https://cdn-learn.adafruit.com/assets/assets/000/074/886/medium800/gaming_Screen_Shot_2019-04-24_at_11.46.09_AM.png?1556131619)

## Anti-Aliasing

**Aliasing** is the name given to the rough, stair-stepping effect that's seen when pixels are used to create curved or diagonal lines. While we can't change the basic problem of square (or rectangular on some screens) pixels being used to represent curved or diagonal shapes, we can lessen the effect by using a technique known as **anti-aliasing**.

Typically, anti-aliasing is achieved by adding medium contrast pixels at the problem areas. In other words, an aliased black line on a white background can be anti-aliased by the addition of grey pixels to help fool the eye.

In this example, we start with two colors, black and white. To fix the aliasing, we add pixels in four shades of gray.

![](https://cdn-learn.adafruit.com/assets/assets/000/074/888/medium800/gaming_antialiasing02.png?1556133018)

This can look a bit strange and fuzzy up close, but look at these same images at actual scale to see how effective the anti-aliasing is at removing the "jaggies".

![](https://cdn-learn.adafruit.com/assets/assets/000/074/994/medium800/gaming_aa_scale3.png?1556308778)

# How To Homebrew Game Boy Games

## Dorky Demustard Game

## Template Project

The Dorky Demustard game starts with the GB Studio Sample Project (GBS 1.0). This is described as "A short 4 color top down game".

Give your project a name and path, then click **Create Project**

![gaming_sample.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/562/medium640/gaming_sample.jpg?1731114341)

You may download the final project zip file here:

[Dorky_Demustard.zip](https://cdn-learn.adafruit.com/assets/assets/000/133/600/original/Dorky_Demustard.zip?1731471001)
## Default Game World

Here's the default Game World view from the template. You can see the eight scenes available as well as their connections.

For example, the **Logo** scene flows to the **Title Screen** scene which then flows to the **Outside** scene when the player presses `Start`.

![gaming_dd_start.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/563/medium640/gaming_dd_start.jpg?1731114581)

Primary: The Game Boy screen is 160 x 144 pixels. A game tile is 8 x 8 pixels, the smallest unit that fits into graphic memory. So, a single screen level is 20 x 18 tiles. 

## Scene Pruning

To create Dorky Demustard, we'll delete a few un-needed scenes an adjust the scene flow.

The Outside scene is large, 32x32 tiles (a tile is 16x16 pixels). It covers roughly 4 times the area of the Game Boy screen, which means the game camera pans and scans as the character moves.

Click and drag the player start icon from the **Outside** scene to the **House** scene.

![gaming_start0.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/564/medium640/gaming_start0.jpg?1731115271)

![gaming_start1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/565/medium640/gaming_start1.jpg?1731115298)

Then, click and delete the **Outside** scene, we won't be using it.

![](https://cdn-learn.adafruit.com/assets/assets/000/133/566/medium800/gaming_prune1.jpg?1731115406)

In fact, let's get ruthless -- delete the **Stars** and **Underground** scenes, too!

![](https://cdn-learn.adafruit.com/assets/assets/000/133/571/medium800/gaming_prune2.jpg?1731115545)

## Testing

Try out the game now by clicking the **Game \> Run** menu item.

The game compiles and you can then play it using keyboard keys (`arrow keys`&nbsp;+`z`&nbsp;will get you pretty far) .

## Testing

Try out the game now by clicking the **Game \> Run** menu item.

The game compiles and you can then play it using keyboard keys (`arrow keys`&nbsp;+`z` will get you pretty far) .

You may notice that if you try to walk through the doorway you don't go anywhere. Stuck! Next, let's create a trigger to move between scenes.

Quit the emulated run test.

![gaming_run1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/572/medium640/gaming_run1.jpg?1731116111)

## Trigger

Click the orange **Trigger** block in the House **scene** doorway.

In the properties panel select the Cave scene from the drop-down menu. This will add a player position connection to the scene. You can drag it where you like and adjust the direction arrow in the properties panel.

Now, if you test the game, walking to the door in the **House** scene will trigger moving the player Actor to the **Cave** scene.

![gaming_trigg1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/573/medium640/gaming_trigg1.jpg?1731116405)

![gaming_trigg2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/574/medium640/gaming_trigg2.jpg?1731116430)

## Return Trip

Repeat this process to set the **Cave** door trigger to send the player Actor back to the **House** scene.

![gaming_trigg3.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/575/medium640/gaming_trigg3.jpg?1731116622)

## Room Backgrounds

The process of designing your levels can be a back and forth between the pixel art and level functions, such as collision areas and triggers. Let's swap in a couple of backgrounds now.

## Asset Folders

Since we started with the sample project we have a number of pre-made assets to work with. Save your projects and head to the project directory to find the `assets > backgrounds` folder.

![gaming_bgfolder.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/577/medium640/gaming_bgfolder.jpg?1731260929)

## House Art

Open the **house.png** file in your pixel editor (Aseprite shown here).

Feel free to draw a new background, add to the existing one, or add designs from a downloadable asset pack, such as the one I purchased, the&nbsp;[DVA tileset Town 'n' Around.](https://dan-velasquez-art.itch.io/dvas-tilesets-town-n-around) (You can also find free sets, but I thought this one was great and was happy to pay for it.)

![gaming_liv1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/578/medium640/gaming_liv1.jpg?1731262780)

![gaming_dva.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/579/medium640/gaming_dva.jpg?1731263156)

## Layers

Work with layers in your pixel editor so you can move elements around to arrange them just so.

Save your file as a PNG file named **living\_room.png** in the backgrounds folder. You can download the one I made below if you like.

![gaming_roomlayers.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/581/medium640/gaming_roomlayers.jpg?1731263512)

![](https://cdn-learn.adafruit.com/assets/assets/000/133/580/medium800/gaming_living_room2.png?1731263243)

## Swap BG

In GB Studio, click on the **House** scene and then pick the new `living_room` option from the drop-down in the **Background** section as shown here.

Delete the four sign sprites, we won't be using them, then use the **Eraser** &nbsp;and **Collision** &nbsp;brushes to fine-tune the wall and object collisions.

![gaming_bgswap1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/584/medium640/gaming_bgswap1.jpg?1731268905)

![gaming_roomclean.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/585/medium640/gaming_roomclean.jpg?1731287887)

## Lars

Swap out the `Actor1` sprite for the **lars.png** attached below, placed in the `assets > sprites` folder of your project directory.

You can reuse some of the previous settings, but adjust them for your game. I've set Lars's dialog to display _"Lars: You should play some music."_

You can also check out the GB Studio file for the project to see how the `$Gotbattery` and `$Gotcassettetape` variables are used to determine which text prompts to display.

![gaming_lars_actor.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/586/medium640/gaming_lars_actor.jpg?1731288102)

## Bedroom

We convert the sample **Cave** scene into the **Bedroom** -- this is the second scene the player can enter. Check out the GB Studio project to see how the trigger heads back to the **Living Room** scene.

You'll also see two sprites to interact with -- the `Battery` and the `Tape`.

![gaming_bedroom.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/590/medium640/gaming_bedroom.jpg?1731356157)

## Actor Interactions

The `Battery` actor is set to interact with the **`Player`** when there is an " **On Hit**" collision. This causes a sound effect to play, a text display to pop up, the Deactivation of the `Battery`, and the `$Gotbattery` variable state to flip to `True`.

The `Tape` actor is initially out of reach. When the battery has been grabbed, the Tape " **On Update**" loop sees the change in the `$Gotbattery` variable.

This causes the&nbsp;`Tape` **&nbsp;** to&nbsp; **Self Move To{}&nbsp;** a location on the screen where it can be reached.

![gaming_batt.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/591/medium640/gaming_batt.jpg?1731453792)

![gaming_tape.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/592/medium640/gaming_tape.jpg?1731453805)

![](https://cdn-learn.adafruit.com/assets/assets/000/133/587/medium800/gaming_lars.png?1731288217)

## Boombox

Pick the radio `Actor2` sprite that was in the sample scene and swap out the sprite art for the **boombox2.png** using the same method as we did with Lars.

Again, we will use the `$Gotbattery` and `$Gotcassettetape` variables to create the logic for dialoge box display.

When those two conditions have been met, with batteries and tape in hand, the&nbsp;`Boombox` will play upon interaction! Just walk up to it and press **A**.

You'll see in the GB Studio project that when both variables are true (after collecting the necessary battery and tape objects) a Play Music Track event launches a song. We'll have a look next at the music tracker interface.

![gaming_boom.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/588/medium640/gaming_boom.jpg?1731353768)

## Music Tracker

Click on the GB Studio mode dropdown to switch from **Game World** to **Music**.

This is where you can create four track music, using a spreadsheet-like interface called a music tracker. Rather than re-invent the wheel, check out the excellent GB Studio [docs on the music editor here](https://www.gbstudio.dev/docs/assets/music/music-huge).

There are four different tracks for different intstruments (two PWM, one waveform, one noise, often used for drums and percussion) which correspond to the four synth tracks of the Game Boy hardware.

The tracker represents time vertically, with 1/8th note steps. Here we can see and hear a bass line playing on **Duty 2** with an A#, G#, D# pattern, and the drums on the **Noise** track.

![gaming_musictracker.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/589/medium640/gaming_musictracker.jpg?1731354203)

## End Game

We use the glass actor to end the game.&nbsp; **On Hit** will cause a two-choice menu dialog box to pop up.

The&nbsp; **Continue&nbsp;** choice will close the menu and make no changes to game state.

By picking the&nbsp; **Quit&nbsp;** choice, the following happens:

- **Stop Music&nbsp;** event stops the music
- `$Gotcassettetape` **&nbsp;** variable is set back to&nbsp;`False`
- `$Gotbattery` **&nbsp;** variable is set back to&nbsp;`False`
- **Change Scene&nbsp;** is set to the game title screen

The game is now ready to be played anew, with everything put back in its place!

![gaming_glass.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/594/medium640/gaming_glass.jpg?1731458354)

# How To Homebrew Game Boy Games

## Cartridge Flashing

## Game Export

You can now export the game ROM for play in a software emulator or on hardware. In GB Studio click&nbsp; **Game \> Export As \> Export ROM**.

The software will compile the ROM and export it to the game project's **build** directory.

![gaming_exportROM.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/596/medium640/gaming_exportROM.jpg?1731458989)

![gaming_build.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/597/medium640/gaming_build.jpg?1731459007)

## Cartridges and Flashers

If you'd like to play your game on an original Game Boy, Game Boy Color, or Game Boy Advance you'll need a cartridge flasher and some ROM cartridges.

There a a number of different cart reader/writer devices out there. They can be used for reading and saving your game ROMs (known as 'ROM dumping'), backing up your game saves (particularly useful when you need to change the coin cell battery on an old cart), and writing game ROMs to flash cartridges.

Flash cartridges come in many different configurations and ROM sizes. Some original Game Boy games, such as Tetris, fit in 32KB of memory, which is the maximum size the Game Boy can address directly on a cartridge without the help of a Memory Block Controller (MBC) to manage grabbing date from larger ROM chips.

Games made with GB Studio will be much bigger than 32KB -- usually somewhere from 138KB and up, so a 512KB, 1MB, 2MB, or 4MB flash cart with an MBC (or FPGA/CPLB facsimile thereof) will be necessary.

The **GBxCart RW** is an excellent choice for a cart flasher. It plugs into your computer via USB C and then you plug your cartridge to be read or flashed into it.

There are loads of different flashable carts out there, a few I've used successfully include **[Ferrante Crafts 512KB](https://ferrantecrafts.com/products/flash-cartridge-for-game-boy-512kb)**, the&nbsp;[**Funnyplaying Flash Cart V2**](https://funnyplaying.com/products/midnighttrace-gb-gbc-flash-cart-v2), and cheap "reproduction" carts from AliExpress like [this one](https://www.aliexpress.us/item/2251832859610075.html). Your mileage may vary with random repro carts, but they are incredibly inexpensive, so may be worth a shot.

![gaming_flasher.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/549/medium640/gaming_flasher.jpg?1731108052)

![gaming_cart.jpg](https://cdn-learn.adafruit.com/assets/assets/000/133/550/medium640/gaming_cart.jpg?1731108062)

![](https://cdn-learn.adafruit.com/assets/assets/000/133/551/medium800/gaming_IMG_2481.jpg?1731109142)

## Flashing Software

Using the GBxCart RW requires you to plug it into a computer and run some software that can read from and write to the cart. I've found the open source [FlashGBX](https://github.com/lesserkuma/FlashGBX) works perfectly and is simple to use.

- Plug in the flasher and cartridge
- Click **Connect**
- Pick **Game Boy** mode
- Click **Write ROM**
- Select the game **.gb** file from the build directory using the file browser
- The game is written to the cartridge
- Click **Disconnect** and remove your cart for play

![](https://cdn-learn.adafruit.com/assets/assets/000/133/553/medium800/gaming_flashgbx2.jpg?1731109891)

![](https://cdn-learn.adafruit.com/assets/assets/000/133/598/medium800/gaming_transfer.jpg?1731459325)

## Play

Now, pop the cart into your Game Boy and give it a play!

https://youtu.be/fT6WPcIi1Fc


## Related Guides

- [MakeCode Arcade: Sparky Invaders](https://learn.adafruit.com/makecode-arcade-sparky-invaders.md)
- [CircuitPython Minesweeper Game](https://learn.adafruit.com/circuitpython-pyportal-minesweeper-game.md)
- [LED Drone Matrix](https://learn.adafruit.com/led-matrix-drone.md)
- [MCUME Emulators on Fruit Jam](https://learn.adafruit.com/mcume-emulators-on-fruit-jam.md)
- [Ambient Video Lighting with HyperHDR](https://learn.adafruit.com/ambient-video-lighting-with-hyperhdr.md)
- [Oculus Quest Battery Counterweight](https://learn.adafruit.com/oculus-quest-battery-counterweight.md)
- [Qualia S3 Fireplace](https://learn.adafruit.com/qualia-s3-fireplace.md)
- [PS4 Gamepad Display Mount](https://learn.adafruit.com/ps4-gamepad-display-mount.md)
- [Jack-o'-LED·trix](https://learn.adafruit.com/jack-o-led-trix.md)
- [CLUE Dice Roller](https://learn.adafruit.com/clue-dice-roller.md)
- [NeoTrellis M4 Memory Game](https://learn.adafruit.com/neotrellis-m4-memory-game.md)
- [Submitting Games to MakeCode Arcade Front Page](https://learn.adafruit.com/submitting-games-to-makecode-arcade-front-page.md)
- [1D Chomper Tabletop Arcade Game](https://learn.adafruit.com/1d-chomper-tabletop-arcade-game.md)
- [No-Code IKEA Vindriktning Air Quality Sensor Hack with Adafruit IO](https://learn.adafruit.com/no-code-ikea-vindriktning-hack-with-qt-py-esp32-s3-and-adafruit-io.md)
- [Bootloading Basics](https://learn.adafruit.com/bootloader-basics.md)
