Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
We had a few words about this on IRC:
<bobotheking> I assume RetroArch doesn't support re-recording, but does anyone here have any experience with it? What are some of its major downsides?
<Nach> More to the point, libretro
<Nach> libretro powers RetroArch, and could in theory be placed in BizHawk or a custom RR wrapper or whatever
<bobotheking> Okay. What are some of the major downsides of Libretro?
<Ilari> Nach: IIRC, libretro doesn't support some operations that would be almost mandatory in any serious rr emulator. Like reading/writing emulated system memory.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Joined: 8/14/2009
Posts: 4090
Location: The Netherlands
You make it sound as if it is something completely trivial to do.
Also, some more words from IRC to answer this:
[16:17:51] <adelikat> the fact is that bizhawk fell behind retroarch in core integration because we lost our dedication core importer guy (natt) to RL
[16:17:57] <adelikat> we need someone to step up
[16:18:03] <adelikat> that and we have a LOT more requirements for putting a core in
[16:18:54] <adelikat> it must be up to a TASing standard, has way more hooks (like reading/writing core memory, lua, etc), and we are a pro-user UI so we have demands of more tools and pro-user features
[16:19:20] <adelikat> and in many cases (like bsnes) it takes a lot of time to work it to be deterministic since that isn't usually a concern of cores, nor a concern of libretro
[16:20:17] <adelikat> many cores in libretro are probably done substandard for our needs but just fine for a casual gamer
To put it simply, the reason BizHawk supports less cores is because it has higher requirements for cores (like core determinacy, memory reading/writing, etc.). RetroArch is aimed at a more casual gamer crowd, which doesn't care about such things.
To put the same tools in RetroArch, some of the cores probably have to be adapted for these requirements (and the tools themselves from BizHawk have to be reprogrammed in another emulator, which is also a significant work investment) - and in that case, why bother using RetroArch in the first place?
It'd make more sense to make the cores rr-compatible and then put them in BizHawk, instead of building on RetroArch. (Though we do need somebody to actually do that work).
http://www.youtube.com/Noxxa
<dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects.
<Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits
<adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.
put tools in retroarch? no no, put retroarch in bizhawk! then bizhawk can get more popular right away. yes lot of work, but more popular, and somebody will make retroarch in bizhawk have core detmency memory read. bizhawk can be more than just for tas.
I'm not dead or anything. I do spend a larger proportion of my time putting food on the table than I used to though. Ahh, to be a NEET again...
Anyway, what's been said in this thread so far is pretty accurate.
Retroarch is geared towards many UI-free systems. Adding any sort of -RR to it would be entirely contrary to its goals.
Libretro cores on the other hand are more useful. A libretro ported core is generally reasonably cross-platform, free of Windowsisms and Guiisms (even though Bizhawk has a GUI, having any garbage related to that inside a core is a death sentence), and has the basic program flow set up in a way that's useful to us; the core framesteps and doesn't run its own main program loop or anything.
Libretro cores can still be lacking a lot though; bad determinism (this can be unfixable), poor rigor in savestates, lack of useful TASing hooks. So I don't think a general purpose Libretro -> Bizhawk adapter is a good effort. What is a good idea, though, is to identify useful Libretro cores, and then port them.
So, what's a useful Libretro core that we aren't already using? Anyone have some insight?