<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Ben Heck's Reverse Engineered Game Boy Printer Episode -- Episode 263</title><link>https://community.element14.com/challenges-projects/element14-presents/benheck/ben-heck-exclusive/w/documents/1852/ben-heck-s-reverse-engineered-game-boy-printer-episode----episode-263</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>Ben Heck's Reverse Engineered Game Boy Printer Episode -- Episode 263</title><link>https://community.element14.com/challenges-projects/element14-presents/benheck/ben-heck-exclusive/w/documents/1852/ben-heck-s-reverse-engineered-game-boy-printer-episode----episode-263</link><pubDate>Fri, 04 Nov 2016 08:24:00 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a9026c68-b90b-4f30-aa23-4c12d5c8606c</guid><dc:creator>Matt</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/benheck/ben-heck-exclusive/w/documents/1852/ben-heck-s-reverse-engineered-game-boy-printer-episode----episode-263#comments</comments><description>Current Revision posted to Documents by Matt on 11/4/2016 8:24:00 AM&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" style="padding:0px;margin:0px;background-color:#c4e3ed;width:100%;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td rowspan="3" style="padding:6px 0px 10px 11px;vertical-align:top;"&gt;&lt;a href="https://www.element14.com/community/resources/statics/273153/TBHSlogo2.png" target="_blank" data-e14adj="t"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/300x300/__key/communityserver-wikis-components-files/00-00-00-01-91/3806.contentimage_5F00_73300.png"&gt;&lt;img alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/91/3806.contentimage_73300.png-300x300.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=c0ZhlCmpnJsfiEW7fIDetACK5M14mRLhgWQobE8eIvo%3D&amp;amp;se=2026-08-19T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=E0C0Ak4TwetSpEgrGP+1sA==" style="max-height: 300px;max-width: 300px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;td rowspan="3" style="vertical-align:top;padding:8px 13px 13px;"&gt;&lt;p style="margin:0;font-size:18px;font-weight:bold;padding-bottom:6px;"&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/benheck/" data-e14adj="t"&gt;element14&amp;#39;s The Ben Heck Show&lt;/a&gt;&lt;/p&gt;&lt;p style="margin:0;padding-bottom:6px;line-height:18px;"&gt;&lt;strong&gt;Join the Ben Heck team every week for amazing hacks!&lt;/strong&gt; Watch them build and mod community-inspired projects using electronics!&lt;/p&gt;&lt;p style="margin:0;"&gt;&lt;a href="/challengesprojects/element14-presents/benheck/" data-e14adj="t"&gt;Back to The Ben Heck Show homepage &lt;img loading="lazy" alt="image" src="/e14/assets/legacy/gen/LinkArrow.gif"  /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding:13px 10px 13px 13px;background-color:#004156;vertical-align:middle;" width="30%"&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/benheck/interactive/" data-e14adj="t"&gt;&lt;span style="color:#ffffff;text-decoration:none;"&gt;Connect with TBHS&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:13px 10px 13px 13px;background-color:#005973;vertical-align:middle;"&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/benheck/ben-heck-exclusive/" data-e14adj="t"&gt;&lt;span style="color:#ffffff;text-decoration:none;"&gt;Featured Bonus Content&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:13px 10px 13px 13px;background-color:#006f91;vertical-align:middle;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/benheck/ben-heck-exclusive/w/documents/9678/the-ben-heck-show-episode-archive" data-e14adj="t"&gt;&lt;span style="color:#ffffff;text-decoration:none;"&gt;See All Episodes&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;center&gt;&lt;table style="width:654px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding-bottom:12px;"&gt;&lt;span&gt;&lt;a href="https://www.youtube.com/watch?v=43FfJvd-YP4"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:8px;background-color:#e9f6fc;border:1px solid #b8d7e5;"&gt;&lt;p style="margin:0;"&gt;A Game Boy printer is used to teach reverse engineering and how data transmission works. The printer is taken apart and hooked up to a Tektronix oscilloscope. Signals are captured, reverse engineered, and replaced with new signals.&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;"&gt;&lt;span style="color:black;font-family:&amp;#39;Helvetica Neue&amp;#39;;"&gt;&lt;strong&gt;Supporting Files&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;table border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border:1px solid black;padding:0 4.5pt 0 0;border:dashed #bbbbbb 1.0pt;" valign="bottom"&gt;&lt;p style="margin:0;margin-bottom:1.5pt;"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;#39;Helvetica Neue&amp;#39;;color:white;padding:4.0pt;background:#F17C0E;"&gt;&lt;a class="jive-link-external-small" href="https://github.com/thebenheckshow/263-tbhs-Reverse-Engineered-Game-Boy-Printer" title="Click Here" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;&lt;span style="color:white;font-size:9.0pt;"&gt;&lt;strong&gt;Click Here&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border:1px solid black;padding:2.25pt 2.25pt 2.25pt 2.25pt;border-left:none;border:dashed #bbbbbb 1.0pt;" valign="bottom"&gt;&lt;p style="margin:0;margin-bottom:1.5pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Helvetica Neue&amp;#39;;"&gt;for access to all the supporting files you will need to replicate this build!&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding-top:8px;"&gt;Using the Game Boy Camera, Ben manages to capture a solid white frame and a solid black frame for testing purposes. This allows him to see how the data is organized. He then hooks up the gamelink cable to the printer and made some test prints.&amp;nbsp; The printer uses thermal paper so it doesn’t have any ink as that would have dried out by now. He discovers that even if you unplug the game boy half way through the print it still finishes the print. This means that the printer has local RAM that stores the image after it starts printing.&lt;/p&gt;&lt;p style="margin:0;padding-top:8px;"&gt;Ben proceeds to do a teardown of the Game Boy printer. It contains 8 KB RAM to capture images and print it. There’s also an 8 Bit microcontroller. There are no other major IC’s so the code must be inside the MCU, not on an external ROM. There are two optocouplers, also called “opto isolators” because they’re used to isolate signals from each other.&amp;nbsp; The optocoupler has a pair of LEDS inside of it, one emits light, while the other detects light and uses it to trigger a circuit.&amp;nbsp; It’s like a buffer but it’s completely electrically isolated from one side to the other.&amp;nbsp; This is most likely to prevent spikes of current on the print head from affecting the microcontroller.&lt;/p&gt;&lt;p style="margin:0;padding-top:8px;"&gt;There are 18 pins going to the print head. It sends 5 V to the print head and only syncs to ground, turns on, when something is printing. This gives you power, ground, and 16 bits of data. The communication cable interfaces with the microcontroller, taking the 16 bit connection going into it and using it to send out all 16 pixels vertically and send out more data for every horizontal line. When data is sent over, the Microcontroller puts it into the RAM, once completed, the Microcontroller prints it itself from the RAM.&lt;/p&gt;&lt;p style="margin:0;padding-top:8px;"&gt;A Tektronix scope is used to capture all the data lines together and figure out how it works. The game boy sends out data vertically rather than horizontally to make it easier for the microcontroller to actually use it. The Game Boy stores the data in 2 bit, 4 shade grey scale, it sends the data to the printer also in 2 bit, 4 shade grey scale and most likely throws out half the data. Commands into the printer’s MCU are likely interrupt-driven, just like the Power Glove. Finally, an Arduino microcontroller is used to simulate how data is sent to the printer and how that data is organized.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: hack, game_boy_printer, game boy, episode 263: ben heck's reverse engineered game boy, game boy printer, heck, ben, tbhs_ep&lt;/div&gt;
</description></item><item><title>Episode 263: Ben Heck's Reverse Engineered Game Boy Printer Episode</title><link>https://community.element14.com/challenges-projects/element14-presents/benheck/ben-heck-exclusive/w/documents/1852/ben-heck-s-reverse-engineered-game-boy-printer-episode----episode-263/revision/1</link><pubDate>Wed, 22 Feb 2017 17:30:42 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:a9026c68-b90b-4f30-aa23-4c12d5c8606c</guid><dc:creator>randogless</dc:creator><comments>https://community.element14.com/challenges-projects/element14-presents/benheck/ben-heck-exclusive/w/documents/1852/ben-heck-s-reverse-engineered-game-boy-printer-episode----episode-263#comments</comments><description>Revision 1 posted to Documents by randogless on 2/22/2017 5:30:42 PM&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" style="padding:0px;margin:0px;background-color:#c4e3ed;width:100%;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td rowspan="3" style="padding:6px 0px 10px 11px;vertical-align:top;"&gt;&lt;a href="https://www.element14.com/community/resources/statics/273153/TBHSlogo2.png"&gt;&lt;span&gt;&lt;a href="https://community.element14.com/resized-image/__size/300x300/__key/communityserver-wikis-components-files/00-00-00-01-91/3806.contentimage_5F00_73300.png"&gt;&lt;img alt="image" src="https://community-storage.element14.com/communityserver-components-secureimagefileviewer/communityserver/wikis/components/files/00/00/00/01/91/3806.contentimage_73300.png-300x300.png?sv=2016-05-31&amp;amp;sr=b&amp;amp;sig=c0ZhlCmpnJsfiEW7fIDetACK5M14mRLhgWQobE8eIvo%3D&amp;amp;se=2026-08-19T23%3A59%3A59Z&amp;amp;sp=r&amp;amp;_=E0C0Ak4TwetSpEgrGP+1sA==" style="max-height: 300px;max-width: 300px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;td rowspan="3" style="vertical-align:top;padding:8px 13px 13px;"&gt;&lt;p style="margin:0;font-size:18px;font-weight:bold;padding-bottom:6px;"&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/benheck/"&gt;element14&amp;#39;s The Ben Heck Show&lt;/a&gt;&lt;/p&gt;&lt;p style="margin:0;padding-bottom:6px;line-height:18px;"&gt;&lt;strong&gt;Join the Ben Heck team every week for amazing hacks!&lt;/strong&gt; Watch them build and mod community-inspired projects using electronics!&lt;/p&gt;&lt;p style="margin:0;"&gt;&lt;a href="/challengesprojects/element14-presents/benheck/"&gt;Back to The Ben Heck Show homepage &lt;img loading="lazy" alt="image" src="/e14/assets/legacy/gen/LinkArrow.gif"  /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding:13px 10px 13px 13px;background-color:#004156;vertical-align:middle;" width="30%"&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/benheck/interactive/"&gt;&lt;span style="color:#ffffff;text-decoration:none;"&gt;Connect with TBHS&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:13px 10px 13px 13px;background-color:#005973;vertical-align:middle;"&gt;&lt;a class="jivecontainerTT-hover-container jive-link-community-small" href="/challengesprojects/element14-presents/benheck/ben-heck-exclusive/"&gt;&lt;span style="color:#ffffff;text-decoration:none;"&gt;Featured Bonus Content&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:13px 10px 13px 13px;background-color:#006f91;vertical-align:middle;"&gt;&lt;a class="jive-link-wiki-small" href="/challenges-projects/element14-presents/benheck/ben-heck-exclusive/w/documents/9678/the-ben-heck-show-episode-archive"&gt;&lt;span style="color:#ffffff;text-decoration:none;"&gt;See All Episodes&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;center&gt;&lt;table style="width:654px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding-bottom:12px;"&gt;&lt;span&gt;&lt;a href="https://www.youtube.com/watch?v=43FfJvd-YP4"&gt;www.youtube.com/watch&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:8px;background-color:#e9f6fc;border:1px solid #b8d7e5;"&gt;&lt;p style="margin:0;"&gt;A Game Boy printer is used to teach reverse engineering and how data transmission works. The printer is taken apart and hooked up to a Tektronix oscilloscope. Signals are captured, reverse engineered, and replaced with new signals.&lt;/p&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;"&gt;&lt;span style="color:black;font-family:&amp;#39;Helvetica Neue&amp;#39;;"&gt;&lt;strong&gt;Supporting Files&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;table border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border:1px solid black;padding:0 4.5pt 0 0;border:dashed #bbbbbb 1.0pt;" valign="bottom"&gt;&lt;p style="margin:0;margin-bottom:1.5pt;"&gt;&lt;span style="font-size:10.0pt;font-family:&amp;#39;Helvetica Neue&amp;#39;;color:white;padding:4.0pt;background:#F17C0E;"&gt;&lt;a class="jive-link-external-small" href="https://github.com/thebenheckshow/263-tbhs-Reverse-Engineered-Game-Boy-Printer" rel="nofollow ugc noopener" target="_blank" title="Click Here"&gt;&lt;span style="color:white;font-size:9.0pt;"&gt;&lt;strong&gt;Click Here&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="border:1px solid black;padding:2.25pt 2.25pt 2.25pt 2.25pt;border-left:none;border:dashed #bbbbbb 1.0pt;" valign="bottom"&gt;&lt;p style="margin:0;margin-bottom:1.5pt;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Helvetica Neue&amp;#39;;"&gt;for access to all the supporting files you will need to replicate this build!&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;p style="margin:0;padding:0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0;padding-top:8px;"&gt;Using the Game Boy Camera, Ben manages to capture a solid white frame and a solid black frame for testing purposes. This allows him to see how the data is organized. He then hooks up the gamelink cable to the printer and made some test prints.&amp;nbsp; The printer uses thermal paper so it doesn’t have any ink as that would have dried out by now. He discovers that even if you unplug the game boy half way through the print it still finishes the print. This means that the printer has local RAM that stores the image after it starts printing.&lt;/p&gt;&lt;p style="margin:0;padding-top:8px;"&gt;Ben proceeds to do a teardown of the Game Boy printer. It contains 8 KB RAM to capture images and print it. There’s also an 8 Bit microcontroller. There are no other major IC’s so the code must be inside the MCU, not on an external ROM. There are two optocouplers, also called “opto isolators” because they’re used to isolate signals from each other.&amp;nbsp; The optocoupler has a pair of LEDS inside of it, one emits light, while the other detects light and uses it to trigger a circuit.&amp;nbsp; It’s like a buffer but it’s completely electrically isolated from one side to the other.&amp;nbsp; This is most likely to prevent spikes of current on the print head from affecting the microcontroller.&lt;/p&gt;&lt;p style="margin:0;padding-top:8px;"&gt;There are 18 pins going to the print head. It sends 5 V to the print head and only syncs to ground, turns on, when something is printing. This gives you power, ground, and 16 bits of data. The communication cable interfaces with the microcontroller, taking the 16 bit connection going into it and using it to send out all 16 pixels vertically and send out more data for every horizontal line. When data is sent over, the Microcontroller puts it into the RAM, once completed, the Microcontroller prints it itself from the RAM.&lt;/p&gt;&lt;p style="margin:0;padding-top:8px;"&gt;A Tektronix scope is used to capture all the data lines together and figure out how it works. The game boy sends out data vertically rather than horizontally to make it easier for the microcontroller to actually use it. The Game Boy stores the data in 2 bit, 4 shade grey scale, it sends the data to the printer also in 2 bit, 4 shade grey scale and most likely throws out half the data. Commands into the printer’s MCU are likely interrupt-driven, just like the Power Glove. Finally, an Arduino microcontroller is used to simulate how data is sent to the printer and how that data is organized.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: hack, game_boy_printer, game boy, episode 263: ben heck's reverse engineered game boy, game boy printer, heck, ben, tbhs_ep&lt;/div&gt;
</description></item></channel></rss>