0 users browsing Emulation. | 1 guest | 2 bots  
Main » Emulation » State of the Dreamcast emulation on Linux, 2019 edition
Pages: 1
Posted on 19-04-07, 02:11 (revision 3)
Not from my cellphone

Post: #245 of 799
Since: 10-30-18

Last post: 4 hours
Last view: 4 hours
tl;dr: you can play videogames, but frankly speaking, your options suck. Stick to Redream if you can, otherwise go and buy a real DC and mod it with a GDEMU or something.

Despite being a Sega console fan at heart, I never had that much interest into anything past the 32X. Certainly not on the Saturn, that's for sure. But the Dreamcast... well, there is this Puyo Puyo~n game I've played on other platforms (mostly on -of all things- the N64!). Last time I tried to play it, I was still running the long-past-expiry-date Fedora Core 6, where I built lxdream. Suffice to say, I never went past the DC BIOS menu. Not long after that I made the jump to Debian where the experience was... more or same the less - no DC for me!

Anyway, fast forward to today, where after migrating all my Debian emuboxes to Stretch, I discovered that my lxdream binary would not run anymore due to a missing libpng12.so (which doesn't exist anymore on Stretch, being replaced by a much newer version). So here we go:

- lxdream: Last release was almost a decade ago, and it won't work as is on modern distros (existing binaries do depend on the long-gone libpng12, for one). Building from source doesn't help as it relies on GLib header files that you're not supposed to directly use anymore. And even if you manage to get past those hurdles, your sketchy .cdi rips (like the one I have for Puyo Puyo~n) will not run as .cdi is a terrible, TERRIBLE format which is hardly compatible with anything. There are fixes for all that on the Mercurial source repository, but don't bother: recent GCC versions (if you could call GCC 6 "recent-ish") will cause the build to segfault at a very early stage. If you really persist (say, you kept your old GCC versions from older Debian versions), you will get a working binary... that will segfault as soon as the game tries to boot. Bummer :/

- Reicast: A spiritual successor (?) of NullDC (a former Windows-only DC emulator) mainly aimed at cellphones. It seems that anything that is not a cellphone is a second/third class citizen for them. Its user guide SUCKS as it assumes you're using a cellphone (hint: I am not!). Building from source is surprisingly easy: just install a few Mesa headers and off you go! Too bad all you will get is an emulator that crashes at boot with this X11 error:
X Error of failed request:  GLXBadFBConfig
Major opcode of failed request: 155 (GLX)
Minor opcode of failed request: 34 ()
Serial number of failed request: 35
Current serial number in output stream: 34

Meh. NEXT!

- Redream: Don't get fooled by that .io domain: this emulator is not open source! (although it used to be until not long ago) If you want "high definition rendering" (whatever that means), you have to pay $5 for a lifetime license key. Otherwise, the emulator is free to use - no ads, no mandatory Internet connection (except for downloading cover art), no spyware, just you, your games... and an UI that looks kinda out of place for a PC-based emulator. Client-side decorations? Yuck! Cover library view? Useful for a lot of you guys out there, but annoying for me (and there is no option to switch to a list view or something!). Very blurry fonts? Check! And for some reason, while the DC was strictly a 4:3 affair, Redream insists that the best way to live the dream is with hideous pillarboxing, with no option to turn it off (what if you still own one of the last 4:3/5:4 DVI flat panel displays ever made?) unless if you drop the resolution all the way down to 640x480 (!!!). What the hell is this, broadcast TV!? But if we go strictly to business, it plays my sketchy .cdi rip of Puyo Puyo~n flawlessly, in fact, this is the only way I can run DC games on my Linux boxes. At a 2.0MB download, this self-contained binary (no plugins required, even the BIOS dump is optional!) is a solid option for all your DC needs if you don't mind the obvious downsides (being a proprietary blob, "unique" UI). A good GPU is strongly recommended, but I had no trouble using my lowly Sandy Bridge HD3000 IGP, and performance is solid 60FPS all the way. But then... it's Puyo Puyo, not exactly the most demanding game ever made :P

Licensed Pirate® since 2006, 100% Buttcoin™-free
Posted on 19-04-07, 03:34
Post: #20 of 60
Since: 10-29-18

Last post: 150 days
Last view: 71 days
reicast-libretro seems to work pretty well. It had quite a few improvements vs standalone, though I believe they either recently were or soon will be merged into upstream master, as well. Were you using a stable release or building from latest git?
Posted on 19-04-07, 12:59
Stirrer of Shit
Post: #177 of 717
Since: 01-26-19

Last post: 271 days
Last view: 269 days
Posted by tomman
Anyway, fast forward to today, where after migrating all my Debian emuboxes to Stretch, I discovered that my lxdream binary would not run anymore due to a missing libpng12.so (which doesn't exist anymore on Stretch, being replaced by a much newer version). So here we go:

- lxdream: Last release was almost a decade ago, and it won't work as is on modern distros (existing binaries do depend on the long-gone libpng12, for one).

It's a bit barbaric, but you can just download libpng12.so.0 and load it with LD_LIBRARY_PATH. Seems to work fine on my machine, tested it with Crazy Taxi and it did boot, although I didn't have any controllers configured so couldn't test any further.

On the same note, while it's a bit ugly, you should be able to set up a VM of Debian Jessie, make a static or even freestanding build, and then be good to go everywhere without any dependencies other than Linux ABI. Glibc doesn't like static linking, so you might have to use the forbidden technique of unity builds.

There was a certain photograph about which you had a hallucination. You believed that you had actually held it in your hands. It was a photograph something like this.
Posted on 19-04-07, 19:14
Post: #29 of 149
Since: 11-24-18

Last post: 23 days
Last view: 1 day
Did a quick search for open source Dreamcast objects, came across washington-DC.

https://github.com/washingtondc-emu/washingtondc

It seems like the emulator to support if you care about Linux support and Open Source. Still in early development too. But yeah, only supports like 3 games at the moment...
Posted on 19-04-09, 19:04 (revision 1)
Not from my cellphone

Post: #247 of 799
Since: 10-30-18

Last post: 4 hours
Last view: 4 hours
Posted by hunterk
reicast-libretro seems to work pretty well. It had quite a few improvements vs standalone, though I believe they either recently were or soon will be merged into upstream master, as well. Were you using a stable release or building from latest git?

I built from git-latest. I'll try building from a stable release, but still, I don't really like their lack of documentation, and their "mobile first, everything else as an afterthought" focus.

Posted by sureanem
It's a bit barbaric, but you can just download libpng12.so.0 and load it with LD_LIBRARY_PATH. Seems to work fine on my machine, tested it with Crazy Taxi and it did boot, although I didn't have any controllers configured so couldn't test any further.

I actually did that (fortunately libpng12 .DEB from Jessie can be safely installed on Stretch without breaking anything), but my particular .cdi rip isn't accepted by the emulator. If you build from hg-trunk you do get improved compatibility with said rips (among other highly-needed compatibility fixes), but then modern GCC versions will send you to Crash Canyon (something similar happens with Mac emulators Basilisk II/SheepShaver, where anything beyond GCC 4.4 is unusable)

...fuck, I'll try to look for a *proper* .GDI rip of Puyo Puyo~n...

Posted by sureanem
On the same note, while it's a bit ugly, you should be able to set up a VM of Debian Jessie, make a static or even freestanding build, and then be good to go everywhere without any dependencies other than Linux ABI. Glibc doesn't like static linking, so you might have to use the forbidden technique of unity builds.

Gotta love your non-solutions for problems I'm actively looking to avoid!

Posted by wertigon
Did a quick search for open source Dreamcast objects, came across washington-DC.

https://github.com/washingtondc-emu/washingtondc

It seems like the emulator to support if you care about Linux support and Open Source. Still in early development too. But yeah, only supports like 3 games at the moment...

Like the 1997esque homepage :D

The reason it doesn't run many game is, unsurprisingly, missing AICA emulation. Looks like there has been some recent progress, and a new emulator is always very welcome! Thanks for the link

Licensed Pirate® since 2006, 100% Buttcoin™-free
Posted on 19-04-10, 00:17 (revision 1)
Stirrer of Shit
Post: #183 of 717
Since: 01-26-19

Last post: 271 days
Last view: 269 days
Posted by tomman

If you build from hg-trunk you do get improved compatibility with said rips (among other highly-needed compatibility fixes), but then modern GCC versions will send you to Crash Canyon (something similar happens with Mac emulators Basilisk II/SheepShaver, where anything beyond GCC 4.4 is unusable)

...fuck, I'll try to look for a *proper* .GDI rip of Puyo Puyo~n...

If you're in the business for less hacky but still somewhat hacky but also somewhat useful solutions, try compiling at a lower optimization level. "Segfault on new versions of GCC" sounds like someone accidentally invoking UB and not noticing because of lenient compilers.

The other segfaulting issue sounds like a dangling pointer issue. So a very, very hacky way that might "fix" it could be to compile with the command line options '-Dfree(...)=' '-Dg_free(...)='.

I think it might run fine, because there shouldn't be that many calls to free() in an emulator. According to grep, just shy of 200. And some of those are to g_free; you could try and see which one seems to be causing the trouble. I don't think the memory leaks should be so bad, because there isn't that much memory allocation going on (just north of 60 calls in the whole code, of which 20 are g_malloc), and I can't imagine most of those would be while the game is actually running. A less hacky version would be to defer it so it only frees the memory when no game is loaded. I suggest just before you open a game. Something like this:

// lxdream.h
#define free better_free
#define real_free free

void better_free(void* ptr)
{
    static void** list;
    static size_t n = 0;
    static size_t i = 0;
    if (ptr == (void*) 0xABCDABCDABCD)
    {   while (i--)
            real_free(list[i]);
        return;
    }
    while (i >= n)
        list = realloc(list, (n *= 2) * sizeof(void*));
    list[i++] = ptr;
    return;
}

#define g_free better_g_free
#define real_g_free g_free

void better_g_free(void* ptr)
{
    static void** list;
    static size_t n = 0;
    static size_t i = 0;
    if (ptr == (void*) 0xABCDABCDABCD)
    {   while (i--)
            real_g_free(list[i]);
        return;
    }
    while (i >= n)
        list = realloc(list, (n *= 2) * sizeof(void*));
    list[i++] = ptr;
    return;
}

// src/gtkui/gtkcb.c:139 (mount_action_callback)
    free(0xABCDABCDABCD);


There's also -fsanitize=address which might be of help.

There was a certain photograph about which you had a hallucination. You believed that you had actually held it in your hands. It was a photograph something like this.
Posted on 19-04-10, 14:25
Not from my cellphone

Post: #248 of 799
Since: 10-30-18

Last post: 4 hours
Last view: 4 hours
Found a proper .GDI dump for Puyo Puyo~n at the Archive (there is a Dreamcast Ultimate Archive collection based off TOSEC .GDI, which seems to be exactly what it says at the tin, but it's hosted at Google Drive, and their UXtarded Silly Valley Javashit junk locks up my Seamonkey with all cores pegged to the max. HARD - for whatever reason JDownloader failed to enumerate the contents of the share)), tried it with lxdream stable... and it refused to do anything.

Like, no error messages, no crashes, no nada. The emulator happily boots to the DC BIOS menu and that's all, it pretends I didn't loaded anything at all.

Said rip works like a charm with Redream, and I got rid of my crappy .cdi rip, which I learned it had downsampled audio/video, AKA junk for people on real hardware prior to the introduction of GDEMU.

Licensed Pirate® since 2006, 100% Buttcoin™-free
Posted on 19-04-11, 18:45

Post: #74 of 166
Since: 10-29-18

Last post: 69 days
Last view: 69 days
Posted by hunterk
reicast-libretro seems to work pretty well. It had quite a few improvements vs standalone, though I believe they either recently were or soon will be merged into upstream master, as well. Were you using a stable release or building from latest git?


+1 to reicast-libretro.

I even manage to get full speed with a lot of games on my old A-10 6700 (I get a stable 60fps with Soul Calibur for example). If you can't quite reach 60fps, lowering the internal resolution to 320x240 will help (although, it will look like dog shit of course) but hey, I can play VF3TB full speed this way.
Posted on 19-07-24, 18:52
Not from my cellphone

Post: #449 of 799
Since: 10-30-18

Last post: 4 hours
Last view: 4 hours
Managed to finally get Reicast working here.

Turns out that it wants an OpenGL 4.3 GPU, which means it won't run on a lowly Sandy Bridge HD3000 (which is one major release behind). But the X11 error wasn't giving any useful advice. Once trying with my 32X GeForce 610M through primusrun, I got Reicast's GUI working.

...too bad its documentation is still awful, to not say "non-existant". Also, I can't believe why there are emudevs still reinventing the wheel with custom UIs. Look, we're in 2019, we're no longer running DOS, but not all targets are cellphones! If you're making an emulator for Real Computers™, you should stick to any of the following UI targets:

1) Native widgets (that is: use the toolkit provided by your OS, menu bar, standard dialogs, bury your fancy logo at the About screen)
2) Libretro core
3) 10-foot UI (for those of us that don't want to deal with Retroarch yet still want to drive the UI with the very same gamepad we use to play. Try to get your SDL joystick support right!)
4) CLI, the mupen64plus way (leave everything else to the frontend authors)

Everything else is wasting the time of everybody involved, both devs and users. And no, I don't want a "join our Discord" button right at the main window! (thankfully Reicast allows to disable all those "social featurettes")

Anyway, it seems they DID improved the OpenGL version detection routines on recent commits, as if you compile today, you will now get a proper error message telling that your GPU is ancient (I don't get why the high OGL version requirement for a DC emulator, but whatever). Now I can run all of the existing ports of Puyo Puyo~n, and naturally the DC version looks gorgeous when compared with the downscaled PSX port, or the blurry look of the N64 version (the latter still being very tricky with GFX plugins - only CEN64 can run it as intended due to its LLE nature)

To the Reicast guys: good work with the emulator, but forget 5 minutes about your beloved cellphones, bring a less broken desktop UI, and get someone to write USABLE DOCS!!! It's no fun an emulator where you have to dive into emuforums just to understand how your BIOS files should be named, or dealing with SDL keycodes (fuck that shit, yo.).

I don't see myself coming back to Redream... for now.

Licensed Pirate® since 2006, 100% Buttcoin™-free
Pages: 1
Main » Emulation » State of the Dreamcast emulation on Linux, 2019 edition
Yes, it's an ad.