The Keep Dreaming Project aims to provide the Dreamcast community with an opensource ecosystem for collaborating on electronics and software projects along with tools for gathering and preserving information. The project consists of custom circuit boards for hardware research/development and a hosted software stack for collaboration and preserving information.
I (Zeigren) am designing various development and breakout boards that interface with the Dreamcast and its peripherals. I'm primarily responsible for this part of the project.
Goal: Have a common set of opensource development boards that anyone can make and use for Dreamcast projects.
This makes collaboration easier since we can all use the same tools and software, sort of like Arduino. Code is easy to share and can be expected to work the same on each development board.
Having hardware designed for working with the Dreamcast will also make development easier. No need to fiddle with a mess of wires and chase down connection problems, everything will plug directly into the Dreamcast.
The G1 Bus is what the Dreamcast GD-ROM drive is connected to. I've already designed a development board for the G1 Bus in the form of the openGDROM, which I'm currently redesigning.
Goal: Create a opensource GD-ROM drive emulator, like the GDEMU or USB-GDROM.
The G2 Bus is what the Dreamcast's modem is connected to. The G2 Bus development board is still in the planning stage. The current plan is to base its design off of the G1 Bus development board.
Goal: Create a wireless network adapter with the G2 Bus development board, but I may try to design it in such a way that it could be used to create a LAN adapter.
The Maple Bus is what controllers and other peripherals are connected to.
Goal: Create a wireless controller using the Maple Bus development boards.
The wireless controller is in the planning/proof of concept stage. This consists of two parts, the Dreamcast side and the controller side. I have a pretty good idea of what the design is going to look like but there's still testing to do.
This is still in the planning stage. This is generally the simplest of them all on the electronics side. Right now I'm just trying to figure out a good, cheap, and reliable way to connect to the serial port. Since we currently can't buy connectors for it (maybe in the future though!).
Goal: Make a USB to Serial Port adapter.
You can still buy Serial Port to SD Card adapters, but that is something I would consider designing as well.
The breakout boards are an easy way to monitor signals from either Dreamcast official hardware or development boards.
They also provide a more generic way of interacting with the Dreamcast.
I'm currently revising the G1 Bus breakout board.
The G2 Bus breakout board is in the planning stage.
The difficult part here are the connectors, since there's currently no way to buy them. So I have to figure out a way to create a reliable connection without using a connector.
I'm currently revising the maple bus breakout board, mostly to make it easier to use.
I also need to design an alternate version for VA0 Dreamcasts.
This is in the planning stage. Could be used to create system link cables.
See the Serial Port Development board section.
The software portion of this project has largely been related to the electronics portion, but it doesn't have to be.
Anyone working on a software Dreamcast project is free to use all the tools available here, the more the merrier!
This is where collaboration really comes into play, there's a lot of things to work on and no way I could do all of it on my own.
This is where I've put in the most thought and time hence the openGDROM, but since I'm redesigning it there will be quite a few changes and I honestly didn't have much done in the way of software in the first place.
I only have some ideas for this.
Currently in the proof of concept stage, then on to actually getting it to work with the development boards once they're done.
There's a lot of information and research out there about the Dreamcast, but it is all over the place and with the Dreamcast being over 20 years old a lot of websites with this information are fading away.
Goal: Gather information about the Dreamcast to make it easy to access and easy to backup.
The primary focus is on the kind of things you wouldn't find on Wikipedia or video game database websites. Thoroughly covering the obscure and diving deep into the "quirks and features". I'll quote myself talking about the file contents of a MIL-CD as an example
PDATA10, likely padding data right? So it is! Inside you’ll find repeating numbers and some repeating Japanese, here’s an example 0010010,北海道札幌市北区北十条西. Which is here. The padding file is filled with addresses from Sapporo, Japan
More general information is useful and still welcome, just not the primary focus as that information is easy to find.
Most information and documentation will be hosted here on this BookStack instance.
Everything here can be easily exported as a PDF so you can make your own backups whenever you want.
InvenTree is one of the most exciting parts of the project for me.
It's used here as a Dreamcast hardware database, a way to catalog console variants and all the parts/assemblies used in the hardware itself.
The database can also be exported if you want a local copy.
In order to preserve this information long term and avoid the fate of so many other sites (RIP Assemblergames) I've made it so this website in its entirety could be easily hosted by someone else.
The website consists of a number of easy to use Docker stacks and the website itself is regularly backed up. By giving a couple of trusted members of the Dreamcast community access to the encrypted backups the information here could be easily brought back online if I was no longer able to maintain it.
This is all of the infrastructure used to make the project possible. Which primarily consists of a number of opensource projects and all the stuff used to host them and tie them together. I've spun this part of the project off into kairohm as it can be used for more than just the Keep Dreaming Project, although this is largely symbolic. To quote myself again
kairohm aims to bring together existing opensource tools to create a fully-featured ecosystem for collaboration without relying on third-party services
This is inline with the preservation part of the project, when using third-party services you're at their whim and they typically don't have a good way for users to back up information.
phabricator.kairohm.dev brought to you by Phabricator
For code review, repository hosting, bug tracking, project management, and more.
This is the hub for all the software and electronics collaboration.
bookstack.kairohm.dev brought to you by BookStack
As a knowledge base and for documentation. You're here!
inventree.kairohm.dev brought to you by InvenTree
As a Dreamcast hardware database.
Simple chat bot for relaying messages from services.
For chat (planned).
Directory tree metadata parser using Apache Tika
Currently a Sublime Text package for working with Quartus, ModelSim, and System Verilog.
Third Party Tools
Leveraging third party tools is still useful, but the project doesn't rely on them.
As a docker registry and for auto building containers.
As a repository mirror and if people really don't want to contribute using Phabricator.