
Dreamcast Emulator Redream 1.5.0 Progress Report - tosh
https://redream.io/posts/progress-report-february-2020
======
lostgame
The Dreamcast is by far and large one of my all-time favourite consoles.

SEGA’s level of innovation here was extreme.

From great developer support, online play (even if the Broadband Adapter for
Ethernet was extremely rare); the VMU, and an extremely impressive library of
quality titles (Skies of Arcadia, Crazy Taxi, Soul Calibur 2, etc) - it was
literally a situation that seemed geared to greatness.

If it had a DVD player, I think it literally could’ve saved SEGA, after the
awful litany of repeated terrible decisions they made in the mid-90’s. (Here’s
looking at you, 32X...)

I was just at A&C games here in Toronto, lamenting to an employee of the
demise of SEGA’s consoles - but the Dreamcast, in particular, deserved better
than it got.

The Saturn will always have a special place in my heart, though, as an
extremely early example of multi-processor architecture (the Saturn
technically has 7 processors, each for a different task - 2 GPU’s, CD I/O,
sound, etc.)

~~~
alex_free
There is a hack that you can do (soldering on an IDE cable) that allows you to
connect a DVD drive and boot games and access files from DVDs. The Dreamcast
modding community is still very active to this day. A lot is known about the
internals which I find fascinating.

~~~
Grazester
Say what? The Dreamcast used a GD-ROM which was 1 gig, hence it's name. The
was an alleged specific model CD-Rom drive with modified firmware that could
have read the GD-Roms directly from a PC. Rippers used a DC with the Ethernet
adapter to rip games however.

Now you can also mod the Dreamcast to use an IDE hard drive with Dreamshell
and modified bios since the Dreamcast used and IDE bus for the GD-Rom.

There are 2 drive emulators for the Dreamcast where you replace the GD-ROM
with a device that allows for either SD card storage or USB.

I have not seen this DVD rom hack you are talking about though

~~~
alex_free
The DVD ROM hack works exactly as the Hard Drive Hack does. Just swap out the
IDE HDD for an IDE DVD ROM Drive.

------
jchw
A note here since I did not know this: It looks like Redream is no longer open
source. As far as I can tell its not formally acknowledged anywhere. It seems
like it was silently closed source when it moved from GitHub to GitLab some
time ago. I feel like people ought to know since some folks may be under the
impression it is open source when it's not. I usually don't bother trying to
use closed source emulators personally, for practical reasons (At the very
least, closed source anything is a pain in the ass under NixOS.)

~~~
kingosticks
Good spot. It used to be GPL licensed. How odd. If you goto the gitlab project
at [https://gitlab.com/inolen/redream](https://gitlab.com/inolen/redream) it's
basically just a support forum. Anyone got any more details on this? Is this
an attempt to monitise the work?

Edit: I see you can upgrade to "premium" but it's a one-time fee of only $5 so
money can't be the motivation here. Same at
[https://gitlab.com/inolen/redream/issues/957](https://gitlab.com/inolen/redream/issues/957)
An acknowledgment of the situation is at
[https://gitlab.com/inolen/redream/issues/543#note_91625154](https://gitlab.com/inolen/redream/issues/543#note_91625154)
but sadly no explanation.

~~~
aepiepaey
There's some reasoning in this thread:
[https://old.reddit.com/r/emulation/comments/7p2rik/redream_h...](https://old.reddit.com/r/emulation/comments/7p2rik/redream_has_gone_closedsource/)

Notably, this comment by the developer (with followups):
[https://old.reddit.com/r/emulation/comments/7p2rik/redream_h...](https://old.reddit.com/r/emulation/comments/7p2rik/redream_has_gone_closedsource/dseekwo/)

~~~
kingosticks
Cheers for digging that out. Seems like a reasonable course of action all
things considered.

------
bt3
Small anecdote: many years ago I tracked down a working Dreamcast and acquired
Sonic Adventure 2, arguably one of the best SEGA games ever created. At the
time, I remember spending $40 for a used copy of the game that was now a
decade old. After just scanning eBay, it looks like SA2 for Dreamcast is still
selling for between $20-$70/ each. Incredible.

Other side note: one flaw of the original Dreamcast was that the circuit board
that houses the controller ports had a capacitor that would occasionally fail.
To the uninitiated, the console would become a brick since you can't play
without a controller. I used to buy large sets of "broken" Dreamcasts, and
could usually fix more than half of them by simply swapping internal
components. I miss the days of this level of modding. Though the OG Xbox was
pretty fun too in this hacking space.

~~~
anjc
> many years ago I tracked down a working Dreamcast and acquired Sonic
> Adventure 2

You make it sound like a relic! There are plenty for sale and new games are
still made for it

------
shahinrostami
Great work - the Dreamcast brought me many years of fun and I can't wait to
check this out on a Raspberry Pi!

------
snvzz
Nice but no source code, which makes it sadly not count as preservation.

------
bArray
Impressive stuff, this will be massive for archive efforts. I am still yet to
find a good performance emulation experience for the Play Station 2 console.

~~~
monocasa
PS2 is legitimately really hard. It's both just fast enough that cycle
accurate is off the table and probably always will be on conventional
processors, and is just barely old enough that it has tons of little special
instruction streams that need to be in close sync with each other, sometimes
without explicit synchronization in their code.

~~~
lostgame
PCSX3 exists, now, and while I understand the underlying complexities of the
PS2’s architecture, I am very curious about the challenges, in particular, of
PS3 emulation, especially with regards to the Cell processor.

Anyone with more knowledge that myself with regards to emulation care to chip
in? I’d love some insight, or related articles.

Saturn emulation has been a fascination of mine for 15-some years.

~~~
ZirconiumX
There are three killers here: self-modifying code, synchronisation, and
parallelism, all of which are major headaches for a JIT.

The PS3 does not have self-modifying PPC code (SCEI forbade it), which means
the PPE blob can be compiled ahead-of-time (RPCS3 converts it into LLVM). The
SPE data can self-modify, however, but (to my knowledge) does not require
extensive synchronisation, therefore each SPE core can be put on a thread.

The PS2 code has fairly extensive use of self-modifying code; Naughty Dog in
particular will frequently load parts of the executable in and out of memory
on both the PS2 main processor (the EE) and the PS1 processor (the IOP), and
rely on the synchronisation between these two separate processors to be fairly
tight. Trying to make the EE and IOP separate threads running simultaneously
breaks this synchronisation, so the EE and IOP have to run on the same thread.

Additionally, the PS2 has two vector units; VU0 is associated with the EE (it
can be used as a floating-point SIMD unit in the EE instruction stream) and
VU1 is associated with the GS [the PS2's GPU, the Graphics Synthesizer]
Interface (GIF) (it can directly output primitives to the GS). This means that
VU0 needs to run on the same thread that the EE runs on (because there is
instruction stream interlocking), and VU1 needs relatively tight
synchronisation to the GS (it _is_ feasible to put it on its own thread, but
games can be quite picky with timings)

~~~
w0utert
Very interesting, thanks for the writeup!

Sony did manage to ship a PS2 emulator that ran on the second-generation PS3
though (1st generation PS3 had actual PS2 hardware inside, but the second
generation was software-only emulation if I recall correctly?). Besides
knowing exactly about every hardware detail, any idea how they pulled that off
on hardware that was _much_ weaker relative to a PS2, compared to a modern PC?

~~~
garaetjjte
It wasn't very accurate, though.
[https://www.psdevwiki.com/ps3/PS2_Classics_Emulator_Compatib...](https://www.psdevwiki.com/ps3/PS2_Classics_Emulator_Compatibility_List)

