Log in

No account? Create an account
Improving the hardware 
25th-Apr-2009 01:40 am
Serial link: poor man's answer to broadband adapter shortage (and pricing). It's a cheap way to transfer data between PC and Dreamcast (including dumping your own BIOS and FLASH) and pretty much the only option if you're considering homebrew software. Sure, demos and emulators can be burned onto CDs but for testing your own code you'll need a more robust delivery method :)

Some time ago I mentioned that most serial link projects out there are overly complicated. Perhaps it's because many were conceived years ago when every PC had at least one RS232 port and USB chips were expensive. I'm about to show you it can be made really simple.

I'm going to skip all the technical details and going to assume you already know:
- what is RS232 and it's limitations
- why we should stick to low-voltage signaling
- what is USB and why use it

First you'll need FT232 chip from FTDI. It's exactly what we want, a simple yet fast USB to serial converter with low-voltate I/O. And by "chip" I actually mean a ready-made interface like this one:

It can be powered from USB line and has internal 3.3V low drop regulator - so all it takes to make it work is two short wires: one to route power supply, one to connect LDO output with voltage reference pin for I/O.

Now for the Dreamcast part. I found it impossible to purchase a connector that would fit the serial port so it had to go. You won't miss it, trust me.
First cut the connector assembly in two, with a small saw blade or a file. Take your time, you don't want to damage anything on the board (hence the black tape by the way). Pay attention to where exactly are you placing the cutting point, you will want both sides of the video connector intact so that the screws will hold it well in place.

Cut the connector legs with precise cutters. And I do mean precise, too big will rip them off the board, possibly damaging the traces as well. The alternative is to insert a small, flat head screwdriver (or something like that) under the pin and pry it up as you heat the soldering point with iron tip. Again, do not apply any force before melting the solder. The pins on right were cut, ones on the left were lifted.

Now desolder the shield and remove unwanted connector part completly. Don't throw it away yet, you'll need to cut off the other side mounting wing too, to provide a proper spacing for metal heat exchanger. Well you can always use a couple of small washers for that if need be.

And here's a picture of the pads cleaned, with any leftover pin remains removed.

Now you just need to solder 5 wires (RxD, TxD, RTS, CTS and ground) to the pads. I used one of the shield pads for ground, that makes it easier to fit the other four. That can be somewhat challenging with thicker wire but it pays off to have it durable and safe to twist around. Glue gun does the rest, just don't overdo it or you'll have problems fitting the covering plate/heat exchanger.

Ready to rock :) You can even see the wire I used to route USB power and I/O reference. All you need to do now is put it all back together and get friendly with dcload-serial tool.

So, does it work? Hell yes, on 3 Dreamcasts already. Same technique in every case. Works like a charm up to 1.5Mbps too. Just keep the wires to FT chip as short as possible (already long board traces and protective RC elements not helping any). If you have problems with higher speeds you can try using 5V instead of 3.3V for I/O. I belive this to be pretty safe (run it for hours on my Dreamcasts) but make no guarantees.
Some people say even 3Mbps can be achieved when protection RCs are removed but that will open a direct line to SH4 pins and you risk permanent damage to it. Obviously, no 5V in that case.

There's no galvanic separation here, wouldn't make much sense with common ground, so even if DC power supply is floating (I think) make sure you connect everything to the same AC phase. Or suffer the consequences.

Oh, and yes, the wires just stick out of the back of Dreamcast. Hey, it's cheap and works :)

UPDATE: Few more details, should be more useful now :)

First, here's a simplified pinout (only the required signals shown):

And just in case someone needs this extra bit of info, the whole serial port carries these signals on B10 down to B1 (looking at the picture above that's left to right): 3.3V, /RESET, GND, CTS, RTS, TxD, RxD, GND, SCK, 5V. And as you can see the big pads on both sides (connector shield) are also tied to ground.

This particular serial to USB converter was bought here: http://www.propox.com/products/t_93.html
It's a pretty common design but there's a manual with schematics for download on that page if you need them.

Pins VPO, VEX and VIO are connected together in my photo. That's PORTVCC, EXTVCC and IOVCC - and that means 5V on the I/O pins. This is actually by mistake, I'm short on these modules and when I swap it around I often forget to re-wire it properly for Dreamcast. As I said, it will work like this but that's unsafe.
You should connect IOVCC to 3V3OUT instead. With this module you'd just put a jumper on pins 24 and 23 and connect 22 with 18 using a short, insulated wire.

And don't forget it's a null-modem so TxD from the board goes to RxD pin on the FT chip and vice versa. Same for RTS/CTS control signals.

Hope that helps!
27th-Apr-2009 06:16 am (UTC) - MVSC2
I tryed create one bin file of MVSC2 cart using this order :

"epr-23085a.ic11", 0x0000000, 0x0400000, CRC(5d5b7ad1) SHA1(f58c31b245fc33fa541f9f074548402a63f7c3d3) )
"mpr-23048.ic17", 0x0800000, 0x0800000, CRC(93d7a63a) SHA1(c50d10b4a3f9db51eae5749f5b665d7c8ab6c898) )
"mpr-23049.ic18", 0x1000000, 0x0800000, CRC(003dcce0) SHA1(fb71c8ca9271d2155878c72d8fe2df3031e6c014) )
"mpr-23050.ic19", 0x1800000, 0x0800000, CRC(1d6b88a7) SHA1(ba42e9d1d912d88a7ad839b878975ba590634320) )
"mpr-23051.ic20", 0x2000000, 0x0800000, CRC(01226aaa) SHA1(a4c6a0eda05e53d0e51b92a4317a86a708a7efdb) )
"mpr-23052.ic21", 0x2800000, 0x0800000, CRC(74bee120) SHA1(5a0fb48fa758a2be2e08e3b1298103c5aa748835) )
"mpr-23053.ic22", 0x3000000, 0x0800000, CRC(d92d4401) SHA1(a868780f8d2e176ff10781e1c08bf932f34ac504) )
"mpr-23054.ic23", 0x3800000, 0x0800000, CRC(78ba02e8) SHA1(0f696a33e1e6671001efc309ed62f084a246ad24) )
"mpr-23055.ic24", 0x4000000, 0x0800000, CRC(84319604) SHA1(c3dde162e043a54e1325202b46191b32e8784a1c) )
"mpr-23056.ic25", 0x4800000, 0x0800000, CRC(d7386034) SHA1(be1f3ca5f283e428dc59dc072de3e7d36e122d53) )
"mpr-23057.ic26", 0x5000000, 0x0800000, CRC(a3f087db) SHA1(b52d7c072cb5c2fdd10d0ac0b62cebe48b229ae3) )
"mpr-23058.ic27", 0x5800000, 0x0800000, CRC(61a6cc5d) SHA1(34e52cb076888313a80f2b87876b8d37b91d85a0) )
"mpr-23059.ic28", 0x6000000, 0x0800000, CRC(64808024) SHA1(1a6c60c330642b273978d3dd02d95d17d36ee3f2) )
"mpr-23060.ic29", 0x6800000, 0x0800000, CRC(67519942) SHA1(fc758d9075625f8140d5d828c8f6b7a91bcc9119) )
"mpr-23061.ic30", 0x7000000, 0x0800000, CRC(fb1844c4) SHA1(1d1571516a6dbed0c4ded3b80efde9cc9281f66f) )
"mpr-23083.ic31", 0x7800000, 0x0400000, CRC(c61d2dfe) SHA1(a05fb979ed7c8040de91716fc8814e6bd995efa2) )
"mpr-23084.ic32", 0x8000000, 0x0400000, CRC(4ebbbdd9) SHA1(9ad8c1a644850de6e35705318cd1991e1d6e60a8) )

The result is one big file of 124mb, and at loading on Makaron i see this infinite loop and the game don´t boot:


something is wrong ?

thank´s for Makaron !
27th-Apr-2009 08:42 am (UTC) - Re: MVSC2
Close. Notice how epr-23085a.ic11 is only half the size of other files? To create continuous image the joined files must be the same size, so either pad it with zeros or simply add twice. The resulting data file must successfully pass ROM board checksum test, that's how you will know it's OK.

All that won't do you much good though, most cart-based games have protection devices that are not yet emulated. The game will have all sorts of issues, so please do not report any "bugs" on cart games. Such reports will be ignored.
27th-Apr-2009 02:04 pm (UTC)
So sad Deunan, Alex won´t work anymore on NAOMI cart checksum and his was close to send to you one machine with one cart, so now the emulation of the carts will freeze for some time I guess. Will you continue your test with ElSemi?
27th-Apr-2009 02:35 pm (UTC)
I've not heard from Alex the last few days so he's taking some time off. It remains to be seen what's his final decision on all this.
As for NAOMI, that stuff gets expensive quickly (it's not just the main board you know) and I don't even have anywhere to put it :) I was hoping to get one cheap cart for experiments (might end up broken) but that will have to wait.

Anyway, ElSemi is doing great even without my help :P It's possible that even one proper dump will let us (or somebody else) figure out how to fix other cart based games and hacked BIOS won't be necessary.
Naomi from Japan - Anonymous - Expand
28th-Apr-2009 08:39 am (UTC)

The SD-Card Reader for the DC looks realy cool.

28th-Apr-2009 03:56 pm (UTC)
It's a nice idea. Good for standalone GD dumping, this way anyone with TV can do that.
I prefer serial uplink to a PC though. Modified dcload tools give me a nice remote console (so no TV/controller needed) and the ability to directly access files on HDD. Testing is much easier :)
28th-Apr-2009 10:57 pm (UTC) - reminder of slowdownbugreport
just so that it does not get lost. maybe i am the only one with this problem. could be some specific graphic cards setting. my old answer:

ah sorry. forget to give more infos. amd dualcore 5600/2gb ram. nvidia 9800gtx+ latest drivers, latest directx 9 version. winxp pro sp2.
i just tried it again with shenmue 1 playing the intro sequence. everythings getting slow, even the sound, then stops, pressing f12 once brings up the menu. game still stopped. pressing f12 again, menue goes away. game runs fullspeed again. for appr. 10-15 seconds. slowdown starts again.
as already stated, it does not slowdown in windowed mode. all settings on default. i have some extra settings enabled in my nvidia driver options. like tripple buffering and vsync. but all my other emulators (nulldc included) work fine in fullscreen.
besides that problem (seems to be i am the only one experiencing it?) i really appreciate your work. its great to see such dedicated projects goin on. keep it up :D
28th-Apr-2009 11:09 pm (UTC) - Re: reminder of slowdownbugreport
It's a bug some people experience but I'm unable to reproduce.
Turn off vsync or reduce desktop resolution to 1024x768 (or less). That should help for the time being.
30th-Apr-2009 04:33 am (UTC) - module power
Its hard to tell from the picture how you routed the power and io reference. Is that from pin 12 (PORTVCC) to pins 11 and 10 (EXTVCC and VCC-IO)? Or just pin 12 to pin 10?
30th-Apr-2009 09:25 am (UTC) - Re: module power
Look here: http://www.propox.com/products/t_93.html
Go to the bottom of the page, download "User's Manual". There's a schematic on the last page of the manual.

Pins VPO, VEX and VIO are connected together in my photo. That's PORTVCC, EXTVCC and IOVCC. This is actually by mistake, I'm short on these modules and I when I swap it around I often forget to re-wire it properly for Dreamcast. As I said, it will work like this but that's unsafe.

You should connect IOVCC to 3V3OUT instead. With this module you'd just put a jumper on pins 24 and 23 and connect 22 with 18 using a short, insulated wire.
Re: module power - Anonymous - Expand
Re: module power - Anonymous - Expand
Re: module power - Anonymous - Expand
Re: module power - Anonymous - Expand
Re: module power - Anonymous - Expand
16th-Oct-2009 10:31 pm (UTC)
I've tried it with a FTDI MM232R and that's working.
Being a soldering newbie, I bought an old dreamcast.
I hope this will hold.
Anyway, thanks for the idea, now I can toy with my dreamcast ^^.
25th-Nov-2010 12:29 am (UTC) - Will this adapter work?
Hello I am new to the gd-rom dumping scence and was wondering if this adapter would work in order to do the usb mod. Thanks for the great tutorial and for taking the time to help everyone out.
25th-Nov-2010 12:41 am (UTC) - Re: Will this adapter work?
Should do but I have to warn you that some of these new FTDI chips can operate without a crystal resonator. A built-in RC oscillator is used instead and it's not stable enough to allow trouble-free operation at speeds over some 300kbaud.
I'd look for something that has a resonator soldered (6MHz typically), it also benefits the new chips as USB 2.0 speeds require stable clock reference.

Also most available dumping software require BBA anyway. I wrote my own dumper for fast serial link but it's _very_ old code, was never very stable to begin with.
12th-Feb-2011 01:29 pm (UTC) - Alternative USB for mass storage (Pen drive/Card reader/HDD ect)
You can call me Zorlon at the moment I don't have a LiveJournal account at the moment

Finding this very interesting and easy to do by the looks of it.
I was wondering however if this could be done to work with Dreamshell designed to work with SD-media

Dreamshell URL - Russian site but has english parts to it
SDcard reader design - Chinese
Above google translated

using a VDIP1 module instead, hopefully allowing USB mass storage to be connected directly instead of/aswell as SD-media


PDF doc

ftdichip's MM232R Modules Page

If all above could be done, could an example of connections to DC be shown
12th-Feb-2011 04:21 pm (UTC) - Re: Alternative USB for mass storage (Pen drive/Card reader/HDD ect)
All these SD card projects have one common, fatal flaw - no support for CD-Audio.

Connecting SD media to serial port also requires either a special boot disc (so you still need working GD drive) or modified BIOS (not as easy as it sounds, some people have done that but there are a few strings attached). It's also considerably slower than real GD and that shows...
7th-Dec-2011 03:20 am (UTC) - USB to serial converter with low-voltate
I'll buy that FTDI serves:http://img2.mlstatic.com/s_MLB_v_O_f_207339182_7567.jpg
This page was loaded Nov 19th 2019, 6:15 pm GMT.