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

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

    Last post: 7 days
    Last view: 8 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, enemy of All Things JavaScript™
    Posted on 19-04-07, 03:34
    Post: #20 of 60
    Since: 10-29-18

    Last post: 1395 days
    Last view: 1316 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: 1516 days
    Last view: 1514 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 203
    Since: 11-24-18

    Last post: 54 min.
    Last view: 54 min.
    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)
    Dinosaur

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

    Last post: 7 days
    Last view: 8 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, enemy of All Things JavaScript™
    Posted on 19-04-10, 00:17 (revision 1)
    Stirrer of Shit
    Post: #183 of 717
    Since: 01-26-19

    Last post: 1516 days
    Last view: 1514 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
    Dinosaur

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

    Last post: 7 days
    Last view: 8 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, enemy of All Things JavaScript™
    Posted on 19-04-11, 18:45

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

    Last post: 1314 days
    Last view: 990 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
    Dinosaur

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

    Last post: 7 days
    Last view: 8 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, enemy of All Things JavaScript™
    Posted on 21-09-13, 20:17
    Dinosaur

    Post: #995 of 1280
    Since: 10-30-18

    Last post: 7 days
    Last view: 8 hours
    ~State of the Dreamcast emulation on Linux, 2021 edition~
    While we wait for the Dreamcast 2 Mini (please Sega, come on~!), things have moved quite a lot since last time I bothered trying:

    - lxdream: Still dead.

    - redream: Still there, and freemium. Don't really care.

    - reicast: Still there, still demanding some good metal. Stopped caring once I tried...

    - Flycast: A fork of reicast, initially born as a libretro core, but now available as a standalone emulator (with the exact same horrible GUI from reicast - it even uses the same settings directory, so thankfully I had to reconfigure nothing!). Less onerous with the hardware requirements (my lowly Sandy Bridge HD3000 is Good Enough™, as it only requires a OpenGL 3.0 GPU, unlike its parent). But under the hood, the party is intense: this fork is quickly leaving its parent in the dust, as it now even supports the required MMU emulation for Windows CE-powered games! Oh, and Naomi/Atomisware. Hell, it even seems to support online (modem) features!. If you want quality Dreamcast emulation, this is the way to go, assuming you love the RetroArch way or can stand half-assed GUIs. No cellphone junk in sight!

    - WashingtonDC: Last time we checked the newest kid in the block, WashingtonDC could barely boot games, and without sound. Fast forward to today, where this project has reached quite a decent state (can now boot plenty of games, although I had no luck getting sound to work)... but sadly, its future is uncertain: his author was diagnosed (too late!) with some very nasty cancer, and the guy/gal/whatever can drop dead at any moment :/ (guys: hope your doctors aren't a bunch of lunatics!!!). What a pity...


    Veredict: Stick to Flycast for any serious gaming, and keep an eye on WashingtonDC before it's too late.

    Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
    Posted on 23-08-20, 22:04 (revision 1)
    Dinosaur

    Post: #1250 of 1280
    Since: 10-30-18

    Last post: 7 days
    Last view: 8 hours
    ~State of the Dreamcast emulation on Linux, 2023 edition~

    - lxdream: Still dead.

    - redream: Still there, and freemium. If you absolutely want to use this one, go for the development builds instead.

    - reicast: Officially dead since July 10, 2023 - project was EOL'd and repo got archived after 3 years of inactivity, because everybody that cared moved to Flycast.

    - Flycast: Just like every popular emulator these days, they have embraced too the annoyance of "let's build every major 3rd-party dep as a git submodule, so you end with 30 copies of the SDL2 sourcetree, and a bunch of cellphone-only libs burning space on your tiny HDD/SSD!". Also, last time I built it, it really insisted that fullscreen is the way to go (with no way to disable it other than editing the config file, LIKE AN ANIMAL). Other than that, it's still THE gold standard on DC emulation.

    - WashingtonDC: Now simply known as washDC, after a rebranding and move to GitLab (whose web UI is even bloatier than GH!). While our author still struggles in the battle against a motherfucking sarcoma, washDC is now active again, performance and compatiblity keeps improving, but sadly I can't still get sound to work here :/ And yes, another consumer of git submodules - ugh!

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