Thanks! I'll start working on the newly found desyncs tomorrow.
Meanwhile, could you please test more of the previously desyncing games? Thank you in advance.
Try copying the entire Citra User directory including nand, sysdata, etc. Those folders allow Citra to decrypt the games, among other things.
Also the canary build I was referring to is already out.
Yes it's possible (with mouse right click & drag or UDP input servers), but I don't think there's a way to input motion data accurate enough for TAS yet. This might be implemented in the future (with a TAS Input dialog or something)
Citra should roughly follow the Laws of TAS on savestates. Please report any unexpected behavior you found.
I think that would clutter the status bar too much; I'm thinking of implementing an actual overlay with imgui.
Hmm, saving while paused won't be easy, since pause works simply by suspending the emuthread (and therefore things can be in an undefined state while paused)
For a bit more control, you can try using Frame Advance. Your save/load state request will be handled on the next Frame Advance, and Citra also waits for Frame Advance immediately after saving/loading is completed.
-----------------------------------------------------------------------
As for those desyncs, the next Citra Canary release should incldue a fix. Would appreciate some more testing, thanks a lot!
I pushed a new update to implement two of the requested features (see a comment in the PR), which will be present in the next canary. Some other requested features will probably come in future PRs.
Sorry for having kinda abandoned this. I didn't have much time to work on Citra in September.
I've pushed a new fix to the PR which should be available in the next Canary build. It seemed to at least fix Hyrule Warriors for me. Hopefully it would work better on some other games too.
PS. Starting emulation as paused can actually already be achived by enabling frame advance before booting the game.
Sorry that I haven't looked at this thread for a rather long time. I'm currently a bit occupied with other things, but hopefully I'll be back at working on Citra rerecording soon.
That's strange. It is supposed to be at least partially fixed. I'll look into that.
It should be available in the next canary build, but not the current one.
Just enable frame advance before you start the game.
It turns out to be harder than it seems. I'm still working on this.
Nope, flatpak builds keep timing out recently so it hasn't been updated for a while. If you want, you can try using standalone linux builds distributed here, but I'm not exactly sure what libraries you'll need.
Unfortunately that's indeed the only legal way to do it.
Please also check the latest Canary build. The issue with keyboards & savestates should be partially fixed now.
Nope. LLE (Low Level Emulation) applets mean that you are using the original 3DS OS software for emulation. HLE (High Level Emulation) means that a high level replacement is used.
For instance, when using LLE applets, you get the same keyboard screen as on a 3DS when games request the software keyboard. When using HLE applets, you get a popup dialog instead.
Currently it should already allow you to use any ffmpeg encoder and muxer, but I'm not sure what is nut piping. I likely did it the hard way and directly used the av libraries instead.
---
Regarding the desyncs, I see applets are involved (i.e. software keyboard and mii selector). Can you two please try again with LLE applets? HLE applet inputs aren't really recorded at the moment.
To use LLE applets, you can use my tool threeSD to import your system titles from your 3DS.
---
Ah, that's really strange. We are using ffmpeg's fps filter to resample the video (~59.82Hz which not all encoders support) to 60fps. It shouldn't really be 600fps. Can you tell me what configuration are you using in Citra's Dump Video?
Death Marios and phoenix1291, I would very much appreciate it if you can post an example of a desynced movie so that I can look at it.
If possible, please also post a log of the desync. This Citra forum topic tells you how to get the log file: https://community.citra-emu.org/t/how-to-upload-the-log-file/296
Also, phoenix1291, I've noted down your feature requests and I think I'll likely implement them soon.
Hello and thank you for your interest! Can you please post this information, the related movie and Citra's log file as a comment in the PR? Thanks a lot.
Hello there, I'm a developer from Citra (zhaowenlan1779). Just want to say that some rerecording features will be fixed / added in the next Citra Canary build. You can look at the PR here: https://github.com/citra-emu/citra/pull/5448
I don't really think all the desyncs will be fixed, though...
Thank you, but we didn't make the translations. (and also not like I have the perms to update them.) I've forwarded this to one of the French reviewers in the community, hopefully they'll see my message.
Also unfortunately, few devs look at the Citra community forums nowadays, and topics can go unnoticed. It might be better to communicate with us on Discord.
Yeah, it's definitely possible (like you can edit any file, can't you?) It's just a binary format similar to DTM. Each controller state is 7 bytes though (not a good practice, but this format was actually made a long time ago). You can also look at Citra's code for more information, it should be in src/core/movie.cpp