STROOP: Difference between revisions

Jump to navigation Jump to search
2,034 bytes added ,  4 May 2019
Not a stub, although it is incomplete
(Not a stub, although it is incomplete)
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{stub}}
'''S'''uperMario64 '''T'''echnical '''R'''untime '''O'''bserver and '''O'''bject '''P'''rocessor, or '''STROOP''' for short, is a '''diagnostic tool''' for Super Mario 64 which displays and allows for simple editing of various game values and information. It can connect to a running emulator and update values in real time. Some core features include views of loaded/unloaded objects, Mario structure variables, camera + HUD values, an overhead map display, and many more. An up-to-date version of STROOP can be downloaded from [https://github.com/SM64-TAS-ABC/STROOP/releases/download/vDev/STROOP.zip here].
[[File:STROOP.jpg|350px|thumb|STROOP on [https://en.wikipedia.org/wiki/Windows_10 Windows 10]]]  
[[File:STROOP.jpg|350px|thumb|STROOP on [https://en.wikipedia.org/wiki/Windows_10 Windows 10]]]  
[[File:ObjectSlotHack.png|350px|thumb|Tyler's ROM hack that displayed the object slots in text form]]  
[[File:ObjectSlotHack.png|350px|thumb|Tyler's ROM hack that displayed the object slots in text form]]  
[[File:Blueprint.png|350px|thumb|A blueprint of what Pannenkoek2012 suggested the program should look like]]  
[[File:Blueprint.png|350px|thumb|A blueprint of what Pannenkoek2012 suggested the program should look like]]  
[[File:SM64_diagnostic.png|350px|thumb|The SM64 Diagnostic]]  
[[File:SM64_diagnostic.png|350px|thumb|The SM64 Diagnostic]]  
'''S'''uperMario64 '''T'''echnical '''R'''untime '''O'''bserver and '''O'''bject '''P'''rocessor, or '''STROOP''' for short, is a diagnostic tool for Super Mario 64 which displays and allows for simple editing of various game values and information. It can connect to a running emulator and update values in real time. Some core features include views of loaded/unloaded objects, Mario structure variables, camera + HUD values, an overhead map display, and many more. An up-to-date version of STROOP can be downloaded from [https://github.com/SM64-TAS-ABC/STROOP/releases/download/vDev/STROOP.zip here].


== History ==
== History ==
After Pannenkoek2012 discussed object slots in his [https://youtu.be/9xE2otZ-9os Science of Cloning] video, there had been a desire to view the object slots of the game in real time. Pannenkoek2012 discussed this desire with Tyler Kehne. Tyler then proceeded to make a ROM hack that could display the object slot behaviors in text form, overlaid onto the screen. Pannenkoek2012 was not pleased with this implementation, as he wanted a separate program that would show the slots visually with images of the objects. Thus, Tyler then proceeded to make a program that would do just that, which he named the SM64 Diagnostic. Tyler wrote the code for it, and Pannenkoek2012 provided the object images and names. The SM64 Diagnostic was a major breakthrough, as it showed the object slots, the process groups, the held object, object variables, and Mario variables. However, it also had some annoyances, such as it couldn't connect to an already open Mupen (it had to open Mupen itself), it would occasionally crash Mupen, the angle variables (yaw/pitch/roll) had confusing names, the variables couldn't be edited, and the checkbox variables used a confusing system.
After Pannenkoek2012 discussed object slots in his [https://youtu.be/9xE2otZ-9os Science of Cloning] video, there had been a desire to view the object slots of the game in real time. Pannenkoek2012 discussed this desire with Tyler Kehne. Tyler then proceeded to make a ROM hack that could display the object slot behaviors in text form, overlaid onto the screen. Pannenkoek2012 was not pleased with this implementation, as he wanted a separate program that would show the slots visually with images of the objects. Thus, Tyler then proceeded to make a program that would do just that, which he named the SM64 Diagnostic. Tyler wrote the code for it, and Pannenkoek2012 provided the object images and names. The SM64 Diagnostic was a major breakthrough, as it showed the object slots, the process groups, the held object, object variables, and Mario variables. However, it also had some annoyances, such as it couldn't connect to an already open Mupen (it had to open Mupen itself), it would occasionally crash Mupen, the angle variables (yaw/pitch/roll) had confusing names, the variables couldn't be edited, and the checkbox variables used a confusing system.


Line 18: Line 15:


== Connection Screen ==
== Connection Screen ==
 
[[File:Connection Screen.jpg|475px|thumb|STROOP Connection Screen]]
After STROOP finishes loading, you'll encounter a screen where you can choose what process or savestate to connect to. There are various buttons to use:
After STROOP finishes loading, you'll encounter a screen where you can choose what process or savestate to connect to. There are various buttons to use:
* '''Refresh''': Refreshes the list of processes to choose from.
* '''Refresh''': Refreshes the list of processes to choose from.
Line 47: Line 44:


STROOP has several tabs, each of which manages one specific domain. For example, there's a Mario tab, Triangles tab, M64 tab, Map tab, etc. In fact, there are so many tabs that it's recommended that you customize which tabs are shown and their order, for your own convenience. To reorder tabs, use the left/right arrow buttons on the top right of STROOP, which will move the current tab one space over in the arrow's direction. To hide a tab, click on the tab while holding control. Using these 2 techniques, you should be able to reduce the number of tabs to a reasonable amount as well as put the tabs in the order most convenient to you. If you ever need to use a tab that you've hidden, then simply add it back using the Add Tab button on the top right of STROOP. Note that the order of tabs and which tabs are hidden are saved, so you only need to do this once, as these settings will stay the same on subsequent STROOP opens. However, if you ever download a new version of STROOP, the settings will be back to their original state. Nevertheless, you can always copy the saved settings file (STROOP\Config\SavedSettings.xml) from the older version of STROOP and replace that corresponding file in the newer version of STROOP.
STROOP has several tabs, each of which manages one specific domain. For example, there's a Mario tab, Triangles tab, M64 tab, Map tab, etc. In fact, there are so many tabs that it's recommended that you customize which tabs are shown and their order, for your own convenience. To reorder tabs, use the left/right arrow buttons on the top right of STROOP, which will move the current tab one space over in the arrow's direction. To hide a tab, click on the tab while holding control. Using these 2 techniques, you should be able to reduce the number of tabs to a reasonable amount as well as put the tabs in the order most convenient to you. If you ever need to use a tab that you've hidden, then simply add it back using the Add Tab button on the top right of STROOP. Note that the order of tabs and which tabs are hidden are saved, so you only need to do this once, as these settings will stay the same on subsequent STROOP opens. However, if you ever download a new version of STROOP, the settings will be back to their original state. Nevertheless, you can always copy the saved settings file (STROOP\Config\SavedSettings.xml) from the older version of STROOP and replace that corresponding file in the newer version of STROOP.
{{STROOP_Tabs}}


== Object Slot Panel ==
== Object Slot Panel ==
Line 200: Line 198:


Variables can be selected by clicking on them. You can hold shift and click on a variable to select the range of variables from the previously selected variable to the currently selected variable. To toggle whether a variable is selected or not without unselecting all variable, click on the variable while holding control. To unselect all variables, click on the variable panel. If you right click on a variable that's selected, then you'll see a different set of options from normal, and these options will affect all selected variables. Options prefixed with "Angle:" only affect angles. Choosing the "Default" value for an option (e.g. Display as Hex) will set that option to how the variable was originally (e.g. its original status of whether it was displaying as hex). Here are these options:
Variables can be selected by clicking on them. You can hold shift and click on a variable to select the range of variables from the previously selected variable to the currently selected variable. To toggle whether a variable is selected or not without unselecting all variable, click on the variable while holding control. To unselect all variables, click on the variable panel. If you right click on a variable that's selected, then you'll see a different set of options from normal, and these options will affect all selected variables. Options prefixed with "Angle:" only affect angles. Choosing the "Default" value for an option (e.g. Display as Hex) will set that option to how the variable was originally (e.g. its original status of whether it was displaying as hex). Here are these options:
* '''Highlight...''': Highlights the variables by giving them a red or custom-colored outline.
* '''Highlight...''': Highlights the variables with a red or custom-colored outline.
* '''Lock...''': Locks the variables' values.
* '''Lock...''': Locks the variables' values.
* '''Fix Address...''': Fixes the addresses of the variables.
* '''Fix Address...''': Fixes the addresses of the variables.
Line 220: Line 218:
** '''End Move''': Moves the variables on the moving-variables-clipboard to the location of the selected variables.
** '''End Move''': Moves the variables on the moving-variables-clipboard to the location of the selected variables.
** '''Clear Move''': Clears the selected-variables-clipboard.
** '''Clear Move''': Clears the selected-variables-clipboard.
* '''Remove''': Removes the  
* '''Remove''': Removes the variables from the Variable Panel.
* '''Rename''':  
* '''Rename''': Allows you to rename the variables. This will open up a dialog where you can enter text, where the $ represents the variables' original names. For example, entering "my$Value" will result in renaming "X" to "myXValue".
* '''Open Controller''':  
* '''Open Controller''': Opens up an Advanced Controller for the variables.
* '''Open Triplet Controller''':  
* '''Open Triplet Controller''': Opens up a Triplet Controller for the variables.
* '''Open Pop Out''':  
* '''Open Pop Out''': Opens up a Pop Out for the variables.
* '''Add to Tab...''':  
* '''Add to Tab...''': Adds the variables to a tab of your choosing.
* '''Add to Custom Tab''':  
* '''Add to Custom Tab''': Adds the variables to the Custom Tab.


There are also many keyboard shortcuts that can be performed on variables, namely by clicking on a variable when holding one or more keys. These are:
There are also many keyboard shortcuts that can be performed on variables, namely by clicking on a variable when holding one or more keys. These are:
* '''Double Click''':
* '''Double Click''': Opens up the Variable Viewer form for the variable, which shows the variable's Name, Type, Base + Offset, N64 Address, and Emulator Address.
* '''Click + Shift + Number''':  
* '''Click + Shift + Number''': Sets the variable's background color to different colors, depending on the number.
* '''Click + Number''':  
* '''Click + Number''': Sets the variable's highlight color to different colors, depending on the number.
* '''Click + S''':  
* '''Click + S''': Adds the variable to the Custom Tab.
* '''Click + T''':  
* '''Click + T''': Adds the variable to the TAS Tab.
* '''Click + M''':  
* '''Click + M''': Adds the variable to the Memory Tab.
* '''Click + P''':  
* '''Click + P''': Adds the variable to a tab of your choosing.
* '''Click + N''':  
* '''Click + N''': Views the variable's value as an address in the Memory Tab.
* '''Click + F''':  
* '''Click + F''': Fixes the address of the variable.
* '''Click + H''':  
* '''Click + H''': Highlights the variable with a red outline.
* '''Click + L''':  
* '''Click + L''': Locks the variable's value.
* '''Click + D''':  
* '''Click + D''': Toggles whether the variable is displayed as hex or decimal.
* '''Click + R''':  
* '''Click + R''': Allows you to rename the variable.
* '''Click + C''':  
* '''Click + C''': Opens up an Advanced Controller for the variable.
* '''Click + B''':  
* '''Click + B''': Opens up an Bit Controller for the variable.
* '''Click + Escape''':  
* '''Click + Escape''': Removes the variable from the Variable Panel.
* '''Click + Backspace''':  
* '''Click + Backspace''': Removes the variable from the Variable Panel.
* '''Click + Delete''':  
* '''Click + Delete''': Removes the variable from the Variable Panel.
* '''Click + X''':  
* '''Click + X''': Does an action related to moving a variable. Specifically: If the moving-variables-clipboard is empty, then adds the variable to the moving-variables-clipboard. If the moving-variables-clipboard is non-empty, then moves the variables of the moving-variables-clipboard to the clicked variable's current location.
* '''Click + Backtick''':  
* '''Click + Backtick''': Adds the variable to the Var Hack tab.
* '''Click + Z''':  
* '''Click + Z''': Sets the variable value to zero.
* '''Click + Minus''':  
* '''Click + Minus''': Decrements the variable value.
* '''Click + Plus''':  
* '''Click + Plus''': Increments the variable value.
* '''Click + Q''':  
* '''Click + Q''': Sets the variable's background color to a custom color.
* '''Click + O''':
* '''Click + O''': Sets the variable's background color to the last custom color.


== Controllers ==
== Controllers ==

Navigation menu