<pclass="rvps10"><spanclass="rvts21">This page lists many small details of implementation that improve interaction between user and the program. All these points must be considered when porting Taseditor to other platforms.</span></p>
<liclass="rvps10"><spanclass="rvts21">When the user closes the emulator, emulator sends a request to Taseditor in order to allow it to close the project first. If the project contains unsaved data, Taseditor shows the Yes/No/Cancel dialog. The user can either save the changes, or save none of them, or cancel the attempt to close the emulator.</span></li>
<liclass="rvps10"><spanclass="rvts21">When playing back an fm3 project outside Taseditor (like a regular movie), the user can switch the emulator to Recording mode and try rerecording. In this case, the emulator tells the user that current movie is a Taseditor project, and suggests to start editing it. In case of refuse, emulator disables the Recording mode and resumes playing back the project movie. In case of agreement, emulator sends a signal to Taseditor, and at the end of the current frame Taseditor will launch and load the currently played project.</span></li>
<liclass="rvps10"><spanclass="rvts21">When a ROM is loaded into emulator, the user can launch Taseditor at any moment. If he opens the Taseditor window while playing or recording a movie, Taseditor will automatically create a nameless project containing this movie Input. But if the movie is starting from a savestate, Taseditor will display a warning about not supporting such movies and then create a blank project.</span></li>
<liclass="rvps10"><spanclass="rvts21">While the project has no name, autosave function doesn't work.</span></li>
<liclass="rvps10"><spanclass="rvts21">When saving a nameless project, Taseditor suggests the current ROM name as a name for the fm3 project, with the extension changed to .fm3.</span></li>
<liclass="rvps10"><spanclass="rvts21">Since the FM3 format is a superstructure over the FM2 format, the user can open fm2 files just like Taseditor projects, using the "Open TAS Editor Project" dialog and choosing the filter "All Files (*.*)". When opening fm2 files, Taseditor additionally informs the user about it with the Yes/No dialog. The user can either load the fm2 file as a new project or cancel the loading.</span></li>
<liclass="rvps10"><spanclass="rvts21">After opening an fm2 file or a corrupted fm3 file, the project is considered nameless, even though the TAS Editor window caption displays the name of the loaded file. At the first saving attempt (</span><spanclass="rvts30">Ctrl + S</span><spanclass="rvts21">) Taseditor will bring the SaveAs dialog, where the loaded fm2/fm3 file name will be suggested as a name for the project. The user can either save the project with this name or change the name. This way Taseditor draws your attention to the fact that the new project significantly differs from the file that exists on the disk under the same name.</span></li>
<liclass="rvps10"><spanclass="rvts21">FM3 projects store the version number of the FM3 format used when saving the file. Different versions can be totally or partially incompatible with each other. If the loaded project version doesn't match the currently supported one, Taseditor shows the Yes/No/Cancel dialog. The user can either resume his attempt to load the whole project (not recommended), or load only the Input from the FM2 data (recommended), or cancel loading.</span></li>
<liclass="rvps10"><spanclass="rvts21">FM2 format (and therefore fm3 too) stores the MD5 checksum of the ROM used when creating the movie/project. When loading a project, Taseditor compares the current ROM checksum with the project's one, and if they don't match, brings the Yes/No dialog, displaying the original and the current ROM names. The user can resume loading or cancel it. Later, when saving this project, Taseditor will notice the checksum mismatch again and suggest replacing the ROM name and the checksum in the file before saving. The user can either approve the replacing, or save the project with the old name and checksum, or cancel the saving.</span></li>
<liclass="rvps10"><spanclass="rvts21">When loading a corrupted project file, Taseditor tries the best of its ability to prevent emulator crash. If an error is found in the middle of loading, the further loading stops and the rest data is replaced with the default data. Particularly, if the error occurred while loading the Greenzone, the project is left with only the Greenzone frames that were successfully pulled out of the file, the rest frames will be pale. Project loading error messages are logged into the FCEUX Message Log.</span></li>
<liclass="rvps10"><spanclass="rvts21">When loading a project, Taseditor respects current settings of "Greenzone capacity" and "Undo levels". For example, if while saving a project the Greenzone capacity was 5000, but when loading the project the Greenzone capacity is 3000, some frames will be skipped when loading. It's necessary so that a project saved on a more powerful computer can be opened on a less powerful one, that doesn't have enough memory.</span></li>
<liclass="rvps10"><spanclass="rvts21">When launching, Taseditor loads the data about patterns from the </span><spanclass="rvts20">taseditor_patterns.txt</span><spanclass="rvts21"> file. If this file cannot be opened (fer example, it was removed), Taseditor creates a small set of default patterns, in order to keep the Patterns menu filled.</span></li>
<liclass="rvps10"><spanclass="rvts21">Savestates used by the Greenzone differ from regular savestates a bit. They don't contain movie data, because it's useless information for the Greenzone purposes. Besides, they are always compressed, in order to save memory.</span></li>
<liclass="rvps10"><spanclass="rvts21">If after a </span><aclass="rvts27"href="Operations.html#Delete">Delete</a><spanclass="rvts21"> or </span><aclass="rvts27"href="Operations.html#LUAChange">Lua Change</a><spanclass="rvts21"> operation the user effectively removes all Input from the movie, Taseditor will create one blank frame in the movie beginning.</span></li>
<liclass="rvps10"><spanclass="rvts21">When user is selecting a range of frames by stretching, it's still possible to use hotkeys with the other hand. To avoid conflict, during DRAG_MODE_SELECTION and DRAG_MODE_DESELECTION some functions related to changing the Selection will not work:</span></li>
<liclass="rvps10"><spanclass="rvts21">When dragging the Playback cursor, there is small limitation related to how seeking works. After the leftclick on the icons column, the Playback starts seeking to the frame, and the user can't drag the Playback cursor to other frames until it reaches the target frame. During this initial seeking the mouse cursor is replaced by an arrow with a hourglass. Once the initial seeking is over, the Playback cursor dragging is fully functional. This is necessary, because there's possibility that the user clicks a frame very far from the Greenzone head and the "Follow cursor" checkbox makes the Piano Roll immediately jump to the current position of the light-blue cursor, so the frame under the mouse cursor changes before user even released the left button.</span></li>
<liclass="rvps10"><spanclass="rvts21">Since the icon column is rather narrow, the user may accidentally miss clicking it. So when you click the left border of the Piano Roll or a bit to the left from it, Taseditor assumes that was a click on the icons column. As a result, the user doesn't have to precisely aim when he needs to move the Playback cursor or start dragging it.</span></li>
<liclass="rvps10"><spanclass="rvts21">When emulator is paused, the middle mouse button works only under condition that the right button is released. Since the middle button is usually a wheel, the user can accidentally push it while rolling the wheel with the right button held (Playback cursor navigation). As for rolling the wheel with modifier keys held, this is used much less often, so they don't need such protection.</span></li>
<liclass="rvps10"><spanclass="rvts21">Any middleclick over the FCEUX window is sent to Taseditor window. Similarly, the wheel rolling message is sent to Taseditor, when the focus is on the FCEUX window. And the rightclick on the FCEUX window doesn't work at all. Thanks to that, you can use the middle button (the wheel) even when the mouse cursor is over the FCEUX window.</span></li>
<liclass="rvps10"><spanclass="rvts21">Even when the Recording mode is on, Taseditor won't rerecord Input while seeking. Thanks to that, you can safely drag the Playback cursor without disabling the Recording mode.</span></li>
<liclass="rvps10"><spanclass="rvts21">When Taseditor is engaged, the following menu commands are available only when the Recording mode if on and the Playback is not seeking:</span></li>
<liclass="rvps10"><spanclass="rvts21">It's also necessary to ensure that the user can not change the movie synchronization settings while editing the project. So when Taseditor is engaged, the following GUI elements in the "Input Configuration" window are locked:</span></li>
<liclass="rvps10"><spanclass="rvts21">Since the </span><spanclass="rvts30">Alt</span><spanclass="rvts21"> and </span><spanclass="rvts26">F10</span><spanclass="rvts21"> keys are actively used in Taseditor work, their standard behavior (open main menu) is disabled.</span></li>
<liclass="rvps10"><spanclass="rvts21">Since the </span><spanclass="rvts26">Spacebar</span><spanclass="rvts21"> key is used as a hotkey by default, its standard behavior (simulate the click on the currently focused GUI element) is disabled. Also, all GUI elements of the TAS Editor window handle the middleclick message and send it to the Playback, thus the middleclick works independently of the mouse cursor position.</span></li>
<liclass="rvps10"><spanclass="rvts21">Since the context menu on the rightclick at the Piano Roll is not often used, it appears only if the user clicks the selected line in the frame number column (Frame#). In all the rest cases the context menu doesn't appear, instead the rightclick-and-hold at the Piano Roll allows to drag its contents in any direction.</span></li>
<liclass="rvps10"><spanclass="rvts21">Since the right button is often used for the Playback cursor navigation with the wheel, the user is encouraged to click it without caring about the current mouse cursor position. In theory it's possible that the user accidentally rightclicks a Bookmark. To avoid such unintended commands, the Bookmark List and the Branches Tree both require to press and release the right button over the same Bookmark. Also, if between pressing and releasing the user rotated the wheel, the Bookmark won't be changed.</span></li>
<liclass="rvps10"><spanclass="rvts21">The user can jump to a Bookmark with a single click on the desired icon in the Branches Tree. Doing so he expects that after the click the light-blue triangle (the Playback cursor icon) will also jump to the place in the Branches Tree. It is indeed so for Bookmarks that don't contradict with the current timeline, but it's not so for Bookmarks representing alternative strategies. After jumping to the frame of such Bookmark, the Playback cursor will appear on another branch (even though it's on the same frame of the movie). To notify the user about possible misconception, the mouse cursor turns into an arrow with a question mark when the user points to such Bookmarks.</span></li>
<liclass="rvps10"><spanclass="rvts21">While the Branches Tree is transforming, hovering the mouse cursor over its elements doesn't work, because the active element area is constantly moving and running away from the mouse cursor.</span></li>
<pclass="rvps8"><spanclass="rvts17">Created with the Personal Edition of HelpNDoc: </span><aclass="rvts18"href="http://www.helpndoc.com">Full-featured Documentation generator</a></p>