STROOP: Difference between revisions

162 bytes added ,  15 January 2020
Dead dead-end
(Not a stub, although it is incomplete)
(Dead dead-end)
Line 1: Line 1:
'''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].
'''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|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]]  
Line 6: Line 6:


== 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 [[User:Pannenkoek2012|Pannenkoek2012]] discussed [[Object Slot|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|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|angle]] variables (yaw/pitch/roll) had confusing names, the variables couldn't be edited, and the checkbox variables used a confusing system.


Some time later, Dane Bouchie created a new program called STROOP, which was based on the SM64 Diagnostic, but with many more features and improved functionality. Later, Pannenkoek2012 also began coding for STROOP, adding even more features and functionality. As of today, STROOP has object slots, object variables, Mario variables, HUD variables, camera variables, triangle variables, water variables, an input display, a file display, a map that can display objects in real time, an M64 editor, and savable options so that the user can customize their experience.
Some time later, Dane Bouchie created a new program called STROOP, which was based on the SM64 Diagnostic, but with many more features and improved functionality. Later, Pannenkoek2012 also began coding for STROOP, adding even more features and functionality. As of today, STROOP has object slots, object variables, Mario variables, [[HUD]] variables, camera variables, triangle variables, water variables, an input display, a file display, a map that can display objects in real time, an M64 editor, and savable options so that the user can customize their experience.


== Loading Screen ==
== Loading Screen ==
Line 35: Line 35:
* '''Cog''': The cog can be used to quickly and easily toggle savable options, to reset saved options, or to go directly to the Options tab. For more information about the savable options, see the Options Tab section.
* '''Cog''': The cog can be used to quickly and easily toggle savable options, to reset saved options, or to go directly to the Options tab. For more information about the savable options, see the Options Tab section.
* '''Version Number''': This displays the current version number of STROOP. Right clicking on this provides debugging/developer options, most of which aren't intended for the casual user. Nevertheless, some useful options include:
* '''Version Number''': This displays the current version number of STROOP. Right clicking on this provides debugging/developer options, most of which aren't intended for the casual user. Nevertheless, some useful options include:
** '''Enable TASer Settings''': Switches to the TAS tab, hides the left panel, filters variables to show only the TAS variables, and enables the STROOP ROM hack. This setting was created for Plush's convenience.
** '''Enable [[TAS]]er Settings''': Switches to the TAS tab, hides the left panel, filters variables to show only the TAS variables, and enables the STROOP ROM hack. This setting was created for Plush's convenience.
** '''Show MHS Vars''': Opens a Pop Out with variables commonly found in MHS. This is a convenience for users that are used to using MHS.
** '''Show MHS Vars''': Opens a Pop Out with variables commonly found in MHS. This is a convenience for users that are used to using MHS.
** '''Download Latest STROOP Release''': Downloads the latest STROOP release. This downloads as a separate file, instead of replacing the currently-being-used STROOP file.
** '''Download Latest STROOP Release''': Downloads the latest STROOP release. This downloads as a separate file, instead of replacing the currently-being-used STROOP file.
Line 48: Line 48:
== Object Slot Panel ==
== Object Slot Panel ==


The lower half of STROOP is the Object Slot Panel. This shows all 240 object slots in the game. There are various controls to use at the top of the panel:
The lower half of STROOP is the [[Object Slot]] Panel. This shows all 240 object slots in the game. There are various controls to use at the top of the panel:
* '''Lock Labels Checkbox''': This locks the labels on the slots so that they'll no longer change. The labels will also turn blue to indicate that they are no longer changing. This can be useful if you want to see how the object slots change from one point in time to another, as you can know what positions the slots used to be in.
* '''Lock Labels Checkbox''': This locks the labels on the slots so that they'll no longer change. The labels will also turn blue to indicate that they are no longer changing. This can be useful if you want to see how the object slots change from one point in time to another, as you can know what positions the slots used to be in.
* '''Slot Size Slider''': This controls the size of the object slots.
* '''Slot Size Slider''': This controls the size of the object slots.
Line 95: Line 95:
** '''Camera''': The secondary object that the camera is set to focus on.
** '''Camera''': The secondary object that the camera is set to focus on.
** '''Camera Hack''': The object that is being focused on using the Camera Hack.
** '''Camera Hack''': The object that is being focused on using the Camera Hack.
** '''Floor''': The object that Mario's floor triangle belongs to.
** '''Floor''': The object that Mario's [[Surface#Floors|floor]] triangle belongs to.
** '''Wall''': The object that Mario's wall triangle belongs to.
** '''Wall''': The object that Mario's [[Surface#Walls|wall]] triangle belongs to.
** '''Ceiling''': The object that Mario's ceiling triangle belongs to.
** '''Ceiling''': The object that Mario's [[Surface#Ceilings|ceiling]] triangle belongs to.
** '''Parent''': The parent of the currently hovered object.
** '''Parent''': The parent of the currently hovered object.
** '''Parent Unused''': The currently hovered object when the currently hovered object's parent is the unused slot.
** '''Parent Unused''': The currently hovered object when the currently hovered object's parent is the unused slot.
Line 126: Line 126:
* '''Release''': Releases the object by settings its Release Status. This is identical to releasing a clone of an object that isn't meant to be released.
* '''Release''': Releases the object by settings its Release Status. This is identical to releasing a clone of an object that isn't meant to be released.
* '''UnRelease''': Undoes the releasing of an object.
* '''UnRelease''': Undoes the releasing of an object.
* '''Interact''': Interacts with an object by setting its Interaction Status to 0xFFFFFFFF. This can be useful if you don't want to interact with a clone, e.g. making a fire clone inert.
* '''Interact''': Interacts with an object by setting its Interaction Status to 0xFFFFFFFF. This can be useful if you don't want to interact with a [[Cloning|clone]], e.g. making a fire clone inert.
* '''UnInteract''': Undoes the interacting of an object by setting its Interaction Status to 0x00000000.
* '''UnInteract''': Undoes the interacting of an object by setting its Interaction Status to 0x00000000.
* '''Clone''': Clones the object into Mario's hands.
* '''Clone''': Clones the object into Mario's hands.
127

edits