TASEmulators / TASEmulators/BizHawk
New tastudio workflow: fully mouseless editing
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 2.8k
- Forks
- 468
- PR merge metrics
- No merged PRs in 30d
Description
Lore
The very first version of TASEdit in FCEUX (before 2.2.0) required you to double-click every cell to toggle button input on it. To edit things faster I used to select a set of rows and to click the header instead, to toggle many buttons at once. Then AnS arrived and implemented a revolutionary feature that completely changed the workflow: ability to just draw inputs. Eventually bizhawk's tastudio (which was initially just a roll view that you still had to record everything frame by frame on) adopted this workflow which completely changed it forever as well. But that's just for binary buttons.
Analog editing mode was introduced by tastudio (fceux doesn't have it) because we're multiplatform. And up until this point we thought that it was enough to enter this mode with mouse, change values by dragging while in that mode, draw existing values onto other rows, and selecting several rows at once for this. But yet again Doom is forcing us to think about things we're lacking. First we had to implement relative mouse inputs and mouse capture for it to work nicely. We still need to implement wheel inputs. But now we're facing limits of the drawing workflow itself. Because almost all inputs in Doom are analog. You can't just go around double-clicking every single cell you wanna change within one frame. That would make you lose tons of time compared to XDRE, and as a result you may not consider switching to hawk.
XDRE has an input roll, but you still edit things linearly by only using your keyboard, and only today I realized how efficient that is when you need to edit several analog values at once for the same frame.
https://youtu.be/4K69wMYe6jI?t=530
Of course our difference is that we can't use special mnemonics to mean individual analog cells. Our analog editing has to be universal, and most of it is already there: once you've entered the edit mode for some cell you can type in the value, increment/decrement it in various ways, in the future maybe you'll also be able to flip the sign. But there's no way to specify which cell to edit without the mouse. Which slows you down immensely because you have to move you hands around the keyboard and most importantly between the keyboard and the mouse all the time. This is painful.
Needs
There's a lot to unpack here. Strictly speaking we just need a mouseless way to enter/exit analog edit mode. But how do you specify which cell you're entering it for if not with the mouse?
That means we need to be able to select individual cells and then hit whatever key we bind for analog mode enter. BTW I don't mind having Enter be that key by default, also reused for exiting this mode while keeping the value you've typed in, while Escape makes you exit without saving the value.
But then what prevents us from using that key to toggle bool buttons too? Technically related to #1399 even tho that issue is about using your input binds on the selected frame to specify which buttons you're changing. Single-cell selection theoretically makes that moot and instead can use one universal key for bool flips and analog enter/exit.
Now if we have all that, I think a must-have thing would be a way to select the next/previous sell on the same frame and also a way to select the same cell on the next/previous frame.
However having to hit enter twice every time you edit a new cell would feel painful too. So I think we will also need a key that combines the functionality of enter/exit analog mode with switching to a different cell AND ALSO entering analog edit mode for that cell.
While at it, we've discussed ability to edit analog values by dragging without entering and exiting analog mode every time, and that's kinda offtopic here but I think it'd still be nice to do that, just needs some modifier... what about holding RMB?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating the tastudio input-roll analog editing and cell-selection entry points, then review the related discussion in #1399. Define the keyboard behavior for selecting cells and frames, entering or exiting analog mode, toggling boolean inputs, and preserving or discarding values; done requires a coherent mouseless workflow covering these cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100