SEGA Genesis Cloned With An FPGA

[Greg] managed to clone a SEGA Genesis using a field programmable gate array. He used a Terasic/Altera DE1 board, which will set you back about $160, during development. The onboard push buttons are currently used as the controller with VGA for the display. Who knows, maybe there’s enough programming space left to drive a PSP screen and turn this into a handheld?

You can see some gameplay footage after the break. If SEGA was never your thing don’t forget that there is an NES FPGA hack out there too.

[youtube=http://www.youtube.com/watch?v=ilzKiW21T9Y]

[Genesis photo credit]

[DE1 photo credit]

36 thoughts on “SEGA Genesis Cloned With An FPGA

  1. Yea that’s pretty cool software on a dev board, wish my arduino had that kind of power lol

    oh well maybe one day I will test the fpga waters, but for my old sega fix Ill just have to stick to emulators

    BTW: it would be nothing to break it out to use standard sega controllers, what would be cool though is a cartridge slot, just in case

  2. They had a handheld Genesis, it was called the Sega Nomad.
    Worked pretty well too, but bulky. It had outputs to go to a full sized TV and had a standard controller port for the second player.
    One problem was when you stacked Sonic 3 on top of Sonic and Knuckles on top of a Game Genie, it got pretty ridiculous and any slight motion would reset you.

  3. @Osgeld

    Check Digilent (digilentinc.com) for some nice entry level (and affordable) FPGA boards. They will give you their academic discount if you are in any engineering program at a university, and if you’re in high school I think that you may also be able to get the discount if you are involved in any sort of electronics curriculum there. I believe that they also have instruction books that you get get to go along with some of their boards, to help you learn to use them.

  4. Apparently no sound yet. I’ve also noticed this build seems to be quite a bit overclocked from the original genesis. Thunder Force IV is known for having rampant slowdown, even when there are relatively few objects on screen. There should have been some during the gameplay in the video. The most telling item, though, is Hard Drivin’. That game should run at somewhere between 3-5fps (I kid you not, this game is utter trash). In the demo video, it looked almost smooth, which is by no means what it plays like on a real Genesis.

    The stock 68000 CPU on the genesis should be running at 7.65MHz. I have a system at home with 9 selectable clock speeds from 5.1MHz to 20.4MHz. This system appears to be running smoother than the 12.75MHz I can get my system to stably run, so I’m gussing it’s clocked at somewhere around 14-16MHz.

  5. I’m in a FPGA and Verilog class. Neat :0. Maybe someone can take all the fpga hardware emulators and put them on one chip and make a universal hardware game player?

  6. @tyco — he’s using the DE1’s 27MHz master clock oscillator (it actually has three, plus an external input, but I can’t remember all the frequencies off hand) to run everything. That 27MHz clock is doubled with a PLL to get 54MHz. The 54MHz is fed through a divide-by-6 counter, so the CPU clock is 54/6 = 9MHz.

    The SDRAM controller gets the full PLL clock: all 54MHz of it. I hope he’s added a -2ns phase shift on the SDRAM clock pin (not the SDRAM controller, the actual clock out to the SDRAM chip). It makes the DE1 SDRAM loads more stable, and ISTR Altera/Terasic actually recommend it in one of the tutorials.

  7. The code for the project is in VHDL, not Verilog. Converting between the two is not difficult.

    I took a tech elective course on VHDL where we emulated a CISC microcontroller on a Spartan 3.

  8. t’s interesting, i have an amp board of a SEGA, i don’t know what SEGA device had this audio circuit, but it’s weird because it is technically HUGE.

    Components: STK4392 and a lot of passive components.

    PD: sorry for my terrible bad english.

  9. Hi, OP there.
    @tyco @philpem Actually it’s a divide-by-7 counter, as in the original Genesis. I didn’t add the -2ns phase shift to the SDRAM clock, I wasn’t aware of that. Thanks for the tip, I’ll give it a try asap.
    For the speedup, in my guess it’s mostly because the DMA transfer operations are faster than what the original VDP provides.

  10. /me can’t believe his eyes..

    someone actually released the source to a “FPGA” console clone??! Lots of people do console clones and never release the source or bitstreams, i.e. there are loads of NES clones but no source, so theres no way of porting it to different dev boards.

    I’ll get this running on my Xilinx board when I get home :)

  11. As mentioned Digilent boards are fantastic entry level FPGA development suite for engineering students.
    The Nexys2 board is great, the only limitation is the lack of connectivity range, but with their add-on boards they overcome this limitation.
    Digilent also provide tutorials in VHDL and Verilog to help kick-start your projects.

    Using the Nexys2 and Xilinx ISE is the cheapest option and a very effective way of getting started with FPGA.

  12. I’ve got 250$ and I would like to buy FPGA board.
    I’ve got some experience with Xilinx devices but Altera is also cool.
    Which of the available development boards has the best FPGA resources to price and on-board peripherals to price ratio?
    I was thinking about Spartan-3A Starter Kit (XC3S700A) and Spartan 3E-1600 Development Board (XC3S1600E).
    I’m no longer a student, so I cannot use this academic program benefits. My board with Altera FLEX 10K is not enough so I’ve got to buy something.
    Which of development kits is most recommendable?

  13. or you can buy the Altera DE0/DE1 from Terasic, they’re cheap, do a lot, and best of all you aren’t forced to use Xilinx’s god-awful software. Not saying quartus is great, but it’s a LOT better

  14. Nice hack, It may scale as the HaD editor stated with an LCD to be portable.

    I think the TG68 68000 and T80 Z80 cores are via:

    http://www.opencores.net

    The readme on the Google Code page does not say much about this. Nice to see an Altera-based design. I second the Digilent boards, good value and good support. But I wish they would keep the software downloads up to date and compatible with the Xilinx IDE for the likes of the venerable X-board, of which I’m sure there are many still in-use.

    Had, please keep your snorkel up and find these kinds of things to post. I’ll tolerate a bunch of iPhone/Android nonsense as long as you don’t dumb-down across the board (that may be difficult though).

    Regards, Drone

  15. “Or just buy a real genesis for a tenth of the price, none of the messing about and all of the functionality.”

    you can buy an xbox1 for about the same price and have many more systems

    but that is not really the point now is it?

  16. especially coming from the guy ~2 days ago stated

    “I think that I have a little resentment against projects that are really just software experiments. Most of the software guys I have worked with did not really understand the hardware that they were coding for, and they were stuck-up dicks about it too.”

  17. DE1 has 4-bit/channel video output (that’s 4096 colours, just to avoid confusion), a stereo codec, 512K of 10ns SRAM in addition to 8MB DRAM, 4MB of Flash and, PS/2 and serial connectors and, best of all, expansion connectors compatible with IDE cables that are abundant in every hackers’ drawer. On top of that, there are lots of hobby projects for DE1 that one can take, study, hack, or just download and install.

    I haven’t seen a lot of Spartan 3E projects that could interest me.

  18. @svofski

    I saw some projects that used the Spartan-3A/3E board. I think that there is even something on fpgaarcade (http://www.fpgaarcade.com/pacman/pacman_rel004_sp3e.zip).
    Probably there is even an instruction how to add more colors to VGA output.

    I will do some quick boards comparison.

    First of all why I’m not convinced fully to DE1:
    -Lack of Ethernet port,
    -Not so much of available on-board RAM,
    -Lack of on-board ADC/DAC,
    -Small amount of integrated BlockRAM,

    Why I like DE1:
    -Altera Cyclone II 2C20 has More logic elements than Spartan-3A (although configuration is completely different)
    -SD card socket,
    -24-bit audio codec,
    -Available SRAM on-board,
    -More multipliers,
    -3 external clocks available (in a result less PLLs can be used),

    Why I dislike Spartan-3A board:
    -Smaller amount of logic cells (different configuration, 2 LUTs per SLICE)
    -DDR2 memory controller requires lots of resources (MIG),
    -Lack of on-board SRAM memory,
    -Lack of audio codec (there is a mini-jack for PWM audio though),
    -Less multipliers,
    -Only 1 external clock source,

    Why I like Spartan-3A board:
    -Available Ethernet port,
    -DDR2 memory (good for application where burst mode is needed),
    -On-board ADC and DAC,
    -More available memory in BRAMs than in competition,

    The board with Spartan-3E is also neat but I heard that it’s somehow worse than 3A device (something with multipliers, not so performance oriented). When it comes to resources, board with Spartan-3E offers quite a lot.

    I used Quartus II and Xilinx ISE 10.1 for some time. I liked a lot *.ucf files in ISE. Quartus is also powerful but somehow more…spartan :) and ISE is more user friendly. Both SDKs work under Linux, although it took me a while to run ISE under Ubuntu and properly configure JTAG programmer. In a result I only used ISE to edit files and synthesized project with scripts (platform independent). I stopped using Quartus without considering usage of synthesis scripts.
    I think the best solution would be Altera DE2 board (pretty sweet), although I’m no longer a student, so I cannot afford it.

    OK, waiting for last voice that will fully convince me to DE1. Maybe someone used both Spartan 3/A/E and Cyclone II devices on the daily basis and can compare them.

  19. (Not really trying to convince in anything, but if there’s some piece of hardware that I’m a fan of, it’s the DE1 board ;) )

    DE1 projects that I remember straight away:
    One-Chip MSX (MSX-2)
    FPGApple (Apple II)
    Minimig (Amiga ECS)
    Project Zet (a full PC clone!)
    Sega Genesis now :D

    And by yours truly:
    vector-06cc (Vector-06C)
    bk0010-fpga (Electronika BK) — both are old Russian home computers, probably of limited interest to the rest of the world, but people seem to find pieces of those projects useful for other purposes

    For me, VGA output alone was enough to decide in favour of DE1. 4 bits per channel are enough to imitate Amiga ECS and I even managed to make a colour PAL encoder with that output. 1-bit per channel on the Digilent board is only good for very basic stuff.

    People have different priorities though, not everyone needs great VGA output and to some onboard Ethernet PHY may outweigh lack of sound codec.

  20. In response to the blurb here:
    “Who knows, maybe there’s enough programming space left to drive a PSP screen and turn this into a handheld?”

    If there is space to drive a VGA signal, then there is space to drive a PSP screen; they’re nearly the same thing except that the timing specs are different and the PSP screen takes parallel digital data rather than analog for each color.
    It can be done with a few counters and comparators, shouldn’t take more than a couple percent of the logic in the FPGA, if even that much :)

Leave a Reply to JakeCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.