• Stars
    star
    150
  • Rank 247,323 (Top 5 %)
  • Language Verilog
  • License
    GNU General Publi...
  • Created over 8 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An FPGA based GDROM emulator for the Sega Dreamcast

iceGDROM

This is an implementation of IDE and the "Sega Packet Interface" as used by the Dreamcast GD-ROM drive, using an iCE40 FPGA.

In addition to the IDE interface itself, and the accompanying CD-DA interface, the FPGA bitstream implements an RV32EMC-compatible CPU and an SD Card interface. Software running on the CPU responds to disc access commands from the Dreamcast by fetching data from disc images on an SD Card.

For more detailed information, please see the webpage.

This is free software (and hardware) licensed under the GNU General Public License version 3.

Hardware

The hardware is based on the Lattice iCE40-HX8K Breakout Board. In order to connect this board to the Dreamcast motherboard, a custom "riser board" with the appropriate connectors and some additional components is used. The design files for this can be found in the pcb/riser directory. The bill of materials can be found in the file pcb/riser/bom.txt. The pin headers with a J designation should be soldered to the Breakout Board (pins facing downwards).

The components CN4, R8, D1, and JP2 through JP4 are optional. They are a passthrough for a slave hard drive, and not used by the GD-ROM emulator.

For the hardware to be complete, the following additional things are needed:

  • A USB-mini cable to connect CN6 to the Breakout Board. This is how the Breakout Board is powered when not attached to a host computer.
  • An SD Card module, to connect to CN5.
  • Rubber feet or similar to support the weight of the board in the corners not resting on CN1.

Required tools

To build the FPGA bitstream, the following tools are needed:

  • Yosys 0.6
  • arachne-pnr
  • icestorm

To build the RISC-V software, the following tools are needed:

  • riscv32-unknown-elf gcc 10.2.0
  • riscv32-unknown-elf binutils 2.34.0

Building

Building is done by running GNU make. Running make at the top level will build everything, running it in a subdir will build that part. Note that building in fpga requires the rv32 stuff to be built first.

The file rv32/source/config.h can be modified to adapt to the polarity of the CD signal on the chosen SD Card module, or to enable debug traces on the serial port of the FTDI chip.

In order to flash the FPGA bitstream to the breakout board, run make flash.

Making image files

Building the project will also create a host tool in tools/obj/makegdimg which can create image files from either .gdi files (for GD-ROM images) or from .nrg or .cdi files (for MIL-CD and audio CD images). The image files should be named DISC0000.GI0, DISC0001.GI0 etc on the SD Card. To switch between images, extract and reinsert the SD Card.

Acknowledgements

  • RISC-V softcore "VexRiscv" was developed by Charles Papon
  • GD-ROM connector pinout was provided by OzOnE
  • SD Card and FAT code based on sdfatlib by Bill Greiman
  • DiscJuggler reader code based on CDIrip by DeXT/Lawrence Williams

More Repositories

1

fx3lafw

Blob-free logic analyzer firmware for FX3
C
73
star
2

dc-virtcd

CD virtualization for the Dreamcast
C
39
star
3

super-reu

An advanced FPGA-based ram expansion module for C64/C128
VHDL
29
star
4

u-boot-rpi3

64-bit U-Boot for the Raspberry Pi 3
C
27
star
5

OrangeCart

The Orange Cartridge, an FPGA cartridge for the C64/C128
17
star
6

MapleMojo

Maple bus for the Mojo FPGA board
C
15
star
7

Gerberoid

Gerber viewer for Android based on Gerbview from KiCad http://kicad.org/
C++
15
star
8

dc-mboot

M'Boot - the universal Dreamcast boot disk
C
14
star
9

OpenDTC

Open source replacement for the KryoFlux DTC tool
C
14
star
10

dc-ftpd

FTP server for the Dreamcast
C
9
star
11

RVCop64

LiteX-based RISC-V coprocessor for the C64
Python
8
star
12

libsigrok

My work on libsigrok
C
7
star
13

TinyCartridgeEX

C64 cartridge carrier board for TinyFPGA EX module
7
star
14

chromium_be

Patches that allow Chromium to build and run on ppc64 (big endian)
7
star
15

OpenCBM

C
7
star
16

android-sdk-ppc

Superproject for building architecture dependent parts of the Android SDK on Linux/PPC
Makefile
7
star
17

xu1541

C
6
star
18

OCDevEnvPi

Development environment for the Orange Cartridge running on Raspberry Pi
Shell
6
star
19

gentoo.overlay

An overlay for my own Gentoo ebuilds
Shell
5
star
20

android-studio-ppc

Shellscript to hotfix Android Studio so that it works on Linux/PPC.
Shell
5
star
21

shForth

Forth in Shell.
Shell
4
star
22

CartridgeBreakout

Breakout PCB for C64 cartridges
4
star
23

taz

The Template Assembler
C
4
star
24

litehyperram

LiteX driver for Cypress HyperRAM
Python
3
star
25

gdrom_adapter_board

KiCad Layout
3
star
26

logic16_bitstream

Verilog
3
star
27

OrangeCase

3d-printable case for the OrangeCartridge
OpenSCAD
2
star
28

freedroidClassic-PS3

A port of the game "Freedroid Classic" to the PS3
C
2
star
29

hello-darkness

Custom firmware for DasKeyboard 5Q
C
2
star
30

tunnels

Re-implementation of the TI-99/4A game "Tunnels of Doom" (work in progress)
C++
1
star
31

platform_sdk

Fork of sdk repository from AOSP
Java
1
star
32

android_ndk_build

Build script for Android NDK (R11+) host tools
Shell
1
star
33

sigrok-dumps

My sigrok dumps
C
1
star
34

platform_tools_base

Fork of tools/base repository from AOSP
Java
1
star
35

sigrok-util

My work on sigrok-util
Python
1
star
36

lys16tape

C
1
star
37

LibUsbDotNet

C#
1
star
38

disgpl

GPL (Graphic Programming Language) disassembler
C
1
star
39

gnome-panel

Gnome panel hacks
C
1
star
40

platform_prebuilts_tools

Fork of prebuilts/tools repository from AOSP
HTML
1
star
41

sysmenu-applet

An applet implementing the classic System menu from Gnome 2, for those who don't like the new User menu
C
1
star
42

KiCADOpenSCAD3DModels

VRML 3D models for use with KiCAD, generated from parametric OpenSCAD code
OpenSCAD
1
star