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.
As Dart Marios says:
Since the list of implementation requests is getting long (mostly my fault, but we only want what's best for Citra), would it be more useful to make a list on github or google docs instead of requests here and there on this thread? That it would be easier for Citra devs?
By the way, according to my recent tests, it seems to me that the games most prone to desynchronize are 30fps games, maybe there's something to look at there?
Also, the issue of inputs not taken into account after reloading a backup comes, in my opinion, from the time it takes for the savestate to be loaded (I always save and load savestates with the emulator paused, but Citra doesn't save and load savestates while the emulator is paused, it seems to me, maybe something to fix)?
In addition to the ideas submitted in the previous posts, I can add that it would be nice to have an osd to know if a savestate is saved or loaded, to have "named" (exported) backups in addition to the ten basic saveslots, like in BizHawk (also to have hotkeys to backup/load on the same (current) slot and choose the backup slot) to know which save slot you're in, plus the keys you press (this can be VERY useful to see when a movie goes out of sync.) and the fact that you can save a (exported) movie at any time (and whether a movie is being recorded or not, via an icon etc...))
Joined: 10/12/2011
Posts: 6440
Location: The land down under.
Went ahead and decided to figure out making an early AviSynth for 3DS.
This is the script to follow it like the DS main encode.
Note: This follows the native resolution of 400x480.
There's a section below in what to switch around if you're using a higher internal resolution when dumping.
Language: AviSynth
vid = "source.avi"
cw = vid.Width / 10
ch = vid.Height / 2
top = vid.crop(0, 0, -0, -ch)
bot = vid.crop(cw, ch, -cw, -0).AddBorders(0, ch, 0, 0)
StackHorizontal(top.PointResize(top.width*2,top.height*2), bot)
#If you're not following the native res of 400x480 use this instead:
StackHorizontal(top, bot.LanczosResize(bot.width/2,bot.height/2))
Native example:
10 times native resolution example:
Disables Comments and Ratings for the YouTube account.Something better for yourself and also others.
Thanks for the script Spikestuff!
I'll try Dream Team bros today or tommorow Darth Marios! On a 11m test it sync. (the movie is in my folder in my signature as usual. Would you a youtube encode?)
I'll do that zhupengfei! Done!
(if anyone have feature request, pm me so I'll update the comment)
Regarding the fact that the keys pressed are not taken into account when loading a savestate, I think it may be related to the fact that Citra doesn't save or load savestates when the emulator is paused, so the loading of savestates is done once the pause is disabled, which takes more or less time depending on the games.
It would be nice to allow saving and loading savestates when Citra is on pause, if that's possible?
I would like an assisted playthrough for now, since its to premature to do Tas with Citra right now.
I will test rerecording of Azure Striker Gunvolt 2 with Shovel Knight amiibo for Copen air dash glitch as soon as possible
I created a Youtube playlist "Citra tests" for those interested.
I put the link in my signature as well to make it easier to find it.
Of course I continue to update the list at the bottom of page three of this topic.
That's interesting... so almost all 3DS games will desync? XD
Azure Striker Gunvolt 2 is 30fps game... so it'll desync for sure
But both M&L Dream Team and Paper Jam run on same engine; So Dream team is 60fps game and Paper Jam 30fps?
Sorry, I'm in training with certification in digital marketing, + the basic work, I have a little less time to test games on Citra, but I would normally have time to test some more soon.
Joined: 9/12/2014
Posts: 541
Location: Waterford, MI
Eh, don't be sorry. Anyhow, on the pr another commit was made which fixes some desync issues. I dont know which ones though.
There is still a long road ahead before Citra can be accepted to tasvideos.
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 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.
You mean Hyrule Warriors is perfect synced now?
I will test Mercenaries 3D again ASAP.
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.
I have another idea/request, but since english isnt my native language i dont know how to ask properly, but i will try:
Its possible to implement the possibility to use save and load state during video dumping even if you not recording your input?
Pcsx2 desync as hell but have this function, ok not good for tasing but allow segmented portions of superplay or assisted playthrough, then you edit all parts togheter to get a finished movie.
Citra freeze if you try to dump frames when you save or load a state.
-implementation of Lagarith and/or Camstudio lossless codecs
option to dump the video and the audio in separate files
- Not sure why these would be useful?
To answer these questions, Lagarith and Camstudio are lossless codecs and are much lighter than FFV1.
And the fact that I can have a separate file between video and sound is that sometimes I have to edit the video in Adobe software, and like other software, I guess, they only recognize the video, so in some cases I have to dissociate the video and the sound before editing.
And that would also allow me to resynchronize the sound if there is a discrepancy between the video and the sound.
Putting this as an option offers a security option anyway, I don't know what other people think about that?
I have to try to transfer my games dumped with ThreeSD from my laptop if it still works in the next few days.
I will mainly try the games I had put as desync in my list to see which ones work now.
- option to save the movie at any time (like in Bizhawk again)
Implemented.
I don't seem to have seen this option, where is it?
EDIT It's "Save without exit" under Tools -> Movie menu
Mario Open Tennis asks to tilt the 3DS in front of you, is this possible with Citra?
Since Citra does not have an OSD, would it be possible to add the following information to this bar?
The fact that the game is recording or not (I still have a lot of trouble understanding how Citra works to continue a movie, often I reload a game and save with read-only mode disabled but it doesn't continue recording,), would it also be possible to display in this bar, without OSD, the keys pressed, and I still have the problem of keys not being taken into account (in some games) because the save char takes time on Citra, again, would it be possible to load saves while the emulator is paused, with an indication that this has happened?
-----------------------------------------------------------------------
- Sonic Generations seems to synchronize now.
- Captain Toad: Treasure Tracker sync doesn't desync after the intro stage now
- Boxboy! doesn't desync after the intro stage now (I've have finished World 1)
- Dragon Ball Fusions (not ThreeSD) sync
- The Great Ace Attorney 2 Demo sync (I did the whole demo, about 1h)
- Bravely Second (~50 minutes test) sync
- The Adventure of Tintin seems to sync now
- New Super Mario Bros. 2 now seems to sync (1-1 to 1-5)
- F1 2011 sync
- Another World sync
- Pac-Man and the Ghostly Adventures seems to synchronize (~15m of gameplay)
- Pac-Man and the Ghostly Adventures 2 seems to sync but the game run at 1~2fps (I have a RTX 2060...)
- Super Monkey Ball 3D sync (World 1.1 to 1.10)
- 80's Overdrive sync
- Majora's Mask (not ThreeSD) -> desync
- Ridge Racer 3D make Citra crash
- Azure Striker Gunvolt: SP -> desync
- Super Street Fighter IV 3D Edition -> desync at language selection
- Heavy Fire Special Operations -> desync at start because of "Save Data corrupted" AND black screen ingame (even if you don't replay a movie).
By restarting a second game it is possible to pass the "Save Data corrupted" screen, but once in play, there is always a black screen, it is possible to shoot, but not to move the weapon's sight, as on the initial game.
- Heavy Fire: The Chosen Few 3D Same Since Citra does not have an OSD, would it be possible to add the following information to this bar?
The fact that the game is recording or not (I still have a lot of trouble understanding how Citra works to continue a movie, often I reload a game and save with read-only mode disabled but it doesn't continue recording,), would it also be possible to display in this bar, without OSD, the keys pressed, and I still have the problem of keys not being taken into account (in some games) because the save state takes time on Citra, again, would it be possible to load saves while the emulator is paused, with an indication that this has happened?
- Shovel Knight: Treasure Trove -> desync at the very beginning
- ZARA the Fastest Fairy -> desync + audio glitches
- Ridge Racer 3D (can't choose an avatar).
Mario Open Tennis asks to tilt the 3DS in front of you, is this possible with Citra?
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)
phoenix1291 wrote:
The fact that the game is recording or not (I still have a lot of trouble understanding how Citra works to continue a movie, often I reload a game and save with read-only mode disabled but it doesn't continue recording,)
Citra should roughly follow the Laws of TAS on savestates. Please report any unexpected behavior you found.
phoenix1291 wrote:
Would it also be possible to display in this bar, without OSD, the keys pressed
I think that would clutter the status bar too much; I'm thinking of implementing an actual overlay with imgui.
phoenix1291 wrote:
and I still have the problem of keys not being taken into account (in some games) because the save char takes time on Citra, again, would it be possible to load saves while the emulator is paused, with an indication that this has happened?
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 have to try to transfer my games dumped with ThreeSD from my laptop if it still works in the next few days.
I was able to do it today, but most of the games ("app") are not recognized and Citra tells me they are encrypted and indicate an "invalid region", while on my laptop I have no problem with games dumped from my 3DS with ThreeSD.
(I copied and pasted the folder from my laptop into the folder on my desktop PC in sdmc -> Nintendo 3DS)
For the next tests, I will update the list in the post above, until the next Citra Canary release.