/washingtondc

WIP (VERY WIP) SEGA Dreamcast Emulator

Primary LanguageCGNU General Public License v3.0GPL-3.0

WashingtonDC

WashingtonDC is an open-source SEGA Dreamcast emulator for Linux. It's still at an early stage of development; currently it can only run the Dreamcast firmware, Crazy Taxi, Power Stone and a handful of homebrew programs.

GALLERY

Alt text Alt text

COMPILING

mkdir build
cd build
cmake [OPTIONS] ..
make

Available options for the cmake generation are:

ENABLE_SH4_MMU=On(default)/Off - emulate the sh4's Memory Management Unit (MMU)
ENABLE_DEBUGGER=On(default)/Off - Enable the remote gdb backend
ENABLE_DIRECT_BOOT=On(default)/Off - Enable direct boot mode (optionally skip
                                     boot rom)
DBG_EXIT_ON_UNDEFINED_OPCODE=Of/Off(default) - Bail out if the emulator hits an
                                               undefined opcode
INVARIANTS=On(default)/Off - runtime sanity checks that should never fail
DEEP_SYSCALL_TRACE=On/Off(default) - log system calls made by guest software.

USAGE

./washingtondc -b dc_bios.bin -f dc_flash.bin [options] [IP.BIN 1ST_READ.BIN]

OPTIONS:
-b <bios_path> path to dreamcast boot ROM
-c enable development/debugging console access via TCP port 2000
-f <flash_path> path to dreamcast flash ROM image
-g enable remote GDB backend via TCP port 1999
-d enable direct boot (skip BIOS)
-u skip IP.BIN and boot straight to 1ST_READ.BIN (only valid for direct boot)
-m <gdi path> path to .gdi file which will be mounted in the GD-ROM drive
-s path to dreamcast system call image (only needed for direct boot)
-t establish serial server over TCP port 1998
-h display this message and exit
-p disable the dynamic recompiler and enable the interpreter instead
-j disable the x86_64 backend and use the JIT IL interpreter instead
-x enable the x86_64 dynamic recompiler backend (this is enabled by default)

The emulator currently only supports one controller, and the controls cannot be rebinded yet. It must be controlled using a keyboard with a number pad.

The -b and -f options are mandatory because we need a firmware to boot. To do a direct-boot, the -s option is also needed to provide a system call image since the firmware won't have had a chance to load one itself.

The -c command opens up a TCP on port 2000 that you can connect to via telnet to control the emulator via a text-based command-line interface; this is the closest thing to a UI that WashingtonDC has.

You can view online command documentation with the 'help' command. 'begin-execution' is the command to start the emulator.

The only games I know to work so far are Power Stone and Crazy Taxi.

    |============================|
    | keyboard   |     Dreamcast |
    |============================|
    | W          | UP    (D-PAD) |
    | S          | DOWN  (D-PAD) |
    | A          | LEFT  (D-PAD) |
    | D          | RIGHT (D-PAD) |
    | 2 (numpad) | A             |
    | 6 (numpad) | B             |
    | 4 (numpad) | X             |
    | 8 (numpad) | Y             |
    | Space      | Start         |
    |============================|

EXAMPLES

load the firmware (dc_bios.bin) with no .gdi disc image mounted:

./washingtondc -b dc_bios.bin -f dc_flash.bin

load the firmware with a .gdi disc image mounted:

./washingtondc -b dc_bios.bin -f dc_flash.bin -m /path/to/disc.gdi

direct-boot a homebrew program (requires a system call table dump):

./washingtondc -b dc_bios.bin -f dc_flash.bin -s syscalls.bin -du IP.BIN 1st_read.bin

CONTACT

You can reach me at my public-facing e-mail address, chimerasaurusrex@gmail.com.

I'm also @sbockers on twitter if you can tolerate my lame sense of humor.

WashingtonDC's official website (such as it is) can be found at http://snickerbockers.github.io.