兩個控制台模擬器 Two console simulators

Public Chat
Similar projects worth following
Hello there,
We are a company headquartered in Shenzhen and are pleased to introduce our latest products.
Have you ever thought of playing some games on Gamebuino® and its latest family member, Gamebuino® META? But you don't want to buy a lot of small display hardware. Our latest solution is only for you! CLONE BUINO DUAL will play two game consoles on the big screen of the TV!

克隆BUINO DUAL不是软件模拟器。 我们的控制台使用FPGA实现最高保真度。 目前我们正在准备Board版本0来测试我们的想法并丰富RTL。 未来,我们打算通过使用合适的芯片来降低成本。 所以每个人都可以有时间玩。Cloning BUINO DUAL is not a software simulator. Our console uses FPGAs for maximum fidelity. Currently we are preparing Board version 0 to test our ideas and enrich RTL. In the future, we intend to reduce costs by using suitable chips. So everyone can have time to play.

  • 1 × MAX10 FPGA
  • 1 × SAMD21 MCU
  • 1 × CS4954 video encoder IC

  • Status update

    Martin Cejp11/20/2021 at 18:35 0 comments

    The project was originally prompted by my disappointment over the Gamebuino META not being open hardware, like it's predecessor Gamebuino Classic had been. I set out to develop a board that would incorporate the respective consoles' MCUs (an ATSAMD21 and ATmega328, respectively), using an FPGA to emulate all peripherals such as the LCD, and provide a TV output for big-screen gaming. The "Chinese clone" branding was part of the flavor.

    It was an ambitious project and now it is clear that it will never be finished in its original conception, but I would still like to present some of the technical design.

    At the heart of the 2-layer board is the MAX10 FPGA (10M08SCE144C8G). However, the FPGA, being big and dumb, is at the mercy of a "system management controller" (SMC) represented by an ATSAMD21E15B-MU MCU. But it's not the only Atmel on the board; to emulate the Gambuino META, there is an ATSAMD21G18A-AU. For lack of better terminology, I will refer to it as the "application processor". There is no CPU on-board to emulate the Gamebuino classic, but there is a header that accepts an Arduino mini. Further we can find an CS4954 PAL/NTSC encoder, a 64kx16bit SRAM, and a bunch of I/O ports (PS/2, microSD) and programming headers.

    The SMC has a number of responsibilties:

    • execute a "BIOS" to orchestrate everything
    • configure the video chip via I2C
    • set registers in the FPGA to change operating modes (META/Classic) and stuff like display resolution
    • handle inputs from an USB keyboard and translate them to GPIO for the application processors
    • mix sound output and convert it with its integrated DAC

    There were some compelling reasons to use a dedicated MCU rather than a soft CPU in the FPGA:

    • built-in USB controller
    • built-in DAC/ADC
    • mature-ish software stack and debugging experience

    I got as far as running code on the SMC and displaying text on-screen, entered with an USB keyboard and rendered by the FPGA. However, it never got as far as the gaming part.

    Recently I have been contemplating whether the board could be reused for a more interesting project: a lo-fi custom GPU. It would require swapping the RAM for a bigger one (128k is just enough for a single 320x200x16-bit framebuffer) and slapping on an FTDI USB<->FIFO interface in place of the application CPUs. The SMC would be probably preserved to handle the I2C.

  • Initializing the CS4954 video generator chip

    Martin Cejp10/25/2021 at 21:27 0 comments
  • BEWARE of Quartus JTAG Programmer on Linux

    Martin Cejp04/29/2018 at 08:09 4 comments

    If you plug in your eBay "Altera USB Blaster" and try to talk to you device, chances are you get an error such as this: 

    /opt/intelFPGA_lite/17.1/quartus/bin> ./jtagconfig -d
    1) USB-Blaster [2-2]
      Unable to read device chain - JTAG chain broken
      Captured DR after reset = ()
      Captured IR after reset = ()
      Captured Bypass after reset = ()
      Captured Bypass chain = ()
      JTAG clock speed 6 MHz

    This would usually indicate that something is wrong with your board, the power, the FPGA, or perhaps the programming cable. Don't despair!

    There is a known issue which is still present in the latest versions of Quartus. It has to do with a library called libudev. It is easy to find solutions for various distros, but I haven't seen one specifically for Fedora (27). In my case, what worked was:

    ln -s /lib64/ /lib64/

    Now the board is detected and can be programmed.

    What have I learned? If you can't 1-800-JTAG to your board, check with a known-good board to quickly find issues on the PC side.

  • 修訂版0印刷電路板的到來 [The arrival of revision 0 printed circuit board]

    Martin Cejp04/25/2018 at 18:30 0 comments

    TBH, it will be a great success if anything works on this 2-layer mess!

View all 4 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates