Written by jdgleaver RG350 is but one of the many MIPS-based devices on the market today running OpenDingux.
OpenDingux is a Linux distribution used by a number of open source handheld gaming consoles such as the GCW-Zero, and more recently the popular RG350, RG350P and RG350M range of devices. An initial ‘experimental’ port of RetroArch for OpenDingux was made in January, but it was left unfinished. Over the past two months we have been working hard to rectify this situation.
We are pleased to announce that RetroArch now treats OpenDingux as a first-class citizen, and an official release will be included with the rollout of the new build infrastructure. While targeting the RG350M as a flagship platform (its 640×480 display offers a wealth of upscaling potential), all JZ4770-based devices should be supported. The release highlights include:
A reworked and well-optimised SDL-based graphics driver, with numerous features that were missing from the original experimental port (e.g. OSD notification text, graceful handling of invalid display modes, VSYNC control, fast forward support).
Full leverage of the hardware IPU (Image Processing Unit), with menu-based control of aspect ratio/integer scaling and image filtering methods (bicubic, bilinear, nearest neighbour).
A custom gamepad driver that integrates seamlessly the peculiar input configuration of OpenDingux devices (a hybrid of virtual keyboard inputs and analog sticks) and which offers full rumble support.
Many ‘under the hood’ enhancements such as support for battery level monitoring, memory usage reporting, a clean up of irrelevant menu entries, RGUI fixes, directory path rationalisation and a number of carefully tested compiler optimisations. This is a ‘lean and mean’ build tuned specifically for the hardware, with no unnecessary bloat.
We are launching with a modest collection of cores, each one hand-picked for performance and compatibility:
FB Alpha 2012 CPS-1
FB Alpha 2012 CPS-2
FB Alpha 2012 Neo Geo
FCEUmm
Gambatte
Genesis Plus GX
gpSP (Note: Currently lacks a dynarec)
Handy
Beetle PCE Fast
Beetle WonderSwan
mGBA (Note: GB/GBC/SGB content only)
PicoDrive
PokeMini
PrBoom
QuickNES
RACE
Snes9x 2005
Snes9x 2005 Plus
TyrQuake
VICE x64
We understand that some users may question the validity of expending two man-months of development time on such a ‘niche’ set of devices. It is the nature of RetroArch, however, that work on one platform frequently benefits others. All of the following RetroArch and core improvements have come about as a direct result of this endeavour:
– RetroArch now has a robust mechanism for implementing automatic frame-skipping based on audio buffer occupancy. This is something that stand-alone emulators have had since time immemorial, but RetroArch has always lacked (leading to the infamous ‘crackling audio’ so often reported). Auto frame-skip is a literal game changer, making a variety of previously unusable cores viable on underpowered hardware. Thus far it has been added to:
FB Alpha 2012 CPS-1
FB Alpha 2012 CPS-2
FB Alpha 2012 Neo Geo
FBNeo
Genesis Plus GX
gpSP
Beetle PCE Fast
Beetle WonderSwan
mGBA
PicoDrive
Snes9x 2005
Snes9x 2005 Plus
– As a platform without shader support, video filters are a vital part of the OpenDingux RetroArch experience. To this end, a number of new filters have been added – including several high quality LCD (and Game Boy style) effects that rival shaders, and are useful even on the desktop. In addition, many filters have been optimised intensively for maximum performance on OpenDingux, which of course reduces overheads on all platforms. And finally: OpenDingux work revealed a long-standing bug (now fixed) which disabled video filters entirely on Android.
– Snes9x 2005/Snes9x 2005 Plus has gained colour operation optimisations from Snes9x 1.60 and MIPS-specific assembly code from PocketSNES, which combine with auto frame-skip to significantly enhance performance on low end hardware. Two critical save state bugs have also been fixed.
– Our low-powered arcade cores (FB Alpha 2012 CPS-1/CPS-2/Neo Geo) have been substantially cleaned up and improved, with core option sublabels, aspect ratio correction, low pass audio filters and software-based screen rotation for devices without hardware rotation support. With auto frame-skip, even bottom-tier devices can run arcade content smoothly.
– Interframe blending in Gambatte and mGBA has been optimised, reducing performance overheads by ~70%. The same blending method has also been added to gpSP (along with optional colour correction).
– Beetle WonderSwan now has software-based screen rotation for devices without hardware rotation. In addition, colourisation palettes similar to those in Gambatte have been added for monochrome content (raw black and white is often uncomfortable to view on devices without shaders!).
– OpenDingux has rumble functionality, but we were lacking cores with which to exercise it. We therefore added rumble support to Gambatte and PrBoom, and improved the existing haptic feedback in PokeMini and TyrQuake.
This OpenDingux RetroArch port has been a passion project, born out of sheer amazement that so many of our cores run so beautifully on such limited hardware. We hope that offering a full-fat RetroArch experience will help to revitalise the community surrounding these interesting little devices. And we hope that our non-OpenDingux users will also profit from the optimisations and enhancements!
All this and more will be coming to you as part of our new range of ‘supported’ platform stable/nightly releases once the new infrastructure is about to go public. Stay tuned for more on that during the holidays!
After 6 months of quite intense development, DOSBox Pure has been released for public testing. DOSBox Pure is a new fork built for RetroArch/Libretro, aiming for simplicity and ease of use.
The main features of this fork are:
As easy as a console game emulator by loading DOS games from ZIP files and saving into separate save files
Support for save states and even rewinding
Automatic game detection with custom gamepad to keyboard mapping for many DOS games
Mouse, keyboard and joystick emulation for gamepads and an on-screen keyboard
Other features are support for cheats, built-in MIDI software synthesizer (needs a SF2 soundfont file), disc swapping menu and a start menu that lists EXE files controllable by gamepad.
This initial release is feature complete as of now for what I wanted to accomplish, yet it is clearly marked as intended for public testing. So try to be constructive and as technical as possible if something doesn’t work as expected, I’ll be thankful.
I wanted to get this out before the holidays and to personally end 2020 with something cool. I hope you like it 🙂
We have started spotting a recurring trend of bad faith actors (it’s often times the same handful of people, with their own disingenuous reasons for pushing this meme) continuing to make bad-faith arguments that Libretro cores lag behind ‘upstream’ (whatever they think this means, often times they’re not even sure themselves or get it wrong) and that they’re out of date. In the past we’ve simply brushed it off as FUD (Fear, Uncertainty, Doubt) that attempts to muddy the waters, and therefore let it go unaddressed, hoping our users can separate fact from fiction by themselves. Unfortunately it’s the Internet and the more times you repeat a lie, over time people start parroting it.
So let’s set the record straight:
We take great care in making sure Libretro cores work as best as possible. Despite similar bad faith actors making strenuous arguments that we provide no additional added value to cores, it takes a lot of hard work and effort to make sure that programs (whether they be emulators/games, or whatnot) are properly integrated into the Libretro app lifecycle so that they run flawlessly within a Libretro frontend, such as RetroArch. There is no simple ‘port and compile’ button that one clicks when making a Libretro core. When making a Libretro core, you dig deep into the internals of a program, you figure out how the runloop works, and you reimplement it. Sometimes a program makes that easy to do because its own internal runloop is already setup well for this, other times it requires a lot more effort. To make a long story short, all this takes hard work and effort, and we try to do it on a consistent basis in a way that provides additional added value to the user. Whether one core might not fit that description does not invalidate the vast majority of cores where this is the rule, and not the exception.
We have spotted a recurring trend where endusers tend to overestimate the importance of random commits made to ‘downstream’ projects. While we try to work with devs when the opportunity arises, there are instances where we need to have a shallow fork of a project and judiciously do backports when such a mutually beneficial arrangement doesn’t work out. In this case, it has to be said that not every single commit that ever gets pushed to a repository is of importance, or even important to a libretro port to begin with. For instance, an update to some GUI framework is often times completely unimportant to the Libretro core.
We work hard on a per-daily basis to keep cores updated as much as possible. Updates go instantly live on a daily basis through RetroArch’s builtin ‘Core Installer/Updater’ service. You literally can’t have it more fresh off the press. We think that repeated claims and heckling over random cores being ‘not up to date’ is putting an unfair and exhausting strain on us where we are pressured into continuing to walk on some hamster treadmill so that an enduser can finally get a ‘rebased’ core with some inconsequential commit that has no bearing at all on the Libretro core. We simply aren’t going to fall into that deathtrap.
We update projects as much as possible and we try to make sure in the process that they continue to run well. Keeping a core updated is one thing, but you also want to ensure that it continues working on the platforms we care for, that the performance is maintained, etc. We go above and beyond the call of duty to pay attention to these things. We feel it is unfair that all this hard work and labor goes unnoticed and instead people engage in unfair levels of navel gazing over random commits that they themselves have no idea what added value they add to the core, whether it’s even baked in for the Libretro core, etc.
To dispel another set of rumors, no, Dolphin has not been ‘outdated’ now for months, Citra is getting a rebase soon, PPSSPP has not been ‘outdated’ for months. We are working hard on our new infrastructure at the moment where these cores can get rolled out. If they are not on our old buildbot right now, chalk it up to still having to recover from a rather nasty server hack that left us incapacitated at least for half a month or more, and we are still not completely done with the current server migration. We are completely confident that our project will be running better than ever before Christmas hits and that our new Libretro infrastructure will allow us to get things done much faster and much more efficiently than before.
Please note, it’s fine to point out when certain updates can benefit a Libretro core, certainly there can always be outliers and there can always be cores that could do with some improvements. But above being demanding, what matters even more is just contributing the necessary changes. While we are very grateful for the contributors we have, they already put in a lot of work as is in their own spare time. This kind of constant pressure to ‘update 24/7 around the clock for every nonconsequential commit I see happening on a repo’ is a problem. We do not want our pool of contributors to be overburdened or stressed out with these requests especially when the users in question cannot even tell us to what extent these contributions matter. We ask people that they leave it up to us to determine in these cases the pace at which we update repos, what changes are immediately merged in, what comes later, etc. It’s simply tiring and exhausting to continue seeing these talking points being pushed in an effort to discourage people from using RetroArch when we know ourselves just how much work, effort and time we put into all this to provide our users with the best possible experience they can get. Often times we even add features that are not even in upstream, or entire renderers are being written from scratch to provide a superior experience.
In short, there are some cores that are completely upstream, with commits fresh from upstream, without us even being involved. There are other cores where we do maintenance of the Libretro core ourselves because we deem it is the best option there. We’d like to ask the users that are insistent on these day-0 updates to please have some faith that the creators of Libretro/RetroArch in this case are perfectly capable of determining what is best for the user and to let us work at our own indiscretion. Every single update being pushed to a repo cannot just be mindlessly pushed, there has to be a filter and a process to ensure that for instance a platform we support continues working, that performance is not adversely affected, etc. We run a holistic framework here and we try to establish a truly crossplatform game console platform here that goes beyond the scope of nearly any project out there. The net we have to cast in terms of things to care about and what factors to take into consideration simply is much larger than is the case with most projects.
So, in summary:
* No, cores are NOT outdated. We have over 150+ cores and we simply DO NOT have time to tell you about every single change or update we push to our repos. It would be an inhuman amount of work for a team of our size, and any time spent writing patch notes would be time being taken away from working on our project and maintaining the stuff. Often times we push updates like over 3 or 4 times a day for various cores. We simply cannot give you status updates for all of this beyond just a ‘cores have been updated, click this button so you can immediately update them’. So people have to take their poison there. We are not Microsoft here with tenthousand workers working around the clock.
* And in the event a core *might* not be completely ‘up-to-date’ compared to some random ‘downstream’ (in the case where this is important and relevant), not only does the core still work fine and perform well (seriously, sometimes you don’t have to update exactly this very minute, sometimes things are just fine in a stable form), but we are usually quick to respond, and one or two exceptions to the rule does not give anyone the right to overexaggerate and make bad-faith arguments that they are ‘all outdated’. Also, these issues could be alleviated even quicker if we had more contributors that would join us in taking care of some of the workload. As it is, a lot falls into our lap and we are happy to accomodate, but that also means we work at our own pace and we determine what is important, and we are completely within our right to prioritize this according to our timetable.
* Furthermore, we often add features that are not even in any standalone version. Not to mention making completely new things like ParaLLEl RDP/RSP. It’s simply not true that you are ever going to get a ‘worse’ experience with RetroArch, quite the opposite. We feel these are simply bad faith arguments being made in a flimsy attempt to discourage people from trying out RetroArch. We put great love and care into our project to make it the best it could be, and it is rather upsetting to keep seeing these same talking points being trotted out by the same people, so we felt that since ignoring the nonsense doesn’t make it end, it’s time to address it.
We thank you for your understanding and we hope that we have managed to set the record straight on some of these things. Rest assured, we want to provide you at all times with the best possible experience when it comes to gaming. We completely believe in RetroArch becoming the ultimate be-all end-all crossplatform gaming console, and our passion for this is boundless. We will see it through to its conclusion no matter if not everybody shares our vision. Thanks for your time in reading this and we hope to provide some real quality new content for you soon!
P.S. RetroArch works Day One on Xbox Series S/X! All you need is a Dev Kit mode activation and you’re ready to go.
UPDATE: Keys have ran out for this batch. Thanks for participating!
New beta testing keys will be available on 9/26/2020 – for the exact time check this page here.
As you probably already know, a year ago we announced that RetroArch would be releasing on Steam. We have worked hard on this for a fair while now. The process is slower than expected due to reasons beyond our control.
It’s been a lengthy process and we have had to significantly retool things to conform to Steam’s policies and guidelines, one of which is no Core Updater (just like on Google Play now).
While we wait for our release candidate build to be manually approved by Steam (which we’ve been told is a lengthy process), in the meantime we will start giving away beta testing keys. We want to gather as much feedback as possible from users so that the final experience on Steam lives up to people’s expectations.
So with that in mind, we are giving away keys for our first beta test version, Beta 1.
How do you get a Steam beta key?
Although we want everyone to be involved in this testing process, we cannot do it all at once. We will distribute the codes for a while at the link down below.
For Patreon users: We feel it’s important to express our gratitude to the people who gave their support when we fell on hard times with the hacking attack. Patreon subscribers can request their testing key by sending us a Direct Message on Patreon.
Disclaimer
NOTE: These keys are not being sold, and as per Steam’s rules regarding crowdfunding, we are allowed to do this. We refer to the following section:
Crowdfunding.
You can use the keys for crowdfunding rewards and give to your supporters. Before the game launches, you can also give your supporters beta keys if you wish, but these keys should only be owned by your supporters, and unless beta access is available for sale through Steam, these keys should not be sold elsewhere outside of a crowdfunding campaign.
Steam version details
So what’s different when using the Steam version right now vs. the regular version?
No core updater. You install cores through Steam Store instead. After you install RetroArch, you install the Libretro core DLCs that are available separately. We have made 10 cores available as DLC so far. They are all free and are already available on Steam.
All updateable assets (including shaders, overlays, etc) are pre-packaged and updated with new RetroArch builds. Basically, nothing is downloadable from our servers, everything goes through Steam.
No Desktop Menu.
Remote Play support. See next paragraph.
Remote Play support
RetroArch on Steam has full Remote Play support. This means that you will be able to play any multiplayer game online with another Steam user that also has a RetroArch beta key.
This feature is exclusive to the Steam version, and has the following advantages:
* Not dependent on RetroArch’s netplay functionality
* Because of this, it does not depend on serialization in order to work
* It apparently works very well, on par with something like Parsec and perhaps even better
NOTE: Right now, Player 2 needs to use a gamepad in order to be recognized as player 2. If Player 2 uses the keyboard instead, RetroArch will mistakenly think it’s Player 1 instead.
This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful. We are using cookies to give you the best experience on our website. We collect users data for personalisation of ads, and also Google will use your personal data when you give consent on our site. Check this link to Google’s Privacy & Terms site.
Strictly Necessary Cookies
Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.
If you disable this cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.
3rd Party Cookies
This website uses Google Analytics to collect anonymous information such as the number of visitors to the site, and the most popular pages.
Keeping this cookie enabled helps us to improve our website.
Please enable Strictly Necessary Cookies first so that we can save your preferences!