<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://dreamcast.wiki/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SpecialK</id>
	<title>dreamcast.wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://dreamcast.wiki/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SpecialK"/>
	<link rel="alternate" type="text/html" href="https://dreamcast.wiki/Special:Contributions/SpecialK"/>
	<updated>2026-09-04T02:12:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://dreamcast.wiki/wiki/index.php?title=Getting_Started_with_Dreamcast_development&amp;diff=3858</id>
		<title>Getting Started with Dreamcast development</title>
		<link rel="alternate" type="text/html" href="https://dreamcast.wiki/wiki/index.php?title=Getting_Started_with_Dreamcast_development&amp;diff=3858"/>
		<updated>2026-07-28T01:57:01Z</updated>

		<summary type="html">&lt;p&gt;SpecialK: /* Configuring the dc-chain script */ added reference to kos-chain on master&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
=Introduction=&lt;br /&gt;
This article will cover the entire beginning process: starting from zero to having a working dev environment with debug link (serial or IP) and self-booting CD-R. This guide will cover the process for the following platforms:&lt;br /&gt;
* &#039;&#039;&#039;Microsoft Windows 10&#039;&#039;&#039; via [https://learn.microsoft.com/en-us/windows/wsl/about Windows Subsystem for Linux]&lt;br /&gt;
** Users desiring a native Windows approach, see [[DreamSDK]] instead&lt;br /&gt;
* &#039;&#039;&#039;macOS&#039;&#039;&#039; on Intel or Apple Silicon systems with the [https://brew.sh/ Homebrew] package manager installed&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039;-based systems&lt;br /&gt;
** &#039;&#039;&#039;Debian&#039;&#039;&#039;- and &#039;&#039;&#039;Ubuntu&#039;&#039;&#039;-based distributions using the default &#039;&#039;&#039;apt&#039;&#039;&#039; package manger&lt;br /&gt;
** &#039;&#039;&#039;Fedora&#039;&#039;&#039;-based distributions using the default &#039;&#039;&#039;dnf&#039;&#039;&#039; package manager&lt;br /&gt;
** &#039;&#039;&#039;Arch&#039;&#039;&#039;-based distributions using the default &#039;&#039;&#039;pacman&#039;&#039;&#039; package manager&lt;br /&gt;
** &#039;&#039;&#039;Alpine&#039;&#039;&#039;-based distributions using the default &#039;&#039;&#039;apk&#039;&#039;&#039; package manager&lt;br /&gt;
&lt;br /&gt;
===Need help?===&lt;br /&gt;
Important note: &#039;&#039;This guide aims to remain up to date and work on all of the above platforms, but keeping instructions for such a variety of platforms up-to-date can be difficult. If you run into any errors or other challenges while following this tutorial, or simply need clarification on any of the steps, feel free to ask for assistance on the [https://dcemulation.org/phpBB/viewforum.php?f=29 message board] or [https://discord.gg/wDEfkUh63h Discord chat] and we would be happy to aid you and update the guide for the benefit of future readers and others in the community.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Terms===&lt;br /&gt;
Before we get started, let&#039;s define several terms:&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;toolchain&#039;&#039;&#039; is a set of programs which turns your code into an executable file for your Dreamcast console. The toolchain includes:&lt;br /&gt;
* &#039;&#039;&#039;GCC&#039;&#039;&#039;, a compiler which supports C, C++, Objective-C, and more (see also [[Rust on Dreamcast]] and [[Programming language support]])&lt;br /&gt;
* &#039;&#039;&#039;binutils&#039;&#039;&#039;, an assembler and linker&lt;br /&gt;
* &#039;&#039;&#039;newlib&#039;&#039;&#039;, a C library&lt;br /&gt;
* &#039;&#039;&#039;gdb&#039;&#039;&#039;, a debugger&lt;br /&gt;
The toolchain includes a compiler for the Dreamcast&#039;s main SH4 CPU, and optionally a compiler for the ARM-based AICA sound processor. Your operating system may already have versions of these programs installed to compile code for your computer, but we will need to build a &amp;quot;cross-compiler&amp;quot; for compiling specifically for the Dreamcast. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;KallistiOS&#039;&#039;&#039; or &#039;&#039;KOS&#039;&#039; is an open source development library and pseudo-operating system for the Dreamcast console. It is the best documented and most widely used development kit in the homebrew community. KallistiOS&#039;s very flexible license allows both homebrew and commercial use with no restrictions other than a requirement to include credit for its use in your project, and indeed almost all commercially sold indie Dreamcast titles use it. There are others in existence, like [[libronin]] and [[libdream]], as well as the older development kits [[Katana]] and [[Windows CE]] created by Sega and Microsoft for use in retail games, but this guide will only cover the setup and use of KallistiOS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;kos-ports&#039;&#039;&#039; is a repository including various libraries which integrate with KallistiOS. We will download and compile these libraries as well. &lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;debug link&#039;&#039;&#039; is a generic term referring to a hardware accessory to facilitate quickly running and debugging your programs. IP-based links include the Dreamcast&#039;s &#039;&#039;&#039;[[Broadband adapter]]&#039;&#039;&#039; and &#039;&#039;&#039;[[LAN adapter]]&#039;&#039;&#039; accessories, and serial-based links include the [[Coder&#039;s cable]], which is a cable that can connect the Dreamcast&#039;s serial port to your computer via USB or serial. This guide includes instructions for setting up and using the the Broadband adapter and a USB-based coder&#039;s cable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dc-tool&#039;&#039;&#039; and &#039;&#039;&#039;dcload&#039;&#039;&#039; are a pair of programs to facilitate using a debug link. &#039;&#039;dc-tool&#039;&#039; runs on your computer and links to a Dreamcast running &#039;&#039;dcload-ip&#039;&#039; or &#039;&#039;dcload-serial&#039;&#039;. With this setup, you can quickly load programs, read console feedback, load assets, transfer data, redirect I/O, handle exceptions, debug problems, and so forth.&lt;br /&gt;
&lt;br /&gt;
=Choosing a debug link solution=&lt;br /&gt;
If you are building the toolchain for the purpose of building existing programs from source with little to no modifications, then a debug link setup might not be necessary for you. You may simply build programs to burn directly to CD-R. However, if you are planning to actively develop for the Dreamcast, then a debug link is a critical component. While Dreamcast emulators are mature and accurate enough to play the vast majority of the system&#039;s games library without issue, many critical bugs may show up on a real Dreamcast system, but not on a Dreamcast emulator. Therefore, it is highly recommended to test on a real system as much as possible. It&#039;s also possible to load software off of a [[Serial SD card adapter]], but without an active link to a computer, debugging and stepping through programs as they execute is significantly more challenging.&lt;br /&gt;
&lt;br /&gt;
Presented below is a table comparing the different options available for a debug link. Due to the cost, potential buyers may want to factor in the ability to play multiplayer games with their purchase. Thus, for comparison, we have included information about the [[Modem]] with [[DreamPi]] as well, but understand that the Modem with DreamPi cannot be used as a debug link.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot; |Comparison of various Dreamcast connectivity options&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#c0c0c0;&amp;quot; width=&amp;quot;150&amp;quot; | Device: &lt;br /&gt;
|style=&amp;quot;background-color:#d0d0d0;&amp;quot; width=&amp;quot;400&amp;quot; | [[Broadband adapter]] (HIT-400 or HIT-401) &amp;lt;br /&amp;gt;Realtek RTL8139C chipset&lt;br /&gt;
|style=&amp;quot;background-color:#d0d0d0;&amp;quot; width=&amp;quot;400&amp;quot; | [[LAN adapter]] (HIT-300) &amp;lt;br /&amp;gt;Fujitsu MB86967 chipset&lt;br /&gt;
|style=&amp;quot;background-color:#d0d0d0;&amp;quot; width=&amp;quot;400&amp;quot; | [[Modem]] with [[DreamPi]]&lt;br /&gt;
|style=&amp;quot;background-color:#d0d0d0;&amp;quot; width=&amp;quot;400&amp;quot; | USB [[Coder&#039;s cable]]&lt;br /&gt;
|style=&amp;quot;background-color:#d0d0d0;&amp;quot; width=&amp;quot;400&amp;quot; | Serial [[Coder&#039;s cable]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#d0d0d0;&amp;quot; | Useful for dev? || Yes, supports dcload-ip || Yes, supports dcload-ip,&amp;lt;br/&amp;gt;but BBA is superior and cheaper || No, only useful for online multiplayer gaming || Yes, supports dcload-serial || Yes, supports dcload-serial&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#d0d0d0;&amp;quot; | Cost || $100 - $200 and up on used markets || $200 and up on used markets,&amp;lt;br/&amp;gt;due to extreme rarity || Kit prices vary, around $100 || See [[Coder&#039;s cable]] for vendors&amp;lt;br /&amp;gt;darc sells for $45, RetroOnyx sells for $85 || Varies on used markets, uncommonly sold&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#d0d0d0;&amp;quot; | Can make DIY? || No || No || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#d0d0d0;&amp;quot; | Performance || Up to 100 megabits/s || Up to 10 megabits/s || Up to 56 kilobits/s || Up to 1500 kilobits/s || Up to 120 kilobits/s&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#d0d0d0;&amp;quot; | Games support || Some games: Phantasy Star Online, Quake III Arena, Toy Racer, POD SpeedZone, Propellor Arena, Unreal Tournament&amp;lt;br /&amp;gt;Some browsers: Broadband Passport, PlanetWeb 3.0 || No games&amp;lt;br /&amp;gt;One browser: Dream Passport for LAN || All multiplayer games with network support&amp;lt;br /&amp;gt;All web browsers || NO multiplayer games support || NO multiplayer games support &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#d0d0d0;&amp;quot; | Homebrew support || Homebrew utilities like dcload-ip || Homebrew utilities like dcload-ip || Homebrew utilities don&#039;t support, only multiplayer games || Homebrew utilities like dcload-serial || Homebrew utilities like dcload-serial &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Setting up and compiling the toolchain with the dc-chain script=&lt;br /&gt;
===Dependencies===&lt;br /&gt;
First, we&#039;ll need to install dependencies before building the toolchain. Below we have provided commands to install these dependencies on various systems. Many of the packages will likely already be installed on your system, but we have provided an exhaustive list for good measure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
====macOS on an Intel or Apple Silicon processor====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
First, make sure you install Apple Xcode, including the Command Line tools. You will also need to install several other packages for which we&#039;ll include instructions assuming you have installed the [https://brew.sh/ Homebrew] package manager on your system.&lt;br /&gt;
 brew install make wget gettext texinfo gmp mpfr libmpc libelf jpeg-turbo libpng cmake meson libisofs&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Important Note for Apple Silicon users&#039;&#039;: On Apple Silicon, Homebrew installs libraries to a path not included by default by the compiler. If you haven&#039;t added these to your &#039;&#039;&#039;~/.zprofile&#039;&#039;&#039;, then add the following lines now and reload your session (or run them in your Terminal session whenever you compile KOS):&lt;br /&gt;
 export CPATH=/opt/homebrew/include&lt;br /&gt;
 export LIBRARY_PATH=/opt/homebrew/lib&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
====Debian/Ubuntu-based Linux====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt install gawk patch bzip2 tar make libgmp-dev libmpfr-dev libmpc-dev gettext wget libelf-dev texinfo bison flex sed git build-essential diffutils curl libjpeg-dev libpng-dev python3 pkg-config cmake libisofs-dev meson ninja-build rake cmake&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
====Fedora-based Linux====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
 sudo dnf install gawk patch bzip2 tar make gmp-devel mpfr-devel libmpc-devel gettext wget elfutils-libelf-devel texinfo bison flex sed git diffutils curl libjpeg-turbo-devel libpng-devel gcc-c++ python3 rubygem-rake meson ninja-build cmake&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
====Arch-based Linux====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
 sudo pacman -S --needed gawk patch bzip2 tar make gmp mpfr libmpc gettext wget libelf texinfo bison flex sed git diffutils curl libjpeg-turbo libpng python3 meson ruby-rake cmake which gcc&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Alpine-based Linux====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
 sudo apk --update add build-base patch bash texinfo gmp-dev mpfr-dev libjpeg-turbo-dev libpng-dev elfutils-dev curl wget python3 git ruby-rake cmake fmt&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Other Linux distributions====&lt;br /&gt;
If you&#039;re using a different Linux- or Unix-based system besides the one above, you may need to reference your distribution&#039;s package database and package manager documentation for the equivalent package names and commands necessary for your system.&lt;br /&gt;
&lt;br /&gt;
===Creating a space for your toolchain installation===&lt;br /&gt;
Create the path where we&#039;ll install the toolchain and KOS, and grant it the proper permissions:&lt;br /&gt;
 sudo mkdir -p /opt/toolchains/dc&lt;br /&gt;
 sudo chmod -R 755 /opt/toolchains/dc&lt;br /&gt;
 sudo chown -R $(id -u):$(id -g) /opt/toolchains/dc&lt;br /&gt;
===Cloning the KallistiOS git repository===&lt;br /&gt;
Next, clone the git repository for the latest &#039;&#039;&#039;2.2.x&#039;&#039;&#039; stable version of KallistiOS: &lt;br /&gt;
 git clone https://github.com/KallistiOS/KallistiOS.git -b v2.2.x /opt/toolchains/dc/kos&lt;br /&gt;
&lt;br /&gt;
Alternatively, you may clone the latest unstable version, which contains the latest changes, but may also contain bugs or issues. Proceed at your own risk using unstable master!&lt;br /&gt;
 git clone https://github.com/KallistiOS/KallistiOS.git -b master /opt/toolchains/dc/kos&lt;br /&gt;
&lt;br /&gt;
===Configuring the dc-chain script===&lt;br /&gt;
Enter the dc-chain directory:&lt;br /&gt;
 cd /opt/toolchains/dc/kos/utils/dc-chain&lt;br /&gt;
&lt;br /&gt;
For KOS master:&lt;br /&gt;
 cd /opt/toolchains/dc/kos/utils/kos-chain&lt;br /&gt;
&lt;br /&gt;
You may now configure the options to your liking by creating a &amp;lt;code&amp;gt;Makefile.cfg&amp;lt;/code&amp;gt; file in this directory. Copy or rename the &amp;lt;code&amp;gt;Makefile.default.cfg&amp;lt;/code&amp;gt; (KOS 2.2.0 stable) or &amp;lt;code&amp;gt;Makefile.dreamcast.cfg&amp;lt;/code&amp;gt; (KOS master unstable) file to &amp;lt;code&amp;gt;Makefile.cfg&amp;lt;/code&amp;gt; and then use a text editor to edit this file&#039;s settings to your liking. For example, you may like to alter the &amp;lt;code&amp;gt;makejobs&amp;lt;/code&amp;gt; option to the number of threads available on your CPU to speed up the compilation. However, if you run into errors during compilation, you may want to set &amp;lt;code&amp;gt;makejobs=1&amp;lt;/code&amp;gt;, as on some operating systems the toolchain may fail to build with a higher setting.&lt;br /&gt;
&lt;br /&gt;
We will leave the default &#039;&#039;&#039;stable&#039;&#039;&#039; profile for the toolchain, which currently uses GCC 13.2. For advanced users, other profiles are available to you; read the &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt; file in the dc-chain directory for more information if you are interested. If you are unsure about options in the &amp;lt;code&amp;gt;Makefile.cfg&amp;lt;/code&amp;gt;, just leave the defaults alone.&lt;br /&gt;
&lt;br /&gt;
===Downloading and compiling the toolchain===&lt;br /&gt;
Now we will run a script to download files and compile the toolchain. Simply run:&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This will download and unpack the relevant necessary files and then begin the compilation process. The compilation can take anywhere from minutes to a few hours depending on your CPU and number of threads available. When successfully finished, the toolchains will be ready. If you used the command above, the &#039;&#039;&#039;gdb&#039;&#039;&#039; debugger will have been built as well.&lt;br /&gt;
&lt;br /&gt;
===Cleaning up temporary files===&lt;br /&gt;
After building everything, you can clean up the extraneous files in your dc-chain directory by entering:&lt;br /&gt;
 make clean distclean&lt;br /&gt;
&lt;br /&gt;
=Configuring and compiling KOS and kos-ports=&lt;br /&gt;
===Setting up the environment settings===&lt;br /&gt;
Enter the KOS directory:&lt;br /&gt;
 cd /opt/toolchains/dc/kos&lt;br /&gt;
Copy the pre-made environment script into place:&lt;br /&gt;
 cp doc/environ.sh.sample environ.sh &lt;br /&gt;
For most users, the default settings will suffice. However, advanced users may edit the environ.sh to your liking if you&#039;d like to change compile flags or alter paths. If you&#039;d like to have multiple KOS versions installed or multiple toolchain versions installed, you can set up different environ.sh files corresponding to these different configurations by altering the paths.&lt;br /&gt;
&lt;br /&gt;
You will need to run the following command to apply the KOS environment settings to your currently running shell. Run the following command now, &#039;&#039;&#039;and&#039;&#039;&#039; &#039;&#039;whenever&#039;&#039; you open a new shell to work on Dreamcast projects:&lt;br /&gt;
 . /opt/toolchains/dc/kos/environ.sh&lt;br /&gt;
&lt;br /&gt;
===Building KOS===&lt;br /&gt;
Build KOS:&lt;br /&gt;
 make&lt;br /&gt;
KOS is now built.&lt;br /&gt;
===Building kos-ports===&lt;br /&gt;
Clone the kos-ports repository to your system:&lt;br /&gt;
 git clone --recursive https://github.com/KallistiOS/kos-ports /opt/toolchains/dc/kos-ports&lt;br /&gt;
Run the script to build all of the included ports:&lt;br /&gt;
 /opt/toolchains/dc/kos-ports/utils/build-all.sh&lt;br /&gt;
kos-ports is now built.&lt;br /&gt;
&lt;br /&gt;
===Building the KOS examples===&lt;br /&gt;
Enter the KOS examples directory:&lt;br /&gt;
 cd /opt/toolchains/dc/kos/examples&lt;br /&gt;
Build the examples:&lt;br /&gt;
 make&lt;br /&gt;
All of the example programs provided with KallistiOS are now built.&lt;br /&gt;
&lt;br /&gt;
=Further=&lt;br /&gt;
At this point, you will have a cross-compiler built so that you can generate programs for your Dreamcast from code. KallistiOS, the Dreamcast development library and operating system, is built, as is its associated packages within kos-ports, and all of its example programs.&lt;br /&gt;
&lt;br /&gt;
At this point, you will likely want to view some of the following articles:&lt;br /&gt;
* Setting up an IDE for Dreamcast development&lt;br /&gt;
** [[CLion Debugging]]&lt;br /&gt;
** [[Visual Studio Code]]&lt;br /&gt;
* [[Creating a first project with KallistiOS]] (&#039;&#039;&#039;TODO&#039;&#039;&#039;: Explain how to create a new DC project folder with Makefile, adding an external library, create a basic program, and compile it)&lt;br /&gt;
* [[Using a debug link]]&lt;br /&gt;
* [[Burning an example to CD-R]]&lt;br /&gt;
&lt;br /&gt;
=Running an example program through a debug link=&lt;br /&gt;
&#039;&#039;&#039;TODO&#039;&#039;&#039;: &#039;&#039;Give a tutorial on compiling dcload/dc-tool, setting up a serial, USB, or IP debug link, and running 2ndmix demo on real hardware.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On your development machine, setup [[dcload-ip]]:&lt;br /&gt;
* [[Using dcload-ip with Linux]]&lt;br /&gt;
* [[Using dcload-ip with Windows Subsystem for Linux]]&lt;br /&gt;
&lt;br /&gt;
For the Dreamcast, download and burn the [[:File:Dcload-2023-06-22.zip|latest version of dcload-ip or dcload-serial]] to a CD-R -- the IP version includes improved DHCP support, so there is no longer a need to configure things beforehand. &lt;br /&gt;
 &lt;br /&gt;
Run one of the examples from the &amp;lt;code&amp;gt;kos/examples/dreamcast&amp;lt;/code&amp;gt; directory with one of the following commands:&lt;br /&gt;
 dc-tool-ip -t &amp;lt;dreamcast IP address&amp;gt; -x example.elf&lt;br /&gt;
&lt;br /&gt;
 dc-tool-ser -t &amp;lt;serial device path&amp;gt; -x example.elf&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;dc-tool-ip&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;dc-tool-ser&amp;lt;/code&amp;gt; without any parameters to get additional options.&lt;br /&gt;
&lt;br /&gt;
=Burning an example program to CD-R=&lt;br /&gt;
&#039;&#039;&#039;TODO&#039;&#039;&#039;: &#039;&#039;Explain how to build mkdcdisc and write 2ndmix demo to CD-R and run on a Dreamcast console&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/simulant/mkdcdisc mkdcdisc] can be used to easily generate a burnable self-boot CDI image.&lt;br /&gt;
Dependencies required:&lt;br /&gt;
* Homebrew: &amp;lt;code&amp;gt;meson libisofs pkg-config&amp;lt;/code&amp;gt;&lt;br /&gt;
* Debian/Ubuntu: &amp;lt;code&amp;gt;libisofs-dev meson ninja-build&amp;lt;/code&amp;gt;&lt;br /&gt;
* Fedora: &amp;lt;code&amp;gt;meson ninja-build&amp;lt;/code&amp;gt;&lt;br /&gt;
* Arch: &amp;lt;code&amp;gt;meson&amp;lt;/code&amp;gt;&lt;br /&gt;
* Alpine: &amp;lt;code&amp;gt;meson libisofs-dev&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build &amp;lt;code&amp;gt;mkdcdisc&amp;lt;/code&amp;gt;:&lt;br /&gt;
 git clone https://gitlab.com/simulant/mkdcdisc.git&lt;br /&gt;
 cd mkdcdisc&lt;br /&gt;
 meson setup builddir&lt;br /&gt;
 meson compile -C builddir&lt;br /&gt;
 ./builddir/mkdcdisc -h&lt;br /&gt;
and create a CDI image from your compiled ELF like so:&lt;br /&gt;
 mkdcdisc -e MyProgram.elf -o MyProgram.cdi&lt;br /&gt;
Then you can burn the CDI file using DiscJuggler (Windows-only, but also works through [https://www.winehq.org/ WINE]), ImgBurn with the CDI plugin, or the cdiburn *nix script floating around out there. (document this better)&lt;/div&gt;</summary>
		<author><name>SpecialK</name></author>
	</entry>
	<entry>
		<id>https://dreamcast.wiki/wiki/index.php?title=Modern_A/V_guide&amp;diff=3812</id>
		<title>Modern A/V guide</title>
		<link rel="alternate" type="text/html" href="https://dreamcast.wiki/wiki/index.php?title=Modern_A/V_guide&amp;diff=3812"/>
		<updated>2025-09-09T04:09:18Z</updated>

		<summary type="html">&lt;p&gt;SpecialK: created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Native DC outputs ==&lt;br /&gt;
&lt;br /&gt;
The Dreamcast&#039;s multi-AV port supports several video outputs. These are, in ascending order of quality:&lt;br /&gt;
&lt;br /&gt;
* Composite video (yellow RGB connector)&lt;br /&gt;
* S-video (mini-DIN with separate luminescence and chroma (Y/C) signals)&lt;br /&gt;
* RGB (separate signals for red, green, and blue colors, plus a sync signal)&lt;br /&gt;
* VGA (PC-style connection for use with a monitor)&lt;br /&gt;
&lt;br /&gt;
The Dreamcast also supported RF connection to older TVs using a cable which converts composite video and audio signals to a single signal which connects to a TV&#039;s antenna or VCR input. Nowadays RF and composite should be ignored entirely.&lt;br /&gt;
&lt;br /&gt;
You should use VGA or RGB signals whenever you can. These provide the best possible video signal with less color bleeding, cross-talk, and &amp;quot;fuzz&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Composite video ===&lt;br /&gt;
&lt;br /&gt;
Composite is the most common way to connect a DC to a TV, as this cable was included in the box in most regions. This yellow RCA cable&#039;s video looks acceptable on a smaller CRT display. But on a larger model it looks bad. And on a flat-panel display like a LCD, it looks absolutely awful. &lt;br /&gt;
&lt;br /&gt;
Avoid composite video wherever possible.&lt;br /&gt;
&lt;br /&gt;
=== S-video ===&lt;br /&gt;
&lt;br /&gt;
S-video (sometimes erroneously called S-VHS) uses two signals, rather than composite&#039;s one. This greatly increases quality, as black-and-white video is carried on one path and color is carried on another. High-end CRTs and early flat panel TVs support S-video. &lt;br /&gt;
&lt;br /&gt;
This was the easiest way to improve picture fidelity in North America during the DC&#039;s lifetime.&lt;br /&gt;
&lt;br /&gt;
=== RGB ===&lt;br /&gt;
&lt;br /&gt;
While S-video uses two signals for video, RGB uses three. This allows for amazing video quality. &lt;br /&gt;
&lt;br /&gt;
There are several standards for RGB video around the world. You need to research which one is right for your location and equipment. The most common are:&lt;br /&gt;
&lt;br /&gt;
* SCART (used heavily in Europe)&lt;br /&gt;
* JP-21 (RGB-21, used in Japan and Korea)&lt;br /&gt;
* RGB-S (4 RCA or BNC connectors, with the 4th cable being used for sync)&lt;br /&gt;
* SoG (Sync-on-green, a rarer alternative to RGB-S)&lt;br /&gt;
&lt;br /&gt;
There is no difference in video quality between these standards when used correctly.&lt;br /&gt;
&lt;br /&gt;
==== SCART ====&lt;br /&gt;
&lt;br /&gt;
SCART can carry high quality RGB signals as well as lower quality ones. Composite to SCART adapters were common during the DC&#039;s life (such as a SCART plug with RCA connectors). These provide composite video quality, but RGB SCART cables were also available as aftermarket accessories. These are very rare nowadays, so people with a compatible TV should look into converting other, more common cables.&lt;br /&gt;
&lt;br /&gt;
==== JP-21 ====&lt;br /&gt;
&lt;br /&gt;
JP-21 (or RGB-21) was most commonly used in Japan and Korea. It uses the same connector as SCART but with a different pinout. This means that it is &#039;&#039;&#039;&#039;&#039;not compatible&#039;&#039;&#039;&#039;&#039; with SCART, and the connectors cannot be used interchagably.&lt;br /&gt;
&lt;br /&gt;
As a rule, if a new old stock product is listed in Japanese and/or Korean, it is JP-21. If it is written in English and/or other European languages, it is SCART. &lt;br /&gt;
&lt;br /&gt;
==== RGB-S ====&lt;br /&gt;
&lt;br /&gt;
RGB-S is a video signal which uses 4 cables to transit Red, Green, Blue, and a Synchronization signal. SCART and JP-21 both use the same signals, so &amp;quot;RGB-S&amp;quot; usually implies connecting with 4 distinct RCA or BNC cables.&lt;br /&gt;
&lt;br /&gt;
Some PVMs, projectors, and other high end equipment used RGB-S connections, but it is rare. Although the RCA jack colors are the same, RGB-S and component video are not compatible. Component video will be covered later in this guide.&lt;br /&gt;
&lt;br /&gt;
==== Sync-on-green ====&lt;br /&gt;
&lt;br /&gt;
Rather than use a separate sync signal, some displays can get that information from the green color channel. This is also very rare, and is of little interest unless you have a display which accepts it.&lt;br /&gt;
&lt;br /&gt;
=== VGA ===&lt;br /&gt;
&lt;br /&gt;
In the Dreamcast context, VGA can refer to a particular video signal (640x480@60Hz) or the connector used on monitors (commonly called DE-15 or D-Sub.)&lt;br /&gt;
&lt;br /&gt;
Compared to TV signals like S-video or even RGB, VGA has a higher picture quality because it is progressive scan rather than interlaced (each line is drawn at the same time, not alternating.) This results in a much sharper image, equivalent to 480p.&lt;br /&gt;
&lt;br /&gt;
The Dreamcast supports VGA output natively, but a small minority of games do not. Some of these unsupported games can be &amp;quot;tricked&amp;quot; into outputting VGA using mods, cheat codes, ODE overrides, or simply switching cables once the game has started.&lt;br /&gt;
&lt;br /&gt;
Sega&#039;s official &amp;quot;VGA box&amp;quot; for the Dreamcast is now quite rare and expensive, but many third party alternatives exist. These may vary in quality and features. Most will have either a 3.5mm audio jack or stereo RCA cables for audio, as VGA does not carry audio.&lt;br /&gt;
&lt;br /&gt;
== Common alternatives ==&lt;br /&gt;
&lt;br /&gt;
=== RF ===&lt;br /&gt;
&lt;br /&gt;
RF combines composite video with audio in a single coaxial cable, and was commonly used with OTA TV antennas and VCRs. The signal is often noisy and is the worst quality possible. RF should only be used on an old TV with no better options available. &lt;br /&gt;
&lt;br /&gt;
=== Component ===&lt;br /&gt;
&lt;br /&gt;
Also known as YPbPr or D-terminal (in Japan), component video is similar to RGB, but uses a different color conversion so the signals are not directly compatible. &lt;br /&gt;
&lt;br /&gt;
Because component video became very popular after the Dreamcast, there has been a demand to convert RGB signals to YPbPr component. Most converters or purpose-built cables will use RGB signals as a source, so the video is limited to 480i rather than the 480p offered with VGA. &lt;br /&gt;
&lt;br /&gt;
[https://www.hdretrovision.com/blog/2020/1/5/restock-dreamcast-and-hdmi HD Retrovision has announced] a Component video cable for Dreamcast with support for both 480i and 480p video, but there has been little news since 2020. &lt;br /&gt;
&lt;br /&gt;
=== HDMI ===&lt;br /&gt;
&lt;br /&gt;
Most Dreamcast HDMI cables are adapters which convert a VGA signal from the DC to HDMI. &lt;br /&gt;
&lt;br /&gt;
There is a wide variety of different cables or adapters which have varying levels of quality and features. Some may upscale the video to a higher resolution, introduce video latency, or alter the color saturation and contrast. &lt;br /&gt;
&lt;br /&gt;
Generic VGA-HDMI adapters also exist, but may be less suitable for gaming and be incompatible with some Dreamcast-TV combinations. Ensure any adapter is &#039;&#039;&#039;VGA to HDMI&#039;&#039;&#039; and not HDMI to VGA - the conversion is unidirectional.&lt;br /&gt;
&lt;br /&gt;
TODO: Reviews?&lt;br /&gt;
&lt;br /&gt;
== HDMI mods ==&lt;br /&gt;
&lt;br /&gt;
A HDMI adapter which connects to the DC&#039;s multi-AV output still uses the DC&#039;s native VGA output before converting it to HDMI. This introduces latency and reduces quality because it is converting to analog video and then back to digital.&lt;br /&gt;
&lt;br /&gt;
A HDMI mod, on the other hand, directly connects to the DC&#039;s video chipset and grabs the signal straight from the source. This allows for perfect video quality, no added lag, and flexible scaling options. &lt;br /&gt;
&lt;br /&gt;
However they are quite expensive and require significant delicate soldering to your system. Most installations also remove the Serial port from the Dreamcast, which may be undesirable if you want to use a [[Coder&#039;s cable|Coder&#039;s Cable]] or [[Neo Geo Pocket Color link cable|NGPC link cable]].&lt;br /&gt;
&lt;br /&gt;
=== RetroGEM ===&lt;br /&gt;
&lt;br /&gt;
Formerly [[DCDigital]] and DCHDMI, [https://www.pixelfx.co/hdmi-retro-gem RetroGEM] is now a multi-system modification which supports Dreamcast and other consoles. &lt;br /&gt;
&lt;br /&gt;
== Recommendations ==&lt;br /&gt;
&lt;br /&gt;
For the best, most authentic Dreamcast experience, use a CRT PC monitor, preferably with Trinitron (or equivalent). This has the progressive scan resolution which other CRTs do not, and does not have scaling or conversion issues like newer flat panel displays (LCD, OLED) do. It is the best of both worlds.  &lt;br /&gt;
&lt;br /&gt;
With a modern TV or display which only accepts HDMI, RetroGEM is by far the best option, although its price and installation is an understandable barrier for many. A standard Dreamcast HDMI cable such as Kaico or Retrobird will deliver a great experience.&lt;br /&gt;
&lt;br /&gt;
For older displays without HDMI or VGA, choose RGB, S-video, composite, and RF in decreasing order of preference. &lt;br /&gt;
&lt;br /&gt;
For dedicated gamers or those with unique setups, a frame scaler may be a good investment but the DC has enough output options that it is rarely necessary to use a scaler. &lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
[https://gamesx.com/wiki/doku.php?id=av:dreamcastav Dreamcast AV on GameSX]&lt;/div&gt;</summary>
		<author><name>SpecialK</name></author>
	</entry>
</feed>