Skip to content

Instantly share code, notes, and snippets.

@makestuff
Created June 22, 2014 13:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save makestuff/e5df6de4e04c2e08f28b to your computer and use it in GitHub Desktop.
Save makestuff/e5df6de4e04c2e08f28b to your computer and use it in GitHub Desktop.
Bug in hackaday.io
<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if IE 9]> <html class="no-js ie9" lang="en"> <![endif]-->
<!--[if gt IE 9]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<title>USB MegaDrive DevKit &bull; Hackaday Projects</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<link rel="stylesheet" href="/css/style.css?version=0.22.6" />
<script type="text/javascript" src="//use.typekit.net/ymb0lgk.js"></script>
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@hackaday">
<meta name="twitter:title" content="USB MegaDrive DevKit">
<meta name="twitter:description" content="The cartridge has an FPGA, an SDRAM chip, an SD-card slot and a fast USB interface. With it, you can setup a proxy for the GDB remote serial protocol, so you can build code using GCC, and source-level debug it using GDB just as you would with code running locally: breakpoints, single-stepping, examining &amp; updating variables &amp; registers.
The USB link is fast enough to implement a 100% nonintrusive continuous bus-cycle tracer too, so details of every memory read or write that the machine executes is sent back over USB and written direct to disk. Perfect for finding out what happened just before that annoying intermittent bug in your code!
The cartridge works standalone too - it lets you select a game to play from potentially hundreds of game ROMs stored on the cart&#39;s SD-card.
The code and VHDL is all LGPLv3, and the PCB is CERN OHLv1.2. With a bit of patience and a decent soldering iron you can make one for about $40.">
<meta name="twitter:image" content="https://static.hackaday.io/images/6178951403040455187.jpg">
<!-- Open Graph data -->
<meta property="og:type" content="website" />
<meta property="og:title" content="USB MegaDrive DevKit">
<meta property="og:url" content="http://hackaday.io/project/1507-USB-MegaDrive-DevKit">
<meta property="og:description" content="The cartridge has an FPGA, an SDRAM chip, an SD-card slot and a fast USB interface. With it, you can setup a proxy for the GDB remote serial protocol, so you can build code using GCC, and source-level debug it using GDB just as you would with code running locally: breakpoints, single-stepping, examining &amp; updating variables &amp; registers.
The USB link is fast enough to implement a 100% nonintrusive continuous bus-cycle tracer too, so details of every memory read or write that the machine executes is sent back over USB and written direct to disk. Perfect for finding out what happened just before that annoying intermittent bug in your code!
The cartridge works standalone too - it lets you select a game to play from potentially hundreds of game ROMs stored on the cart&#39;s SD-card.
The code and VHDL is all LGPLv3, and the PCB is CERN OHLv1.2. With a bit of patience and a decent soldering iron you can make one for about $40.">
<meta property="og:image" content="https://static.hackaday.io/images/6178951403040455187.jpg">
</head>
<body>
<!--
############################################################################################
############################################################################################
############################################################################################
#####################Kt;tL#######################################Kti,E######################
#######################; .###################################G E#######################
#######################K f################################## ;########################
########################Wj E###############################K: .W#########################
##########################. :E##############################: .L##########################
#########################D f##############################. .##########################
########################, ;############################## :E#######K################
################f######K ,############################## ,######Lt################
################ W###W i############################## t####j t################
################: E#L. f###########################L. f#Ki .E################
################j ;E. j##########################. .G; i#################
#################L i#######################K ##################
#################W E#####################K; ;##################
###################: .###################D :f###################
#####################DLfGD G####WEEEEKW####W ;GffGK#####################
##########################i iD##Kfi :jKW##D iE##########################
###########################W ,G##f jE#E; j############################
############################L D##D ,##K W############################
#############################D: G#W K#E, G##############################
###############################;i#L j## ,E###############################
###############################KK#. ##iE################################
#################################j ;K##################################
################################W ,##################################
################################E ##################################
###############################Ki D#################################
###############################E. L#################################
###############################f iD##W; D###D :#################################
###############################i i######K K#####K; #################################
###############################; .E####### #######D #################################
###############################; L######## ######## #################################
###############################i G#######K K####### #################################
###############################j L#####E, fE##### #################################
###############################D .E##j .t##E ;#################################
###############################E: ;##. #Wt j#################################
################################G ;t tWi t E#################################
#############################KL## K#K; #K:K##############################
#############################i ##: ###t j#f ;K#############################
############################: G#K #E#L L## D############################
###########################D ;W#: #;#L W#K .############################
#####################KKEKK :##L ; .. :D##. fKEEK######################
###################t. ;##G: ,##E, tD###################
##################G E##E i##; :###################
#################D W##W iL E. ###D ##################
################W, G###W tG K. ####: K#################
################; LW; ,E#####: ;W# #G f#####; ;KG :K################
################ D###E ;########WW####WW####WW#######W :####: j################
################ ,#####: ;############################## G####E i################
################K#######. ;############################## L######WG################
########################f i############################## j#########################
#########################W .D##############################. i##########################
#########################E G###############################D ,##########################
########################G: #################################j G#########################
#######################f K##################################j W#######################
#####################Kt :iE#####################################KL: K######################
############################################################################################
############################################################################################
############################################################################################
-->
<div class="header" id="header">
<div class="container">
<h1 class="logo">
<a href="/" title="Hackaday Projects Home" class="home" onclick="CT(this, 'Menu', 'Home'); return false;"></a>
<a href="/" title="Hackaday Projects Home" onclick="CT(this, 'Menu', 'Home'); return false;">Hack a Day</a>
</h1>
<a href="javascript:void(0);" class="responsive-menu">Menu</a>
<ul class="nav" role="navigation">
<li><a href="/projects" class="" onclick="CT(this, 'Menu', 'Projects'); return false;">Projects</a></li>
<li><a href="/hackers" class="" onclick="CT(this, 'Menu', 'Hackers'); return false;">Hackers</a></li>
<li><a href="http://hackaday.com" target="_blank" onclick="CT(this, 'Menu', 'Blog'); return false;">Blog</a></li>
<li>
<a href="javascript:void(0);" id="show-search-holder" onclick="CT(this, 'Menu', 'Search');">Search</a>
<div class="search-holder">
<form action="/search" method="GET">
<input type="text" placeholder="Search" name="term" class="input-search" required />
<input type="submit" class="search-button" value=""/>
</form>
</div>
</li>
<li class="dropdown more-nav j-more-open menu-last-child">
<a href="javascript:void(0)" class="dropdown-link icon-dropdown">More</a>
<ul role="menu" class="dropdown-menu more-menu" id="j-more">
<li><a href="/stack" onclick="CT(this, 'Menu', 'Stack'); return false;">Stack</a></li>
<li><a href="/events" onclick="CT(this, 'Menu', 'Events'); return false;">Events</a></li>
<li><a href="/hackerspaces" onclick="CT(this, 'Menu', 'Hackerspaces'); return false;">Hackerspaces</a></li>
<li><a href="/submissions/prize/list" onclick="CT(this, 'Menu', 'TheHackadayPrize'); return false;">The Hackaday Prize</a></li>
</ul>
</li>
</ul>
<ul class="nav pull-right">
<li class="menu-first-child">
<a href="/project/add" class="">Add a Project</a>
</li>
<li><a href="/myfeed" id="myFeed">Feed<span class="notification-number">10</span></a></li>
<li class="dropdown account j-account-open">
<a class="dropdown-link user-account" href="javascript:void(0)">
<span class="user-name">makestuff</span>
<img class="user-image" src="http://gravatar.com/avatar/d2ed28e624f0d68f8808ffc5db8253e4?d=http%3A%2F%2Fhackaday.io%2Fimg%2Fdefault-avatar.png&amp;r=x&amp;s=400" title="makestuff"/>
</a>
<ul id="j-account" class="dropdown-menu" role="menu">
<li>
<a href="/hacker/12413-makestuff">My profile</a>
<a href="/projects/hacker/12413">My projects</a>
</li>
<li>
<a href="/profile">Edit my profile</a>
<a href="/settings">Edit my account</a>
</li>
<li>
<a href="/project/46/log/460">Everything 101</a>
<a href="/invite">Invite friends</a>
<a href="/project/37-Feedback---Hackaday-Projects">Give Feedback</a>
</li>
<li class="last-item"><a href="/signout?returnUrl=%2Fproject%2F1507">Logout</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="topMessage" class="alert"><span class="j-top-content"></span><a href="javascript:void(0);" class="alert-close j-top-message-close">Close</a></div>
<div class="headline">
<div class="container">
<p><a href="/project/1507/edit">[Edit project</a> - <a href="/project/1507/delete" class="need-confirmation" data-message="Are you sure that you want to <b>permanently delete</b> your project?">Delete project]</a></p>
<h2><a href="/project/1507-USB-MegaDrive-DevKit">USB MegaDrive DevKit</a></h2>
<p class="description">100% open-source (hardware &amp; software) development/hacker cartridge for the Sega MegaDrive (sold as &quot;Genesis&quot; in the USA)</p>
<div class="author">
<a href="/hacker/12413">
<img src="http://gravatar.com/avatar/d2ed28e624f0d68f8808ffc5db8253e4?d=http%3A%2F%2Fhackaday.io%2Fimg%2Fdefault-avatar.png&amp;r=x&amp;s=400" />
<div class="author-details">
<div class="author-name">makestuff</div>
</div>
</a>
</div>
</div>
</div>
<div class="container">
<div class="content-left">
<ul class="submissions-icons">
<li>
<a href="/submissions/prize/list" class="submission-icon submission-icon-1">
Official Hackaday Prize Entry
</a>
</li>
</ul>
<a href="https://static.hackaday.io/images/6178951403040455187.jpg" id="project-image" class="image-holder" style="background-image: url(https://static.hackaday.io/images/6178951403040455187.jpg)" data-image="https://static.hackaday.io/images/6178951403040455187.jpg" target="_blank">
</a>
<div class="thumbs-holder">
<a href="https://static.hackaday.io/images/6178951403040455187.jpg" class="image-holder thumb" style="background-image: url(https://static.hackaday.io/images/6178951403040455187.jpg)" data-image="https://static.hackaday.io/images/6178951403040455187.jpg" target="_blank">
</a>
<a href="https://static.hackaday.io/images/6290931403040831224.jpg" class="image-holder thumb" style="background-image: url(https://static.hackaday.io/images/6290931403040831224.jpg)" data-image="https://static.hackaday.io/images/6290931403040831224.jpg" target="_blank">
</a>
<a href="https://static.hackaday.io/images/1170111403040862946.jpg" class="image-holder thumb thumb-last" style="background-image: url(https://static.hackaday.io/images/1170111403040862946.jpg)" data-image="https://static.hackaday.io/images/1170111403040862946.jpg" target="_blank">
</a>
</div>
<div class="submission-dropdown-holder">
<a href="javascript:void(0);" id="submissions-open" class="submission-item">Submit project to... <span class="arrow-down"></span></a>
<div class="submission-dropdown">
<a href="javascript:void(0)" class="submissions" data-type="prize" data-submissionid="1" data-projectid="1507" data-disabled="true">Official Hackaday Prize Entry</a>
<a href="javascript:void(0)" class="submissions" data-type="tipline" data-submissionid="2" data-projectid="1507" data-disabled="false">Hackaday.com Tip Line</a>
</div>
</div>
<div class="section section-project-stats">
<span class="icon-comment" title="Comments" id="comment_count">6</span>
<span class="icon-view" title="Followers" id="follower_count">12</span>
<span class="icon-skull" title="Skulls" id="like_count">9</span>
</div>
<div class="section section-links">
<ul class="links-list">
<li class="links-item">
<a href="https://github.com/makestuff/umdkv2/tree/20140524" target="_blank" class="icon-github">UMDKv2 software &amp; VHDL</a>
</li>
<li class="links-item">
<a href="https://github.com/makestuff/lx9/tree/r3" target="_blank" class="icon-github">LX9R3 PCB</a>
</li>
<li class="links-item">
<a href="https://github.com/makestuff/umdkv2-lx9/tree/r1" target="_blank" class="icon-github">Bridge PCB</a>
</li>
<li class="links-item">
<a href="https://www.youtube.com/watch?v=mEH7a-a8dvQ" target="_blank" class="icon-other">Video Part 1</a>
</li>
<li class="links-item">
<a href="https://www.youtube.com/watch?v=JxBzxhMhANI" target="_blank" class="icon-other">Video Part 2</a>
</li>
<li class="links-item">
<a href="https://www.youtube.com/watch?v=dLoudQc8L08" target="_blank" class="icon-other">Video Part 3</a>
</li>
<li class="links-item">
<a href="http://hackvana.com" target="_blank" class="icon-other">Hackvana PCB Manufacture</a>
</li>
<li class="links-item">
<a href="https://dl.dropboxusercontent.com/u/80983693/makestuff-lx9r3-f6251e5.zip" target="_blank" class="icon-dropbox">LX9R3 PCB Gerbers</a>
</li>
<li class="links-item">
<a href="https://dl.dropboxusercontent.com/u/80983693/umdkv2-lx9-bf310a5.zip" target="_blank" class="icon-dropbox">Bridge PCB Gerbers</a>
</li>
<li class="links-item">
<a href="https://dl.dropboxusercontent.com/u/80983693/umdk-bin-20140524.tar.gz" target="_blank" class="icon-dropbox">FPGA binaries &amp; MD firmware</a>
</li>
<li class="links-item">
<a href="http://gendev.spritesmind.net/forum/viewforum.php?f=20" target="_blank" class="icon-other">Support Forum</a>
</li>
</ul>
</div>
<div class="section section-tags">
<div class="special-tags">
<a href="/projects/tag/completed%20project" class="tag tag-completed">completed project</a>
</div>
<a href="/projects/tag/FPGA" class="tag">FPGA</a>
<a href="/projects/tag/usb" class="tag">usb</a>
<a href="/projects/tag/SDRAM" class="tag">SDRAM</a>
<a href="/projects/tag/sega" class="tag">sega</a>
<a href="/projects/tag/megadrive" class="tag">megadrive</a>
<a href="/projects/tag/genesis" class="tag">genesis</a>
<a href="/projects/tag/devkit" class="tag">devkit</a>
<a href="/projects/tag/all-your-base-are-belong-to-us" class="tag">all-your-base-are-belong-to-us</a>
</div>
<div class="section section-share">
<h5>
Enjoy this project?
</h5>
<a href="https://twitter.com/intent/tweet?url=http%3A%2F%2Fhackaday.io%2Fproject%2F1507-USB-MegaDrive-DevKit&text=USB MegaDrive DevKit by makestuff&related=hackaday&via=hackaday" target="_blank" class="icon-twitter icon-twitter-notext gray-link">Share on twitter</a> &nbsp; <a href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fhackaday.io%2Fproject%2F1507-USB-MegaDrive-DevKit" target="_blank" class="icon-facebook icon-facebook-notext gray-link">Share on Facebook</a>
</div>
<div class="section section-project-time">
<p class="project-time">
This project was
created on 06/17/2014
and last updated 12 minutes ago.
</p>
</div>
<div class="section section-project-time last">
<p class="project-time" id="report-project">
<a href="/api/report/1507">Report as inappropriate</a>
<span class="hide">Reporting...</span>
</p>
<div id="report-project-error"></div>
</div>
</div>
<div class="content-right">
<div class="section section-description">
<h5>Description</h5>
<div class="description">The cartridge has an FPGA, an SDRAM chip, an SD-card slot and a fast USB interface. With it, you can setup a proxy for the GDB remote serial protocol, so you can build code using GCC, and source-level debug it using GDB just as you would with code running locally: breakpoints, single-stepping, examining & updating variables & registers.
<br />
<br />The USB link is fast enough to implement a 100% nonintrusive continuous bus-cycle tracer too, so details of every memory read or write that the machine executes is sent back over USB and written direct to disk. Perfect for finding out what happened just before that annoying intermittent bug in your code!
<br />
<br />The cartridge works standalone too - it lets you select a game to play from potentially hundreds of game ROMs stored on the cart's SD-card.
<br />
<br />The code and VHDL is all LGPLv3, and the PCB is CERN OHLv1.2. With a bit of patience and a decent soldering iron you can make one for about $40.</div>
</div>
<div class="section section-details">
<h5>
Details
</h5>
<p class="notice icon-notice">This section can be used to explain everything about your project.</p>
<div class="post-content details-content">
<p><p><strong>Where can I ask for help with building &amp; sourcing components?</strong></p><p>The best place is <a href="http://gendev.spritesmind.net/forum/viewforum.php?f=20">on the SpritesMind forum</a>.</p><p><strong></strong></p><p><br><strong></strong></p><p><strong>Can I manufacture these and sell them?</strong></p><p>Yes, of course you can. And no, I don't want any royalties. I only ask that you abide by the spirit of the <a href="http://en.wikipedia.org/wiki/Copyleft">copyleft</a>
licensing: you can make whatever proprietary modifications you like to
your own personal UMDK carts, but if you give/sell a modded cart to
someone else, you must provide them with all the source code
modifications you've used so they can build upon your work, as you have
built upon mine. Furthermore, you must grant them the freedom to use,
replicate, modify and redistribute your work.<strong></strong></p><p><strong></strong></p><p><br><strong></strong></p><p><strong>How does the debugger work?</strong></p><p>The debugger uses the GDB remote serial protocol, which is just a small set of commands like:</p><ul>
<li>Read 16 bytes of target memory at address 0x123456</li><li>Set register D7 to 0xCAFEBABE</li><li>Set breakpoint at 0x654321</li><li>Continue execution</li></ul><p>Originally
the remote serial protocol was designed to work over a serial (RS-232)
link, but it can also be made to work over TCP/IP, which is what I did.
So I wrote the gdb-bridge (actually "gdb-proxy" would be a better name),
which listens for incoming GDB session connections on a TCP/IP port,
and when the connection arrives it waits for GDB to issue commands. Some commands can be executed directly by just reading
&amp; writing the SDRAM[1], whereas others require a message-based conversation with the monitor program which is loaded when the MegaDrive boots[2].<br><br>Breakpoints
are implemented by writing the illegal instruction opcode to the
breakpoint address, and replacing the illegal instruction vector with
the monitor address (0x400000). When the 68000 hits the illegal
instruction, it throws an exception and thereby returns control to the
monitor.<br><br>Single-stepping is implemented using the trace
feature, which is a bit in the 68000 status register which when set will execute only
one instruction in user mode, then throw a trace exeption, which also
brings control back to the monitor.<br><br>The debugger has read/write
access to the 68000 registers because the first thing the monitor does
when it starts is to save the registers to a known region of SDRAM,
where they can be read (and updated) by GDB. When the monitor exits, the
last thing it does is to restore the 68000's state from that region of
SDRAM (picking up any changes applied in the meantime by GDB).<br><br><strong>[1]</strong> My
SDRAM controller in the FPGA is able to interleave accesses by the host
with accesses by the MegaDrive. This makes the SDRAM effectively
dual-port.<br><br><strong>[2]</strong> This conversation is achieved using an arbitrary binary
message-passing scheme, where the host writes a command-code and a payload to an agreed region of SDRAM, and then triggers the command by
writing to a semaphore. The host then polls that semaphore waiting for
the MegaDrive to update it with "I've finished", whereupon the host
reads the response payload from the same agreed region of SDRAM.</p><p><br><strong></strong></p><p><strong>How does the bus-cycle tracing work?</strong></p><p>Whenever the MegaDrive reads or writes to memory or one of its hardware registers, the address and the data read or written is available on the cartridge slot, so the UMDK cart can snoop on accesses to any[1] memory region. The snoop results in nine bytes of data, including:</p><ul>
<li>A 20ns timestamp</li><li>Whether the source was the CPU or some sort of DMA</li><li>Whether it was a read or a write (high byte, low byte or both bytes)</li><li>The 23-bit address</li><li>The 16-bit data read or written</li></ul><p>The <a href="http://www.makestuff.eu/wordpress/software/fpgalink/">FPGALink</a>-implemented USB interface is capable of doing 42MiB/s which is several times faster than what is required for bus tracing a MegaDrive, but the USB output pipe is fairly bursty, so on each bus-cycle the nine bytes of trace data are added to a wide, deep FIFO which acts to smooth out the USB burstiness. And when the trace data gets to the host side it is written to disk in chunks 64KiB at a time.</p><p><strong></strong></p><p><strong>[1]</strong> In fact, some cycles cannot be snooped for some reason, like reads from the MegaDrive's onboard RAM. Writes are visible, reads are not.</p><p><br><strong></strong></p><p><strong>Can you give a quick overview of the VHDL code for the FPGA?</strong></p><p>The VHDL is built from several general-purpose libraries:</p><ul>
<li>The (<a href="http://www.makestuff.eu/wordpress/software/fpgalink/">FPGALink</a>) <a href="
<a class="readmore" href="/post/3811">Read more &raquo;</a>
</p>
</div>
<span><a href="/post/3811/edit" class="grey-gold-button medium-button half">Edit details</a></span>
<span><a href="/post/3811" class="grey-gold-button medium-button half">See all details</a></span>
</div>
<div class="section section-components">
<h5>
Components
</h5>
<p class="notice icon-notice">
You can list the components you used in your project here.
</p>
<ul class="section-component-list">
<li class="component-11169">
<span class="component-number">1</span>
<span class="component-x">×</span>
<span class="component-content">
Xilinx XC6SLX9-2TQG144C
<span class="component-description">Spartan-6 FPGA (~$10)</span>
</span>
</li>
<li class="component-11170">
<span class="component-number">1</span>
<span class="component-x">×</span>
<span class="component-content">
Cypress CY7C68013A-56PVXC
<span class="component-description">Hi-Speed USB Microcontroller (~$4)</span>
</span>
</li>
<li class="component-11171">
<span class="component-number">1</span>
<span class="component-x">×</span>
<span class="component-content">
Micron MT48LC8M16A2P-7E
<span class="component-description">16MiB SDRAM (~$2)</span>
</span>
</li>
<li class="component-11172">
<span class="component-number">1</span>
<span class="component-x">×</span>
<span class="component-content">
Microchip 24LC128-I/SN
<span class="component-description">16KiB I2C EEPROM for booting microcontroller (~$1)</span>
</span>
</li>
<li class="component-11173">
<span class="component-number">1</span>
<span class="component-x">×</span>
<span class="component-content">
Micron M25P40-VMN6
<span class="component-description">512KiB SPI flash for booting FPGA & MD (~$1)</span>
</span>
</li>
<li class="component-11174">
<span class="component-number">1</span>
<span class="component-x">×</span>
<span class="component-content">
AMS1117 SOT-223 3.3V
<span class="component-description">3.3V regulator</span>
</span>
</li>
<li class="component-11175">
<span class="component-number">1</span>
<span class="component-x">×</span>
<span class="component-content">
AMS1117 SOT-223 1.2V
<span class="component-description">1.2V regulator</span>
</span>
</li>
<li class="component-11176">
<span class="component-number">1</span>
<span class="component-x">×</span>
<span class="component-content">
24MHz HC-49/US XTAL
<span class="component-description">24MHz crystal</span>
</span>
</li>
<li class="component-11177">
<span class="component-number">3</span>
<span class="component-x">×</span>
<span class="component-content">
74ALVC164245DL
<span class="component-description">16-bit level-shifter</span>
</span>
</li>
<li class="component-11178">
<span class="component-number">1</span>
<span class="component-x">×</span>
<span class="component-content">
Various connectors &amp; passives
<span class="component-description"></span>
</span>
</li>
</ul>
<p>
<a href="/project/1507/components/add" class="grey-gold-button medium-button show">Edit components</a>
</p>
</div>
<div class="section section-buildlogs">
<h5>Project logs</h5>
<p class="notice icon-notice">Project logs can be used to keep your followers up to date about your project.</p>
<ul class="buillogs-list post-content details-content">
</ul>
<p class="log-btns">
<a href="/project/1507/log/add" class="grey-gold-button medium-button show">Add a project log</a>
</p>
</div>
<div class="section section-instructions">
<h5>Build instructions</h5>
<p class="notice icon-notice">Build instructions can be used to create step by step how-to guide for your project.</p>
<p>
<a href="/project/1507/instructions/add" class="grey-gold-button medium-button show">Add instructions</a>
</p>
</div>
<div class="section section-discussions last">
<h5 class="j-discussions-title">Discussions</h5>
<form id="j-discussion-add-top" action="/discussions/add" name="add-comment" method="POST" class="skip-global-form j-discussion-add hide">
<div class="textarea-holder">
<textarea placeholder="Add your comment" name="comment" class="editable input-comment" required></textarea>
</div>
<input type="hidden" name="categoryId" value="1507" />
<input type="hidden" name="category" value="project" />
<input type="hidden" name="_csrf" value="wIRJAyP6IBEDZw46ZauCLIKqxe1X8rNcy5jeM=" />
<input type="hidden" name="replyTo" value="0" />
<input type="submit" class="grey-gold-button medium-button" value="Post comment" />
</form>
<div id="discussion-list">
<div id="j-discussion-3877" class="discussions-item ">
<div class="discussions-item-image">
<a href="/hacker/12413"><img src="http://gravatar.com/avatar/d2ed28e624f0d68f8808ffc5db8253e4?d=http%3A%2F%2Fhackaday.io%2Fimg%2Fdefault-avatar.png&amp;r=x&amp;s=400" alt=""></a>
</div>
<div class="discussions-item-body">
<small class="authorship">
<a href="/hacker/12413">makestuff</a>
wrote <a class="gray-link" href="#j-discussion-3877">5 hours ago</a>
<span id="comment-points-holder-3877" class="hide">
&bull; <span id="comment-points-3877">
null point
</span>
</span>
</small>
<p>
UMDK on LifeHacker: <a href='http://lifehacker.com/build-a-diy-sega-genesis-dev-kit-1594006203' target="_blank">http://lifehacker.com/build-a-diy-sega-genesis-dev-kit-1594006203</a>
</p>
<p>
<span class="delete-options">
<a href="#" class="discussion-reply" data-replyto="3877"><small>reply</small></a>
<a class="j-discussion-delete" href="/comments/delete/project/1507/3877"><small>delete</small></a>
</span>
<span class="delete-confirm hide"><span class="delete-q">Are you sure?</span> <a href="#" class="delete-yes"><small>[yes]</small></a> / <a href="#" class="delete-no"><small>[no]</small></a></span>
</p>
</div>
</div>
<div id="j-discussion-3793" class="discussions-item ">
<div class="discussions-item-image">
<a href="/hacker/12767"><img src="http://gravatar.com/avatar/85b49f12eacbd41173920087508489a5?d=http%3A%2F%2Fhackaday.io%2Fimg%2Fdefault-avatar.png&amp;r=x&amp;s=400" alt=""></a>
<div class="voting-action-holder">
<a title="Upvote" id="j-discussion-3793-up" href="/comments/vote/3793" class="voting-action icon-up" data-action="up">up</a>
<a title="Downvote" id="j-discussion-3793-down" href="/comments/vote/3793" class="voting-action icon-down" data-action="down">down</a>
</div>
</div>
<div class="discussions-item-body">
<small class="authorship">
<a href="/hacker/12767">diysciborg</a>
wrote <a class="gray-link" href="#j-discussion-3793">2 days ago</a>
<span id="comment-points-holder-3793" class="hide">
&bull; <span id="comment-points-3793">
null point
</span>
</span>
</small>
<p>
Now that a prototype is functional, do you have any plans to consolidate the boards? All on one will save on manufacturing costs. Any unused pins on the bridge connector can be moved to the top, on a typically unpopulated dense connector, like 10x3 or something. Also, it would shorten the board within the cartridge a bit.
<br/>
<br/>I really like the project. You say it is ok to sell... I think here in Tokyo, Akihabara would be a great place to do so. There are several shops that specialize in retro gaming. Volumes would be low. Would you have a problem with me doing that?
</p>
<p>
<span class="delete-options">
<a href="#" class="discussion-reply" data-replyto="3793"><small>reply</small></a>
</span>
<span class="delete-confirm hide"><span class="delete-q">Are you sure?</span> <a href="#" class="delete-yes"><small>[yes]</small></a> / <a href="#" class="delete-no"><small>[no]</small></a></span>
</p>
</div>
</div>
<div id="j-discussion-3794" class="discussions-item reply-item ">
<div class="discussions-item-image">
<a href="/hacker/12413"><img src="http://gravatar.com/avatar/d2ed28e624f0d68f8808ffc5db8253e4?d=http%3A%2F%2Fhackaday.io%2Fimg%2Fdefault-avatar.png&amp;r=x&amp;s=400" alt=""></a>
</div>
<div class="discussions-item-body">
<small class="authorship">
<a href="/hacker/12413">makestuff</a>
wrote <a class="gray-link" href="#j-discussion-3794">2 days ago</a>
<span id="comment-points-holder-3794" class="hide">
&bull; <span id="comment-points-3794">
null point
</span>
</span>
</small>
<p>
I have no plans to consolidate the boards, no. I'm happy to support users henceforth, but as far as I'm concerned this project is finished. You're welcome to consolidate the boards if you wish, but there are a few good reasons for keeping them separate:
<br/>
<br/>1) Several people have expressed an interest in doing this sort of thing for other consoles (e.g SNES). I expect that could be done merely by replacing the bridge-board, leaving the FPGA board unchanged.
<br/>
<br/>2) The FPGA board is an entirely standalone FPGA module that could be used in other projects. For example, it would almost certainly run Will's CP/M machine[1]
<br/>
<br/>Your idea to make and sell carts at retro shops in Tokyo is a great idea. The only thing I ask is that you honour the copyleft licences. I have chosen licences in order to formalise my wish that nobody should ever be in a position where they own a UMDK cart and would like to hack it and improve it but can't because they don't have the source code and schematics or whatever. So you can make and sell UMDK carts, and you can add your own improvements, but you must provide those improvements under the same licences so that others can build still further on your work. Does that make sense?
<br/>
<br/>[1]<a href='http://hackaday.com/2014/05/01/a-z80-retro-microcomputer-for-the-papilio-pro-fpga-board/' target="_blank">http://hackaday.com/2014/05/01/a-z80-retro-microcomputer-for-the-papilio-pro-fpga-board/</a>
</p>
<p>
<span class="delete-options">
<a class="j-discussion-delete" href="/comments/delete/project/1507/3794"><small>delete</small></a>
</span>
<span class="delete-confirm hide"><span class="delete-q">Are you sure?</span> <a href="#" class="delete-yes"><small>[yes]</small></a> / <a href="#" class="delete-no"><small>[no]</small></a></span>
</p>
</div>
</div>
<div id="j-discussion-3732" class="discussions-item ">
<div class="discussions-item-image">
<a href="/hacker/12514"><img src="http://gravatar.com/avatar/8a5439b3f8ad48f17ee0cbcbfd5f0a5c?d=http%3A%2F%2Fhackaday.io%2Fimg%2Fdefault-avatar.png&amp;r=x&amp;s=400" alt=""></a>
<div class="voting-action-holder">
<a title="Upvote" id="j-discussion-3732-up" href="/comments/vote/3732" class="voting-action icon-up voted-up" data-action="up">up</a>
<a title="Downvote" id="j-discussion-3732-down" href="/comments/vote/3732" class="voting-action icon-down" data-action="down">down</a>
</div>
</div>
<div class="discussions-item-body">
<small class="authorship">
<a href="/hacker/12514">charlie_robson</a>
wrote <a class="gray-link" href="#j-discussion-3732">4 days ago</a>
<span id="comment-points-holder-3732" class="">
&bull; <span id="comment-points-3732">
1 point
</span>
</span>
</small>
<p>
Awesome kit. Did you get your boards made at Hackvana?
<br/>
</p>
<p>
<span class="delete-options">
<a href="#" class="discussion-reply" data-replyto="3732"><small>reply</small></a>
</span>
<span class="delete-confirm hide"><span class="delete-q">Are you sure?</span> <a href="#" class="delete-yes"><small>[yes]</small></a> / <a href="#" class="delete-no"><small>[no]</small></a></span>
</p>
</div>
</div>
<div id="j-discussion-3733" class="discussions-item reply-item ">
<div class="discussions-item-image">
<a href="/hacker/12413"><img src="http://gravatar.com/avatar/d2ed28e624f0d68f8808ffc5db8253e4?d=http%3A%2F%2Fhackaday.io%2Fimg%2Fdefault-avatar.png&amp;r=x&amp;s=400" alt=""></a>
</div>
<div class="discussions-item-body">
<small class="authorship">
<a href="/hacker/12413">makestuff</a>
wrote <a class="gray-link" href="#j-discussion-3733">4 days ago</a>
<span id="comment-points-holder-3733" class="hide">
&bull; <span id="comment-points-3733">
null point
</span>
</span>
</small>
<p>
Hi Charlie! Yes, that's why I put the Hackvana link in. I can't even begin to express how awesome Hackvana is. I don't expect to ever etch my own PCBs again!
</p>
<p>
<span class="delete-options">
<a class="j-discussion-delete" href="/comments/delete/project/1507/3733"><small>delete</small></a>
</span>
<span class="delete-confirm hide"><span class="delete-q">Are you sure?</span> <a href="#" class="delete-yes"><small>[yes]</small></a> / <a href="#" class="delete-no"><small>[no]</small></a></span>
</p>
</div>
</div>
<div id="j-discussion-3713" class="discussions-item ">
<div class="discussions-item-image">
<a href="/hacker/13"><img src="http://static.projects.hackaday.com/images/9902141390157960507.jpg" alt=""></a>
<div class="voting-action-holder">
<a title="Upvote" id="j-discussion-3713-up" href="/comments/vote/3713" class="voting-action icon-up voted-up" data-action="up">up</a>
<a title="Downvote" id="j-discussion-3713-down" href="/comments/vote/3713" class="voting-action icon-down" data-action="down">down</a>
</div>
</div>
<div class="discussions-item-body">
<small class="authorship">
<a href="/hacker/13">Adam Fabio</a>
wrote <a class="gray-link" href="#j-discussion-3713">5 days ago</a>
<span id="comment-points-holder-3713" class="">
&bull; <span id="comment-points-3713">
1 point
</span>
</span>
</small>
<p>
Nice! correct me if I'm wrong, but this cart and a GNU toolchain will give you a complete developers kit for a sega genesis - with hardware deugging! Sweet! (I'm a big fan of 8/16 bit video games)
<br/>Thanks for entering your project in The Hackaday Prize!
</p>
<p>
<span class="delete-options">
<a href="#" class="discussion-reply" data-replyto="3713"><small>reply</small></a>
</span>
<span class="delete-confirm hide"><span class="delete-q">Are you sure?</span> <a href="#" class="delete-yes"><small>[yes]</small></a> / <a href="#" class="delete-no"><small>[no]</small></a></span>
</p>
</div>
</div>
</div>
<form id="j-discussion-reply" action="/discussions/add" name="add-comment-reply" method="POST" class="hide skip-global-form">
<div class="textarea-holder">
<textarea placeholder="Add your reply" name="comment" class="editable input-comment" required></textarea>
</div>
<input type="hidden" name="categoryId" value="1507" />
<input type="hidden" name="category" value="project" />
<input type="hidden" name="_csrf" value="wIRJAyP6IBEDZw46ZauCLIKqxe1X8rNcy5jeM=" />
<input type="hidden" name="replyTo" id="replyToInput" />
<input type="submit" class="grey-gold-button medium-button" value="Post reply" />
</form>
<form id="j-discussion-add" action="/discussions/add" name="add-comment" method="POST" class="skip-global-form j-discussion-add">
<div class="textarea-holder">
<textarea placeholder="Add your comment" name="comment" class="editable input-comment" required></textarea>
</div>
<input type="hidden" name="categoryId" value="1507" />
<input type="hidden" name="category" value="project" />
<input type="hidden" name="_csrf" value="wIRJAyP6IBEDZw46ZauCLIKqxe1X8rNcy5jeM=" />
<input type="hidden" name="replyTo" value="0" />
<input type="submit" class="grey-gold-button medium-button" value="Post comment" />
</form>
</div>
</div>
</div>
<div class="footer" id="footer">
<a href="#header" class="back-to-top" onClick="CT(this, 'Footer', 'GoingUp');">^ Going up? ^</a>
<div class="container">
<p><a href="http://hackaday.com/about/">About Us</a> <a href="mailto:projects-contact@hackaday.com">Contact Us</a>&copy; 2014 Hackaday <a href="/tos">Terms of Use</a> <a href="/privacy-policy">Privacy Policy</a></p>
<a href="/" class="had-skull" onClick="CT(this, 'Footer', 'Home' ); return false;">Hackaday Projects</a>
</div>
</div>
<script>
var csrftoken = 'wIRJAyP6IBEDZw46ZauCLIKqxe1X8rNcy5jeM=';
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-47229708-1', 'auto');
var dimensionValue = 'registered';
ga('set', 'dimension1', dimensionValue);
ga('send', 'pageview');
</script>
<div class="modal-background"></div>
<div class="modal-content-holder">
<p class="align-center" id="modal-message"></p>
<p class="align-center"><a class="medium-button gold-gold-button delete-project-button" id="modal-yes" href="">Yes, delete it</a> <a class="medium-button grey-gold-button cancel-button" id="modal-cancel">Cancel</a> </p>
</div>
<script src="/build/h/ydgsYIeDTf7pqgYQEKK8sTLqM1YoGLyKuhtO/03ZRgR/1XYG3pqZxB5NnkjpAT6MJwsdR5dlsDfoSUAXBpMF/yXu34VwgfTZc8PHHoXkfL0kPZ80DortMnr5439FkFs/WKXKtY6e7LYhl5gzxg7/eOJG8EDvxaBnkpiwMZ5elqH4XGLysm78gC3vW2A0CJj4C/sqjFepZOdGrxdsFHV+ub2oHonLWYSGt3OLLZ4k5dNXntwO2Ktyw3ZDqQC/Ml-0.22.6.js"></script>
<style>
.mediumInsert-buttons {
display: none !important;
}
</style>
<div id="submission-popup-back"></div>
<div id="submission-popup"></div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment