
Recherche avancée
Médias (91)
-
Géodiversité
9 septembre 2011, par ,
Mis à jour : Août 2018
Langue : français
Type : Texte
-
USGS Real-time Earthquakes
8 septembre 2011, par
Mis à jour : Septembre 2011
Langue : français
Type : Texte
-
SWFUpload Process
6 septembre 2011, par
Mis à jour : Septembre 2011
Langue : français
Type : Texte
-
La conservation du net art au musée. Les stratégies à l’œuvre
26 mai 2011
Mis à jour : Juillet 2013
Langue : français
Type : Texte
-
Podcasting Legal guide
16 mai 2011, par
Mis à jour : Mai 2011
Langue : English
Type : Texte
-
Creativecommons informational flyer
16 mai 2011, par
Mis à jour : Juillet 2013
Langue : English
Type : Texte
Autres articles (101)
-
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela. -
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...) -
Gestion de la ferme
2 mars 2010, parLa ferme est gérée dans son ensemble par des "super admins".
Certains réglages peuvent être fais afin de réguler les besoins des différents canaux.
Dans un premier temps il utilise le plugin "Gestion de mutualisation"
Sur d’autres sites (11761)
-
Converting Real Media with ffmpeg
22 avril 2018, par Eric ArensonI have a number of old crusty Real Media files I need to convert and was hoping to write a script to batch process them. I’m able to do a Real Media -> AVI conversion with FFMpegX, but when I try to replicate the conversion with ffmpeg, it always errors out with something like :
[avi @ 0x10084fa00] Too large number of skipped frames 117425 > 60000
It may have something to do with the funky format of these Real Media files :
Duration: 01:28:23.42, start: 0.000000, bitrate: 448 kb/s
Stream #0:0: Data: none, 32 kb/s
Stream #0:1: Data: none, 192 kb/s
Stream #0:2: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
Stream #0:3: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:4: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 8 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:5: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 5 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:6: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 27 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:7: Audio: cook (cook / 0x6B6F6F63), 22050 Hz, mono, fltp, 32 kb/s
Stream #0:8: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 192 kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc
Stream #0:9: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 136 kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc
Stream #0:10: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
Stream #0:11: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
Stream #0:12: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:13: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:14: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:15: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 5 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbcDoes anyone have any tips on either how to find out what FFMpegX is doing to make the conversion work, or a better way to go about using ffmpeg to do this ?
EDIT
Including the ffmpeg command (thank you to @Mondain for teaching me about the stream mapping !) and output :
Command :
ffmpeg -i cc121307pm.rm -map 0:8 -map 0:7 -c:v libx264 -c:a libfaac -b:a 32k test.avi
Output :
ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Aug 7 2013 12:29:30 with gcc 4.2.1 (GCC) (Apple Inc. build 5664)
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=/usr/bin/gcc-4.2 --host-cflags='-Os -w -pipe -march=core2 -msse4.1 -mmacosx-version-min=10.6' --host-ldflags=-L/usr/local/lib --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
libavutil 52. 18.100 / 52. 18.100
libavcodec 54. 92.100 / 54. 92.100
libavformat 54. 63.104 / 54. 63.104
libavdevice 54. 3.103 / 54. 3.103
libavfilter 3. 42.103 / 3. 42.103
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
[rm @ 0x10180f200] Unsupported stream type 00000265
[rm @ 0x10180f200] Unsupported stream type 00000652
[rm @ 0x10180f200] max_analyze_duration 5000000 reached at 5004000 microseconds
Input #0, rm, from 'input.rm':
Metadata:
File ID : 41deac0f-94fb-3595-325c-c717943bc532
Content Rating : (PICS-1.1 "http://www.classify.org/safesurf" labels comment "RealProducer Plus 8.5.0.200 Windows" ratings (SS~~000 1))
Modification Date: 12/13/2007 16:26:16
Generated By : RealProducer Plus 8.5.0.200 Windows
Keywords :
Abstract :
Target Audiences: 28K Modem (20 Kbps);56K Modem (34 Kbps);256K DSL/Cable Modem (225 Kbps);
Video Quality : Normal Motion Video
Audio Format : Voice Only
Creation Date : 12/13/2007 14:57:49
ASMRuleBook : #($Bandwidth < 15000),Stream2Bandwidth = 6500, Stream3Bandwidth = 5499;#($Bandwidth >= 15000) && ($Bandwidth < 20000),Stream2Ba
title :
author :
copyright : ?2007
comment :
Duration: 01:28:23.42, start: 0.000000, bitrate: 448 kb/s
Stream #0:0: Data: none, 32 kb/s
Stream #0:1: Data: none, 192 kb/s
Stream #0:2: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
Stream #0:3: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:4: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 8 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:5: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 5 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:6: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 27 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:7: Audio: cook (cook / 0x6B6F6F63), 22050 Hz, mono, fltp, 32 kb/s
Stream #0:8: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 192 kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc
Stream #0:9: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 136 kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc
Stream #0:10: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
Stream #0:11: Audio: sipr (sipr / 0x72706973), 8000 Hz, mono, flt, 6 kb/s
Stream #0:12: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:13: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:14: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 13 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
Stream #0:15: Video: rv20 (RV20 / 0x30325652), yuv420p, 320x240, 5 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
[libx264 @ 0x101889c00] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
[libx264 @ 0x101889c00] profile High, level 1.3
Output #0, avi, to 'test.avi':
Metadata:
File ID : 41deac0f-94fb-3595-325c-c717943bc532
Content Rating : (PICS-1.1 "http://www.classify.org/safesurf" labels comment "RealProducer Plus 8.5.0.200 Windows" ratings (SS~~000 1))
Modification Date: 12/13/2007 16:26:16
Generated By : RealProducer Plus 8.5.0.200 Windows
Keywords :
Abstract :
Target Audiences: 28K Modem (20 Kbps);56K Modem (34 Kbps);256K DSL/Cable Modem (225 Kbps);
Video Quality : Normal Motion Video
Audio Format : Voice Only
Creation Date : 12/13/2007 14:57:49
ASMRuleBook : #($Bandwidth < 15000),Stream2Bandwidth = 6500, Stream3Bandwidth = 5499;#($Bandwidth >= 15000) && ($Bandwidth < 20000),Stream2Ba
INAM :
author :
ICOP : ?2007
ICMT :
ISFT : Lavf54.63.104
Stream #0:0: Video: h264 (H264 / 0x34363248), yuv420p, 320x240, q=-1--1, 30 tbn, 30 tbc
Stream #0:1: Audio: aac ([255][0][0][0] / 0x00FF), 22050 Hz, mono, s16, 32 kb/s
Stream mapping:
Stream #0:8 -> #0:0 (rv20 -> libx264)
Stream #0:7 -> #0:1 (cook -> libfaac)
Press [q] to stop, [?] for help
[rm @ 0x10180f200] DATA tag in middle of chunk, file may be broken.
Truncating packet of size 775215378 to 283607526
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 686581284 to 279055389
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 845942319 to 279042877
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 519635011 to 279040757
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 302013449 to 260425302
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 671112232 to 260422550
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 670137329 to 260371048
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 674387680 to 260336787
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 698852899 to 260336757
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 881600768 to 260281240
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 623325768 to 241694111
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 273397034 to 241679920
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 245534365 to 241615319
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 264614026 to 220525004
[rm @ 0x10180f200] Impossibly sized packet
[rm @ 0x10180f200] DATA tag in middle of chunk, file may be broken.
Truncating packet of size 637535515 to 219973842
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 432193588 to 219973831
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 286760544 to 219962162
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 1070610764 to 219737624
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 259875548 to 219371853
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 362059391 to 219371844
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 885179606 to 219371833
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 587434829 to 206214002
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 816942211 to 165623435
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 471624979 to 113266905
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 674059889 to 113266894
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 459361272 to 113253548
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 637535515 to 91792709
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 432193588 to 91792698
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 286760544 to 91781029
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 157876310 to 91505934
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 469953408 to 91505925
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 260215377 to 91486921
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 877425642 to 91335612
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 259887697 to 91322050
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 885071836 to 91245341
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 264614182 to 90930431
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 811350015 to 90930422
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 128974975 to 90713958
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 801151589 to 89195724
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 654645420 to 85989435
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 184860915 to 85989426
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 1072093904 to 85980304
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 907644163 to 85521587
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 187973624 to 52762203
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 315276941 to 52762157
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 947559309 to 23894660
[rm @ 0x10180f200] Impossibly sized packet
Truncating packet of size 183681448 to 2582872
[rm @ 0x10180f200] Impossibly sized packet
input.rm: Input/output error
frame= 0 fps=0.0 q=0.0 Lsize= 10kB time=00:00:00.00 bitrate=N/A
video:0kB audio:0kB subtitle:0 global headers:0kB muxing overhead inf%
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used) -
Dreamcast SD Adapter and DreamShell
31 décembre 2014, par Multimedia Mike — Sega DreamcastNope ! I’m never going to let go of the Sega Dreamcast hacking. When I was playing around with Dreamcast hacking early last year, I became aware that there is such a thing as an SD card adapter for the DC that plugs into the port normally reserved for the odd DC link cable. Of course I wanted to see what I could do with it.
The primary software that leverages the DC SD adapter is called DreamShell. Working with this adapter and the software requires some skill and guesswork. Searching for these topics tends to turn up results from various forums where people are trying to cargo-cult their way to solutions. I have a strange feeling that this post might become the unofficial English-language documentation on the matter.
Use Cases
What can you do with this thing ? Undoubtedly, the primary use is for backing up (ripping) the contents of GD-ROMs (the custom optical format used for the DC) and playing those backed up (ripped) copies. Presumably, users of this device leverage the latter use case more than the former, i.e., download ripped games, load them on the SD card, and launch them using DreamShell.However, there are other uses such as multimedia playback, system exploration, BIOS reprogramming, high-level programming, and probably a few other things I haven’t figured out yet.
Delivery
I put in an order via the dc-sd.com website and in about 2 short months, the item arrived from China. This marked my third lifetime delivery from China and curiously, all 3 of the shipments have pertained to the Sega Dreamcast.
I thought it was very interesting that this adapter came in such complete packaging. The text is all in Chinese, though the back states “Windows 98 / ME / 2000 / XP, Mac OS 9.1, LINUX2.4”. That’s what tipped me off that they must have just cannibalized some old USB SD card readers and packaging in order to create these. Closer inspection of the internals through the translucent pink case confirms this.
Usage
According to its change log, DreamShell has been around for a long time with version 1.0.0 released in February of 2004. The current version is 4.0.0 RC3. There are several downloads available :- DreamShell 4.0 RC 3 CDI Image
- DreamShell 4.0 RC 3 + Boot Loader
- DreamShell 4.0 RC 3 + Core CDI image
Option #2 worked for me. It contains a CDI disc image and the DreamShell files in a directory named DS/.
Burn the CDI to a CD-R in the normal way you would burn a bootable Dreamcast disc from a CDI image. This is open-ended and left as an exercise to the reader, since there are many procedures depending on platform. On Linux, I used a small script I found once called burncdi-dc.sh.
Then, copy the contents of the DS/ folder to an SD card. As for filesystem, FAT16 and FAT32 are both known to work. The files in DS/ should land in the root of the SD card ; the folder DS/ should not be in the root.
Plug the SD card into the DC SD adapter and plug the adapter in the link cable port on the back of the Dreamcast. Then, boot the disc. If it works, you will see this minor corruption of the usual Sega licensing screen :
Then, there will be a brief white-on-black text screen that explains the booting process :
Then, there will be the main DreamShell logo :
Finally, you will land on the DreamShell main desktop :
Skepticism
At first, I was supremely skeptical of the idea that this SD adapter could perform speedily enough to play games reasonably. This was predicated on the observation that my DC coder’s cable that I used to use for homebrew development could not transfer faster than 115200 bits/second, amounting to about 11 kbytes/sec. I assumed that this was a fundamental limitation of the link port.In fact, I ripped a few of my Dreamcast discs over a decade ago and still have those rips lying around. So I copied the ISO image of Resident Evil : Code Veronica — the game I personally played most on the DC — to the SD card (anywhere works) and used the “ISO loader” icon seen on the desktop above to launch the game.
It works :
The opening FMV plays at full speed. Everything loads as fast as I remember. I was quite surprised.
Digression : My assumptions about serial speeds have often been mistaken. 10 years ago, I heard stories about how we would soon be able to watch streaming video on our cell phones. I scoffed because I thought the 56K limitation of dialup modems was some sort of fundamental speed-of-light type of limitation for telephony bandwidth, wired or wireless.
The desktop menu also includes a ‘speedtest’ tool that profiles the write and read performance of your preferred storage medium. For my fastest SD card (a PNY 2 GB card) :
This is probably more representative of the true adapter bandwidth as reading and writing is a good deal faster through more modern interfaces on PC and Mac with this same card.
Look at the other options on the speedtest console. Hard drive ? Apparently, it’s possible, but it requires a good deal more hardware hacking than just purchasing this SD adapter.
Ripping
As you can see from the Resident Evil screenshot, playing games works quite nicely. How about ripping ? I’m pleased to say that DreamShell has a beautiful ripping interface :
Enter a name for the disc (or read the disc label), select the storage medium, and let it, well, rip. It indicates which track it’s working on and the Sega logo acts as a progress bar, shading blue as the track rip progresses.
I’m finally, efficiently, archiving that collection of Sega Dreamcast demo discs ; I’m hoping they’ll eventually find a home at the Internet Archive. How is overall ripping performance ? Usually about 38-40 minutes to rip a full 900-1000 MB. That certainly beats the 27-28 hours that were required when I performed the ripping at 11 kbytes/sec via the DC coders cable.
All is well until I get a sector reading error :
That’s when it can come in handy to have 3 DC consoles (see ?! not crazy !).
Other Uses
There’s a file explorer. You can browse the filesystem of the SD card, visual memory unit, or the CD portion of the GD-ROM (would be more useful if it accessed the GD area). There are FFmpeg files included. So I threw a random Cinepak file and random MPEG-1 file at it to see what happens. MPEG-1 didn’t do anything, but this Cinepak file from some Sierra game played handily :
If you must enter strings, it helps to have a Dreamcast keyboard (which I do). Failing that, here’s a glimpse of the onscreen keyboard that DreamShell equips :
Learning to use it is a game in itself.
There is an option of installing DreamShell in the BIOS. I did not attempt this. I don’t know if it’s possible (not like there’s a lot of documentation)– perhaps a custom BIOS modchip is needed. But here’s what the screen looks like :
There is also a plain console to interact with (better have a physical keyboard). There are numerous file manipulation commands and custom system interaction commands. I see one interesting command called ‘addr’ that looks useful for dumping memory regions to a file.
A Lua language interpreter is also built in. I would love to play with this if I could ascertain whether DreamShell provided Dreamcast-specific APIs.
Tips And Troubleshooting
I have 3 Dreamcast consoles, affectionately named Terran, Protoss, and Zerg after the StarCraft II stickers with which they are adorned. Some seem to work better than others. Protoss seemed to be able to boot the DreamShell disc more reliably than the others. However, I was alarmed when it couldn’t boot one morning when it was churning the previous day.I think the problem is that it was just cold. That seemed to be the issue. I put in a normal GD-ROM and let it warm up on that disc for awhile and then DreamShell booted fine. So that’s my piece of cargo-culting troubleshooting advice.
-
Dreamcast SD Adapter and DreamShell
31 décembre 2014, par Multimedia Mike — Sega DreamcastNope ! I’m never going to let go of the Sega Dreamcast hacking. When I was playing around with Dreamcast hacking early last year, I became aware that there is such a thing as an SD card adapter for the DC that plugs into the port normally reserved for the odd DC link cable. Of course I wanted to see what I could do with it.
The primary software that leverages the DC SD adapter is called DreamShell. Working with this adapter and the software requires some skill and guesswork. Searching for these topics tends to turn up results from various forums where people are trying to cargo-cult their way to solutions. I have a strange feeling that this post might become the unofficial English-language documentation on the matter.
Use Cases
What can you do with this thing ? Undoubtedly, the primary use is for backing up (ripping) the contents of GD-ROMs (the custom optical format used for the DC) and playing those backed up (ripped) copies. Presumably, users of this device leverage the latter use case more than the former, i.e., download ripped games, load them on the SD card, and launch them using DreamShell.However, there are other uses such as multimedia playback, system exploration, BIOS reprogramming, high-level programming, and probably a few other things I haven’t figured out yet.
Delivery
I put in an order via the dc-sd.com website and in about 2 short months, the item arrived from China. This marked my third lifetime delivery from China and curiously, all 3 of the shipments have pertained to the Sega Dreamcast.
I thought it was very interesting that this adapter came in such complete packaging. The text is all in Chinese, though the back states “Windows 98 / ME / 2000 / XP, Mac OS 9.1, LINUX2.4”. That’s what tipped me off that they must have just cannibalized some old USB SD card readers and packaging in order to create these. Closer inspection of the internals through the translucent pink case confirms this.
Usage
According to its change log, DreamShell has been around for a long time with version 1.0.0 released in February of 2004. The current version is 4.0.0 RC3. There are several downloads available :- DreamShell 4.0 RC 3 CDI Image
- DreamShell 4.0 RC 3 + Boot Loader
- DreamShell 4.0 RC 3 + Core CDI image
Option #2 worked for me. It contains a CDI disc image and the DreamShell files in a directory named DS/.
Burn the CDI to a CD-R in the normal way you would burn a bootable Dreamcast disc from a CDI image. This is open-ended and left as an exercise to the reader, since there are many procedures depending on platform. On Linux, I used a small script I found once called burncdi-dc.sh.
Then, copy the contents of the DS/ folder to an SD card. As for filesystem, FAT16 and FAT32 are both known to work. The files in DS/ should land in the root of the SD card ; the folder DS/ should not be in the root.
Plug the SD card into the DC SD adapter and plug the adapter in the link cable port on the back of the Dreamcast. Then, boot the disc. If it works, you will see this minor corruption of the usual Sega licensing screen :
Then, there will be a brief white-on-black text screen that explains the booting process :
Then, there will be the main DreamShell logo :
Finally, you will land on the DreamShell main desktop :
Skepticism
At first, I was supremely skeptical of the idea that this SD adapter could perform speedily enough to play games reasonably. This was predicated on the observation that my DC coder’s cable that I used to use for homebrew development could not transfer faster than 115200 bits/second, amounting to about 11 kbytes/sec. I assumed that this was a fundamental limitation of the link port.In fact, I ripped a few of my Dreamcast discs over a decade ago and still have those rips lying around. So I copied the ISO image of Resident Evil : Code Veronica — the game I personally played most on the DC — to the SD card (anywhere works) and used the “ISO loader” icon seen on the desktop above to launch the game.
It works :
The opening FMV plays at full speed. Everything loads as fast as I remember. I was quite surprised.
Digression : My assumptions about serial speeds have often been mistaken. 10 years ago, I heard stories about how we would soon be able to watch streaming video on our cell phones. I scoffed because I thought the 56K limitation of dialup modems was some sort of fundamental speed-of-light type of limitation for telephony bandwidth, wired or wireless.
The desktop menu also includes a ‘speedtest’ tool that profiles the write and read performance of your preferred storage medium. For my fastest SD card (a PNY 2 GB card) :
This is probably more representative of the true adapter bandwidth as reading and writing is a good deal faster through more modern interfaces on PC and Mac with this same card.
Look at the other options on the speedtest console. Hard drive ? Apparently, it’s possible, but it requires a good deal more hardware hacking than just purchasing this SD adapter.
Ripping
As you can see from the Resident Evil screenshot, playing games works quite nicely. How about ripping ? I’m pleased to say that DreamShell has a beautiful ripping interface :
Enter a name for the disc (or read the disc label), select the storage medium, and let it, well, rip. It indicates which track it’s working on and the Sega logo acts as a progress bar, shading blue as the track rip progresses.
I’m finally, efficiently, archiving that collection of Sega Dreamcast demo discs ; I’m hoping they’ll eventually find a home at the Internet Archive. How is overall ripping performance ? Usually about 38-40 minutes to rip a full 900-1000 MB. That certainly beats the 27-28 hours that were required when I performed the ripping at 11 kbytes/sec via the DC coders cable.
All is well until I get a sector reading error :
That’s when it can come in handy to have 3 DC consoles (see ?! not crazy !).
Other Uses
There’s a file explorer. You can browse the filesystem of the SD card, visual memory unit, or the CD portion of the GD-ROM (would be more useful if it accessed the GD area). There are FFmpeg files included. So I threw a random Cinepak file and random MPEG-1 file at it to see what happens. MPEG-1 didn’t do anything, but this Cinepak file from some Sierra game played handily :
If you must enter strings, it helps to have a Dreamcast keyboard (which I do). Failing that, here’s a glimpse of the onscreen keyboard that DreamShell equips :
Learning to use it is a game in itself.
There is an option of installing DreamShell in the BIOS. I did not attempt this. I don’t know if it’s possible (not like there’s a lot of documentation)– perhaps a custom BIOS modchip is needed. But here’s what the screen looks like :
There is also a plain console to interact with (better have a physical keyboard). There are numerous file manipulation commands and custom system interaction commands. I see one interesting command called ‘addr’ that looks useful for dumping memory regions to a file.
A Lua language interpreter is also built in. I would love to play with this if I could ascertain whether DreamShell provided Dreamcast-specific APIs.
Tips And Troubleshooting
I have 3 Dreamcast consoles, affectionately named Terran, Protoss, and Zerg after the StarCraft II stickers with which they are adorned. Some seem to work better than others. Protoss seemed to be able to boot the DreamShell disc more reliably than the others. However, I was alarmed when it couldn’t boot one morning when it was churning the previous day.I think the problem is that it was just cold. That seemed to be the issue. I put in a normal GD-ROM and let it warm up on that disc for awhile and then DreamShell booted fine. So that’s my piece of cargo-culting troubleshooting advice.