element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Project Videos
  • Challenges & Projects
  • element14 presents
  • Project Videos
  • More
  • Cancel
Project Videos
Documents Game Guy - The Unportable Game Boy -- Episode 531
  • Documents
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Project Videos to participate - click to join for free!
Related
Recommended
Engagement
  • Author Author: kellyhensen
  • Date Created: 22 Dec 2021 6:10 PM Date Created
  • Last Updated Last Updated: 31 Dec 2021 8:24 AM
  • Views 145960 views
  • Likes 11 likes
  • Comments 45 comments

Game Guy - The Unportable Game Boy -- Episode 531

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image


Due to the need for both speed and precise timing, video conversion tasks are often left to FPGAs or similar devices. But in this episode, Andy demonstrates how a $4 microcontroller can be used to convert Game Boy video into something that can be displayed on a big screen. Combine that with an NES controller port, and you've got a TV console that can play original Game Boy games!

 

Supplemental Content:

  • Link to Github Files:  https://github.com/andy-west/consolized-game-boy

Bill of Material:

Product Name Manufacturer Quantity Buy Kit
Raspberry Pi Pico, Microcontroller Board, RP2040, 32 bit, 2MB Flash, ARM Cortex-M0+ RASPBERRY-PI 1 Buy Now
Resistor Kit, 10Ohm To 1MOhm, 610 Pieces, 250mW, Carbon Film, 10 Pieces Per Value, E12 Series Velleman SA 1 Buy Now
LOGIC, BUS TRANSCVR OCTAL, 20DIP Texas Instruments 1 Buy Now
LOGIC, BUS TRANSCVR OCTAL, 20DIP New TEXAS INSTRUMENTS 4 Buy Now
Additional Parts Manufacturer Quantity
1 x 50 Pins IDC 2.54mm Card Edge Connector for 1.27mm Flat Ribbon Cable
1 x 50 Pin IDC 2.54mm Pitch F/F Connector 1.27mm Flat Ribbon Cable
element14 presents

element14 presents  |  About Andy |  Project Videos

  • project_video
  • game_boy
  • element14presents_andywest
  • element14presents
  • friday_release
  • Share
  • History
  • More
  • Cancel
Actions
  • Share
  • More
  • Cancel
  • Sign in to reply
  • p0z1tr0n
    p0z1tr0n over 4 years ago in reply to andywest

    I tried about a dozen games including the Super Mario Land games, Tetris, Pokemon, Zelda, Final Fantasy, Nigel Mansell and a few others as well. Everything I tried so far has worked at 150MHz.

    That was until I tried F1 Race and it has some significant artifacts, so I tried your code again unmodified and it has the same artifacts.

    The reason I started messing around with the timing originally was because my Wario Land cartridge and was getting artifacts with your original code. I found that if I removed a couple of the NOPs it fixed the problem with Wario Land. I then tried removing all the NOPs and it didn't seem to make any difference, all the games I tried seemed to work fine.

    Next I started to reduce the clock down in 50MHz steps until it started to artifact. 150MHz was the lowest I could go and get stable video (at least with the games I've tried).

    Did you find any other games that had issues?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • andywest
    andywest over 4 years ago in reply to p0z1tr0n

    Are you saying that you built this project and you're able to play games with the Pico at that frequency? If so, what games did you try? I found that the video timings vary between different titles based on things like sprite usage. For example, Tetris might look fine, while F1 Race has weird artifacts. It took a long time to get the image correct across all my games.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • p0z1tr0n
    p0z1tr0n over 4 years ago

    Nice work, thanks for sharing. 

    I'm just wondering if you would mind explaining why you included the nops? I found that if I remove them I was able to get a stable video signal with the pico clocked at just 150MHz.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • aspork42
    aspork42 over 4 years ago

    Nice work! i love finding ways to hack old devices Slight smile

    The reverse engineering is so much fun

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • mattbraddock
    mattbraddock over 4 years ago in reply to andywest

    Thanks! If I get this project working, I'll share.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • andywest
    andywest over 4 years ago in reply to mattbraddock

    They're controlled by game code, so not always. But it's normal for them to switch back and forth during gameplay, yes (when the game checks the status of all the buttons). And it's common for that to happen once per frame.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • mattbraddock
    mattbraddock over 4 years ago in reply to andywest

    Appreciate the response. So do pins P14 and P15 alternate back and forth constantly?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • andywest
    andywest over 4 years ago in reply to mattbraddock

    Not really, no. Pins P14 and P15 determine what buttons will be scanned, so I read them in a tight loop on one of the Pico's cores. There's a VSYNC pin for video, but it has nothing to do with input.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • andywest
    andywest over 4 years ago in reply to kmikemoo

    Oh, I see what you mean. No worries! Editing makes things look a lot easier than they are.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • mattbraddock
    mattbraddock over 4 years ago

    Love the project. Is there a pin on the GB that pulses each time it polls for input? Or pulses on each frame (as it relates to the frame rate)?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
<>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube