BizHawk icon indicating copy to clipboard operation
BizHawk copied to clipboard

BizHawk no longer saves bk2 movies upon creation

Open RetroEdit opened this issue 1 year ago • 16 comments

I noticed this with the workflow File > Record Movie followed by Tools > TAStudio. I think it'd be preferable if they were initially saved at least once when they were created.

TAStudio does prompt:

Convert movie TAStudio will create a new project file from the current movie. The current movie has unsaved changes. Would you like to save before closing it?

but I would argue creation is not a change per se but just the base state upon which changes can be done.

This was not the behavior in 2.9.1, and this seems likely to be a recent change.

Host env.

  • BizHawk dev build at ed676cda391d25bdb1728ada13b7df21c0a974df; Win11

RetroEdit avatar Sep 28 '24 21:09 RetroEdit

I disagree. Unless the user saves manually or has autosave enabled, there should be no disk I/O.

YoshiRulz avatar Sep 28 '24 21:09 YoshiRulz

Why? If we're talking about minimizing disk usage, we already save SaveRAM without asking and obviously save config. To be fair, there is some contention about SaveRAM is done: see https://github.com/TASEmulators/BizHawk/issues/2175#issuecomment-650659312 part 2 .

There are very few cases where I can imagine it's desirable to create a bk2 but not to save it. It might be convenient for certain kinds of testing, or if you're trying to use it for a pure minimal file creation launch into TAStudio. But overall, I'd mostly imagine if you created a movie you intended it to be saved, and if it wasn't intended it can be deleted.

This seems inconsistent with other parts of the current design, where for instance Stop Movie in reality functions as "stop and save movie" (With the separate option Stop Movie without Saving). Closing EmuHawk will similarly implicitly save the movie.

RetroEdit avatar Sep 28 '24 22:09 RetroEdit

OOTB behaviour != behaviour with no user input. If the default is autosave (which I'm in favour of) then there should be an option to disable it, and only explicit saves should hit the disk when it's disabled.

To put it another way: Take any app which is used to edit documents, images, etc. and try Ctrl+N. I don't think any will write the blank/template file immediately. (Some will write backup copies for crash recovery, but that's analogous to our autosave.)

YoshiRulz avatar Sep 29 '24 02:09 YoshiRulz

I don't think Record Movie... is analogous to Ctrl+N because for Record Movie... the user provides a filename and potentially a directory.

RetroEdit avatar Sep 29 '24 07:09 RetroEdit

It's possible this was a conscious decision, but I'm not sure. What would be the use case for having a blank, empty bk2 movie file?

Morilli avatar Sep 29 '24 14:09 Morilli

The main thing for me is that Record movie... UI implies to me that a file a will be created. The one benefit I can see is that the files will reflect when the movie was initially created (creation date timestamp). Probably some amount of status quo bias on my part, though.

RetroEdit avatar Sep 29 '24 18:09 RetroEdit

It could potentially save you from having to keep writing out the metadata, but there's not much of that, and IMO improving how the user is made aware of unsaved changes to the movie would be better. A '*' in the window title is the usual way.

YoshiRulz avatar Sep 29 '24 22:09 YoshiRulz

Just to clarify some things:

I noticed this with the workflow File > Record Movie followed by Tools > TAStudio. I think it'd be preferable if they were initially saved at least once when they were created.

This flow seems unusual to me, is this so you get a movie with specific filename in TAStudio? TAStudio does have a bit of a legacy problem with the default.tasproj name, perhaps something could be improved here to make initial name picking easier.

I would argue creation is not a change per se but just the base state upon which changes can be done.

The Changes flag basically just signals whether or not the movie differs from the state on disk, or including some special cases it signals whether or not the movie needs to be saved. So the dialog correctly prompts you because the currently loaded movie file has not yet been saved.

Morilli avatar Sep 30 '24 22:09 Morilli

Two main benefits to this flow: 1) Choosing the basic metadata including file path and author when the movie is created (and occasionally "starts from" status -- I'm actually not sure if TAStudio can be used to create a "starts from" movie from just an EmuHawk window). 2) When the movie does get imported into TAStudio, it will get saved to File > Movie > Recent instead of only getting saved to TAStudio's recent list.

(Minor benefit that an extraneous default.tasproj is not created.)

RetroEdit avatar Sep 30 '24 22:09 RetroEdit

the workflow File > Record Movie followed by Tools > TAStudio

This flow seems unusual to me

This is basically how I use TAStudio in the vast majority of cases. Basically, I want to test something, get the game into the state I need and then record a movie that is 1 frame long starting from the state I want. That movie I then open in TAStudio and start working. To my knowledge that is the only way to start a project that isn't starting from console boot.

Since OP seems to have a similar workflow, wouldn't this issue be resolved by allowing the user to start a TAStudio project from the current game state?

shenef avatar Oct 01 '24 10:10 shenef

Allowing start from save[ram|state] in TAStudio without having to jump through hoops is a long-standing TODO. Perhaps the way to do this would be to neither reload the rom nor start a movie upon opening TAStudio, but only do that once some button is pressed (which could open some kind of dialog like what record movie does).

Morilli avatar Oct 01 '24 20:10 Morilli

It could use the existing heuristics for "has the user actually done anything in the game" https://github.com/TASEmulators/BizHawk/blob/5cc4c1f92450f67a895d0b73cd956e7d27310813/src/BizHawk.Client.EmuHawk/MainForm.Events.cs#L1122-L1128 and offer new from savestate etc. in that dialog.

YoshiRulz avatar Oct 01 '24 22:10 YoshiRulz

I think if we're talking about the TAStudio workflow, a Create as tasproj checkbox in Record movie... could work well.

RetroEdit avatar Oct 02 '24 02:10 RetroEdit

This wasn't in the 2.10 milestone, but it's marked as a regression from the last release, so I've made that small UI improvement ^ and will leave the rest of this for next release.

YoshiRulz avatar Nov 27 '24 18:11 YoshiRulz

I think if we're talking about the TAStudio workflow, a Create as tasproj checkbox in Record movie... could work well.

You can now create tasproj's directly by adding .tasproj to the file name, however is that actually useful?

Morilli avatar Mar 17 '25 20:03 Morilli

Another note: it adds the movie to the Recent list upon creation, but you can't copy the movie's path from that dialog until you save. This reaffirms my impression that saving upon creation is the most sensible behavior

Though, admittedly this is a rather minor papercut compared to some of BizHawk's other saving misbehavior.

RetroEdit avatar Nov 21 '25 22:11 RetroEdit