Copy disabled (too large)
Download .txt
Showing preview only (16,737K chars total). Download the full file to get everything.
Repository: SM64-TAS-ABC/STROOP
Branch: dev
Commit: 5de958448a0c
Files: 652
Total size: 15.8 MB
Directory structure:
gitextract_wl97lnnh/
├── .gitattributes
├── .gitignore
├── Directory.Build.props
├── README.md
├── STROOP/
│ ├── App.config
│ ├── Calculators/
│ │ ├── AirMovementCalculator.cs
│ │ ├── BobombState.cs
│ │ ├── CalculatorMain.cs
│ │ ├── CalculatorUtilities.cs
│ │ ├── GroundMovementCalculator.cs
│ │ ├── HolpCalculator.cs
│ │ ├── Input.cs
│ │ ├── LoadingZoneMain.cs
│ │ ├── MarioState.cs
│ │ ├── MutableMarioState.cs
│ │ ├── ObjectCalculator.cs
│ │ ├── OverflowJumpCalculator.cs
│ │ ├── PendulumData.cs
│ │ ├── PendulumMain.cs
│ │ ├── PunchRecoilCalculator.cs
│ │ ├── SlideCalculator.cs
│ │ ├── SlidingMarioState.cs
│ │ ├── WallDisplacementCalculator.cs
│ │ ├── WaterLevelCalculator.cs
│ │ ├── WaterMain.cs
│ │ └── WaterState.cs
│ ├── Config/
│ │ ├── ActionsData.xml
│ │ ├── AreaData.xml
│ │ ├── CamHackData.xml
│ │ ├── CameraData.xml
│ │ ├── CellsData.xml
│ │ ├── Config.xml
│ │ ├── CourseData.xml
│ │ ├── CustomData.xml
│ │ ├── DebugData.xml
│ │ ├── FileData.xml
│ │ ├── FileImageAssociations.xml
│ │ ├── Hacks.xml
│ │ ├── HudData.xml
│ │ ├── InputData.xml
│ │ ├── InputImageAssociations.xml
│ │ ├── KoopaTheQuick1Waypoints.xml
│ │ ├── KoopaTheQuick2Waypoints.xml
│ │ ├── MainSaveData.xml
│ │ ├── MapAssociations.xml
│ │ ├── MapVars.xml
│ │ ├── MarioActions.xml
│ │ ├── MarioAnimations.xml
│ │ ├── MarioData.xml
│ │ ├── MarioStateData.xml
│ │ ├── MhsData.xml
│ │ ├── MiscData.xml
│ │ ├── Missions.xml
│ │ ├── MusicData.xml
│ │ ├── MusicData2.xml
│ │ ├── ObjectAssociations.xml
│ │ ├── ObjectData.xml
│ │ ├── OptionsData.xml
│ │ ├── PaintingData.xml
│ │ ├── PendulumSwings.xml
│ │ ├── PuData.xml
│ │ ├── QuarterFrameData.xml
│ │ ├── RacingPenguinWaypoints.xml
│ │ ├── SavedSettings.xml
│ │ ├── ScriptData.xml
│ │ ├── SnowData.xml
│ │ ├── TasData.xml
│ │ ├── TriangleInfo.xml
│ │ ├── TrianglesData.xml
│ │ ├── TtmBowlingBallPoints.xml
│ │ ├── WarpData.xml
│ │ └── WaterData.xml
│ ├── Controls/
│ │ ├── BetterContextMenuStrip.cs
│ │ ├── BetterSplitContainer.cs
│ │ ├── BetterTextbox.cs
│ │ ├── BinaryButton.cs
│ │ ├── BorderedTableLayoutPanel.cs
│ │ ├── CarretlessTextBox.cs
│ │ ├── CoinRingDisplayPanel.cs
│ │ ├── ColorSelector.Designer.cs
│ │ ├── ColorSelector.cs
│ │ ├── ColorSelector.resx
│ │ ├── DoubleBufferedTableLayoutPanel.cs
│ │ ├── FileBinaryPictureBox.cs
│ │ ├── FileCoinScoreTextbox.cs
│ │ ├── FileCourseLabel.cs
│ │ ├── FileHatLocationPictureBox.cs
│ │ ├── FileHatPositionTextbox.cs
│ │ ├── FileKeyDoorPictureBox.cs
│ │ ├── FilePictureBox.cs
│ │ ├── FileStarPictureBox.cs
│ │ ├── FileTextbox.cs
│ │ ├── InputDisplayPanel.cs
│ │ ├── IntPictureBox.cs
│ │ ├── MainSaveTextbox.cs
│ │ ├── ModelGraphics.cs
│ │ ├── NoTearFlowLayoutPanel.cs
│ │ ├── ObjectSlot.cs
│ │ ├── ObjectSlotFlowLayoutPanel.cs
│ │ ├── PanelEx.cs
│ │ ├── RichTextBoxEx.cs
│ │ ├── TabControlEx.cs
│ │ ├── TrackBarEx.cs
│ │ ├── TransparentTextbox.cs
│ │ ├── VarHackContainer.Designer.cs
│ │ ├── VarHackContainer.cs
│ │ ├── VarHackContainer.resx
│ │ ├── VarHackContainerDefaults.cs
│ │ ├── VarHackFlowLayoutPanel.cs
│ │ ├── WatchVariable.cs
│ │ ├── WatchVariableAddressWrapper.cs
│ │ ├── WatchVariableAngleWrapper.cs
│ │ ├── WatchVariableBooleanWrapper.cs
│ │ ├── WatchVariableControl.Designer.cs
│ │ ├── WatchVariableControl.cs
│ │ ├── WatchVariableControl.resx
│ │ ├── WatchVariableControlPrecursor.cs
│ │ ├── WatchVariableControlSettings.cs
│ │ ├── WatchVariableFlowLayoutPanel.cs
│ │ ├── WatchVariableLock.cs
│ │ ├── WatchVariableNumberWrapper.cs
│ │ ├── WatchVariableObjectWrapper.cs
│ │ ├── WatchVariableStringWrapper.cs
│ │ ├── WatchVariableTriangleWrapper.cs
│ │ └── WatchVariableWrapper.cs
│ ├── EmbeddedResources/
│ │ ├── Python.xshd
│ │ └── decompile.py
│ ├── Enums/
│ │ ├── AddToTabTypeEnum.cs
│ │ ├── AggregateMathOperation.cs
│ │ ├── AngleUnitType.cs
│ │ ├── BaseAddressTypeEnum.cs
│ │ ├── BinaryMathOperation.cs
│ │ ├── CamHackMode.cs
│ │ ├── CellSelectionType.cs
│ │ ├── CoinParamsOrder.cs
│ │ ├── CompassPosition.cs
│ │ ├── Coordinate.cs
│ │ ├── CoordinateAngle.cs
│ │ ├── CoordinateSystem.cs
│ │ ├── CopyTypeEnum.cs
│ │ ├── EndiannessType.cs
│ │ ├── FileType.cs
│ │ ├── FrameInputRelationType.cs
│ │ ├── HatLocation.cs
│ │ ├── InputDisplayTypeEnum.cs
│ │ ├── Map3DCameraMode.cs
│ │ ├── MapTrackerIconType.cs
│ │ ├── MapTrackerOrderType.cs
│ │ ├── MapTrackerVisibilityType.cs
│ │ ├── MapType.cs
│ │ ├── MouseEvent.cs
│ │ ├── PaintingListTypeEnum.cs
│ │ ├── PositionControllerRelativity.cs
│ │ ├── ReadWriteMode.cs
│ │ ├── RelativeDirection.cs
│ │ ├── RomVersion.cs
│ │ ├── RomVersionSelection.cs
│ │ ├── TriangleClassification.cs
│ │ ├── TriangleClassificationExtended.cs
│ │ ├── TriangleVertexOffset.cs
│ │ ├── VariableGroup.cs
│ │ └── WatchVariableSubclass.cs
│ ├── Extensions/
│ │ ├── BitmapExtensions.cs
│ │ ├── ColorExtensions.cs
│ │ ├── ControlCollectionsExtensions.cs
│ │ ├── FormExtensions.cs
│ │ ├── IEnumerableExtensions.cs
│ │ ├── RectangleExtensions.cs
│ │ ├── RichTextBoxExtensions.cs
│ │ └── SizeExtensions.cs
│ ├── Forms/
│ │ ├── ActionForm.Designer.cs
│ │ ├── ActionForm.cs
│ │ ├── ActionForm.resx
│ │ ├── CoinRingDisplayForm.Designer.cs
│ │ ├── CoinRingDisplayForm.cs
│ │ ├── CoinRingDisplayForm.resx
│ │ ├── FormManager.cs
│ │ ├── IUpdatableForm.cs
│ │ ├── ImageForm.Designer.cs
│ │ ├── ImageForm.cs
│ │ ├── ImageForm.resx
│ │ ├── InfoForm.Designer.cs
│ │ ├── InfoForm.cs
│ │ ├── InfoForm.resx
│ │ ├── LoadingForm.Designer.cs
│ │ ├── LoadingForm.cs
│ │ ├── LoadingForm.resx
│ │ ├── MainLoadingForm.Designer.cs
│ │ ├── MainLoadingForm.cs
│ │ ├── MainLoadingForm.resx
│ │ ├── MapPopOutForm.Designer.cs
│ │ ├── MapPopOutForm.cs
│ │ ├── MapPopOutForm.resx
│ │ ├── SelectionForm.Designer.cs
│ │ ├── SelectionForm.cs
│ │ ├── SelectionForm.resx
│ │ ├── StroopMainForm.Designer.cs
│ │ ├── StroopMainForm.cs
│ │ ├── StroopMainForm.resx
│ │ ├── TabForm.Designer.cs
│ │ ├── TabForm.cs
│ │ ├── TabForm.resx
│ │ ├── TriangleListForm.Designer.cs
│ │ ├── TriangleListForm.cs
│ │ ├── TriangleListForm.resx
│ │ ├── ValueForm.Designer.cs
│ │ ├── ValueForm.cs
│ │ ├── ValueForm.resx
│ │ ├── ValueSplitForm.Designer.cs
│ │ ├── ValueSplitForm.cs
│ │ ├── ValueSplitForm.resx
│ │ ├── VariableBitForm.Designer.cs
│ │ ├── VariableBitForm.cs
│ │ ├── VariableBitForm.resx
│ │ ├── VariableControllerForm.Designer.cs
│ │ ├── VariableControllerForm.cs
│ │ ├── VariableControllerForm.resx
│ │ ├── VariableCreationForm.Designer.cs
│ │ ├── VariableCreationForm.cs
│ │ ├── VariableCreationForm.resx
│ │ ├── VariablePopOutForm.Designer.cs
│ │ ├── VariablePopOutForm.cs
│ │ ├── VariablePopOutForm.resx
│ │ ├── VariableTripletControllerForm.Designer.cs
│ │ ├── VariableTripletControllerForm.cs
│ │ ├── VariableTripletControllerForm.resx
│ │ ├── VariableViewerForm.Designer.cs
│ │ ├── VariableViewerForm.cs
│ │ └── VariableViewerForm.resx
│ ├── Licenses.txt
│ ├── LoadingHandler.cs
│ ├── M64/
│ │ ├── M64CopiedData.cs
│ │ ├── M64CopiedFrame.cs
│ │ ├── M64File.cs
│ │ ├── M64Header.cs
│ │ ├── M64InputCell.cs
│ │ ├── M64InputFrame.cs
│ │ ├── M64Stats.cs
│ │ └── M64Utilities.cs
│ ├── Managers/
│ │ ├── ActionsManager.cs
│ │ ├── AreaManager.cs
│ │ ├── CamHackManager.cs
│ │ ├── CameraManager.cs
│ │ ├── CellsManager.cs
│ │ ├── CoinManager.cs
│ │ ├── CustomManager.cs
│ │ ├── DataManager.cs
│ │ ├── DebugManager.cs
│ │ ├── DisassemblyManager.cs
│ │ ├── FileManager.cs
│ │ ├── GfxManager.cs
│ │ ├── HackManager.cs
│ │ ├── HudManager.cs
│ │ ├── IVariableAdder.cs
│ │ ├── InputManager.cs
│ │ ├── M64Manager.cs
│ │ ├── MainSaveManager.cs
│ │ ├── MapManager.cs
│ │ ├── MarioManager.cs
│ │ ├── MemoryManager.cs
│ │ ├── MiscManager.cs
│ │ ├── ModelManager.cs
│ │ ├── MusicManager.cs
│ │ ├── ObjectManager.cs
│ │ ├── ObjectSlotsManager.cs
│ │ ├── OptionsManager.cs
│ │ ├── PaintingManager.cs
│ │ ├── PuManager.cs
│ │ ├── QuarterFrameManager.cs
│ │ ├── ScriptManager.cs
│ │ ├── SearchManager.cs
│ │ ├── SnowManager.cs
│ │ ├── SoundManager.cs
│ │ ├── TasManager.cs
│ │ ├── TestingManager.cs
│ │ ├── TriangleManager.cs
│ │ ├── VarHackManager.cs
│ │ ├── VariableAdder.cs
│ │ ├── WarpManager.cs
│ │ ├── WatchVariableControlSettingsManager.cs
│ │ ├── WatchVariableLockManager.cs
│ │ └── WaterManager.cs
│ ├── Map/
│ │ ├── Map3D/
│ │ │ ├── Map3DCamera.cs
│ │ │ ├── Map3DGraphics.cs
│ │ │ └── Map3DVertex.cs
│ │ ├── MapDrawType.cs
│ │ ├── MapGraphics.cs
│ │ ├── MapGui.cs
│ │ ├── MapObject.cs
│ │ ├── MapObjectAggregatedPath.cs
│ │ ├── MapObjectAllMapObjectsWithName.cs
│ │ ├── MapObjectAllObjectCeiling.cs
│ │ ├── MapObjectAllObjectFloor.cs
│ │ ├── MapObjectAllObjectWall.cs
│ │ ├── MapObjectAllObjectsWithName.cs
│ │ ├── MapObjectAngleRange.cs
│ │ ├── MapObjectArrow.cs
│ │ ├── MapObjectBackground.cs
│ │ ├── MapObjectBounds.cs
│ │ ├── MapObjectBranchPath.cs
│ │ ├── MapObjectCUpFloor.cs
│ │ ├── MapObjectCamera.cs
│ │ ├── MapObjectCameraFocus.cs
│ │ ├── MapObjectCameraView.cs
│ │ ├── MapObjectCeiling.cs
│ │ ├── MapObjectCellGridlines.cs
│ │ ├── MapObjectCircle.cs
│ │ ├── MapObjectCoffinBox.cs
│ │ ├── MapObjectCompass.cs
│ │ ├── MapObjectCoordinateLabels.cs
│ │ ├── MapObjectCorkBoxTester.cs
│ │ ├── MapObjectCurrentBackground.cs
│ │ ├── MapObjectCurrentCell.cs
│ │ ├── MapObjectCurrentLevel.cs
│ │ ├── MapObjectCurrentUnit.cs
│ │ ├── MapObjectCustomBackground.cs
│ │ ├── MapObjectCustomCeiling.cs
│ │ ├── MapObjectCustomCylinder.cs
│ │ ├── MapObjectCustomCylinderPoints.cs
│ │ ├── MapObjectCustomFloor.cs
│ │ ├── MapObjectCustomGridlines.cs
│ │ ├── MapObjectCustomIconPoints.cs
│ │ ├── MapObjectCustomLevel.cs
│ │ ├── MapObjectCustomPositionAngle.cs
│ │ ├── MapObjectCustomPositionAngleArrow.cs
│ │ ├── MapObjectCustomSphere.cs
│ │ ├── MapObjectCustomSpherePoints.cs
│ │ ├── MapObjectCustomUnitPoints.cs
│ │ ├── MapObjectCustomWall.cs
│ │ ├── MapObjectCylinder.cs
│ │ ├── MapObjectDrawDistanceSphere.cs
│ │ ├── MapObjectDrawing.cs
│ │ ├── MapObjectEffectiveHitboxCylinder.cs
│ │ ├── MapObjectEffectiveHitboxHurtboxCylinder.cs
│ │ ├── MapObjectEffectiveHurtboxCylinder.cs
│ │ ├── MapObjectFacingDivider.cs
│ │ ├── MapObjectFloatGridlines.cs
│ │ ├── MapObjectFloor.cs
│ │ ├── MapObjectFlyGuyZoneDividers.cs
│ │ ├── MapObjectGhost.cs
│ │ ├── MapObjectGridlines.cs
│ │ ├── MapObjectHitboxCylinder.cs
│ │ ├── MapObjectHitboxTriangle.cs
│ │ ├── MapObjectHolp.cs
│ │ ├── MapObjectHolpDisplayer.cs
│ │ ├── MapObjectHome.cs
│ │ ├── MapObjectHomeLine.cs
│ │ ├── MapObjectHorizontalTriangle.cs
│ │ ├── MapObjectHoverData.cs
│ │ ├── MapObjectHoverDataEnum.cs
│ │ ├── MapObjectHurtboxCylinder.cs
│ │ ├── MapObjectIcon.cs
│ │ ├── MapObjectIconPoint.cs
│ │ ├── MapObjectIconRectangle.cs
│ │ ├── MapObjectIwerlipses.cs
│ │ ├── MapObjectLedgeGrabChecker.cs
│ │ ├── MapObjectLevel.cs
│ │ ├── MapObjectLevelCeiling.cs
│ │ ├── MapObjectLevelFloor.cs
│ │ ├── MapObjectLevelTriangleInterface.cs
│ │ ├── MapObjectLevelWall.cs
│ │ ├── MapObjectLine.cs
│ │ ├── MapObjectLineSegment.cs
│ │ ├── MapObjectMario.cs
│ │ ├── MapObjectMarioCeiling.cs
│ │ ├── MapObjectMarioFacingArrow.cs
│ │ ├── MapObjectMarioFloor.cs
│ │ ├── MapObjectMarioFloorArrow.cs
│ │ ├── MapObjectMarioIntendedArrow.cs
│ │ ├── MapObjectMarioMovingArrow.cs
│ │ ├── MapObjectMarioSlidingArrow.cs
│ │ ├── MapObjectMarioSpeedArrow.cs
│ │ ├── MapObjectMarioTwirlArrow.cs
│ │ ├── MapObjectMarioWall.cs
│ │ ├── MapObjectNextPositions.cs
│ │ ├── MapObjectOJPosition.cs
│ │ ├── MapObjectObject.cs
│ │ ├── MapObjectObjectAngleToMarioArrow.cs
│ │ ├── MapObjectObjectCeiling.cs
│ │ ├── MapObjectObjectCustomArrow.cs
│ │ ├── MapObjectObjectFacingArrow.cs
│ │ ├── MapObjectObjectFloor.cs
│ │ ├── MapObjectObjectGraphicsArrow.cs
│ │ ├── MapObjectObjectGraphicsTriangles.cs
│ │ ├── MapObjectObjectMovingArrow.cs
│ │ ├── MapObjectObjectSpeedArrow.cs
│ │ ├── MapObjectObjectTargetArrow.cs
│ │ ├── MapObjectObjectWall.cs
│ │ ├── MapObjectOffsetPositionAngle.cs
│ │ ├── MapObjectPath.cs
│ │ ├── MapObjectPathSegment.cs
│ │ ├── MapObjectPoint.cs
│ │ ├── MapObjectPreviousPositions.cs
│ │ ├── MapObjectPuGridlines.cs
│ │ ├── MapObjectPunchDetector.cs
│ │ ├── MapObjectPunchFloor.cs
│ │ ├── MapObjectPushHitboxCylinder.cs
│ │ ├── MapObjectPyramidNormal.cs
│ │ ├── MapObjectPyramidNormalTarget.cs
│ │ ├── MapObjectPyramidPlatformNormals.cs
│ │ ├── MapObjectQuad.cs
│ │ ├── MapObjectRenderTable.cs
│ │ ├── MapObjectScuttlebugLungingArrow.cs
│ │ ├── MapObjectSector.cs
│ │ ├── MapObjectSelf.cs
│ │ ├── MapObjectSettings.cs
│ │ ├── MapObjectSettingsAccumulator.cs
│ │ ├── MapObjectSlidePositions.cs
│ │ ├── MapObjectSphere.cs
│ │ ├── MapObjectSquishCancelSpots.cs
│ │ ├── MapObjectSwooperEffectiveTargetArrow.cs
│ │ ├── MapObjectTangibilitySphere.cs
│ │ ├── MapObjectTriangle.cs
│ │ ├── MapObjectUnitGridlines.cs
│ │ ├── MapObjectWall.cs
│ │ ├── MapObjectWaters.cs
│ │ ├── MapSemaphore.cs
│ │ ├── MapSemaphoreManager.cs
│ │ ├── MapTracker.Designer.cs
│ │ ├── MapTracker.cs
│ │ ├── MapTracker.resx
│ │ ├── MapTrackerFlowLayoutPanel.cs
│ │ └── MapUtilities.cs
│ ├── Models/
│ │ ├── ByteModel.cs
│ │ ├── CameraDataModel.cs
│ │ ├── DataModels.cs
│ │ ├── IUpdatableDataModel.cs
│ │ ├── LevelDataModel.cs
│ │ ├── MarioDataModel.cs
│ │ ├── ObjectDataModel.cs
│ │ ├── ObjectProcessorDataModel.cs
│ │ ├── PanModel.cs
│ │ ├── TriangleDataModel.cs
│ │ ├── TriangleDataModelCustom.cs
│ │ ├── TriangleDataModelFull.cs
│ │ ├── TriangleDataModelLazy.cs
│ │ └── TriangleMapData.cs
│ ├── Program.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── Resources/
│ │ ├── Hacks/
│ │ │ ├── Camera45Hack.hck
│ │ │ ├── CameraControl.hck
│ │ │ ├── DisplayVariable.hck
│ │ │ ├── DisplayVariable2.hck
│ │ │ ├── HitboxViewJ.hck
│ │ │ ├── HitboxViewU.hck
│ │ │ ├── NumRngUsagesJ.hck
│ │ │ ├── NumRngUsagesU.hck
│ │ │ ├── ObjectGraphicsTriangles.hck
│ │ │ ├── ObjectGraphicsTrianglesCameraPov.hck
│ │ │ ├── PreviousPositionsHackJ.hck
│ │ │ ├── PreviousPositionsHackU.hck
│ │ │ ├── PuVisible.hck
│ │ │ ├── QFrameInfoHack.hck
│ │ │ ├── RcpCrashJ.hck
│ │ │ ├── RcpCrashU.hck
│ │ │ ├── ReenableDebugControlsJ.hck
│ │ │ ├── ReenableDebugControlsU.hck
│ │ │ └── SpawnHack.hck
│ │ ├── Scripts/
│ │ │ ├── FrameProc.src64
│ │ │ ├── ObjectEndProc.src64
│ │ │ └── ObjectStartProc.src64
│ │ └── Shaders/
│ │ ├── FragmentShader.glsl
│ │ └── VertexShader.glsl
│ ├── STROOP.csproj
│ ├── Script/
│ │ ├── ScriptEngine.cs
│ │ └── TokenScript.cs
│ ├── Structs/
│ │ ├── ActionTable.cs
│ │ ├── AnimationTable.cs
│ │ ├── BehaviorCriteria.cs
│ │ ├── Configurations/
│ │ │ ├── AreaConfig.cs
│ │ │ ├── CamHackConfig.cs
│ │ │ ├── CameraConfig.cs
│ │ │ ├── Config.cs
│ │ │ ├── DebugConfig.cs
│ │ │ ├── FileConfig.cs
│ │ │ ├── GhostHackConfig.cs
│ │ │ ├── GotoRetrieveConfig.cs
│ │ │ ├── HackConfig.cs
│ │ │ ├── HudConfig.cs
│ │ │ ├── InputConfig.cs
│ │ │ ├── LockConfig.cs
│ │ │ ├── M64Config.cs
│ │ │ ├── MainSaveConfig.cs
│ │ │ ├── MapConfig.cs
│ │ │ ├── MappingConfig.cs
│ │ │ ├── MarioConfig.cs
│ │ │ ├── MarioObjectConfig.cs
│ │ │ ├── MiscConfig.cs
│ │ │ ├── ObjectConfig.cs
│ │ │ ├── ObjectSlotsConfig.cs
│ │ │ ├── OptionsConfig.cs
│ │ │ ├── OverlayConfig.cs
│ │ │ ├── PaintingConfig.cs
│ │ │ ├── PositionControllerRelativityConfig.cs
│ │ │ ├── RefreshRateConfig.cs
│ │ │ ├── RomVersionConfig.cs
│ │ │ ├── SavedSettingsConfig.cs
│ │ │ ├── SnowConfig.cs
│ │ │ ├── SpecialConfig.cs
│ │ │ ├── TableConfig.cs
│ │ │ ├── TestingConfig.cs
│ │ │ ├── TriangleConfig.cs
│ │ │ ├── TriangleOffsetsConfig.cs
│ │ │ ├── TtcObjectConfig.cs
│ │ │ ├── VarHackConfig.cs
│ │ │ └── WaypointConfig.cs
│ │ ├── CourseDataTable.cs
│ │ ├── Emulator.cs
│ │ ├── FlyGuyDataTable.cs
│ │ ├── GameScript.cs
│ │ ├── Gui/
│ │ │ ├── FileImageGui.cs
│ │ │ ├── InputImageGui.cs
│ │ │ ├── M64Gui.cs
│ │ │ └── ObjectSlotManagerGui.cs
│ │ ├── InputFrame.cs
│ │ ├── Map/
│ │ │ ├── BackgroundImage.cs
│ │ │ ├── MapAssociations.cs
│ │ │ └── MapLayout.cs
│ │ ├── MissionTable.cs
│ │ ├── MusicEntry.cs
│ │ ├── MusicTable.cs
│ │ ├── ObjectAngleTable.cs
│ │ ├── ObjectAssociations.cs
│ │ ├── ObjectBehaviorAssociation.cs
│ │ ├── PendulumSwingTable.cs
│ │ ├── PendulumVertexTable.cs
│ │ ├── PointTable.cs
│ │ ├── ProcessSelection.cs
│ │ ├── PushHitbox.cs
│ │ ├── RomHack.cs
│ │ ├── SpawnHack.cs
│ │ ├── TriangleInfoTable.cs
│ │ ├── TrigTable.cs
│ │ └── WaypointTable.cs
│ ├── TTC/
│ │ ├── TTCAmp.cs
│ │ ├── TTCBobomb.cs
│ │ ├── TTCCog.cs
│ │ ├── TTCDust.cs
│ │ ├── TTCElevator.cs
│ │ ├── TTCHand.cs
│ │ ├── TTCMain.cs
│ │ ├── TTCObject.cs
│ │ ├── TTCPendulum.cs
│ │ ├── TTCPitBlock.cs
│ │ ├── TTCPusher.cs
│ │ ├── TTCRNG.cs
│ │ ├── TTCRotatingBlock.cs
│ │ ├── TTCRotatingTriangularPrism.cs
│ │ ├── TTCSpinner.cs
│ │ ├── TTCSpinningTriangle.cs
│ │ ├── TTCThwomp.cs
│ │ ├── TTCTreadmill.cs
│ │ ├── TTCWheel.cs
│ │ ├── TtcPendulum2.cs
│ │ ├── TtcPendulumBad.cs
│ │ ├── TtcRng2.cs
│ │ ├── TtcSaveState.cs
│ │ ├── TtcSaveStateByteIterator.cs
│ │ ├── TtcSimulation.cs
│ │ └── TtcUtilities.cs
│ ├── Utilities/
│ │ ├── AnimationUtilities.cs
│ │ ├── AreaUtilities.cs
│ │ ├── BehaviorDecoder.cs
│ │ ├── BitfsPlatformGroupTable.cs
│ │ ├── BoolUtilities.cs
│ │ ├── ButtonUtilities.cs
│ │ ├── CamHackUtilities.cs
│ │ ├── CellSnapshot.cs
│ │ ├── CellUtilities.cs
│ │ ├── CogUtilities.cs
│ │ ├── CoinMovementCalculator.cs
│ │ ├── CoinObject.cs
│ │ ├── CoinTrajectoryFilter.cs
│ │ ├── CoinTrajejctory.cs
│ │ ├── ColorUtilities.cs
│ │ ├── ControlUtilities.cs
│ │ ├── CopyUtilities.cs
│ │ ├── CorkBox.cs
│ │ ├── CorkBoxUtilities.cs
│ │ ├── DecompilerFunctionUtilities.cs
│ │ ├── DemoCounterUtilities.cs
│ │ ├── DialogUtilities.cs
│ │ ├── DictionaryUtilities.cs
│ │ ├── EasingUtilities.cs
│ │ ├── EndianUtilities.cs
│ │ ├── EndiannessUtilities.cs
│ │ ├── EnumUtilities.cs
│ │ ├── ExtendedLevelBoundariesUtilities.cs
│ │ ├── Fast3DDecoder.cs
│ │ ├── FlyingUtilities.cs
│ │ ├── HelpfulHintUtilities.cs
│ │ ├── HexUtilities.cs
│ │ ├── ImageUtilities.cs
│ │ ├── InGameFunctionCall.cs
│ │ ├── InGameTrigUtilities.cs
│ │ ├── Kernal32NativeMethods.cs
│ │ ├── KeyboardUtilities.cs
│ │ ├── LazyImage.cs
│ │ ├── MathOperationUtilities.cs
│ │ ├── MoreMath.cs
│ │ ├── MupenUtilities.cs
│ │ ├── N64Disassembler.cs
│ │ ├── ObjectOrderingUtilities.cs
│ │ ├── ObjectRngUtilities.cs
│ │ ├── ObjectSnapshot.cs
│ │ ├── ObjectUtilities.cs
│ │ ├── ParsingUtilities.cs
│ │ ├── PasteUtilities.cs
│ │ ├── PlushUtilities.cs
│ │ ├── PositionAngle.cs
│ │ ├── ProcessGroupUtilities.cs
│ │ ├── PuUtilities.cs
│ │ ├── RngIndexer.cs
│ │ ├── ScriptParser.cs
│ │ ├── SegmentationUtilities.cs
│ │ ├── SkribblioUtilities.cs
│ │ ├── Stream/
│ │ │ ├── BaseProcessIO.cs
│ │ │ ├── DolphinProcessIO.cs
│ │ │ ├── IEmuRamIO.cs
│ │ │ ├── ProcessStream.cs
│ │ │ ├── StFileIO.cs
│ │ │ └── WindowsProcessIO.cs
│ │ ├── StringUtilities.cs
│ │ ├── SubtitleUtilities.cs
│ │ ├── TestUtilities.cs
│ │ ├── TestUtilities2.cs
│ │ ├── TrackPlatform.cs
│ │ ├── TrackPlatformTable.cs
│ │ ├── TriangleUtilities.cs
│ │ ├── TtcSpeedSettingUtilities.cs
│ │ ├── TypeUtilities.cs
│ │ ├── VarHackSpecialUtilities.cs
│ │ ├── WatchVariableCoordinateManager.cs
│ │ ├── WatchVariableSelectionUtilities.cs
│ │ ├── WatchVariableSpecialDictionary.cs
│ │ ├── WatchVariableSpecialUtilities.cs
│ │ ├── WatchVariableUtilities.cs
│ │ ├── WaterUtilities.cs
│ │ ├── XmlConfigParser.cs
│ │ └── ZipUtilities.cs
│ └── app.manifest
├── STROOP.sln
├── STROOPUnitTests/
│ ├── Mocks/
│ │ └── MockEmuIO.cs
│ ├── ProcessStreamTests.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── STROOPUnitTests.csproj
│ └── app.config
└── azure-pipelines.yml
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
[Xx]64/
[Xx]86/
[Bb]uild/
Windows Build/
bld/
[Bb]in/
[Oo]bj/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Un-comment the next line if you do not want to checkin
# your web deploy settings because they may include unencrypted
# passwords
#*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Microsoft Azure ApplicationInsights config file
ApplicationInsights.config
# Windows Store app package directory
AppPackages/
BundleArtifacts/
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# LightSwitch generated files
GeneratedArtifacts/
ModelManifest.xml
# Paket dependency manager
.paket/paket.exe
# FAKE - F# Make
.fake/
# Temp csproj
*tmp.csproj
================================================
FILE: Directory.Build.props
================================================
<Project>
<PropertyGroup>
<DefineConstants>$(DefineConstants);TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<LangVersion>7.1</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineConstants>$(DefineConstants);DEBUG</DefineConstants>
<Optimize>false</Optimize>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
</PropertyGroup>
</Project>
================================================
FILE: README.md
================================================
# STROOP
*SuperMario64 Technical Runtime Observer and Object Processor*
STROOP is a diagnostic tool for Super Mario 64 that 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.
## Downloading STROOP
The latest release of STROOP can be downloaded from our [Releases Page](https://github.com/SM64-TAS-ABC/STROOP/releases). From here .zip files of recent builds can be found. The files can then be extracted and stroop.exe can be started.
Latest development builds with the newest features, bug fixes can be found on the continuous [Development Release](https://github.com/SM64-TAS-ABC/STROOP/releases/vDev). Likewise, stroop.exe can be started.
## Requirements
As of the current build, STROOP has the following system requirements:
* Windows 10 / Windows 8.1 / Windows 8 / Windows 7 64-bit or 32-bit
* OpenGL 3.0 or greater (3.0 requirement for map tab, 1.0 requirement for model tab only)
* .NET Framework 4.6.1 (See [.NET Framework System Requirements](https://msdn.microsoft.com/en-us/library/8z6watww(v=vs.110).aspx) for more information)
* Supported Emulators
* Mupen
* Bizhawk
* Nemu
* Mupen64Plus
* Project64
* Dolphin
* 64 Marios (Must be super)
* Marios must be American, Japanese, PAL, or Shindou
## Building
Requirements:
* Visual Studio *(2017 recommended)*
OpenTK is a prerequisite for building STROOP. This is easiest installed by using the NuGet package manager. STROOP can be easily built from the source code by opening up the solution file in Visual Studio and performing a build.
================================================
FILE: STROOP/App.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Scripting" publicKeyToken="7f709c5b713576e1" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.2.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Dynamic" publicKeyToken="7f709c5b713576e1" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.2.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Accord" publicKeyToken="fa1a88e29555ccf7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.8.2.0" newVersion="3.8.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Accord.Video" publicKeyToken="fa1a88e29555ccf7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.8.2.0" newVersion="3.8.2.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
================================================
FILE: STROOP/Calculators/AirMovementCalculator.cs
================================================
using STROOP.Forms;
using STROOP.Managers;
using STROOP.Models;
using STROOP.Structs.Configurations;
using STROOP.Utilities;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace STROOP.Structs
{
public static class AirMovementCalculator
{
public static MarioState ApplyInput(MarioState marioState, Input input, int numQSteps = 4, List<TriangleDataModel> wallTris = null, List<MarioState> quarterSteps = null, bool resetHSpeedOnWalls = false)
{
MarioState withHSpeed = ComputeAirHSpeed(marioState, input);
MarioState moved = AirMove(withHSpeed, numQSteps, wallTris, quarterSteps, resetHSpeedOnWalls);
MarioState withYSpeed = ComputeAirYSpeed(moved);
return withYSpeed;
}
public static MarioState ApplyInput(MarioState marioState, int angleDiff, int numQSteps = 4, List<TriangleDataModel> wallTris = null, List<MarioState> quarterSteps = null, bool resetHSpeedOnWalls = false)
{
MarioState withHSpeed = ComputeAirHSpeed(marioState, angleDiff);
MarioState moved = AirMove(withHSpeed, numQSteps, wallTris, quarterSteps, resetHSpeedOnWalls);
MarioState withYSpeed = ComputeAirYSpeed(moved);
return withYSpeed;
}
public static MarioState ApplyInput(MarioState marioState, RelativeDirection direction, int numQSteps = 4)
{
MarioState withHSpeed = ComputeAirHSpeed(marioState, direction);
MarioState moved = AirMove(withHSpeed, numQSteps);
MarioState withYSpeed = ComputeAirYSpeed(moved);
return withYSpeed;
}
public static MarioState ApplyInputRepeatedly(MarioState marioState, RelativeDirection direction, int numQSteps)
{
int numFrames = numQSteps / 4;
int remainderQSteps = numQSteps % 4;
for (int i = 0; i < numFrames; i++)
{
marioState = ApplyInput(marioState, direction);
}
return remainderQSteps == 0 ? marioState : ApplyInput(marioState, direction, remainderQSteps);
}
public static MarioState AirMove(MarioState initialState, int numQSteps = 4, List<TriangleDataModel> wallTris = null, List<MarioState> quarterSteps = null, bool resetHSpeedOnWalls = false)
{
bool resetHSpeed = false;
float newX = initialState.X;
float newY = initialState.Y;
float newZ = initialState.Z;
if (wallTris != null)
{
bool collidedWithWall;
(newX, newZ, collidedWithWall) = WallDisplacementCalculator.HandleWallDisplacement2(newX, newY, newZ, wallTris, 50, 60);
if (collidedWithWall && resetHSpeedOnWalls) resetHSpeed = true;
}
for (int i = 0; i < numQSteps; i++)
{
newX += initialState.XSpeed / 4;
newY += initialState.YSpeed / 4;
newZ += initialState.ZSpeed / 4;
if (wallTris != null)
{
bool collidedWithWall1;
bool collidedWithWall2;
(newX, newZ, collidedWithWall1) = WallDisplacementCalculator.HandleWallDisplacement2(newX, newY, newZ, wallTris, 50, 150);
(newX, newZ, collidedWithWall2) = WallDisplacementCalculator.HandleWallDisplacement2(newX, newY, newZ, wallTris, 50, 30);
if (collidedWithWall1 && resetHSpeedOnWalls) resetHSpeed = true;
if (collidedWithWall2 && resetHSpeedOnWalls) resetHSpeed = true;
}
if (quarterSteps != null)
{
quarterSteps.Add(
new MarioState(
newX,
newY,
newZ,
initialState.XSpeed,
initialState.YSpeed,
initialState.ZSpeed,
initialState.HSpeed,
initialState.SlidingSpeedX,
initialState.SlidingSpeedZ,
initialState.SlidingAngle,
initialState.MarioAngle,
initialState.CameraAngle,
initialState.PreviousState,
initialState.LastInput,
initialState.Index));
}
}
return new MarioState(
newX,
newY,
newZ,
initialState.XSpeed,
initialState.YSpeed,
initialState.ZSpeed,
resetHSpeed ? 0 : initialState.HSpeed,
initialState.SlidingSpeedX,
initialState.SlidingSpeedZ,
initialState.SlidingAngle,
initialState.MarioAngle,
initialState.CameraAngle,
initialState.PreviousState,
initialState.LastInput,
initialState.Index);
}
// update_air_without_turn
private static MarioState ComputeAirHSpeed(MarioState initialState, int angleDiff)
{
bool longJump = false;
int maxSpeed = longJump ? 48 : 32;
ushort marioAngle = initialState.MarioAngle;
int deltaAngleIntendedFacing = angleDiff;
float inputScaledMagnitude = 32;
float perpSpeed = 0;
float newHSpeed = ApproachHSpeed(initialState.HSpeed, 0, 0.35f, 0.35f);
if (inputScaledMagnitude > 0)
{
newHSpeed += (inputScaledMagnitude / 32) * 1.5f * InGameTrigUtilities.InGameCosine(deltaAngleIntendedFacing);
perpSpeed = InGameTrigUtilities.InGameSine(deltaAngleIntendedFacing) * (inputScaledMagnitude / 32) * 10;
}
if (newHSpeed > maxSpeed) newHSpeed -= 1;
if (newHSpeed < -16) newHSpeed += 2;
float newSlidingXSpeed = InGameTrigUtilities.InGameSine(marioAngle) * newHSpeed;
float newSlidingZSpeed = InGameTrigUtilities.InGameCosine(marioAngle) * newHSpeed;
newSlidingXSpeed += perpSpeed * InGameTrigUtilities.InGameSine(marioAngle + 0x4000);
newSlidingZSpeed += perpSpeed * InGameTrigUtilities.InGameCosine(marioAngle + 0x4000);
float newXSpeed = newSlidingXSpeed;
float newZSpeed = newSlidingZSpeed;
return new MarioState(
initialState.X,
initialState.Y,
initialState.Z,
newXSpeed,
initialState.YSpeed,
newZSpeed,
newHSpeed,
initialState.SlidingSpeedX,
initialState.SlidingSpeedZ,
initialState.SlidingAngle,
initialState.MarioAngle,
initialState.CameraAngle,
initialState,
new Input(angleDiff, 0),
initialState.Index + 1);
}
// update_air_without_turn
private static MarioState ComputeAirHSpeed(MarioState initialState, Input input)
{
bool longJump = false;
int maxSpeed = longJump ? 48 : 32;
ushort marioAngle = initialState.MarioAngle;
ushort yawIntended = MoreMath.CalculateAngleFromInputs(input.X, input.Y, initialState.CameraAngle);
int deltaAngleIntendedFacing = yawIntended - marioAngle;
float inputScaledMagnitude = input.GetScaledMagnitude();
float perpSpeed = 0;
float newHSpeed = ApproachHSpeed(initialState.HSpeed, 0, 0.35f, 0.35f);
if (inputScaledMagnitude > 0)
{
newHSpeed += (inputScaledMagnitude / 32) * 1.5f * InGameTrigUtilities.InGameCosine(deltaAngleIntendedFacing);
perpSpeed = InGameTrigUtilities.InGameSine(deltaAngleIntendedFacing) * (inputScaledMagnitude / 32) * 10;
}
if (newHSpeed > maxSpeed) newHSpeed -= 1;
if (newHSpeed < -16) newHSpeed += 2;
float newSlidingXSpeed = InGameTrigUtilities.InGameSine(marioAngle) * newHSpeed;
float newSlidingZSpeed = InGameTrigUtilities.InGameCosine(marioAngle) * newHSpeed;
newSlidingXSpeed += perpSpeed * InGameTrigUtilities.InGameSine(marioAngle + 0x4000);
newSlidingZSpeed += perpSpeed * InGameTrigUtilities.InGameCosine(marioAngle + 0x4000);
float newXSpeed = newSlidingXSpeed;
float newZSpeed = newSlidingZSpeed;
return new MarioState(
initialState.X,
initialState.Y,
initialState.Z,
newXSpeed,
initialState.YSpeed,
newZSpeed,
newHSpeed,
initialState.SlidingSpeedX,
initialState.SlidingSpeedZ,
initialState.SlidingAngle,
initialState.MarioAngle,
initialState.CameraAngle,
initialState,
input,
initialState.Index + 1);
}
// update_air_without_turn
private static MarioState ComputeAirHSpeed(MarioState initialState, RelativeDirection direction)
{
bool longJump = false;
int maxSpeed = longJump ? 48 : 32;
ushort marioAngle = initialState.MarioAngle;
int deltaAngleIntendedFacing;
switch (direction)
{
case RelativeDirection.Forward:
deltaAngleIntendedFacing = 0;
break;
case RelativeDirection.Backward:
deltaAngleIntendedFacing = 32768;
break;
case RelativeDirection.Left:
deltaAngleIntendedFacing = 16384;
break;
case RelativeDirection.Right:
deltaAngleIntendedFacing = 49152;
break;
case RelativeDirection.Center:
deltaAngleIntendedFacing = 0;
break;
default:
throw new ArgumentOutOfRangeException();
}
float inputScaledMagnitude = direction == RelativeDirection.Center ? 0 : 32;
float perpSpeed = 0;
float newHSpeed = ApproachHSpeed(initialState.HSpeed, 0, 0.35f, 0.35f);
if (inputScaledMagnitude > 0)
{
newHSpeed += (inputScaledMagnitude / 32) * 1.5f * InGameTrigUtilities.InGameCosine(deltaAngleIntendedFacing);
perpSpeed = InGameTrigUtilities.InGameSine(deltaAngleIntendedFacing) * (inputScaledMagnitude / 32) * 10;
}
if (newHSpeed > maxSpeed) newHSpeed -= 1;
if (newHSpeed < -16) newHSpeed += 2;
float newSlidingXSpeed = InGameTrigUtilities.InGameSine(marioAngle) * newHSpeed;
float newSlidingZSpeed = InGameTrigUtilities.InGameCosine(marioAngle) * newHSpeed;
newSlidingXSpeed += perpSpeed * InGameTrigUtilities.InGameSine(marioAngle + 0x4000);
newSlidingZSpeed += perpSpeed * InGameTrigUtilities.InGameCosine(marioAngle + 0x4000);
float newXSpeed = newSlidingXSpeed;
float newZSpeed = newSlidingZSpeed;
return new MarioState(
initialState.X,
initialState.Y,
initialState.Z,
newXSpeed,
initialState.YSpeed,
newZSpeed,
newHSpeed,
initialState.SlidingSpeedX,
initialState.SlidingSpeedZ,
initialState.SlidingAngle,
initialState.MarioAngle,
initialState.CameraAngle,
initialState,
null,
initialState.Index + 1);
}
private static float ComputeAirHSpeed(float initialHSpeed)
{
int maxSpeed = 32;
float newHSpeed = ApproachHSpeed(initialHSpeed, 0, 0.35f, 0.35f);
if (newHSpeed > maxSpeed) newHSpeed -= 1;
if (newHSpeed < -16) newHSpeed += 2;
return newHSpeed;
}
public static float ComputePosition(float position, float hSpeed, int frames)
{
for (int i = 0; i < frames; i++)
{
hSpeed = ComputeAirHSpeed(hSpeed);
position += hSpeed;
}
return position;
}
private static MarioState ComputeAirYSpeed(MarioState initialState)
{
float newYSpeed = Math.Max(initialState.YSpeed - 4, -75);
return new MarioState(
initialState.X,
initialState.Y,
initialState.Z,
initialState.XSpeed,
newYSpeed,
initialState.ZSpeed,
initialState.HSpeed,
initialState.SlidingSpeedX,
initialState.SlidingSpeedZ,
initialState.SlidingAngle,
initialState.MarioAngle,
initialState.CameraAngle,
initialState.PreviousState,
initialState.LastInput,
initialState.Index);
}
private static float ApproachHSpeed(float speed, float maxSpeed, float increase, float decrease)
{
if (speed < maxSpeed)
return Math.Min(maxSpeed, speed + increase);
else
return Math.Max(maxSpeed, speed - decrease);
}
}
}
================================================
FILE: STROOP/Calculators/BobombState.cs
================================================
using STROOP.Forms;
using STROOP.Managers;
using STROOP.Structs.Configurations;
using STROOP.Utilities;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace STROOP.Structs
{
public class BobombState
{
public float X;
public float Y;
public float Z;
public float XSpeed;
public float YSpeed;
public float ZSpeed;
public float HSpeed;
public ushort Yaw;
public float HomeX;
public float HomeY;
public float HomeZ;
public int Timer;
public BobombState(
float x,
float y,
float z,
float xSpeed,
float ySpeed,
float zSpeed,
float hSpeed,
ushort yaw,
float homeX,
float homeY,
float homeZ)
{
X = x;
Y = y;
Z = z;
XSpeed = xSpeed;
YSpeed = ySpeed;
ZSpeed = zSpeed;
HSpeed = hSpeed;
Yaw = yaw;
HomeX = homeX;
HomeY = homeY;
HomeZ = homeZ;
Timer = 0;
}
public void bobomb_act_patrol()
{
HSpeed = 5.0f;
object_step();
obj_return_home_if_safe();
Timer++;
}
public void object_step()
{
float objVelX = HSpeed * InGameTrigUtilities.InGameSine(Yaw);
float objVelZ = HSpeed * InGameTrigUtilities.InGameCosine(Yaw);
calc_new_obj_vel_and_pos_y(objVelX, objVelZ);
obj_update_pos_vel_xz();
}
void calc_new_obj_vel_and_pos_y(float objVelX, float objVelZ) {
float floor_nX = 0;
float floor_nY = 1;
float floor_nZ = 0;
// Caps vertical speed with a "terminal velocity".
YSpeed -= 2.5f;
if (YSpeed > 75.0)
{
YSpeed = 75.0f;
}
if (YSpeed < -75.0)
{
YSpeed = -75.0f;
}
float floorY = Y;
Y += YSpeed;
//Snap the object up to the floor.
if (Y < floorY)
{
Y = floorY;
// Bounces an object if the ground is hit fast enough.
if (YSpeed < -17.5)
{
YSpeed = -(YSpeed / 2);
}
else
{
YSpeed = 0;
}
}
//! (Obj Position Crash) If you got an object with height past 2^31, the game would crash.
if ((int)Y >= (int)floorY && (int)Y < (int)floorY + 37)
{
// Adds horizontal component of gravity for horizontal speed.
objVelX += floor_nX * (floor_nX * floor_nX + floor_nZ * floor_nZ)
/ (floor_nX * floor_nX + floor_nY * floor_nY + floor_nZ * floor_nZ) * 2.5f
* 2;
objVelZ += floor_nZ * (floor_nX * floor_nX + floor_nZ * floor_nZ)
/ (floor_nX * floor_nX + floor_nY * floor_nY + floor_nZ * floor_nZ) * 2.5f
* 2;
if (objVelX < 0.000001 && objVelX > -0.000001)
{
objVelX = 0;
}
if (objVelZ < 0.000001 && objVelZ > -0.000001)
{
objVelZ = 0;
}
if (objVelX != 0 || objVelZ != 0)
{
Yaw = InGameTrigUtilities.InGameATan(objVelZ, objVelX);
}
HSpeed = (float)Math.Sqrt(objVelX * objVelX + objVelZ * objVelZ) * 0.8f;
}
}
public void obj_update_pos_vel_xz()
{
float xVel = HSpeed * InGameTrigUtilities.InGameSine(Yaw);
float zVel = HSpeed * InGameTrigUtilities.InGameCosine(Yaw);
X += xVel;
Z += zVel;
}
public void obj_return_home_if_safe() {
float homeDistX = HomeX - X;
float homeDistZ = HomeZ - Z;
short angleTowardsHome = (short)InGameTrigUtilities.InGameATan(homeDistZ, homeDistX);
Yaw = (ushort)approach_s16_symmetric((short)Yaw, angleTowardsHome, 320);
}
public short approach_s16_symmetric(short value, short target, short increment)
{
short dist = MoreMath.NormalizeAngleShort(target - value);
if (dist >= 0)
{
if (dist > increment)
{
value += increment;
}
else
{
value = target;
}
}
else
{
if (dist < -increment)
{
value -= increment;
}
else
{
value = target;
}
}
return value;
}
public override string ToString()
{
return string.Format(
"[{13}] pos=({0},{1},{2}) speed=({3},{4},{5}) hSpeed={6} yaw={7} home=({8},{9},{10}) distFromHome={11} angleFromHome={12}",
(double)X, (double)Y, (double)Z,
(double)XSpeed, (double)YSpeed, (double)ZSpeed,
(double)HSpeed, Yaw,
(double)HomeX, (double)HomeY, (double)HomeZ,
MoreMath.GetDistanceBetween(HomeX, HomeZ, X, Z),
MoreMath.AngleTo_AngleUnitsRounded(HomeX, HomeZ, X, Z), Timer);
}
}
}
================================================
FILE: STROOP/Calculators/CalculatorMain.cs
================================================
using STROOP.Forms;
using STROOP.Managers;
using STROOP.Models;
using STROOP.Structs.Configurations;
using STROOP.Utilities;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace STROOP.Structs
{
public static class CalculatorMain
{
public static void CalculateMovementForBitsHolp()
{
float startX = 435.913696289063f;
float startY = 4474f;
float startZ = -1854.50500488281f;
float startXSpeed = -16.1702556610107f;
float startYSpeed = -75f;
float startZSpeed = -17.676326751709f;
float startHSpeed = 23.8997459411621f;
ushort marioAngle = 39780;
ushort cameraAngle = 16384;
float goalX = 392.857605f;
float goalY = 4249f;
float goalZ = -1901.016846f;
int xInput = -56;
int zInput = -31;
int xRadius = 10;
int zRadius = 10;
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
0,
0,
0,
marioAngle,
cameraAngle,
null,
null,
0);
int lastIndex = -1;
List<Input> inputs = CalculatorUtilities.GetInputRange(xInput - xRadius, xInput + xRadius, zInput - zRadius, zInput + zRadius);
float bestDiff = float.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
HashSet<MarioState> alreadySeen = new HashSet<MarioState>();
queue.Enqueue(startState);
alreadySeen.Add(startState);
while (queue.Count != 0)
{
MarioState dequeue = queue.Dequeue();
List<MarioState> nextStates = inputs.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input));
foreach (MarioState state in nextStates)
{
if (alreadySeen.Contains(state)) continue;
if (state.Index > 3) continue;
if (state.Index != lastIndex)
{
lastIndex = state.Index;
System.Diagnostics.Trace.WriteLine("Now at index " + lastIndex);
}
if (state.Index == 3)
{
float diff = (float)MoreMath.GetDistanceBetween(state.X, state.Z, goalX, goalZ);
if (diff < bestDiff)
{
bestDiff = diff;
bestState = state;
System.Diagnostics.Trace.WriteLine("Diff of " + bestDiff + " is: " + bestState.GetLineage());
}
}
alreadySeen.Add(state);
queue.Enqueue(state);
}
}
System.Diagnostics.Trace.WriteLine("Done");
}
public static void CalculateMovementForWfHolp()
{
float startX = 310.128448486328f;
float startY = 4384f;
float startZ = -1721.65405273438f;
float startXSpeed = 15.5246114730835f;
float startYSpeed = -24f;
float startZSpeed = -12.4710474014282f;
float startHSpeed = 19.8780212402344f;
ushort marioAngle = 24066;
Dictionary<int, ushort> cameraAngles =
new Dictionary<int, ushort>()
{
//[0] = 32707,
[0] = 32768,
[1] = 32839,
[2] = 32900,
[3] = 32972,
[4] = 33063,
[5] = 33135,
[6] = 33216,
};
float goalX = 374.529907226563f;
float goalY = 4264f;
float goalZ = -1773.07543945313f;
int xInput = -45;
int zInput = -27;
int xRadius = 5;
int zRadius = 5;
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
0,
0,
0,
marioAngle,
cameraAngles[0],
null,
null,
0);
int lastIndex = -1;
List<Input> inputs = CalculatorUtilities.GetInputRange(xInput - xRadius, xInput + xRadius, zInput - zRadius, zInput + zRadius);
float bestDiff = float.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
HashSet<MarioState> alreadySeen = new HashSet<MarioState>();
queue.Enqueue(startState);
alreadySeen.Add(startState);
while (queue.Count != 0)
{
MarioState dequeue = queue.Dequeue();
List<MarioState> nextStates = inputs.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input));
nextStates = nextStates.ConvertAll(state => state.WithCameraAngle(cameraAngles[state.Index]));
foreach (MarioState state in nextStates)
{
if (alreadySeen.Contains(state)) continue;
if (state.Index > 4) continue;
if (state.Index != lastIndex)
{
lastIndex = state.Index;
System.Diagnostics.Trace.WriteLine("Now at index " + lastIndex);
}
if (state.Index == 4)
{
float diff = (float)MoreMath.GetDistanceBetween(state.X, state.Z, goalX, goalZ);
if (diff < bestDiff)
{
bestDiff = diff;
bestState = state;
System.Diagnostics.Trace.WriteLine("Diff of " + bestDiff + " is: " + bestState.GetLineage());
}
}
alreadySeen.Add(state);
queue.Enqueue(state);
}
}
System.Diagnostics.Trace.WriteLine("Done");
}
public static void CalculateMovementForBully()
{
/*
float startX = -6842.04736328125f;
float startY = 2358;
float startZ = -506.698120117188f;
float startXSpeed = -34.6734008789063f;
float startYSpeed = -74;
float startZSpeed = 0;
float startHSpeed = 34.6734008789063f;
*/
float startX = -8172.14892578125f;
float startY = -47.4696655273438f;
float startZ = -507.290283203125f;
float startXSpeed = -3.33430767059326f;
float startYSpeed = -75;
float startZSpeed = 0;
float startHSpeed = 3.33430767059326f;
float goalX = -8171.970703125f;
float goalZ = -507.2902832031f;
ushort marioAngle = 49152;
ushort cameraAngle = 32768;
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
0,
0,
0,
marioAngle,
cameraAngle,
null,
null,
0);
int lastIndex = -1;
List<Input> inputs = CalculatorUtilities.GetInputRange(-70, 70, 0, 0);
float bestDiff = float.MaxValue;
Queue<MarioState> queue = new Queue<MarioState>();
HashSet<MarioState> alreadySeen = new HashSet<MarioState>();
queue.Enqueue(startState);
while (queue.Count != 0)
{
MarioState dequeue = queue.Dequeue();
List<MarioState> nextStates = inputs.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input));
foreach (MarioState state in nextStates)
{
if (alreadySeen.Contains(state)) continue;
float threshold = 10f / (state.Index * state.Index);
if (state.Index != lastIndex)
{
lastIndex = state.Index;
System.Diagnostics.Trace.WriteLine("Now at index " + lastIndex + " with threshold " + threshold);
}
float diff = (float)MoreMath.GetDistanceBetween(state.X, state.Z, goalX, goalZ);
if (diff > threshold) continue;
if (diff < bestDiff)
{
bestDiff = diff;
System.Diagnostics.Trace.WriteLine("New best diff of " + diff);
}
//System.Diagnostics.Trace.WriteLine(diff + " < " + threshold + " at index " + state.Index);
if (diff == 0 && Math.Abs(state.HSpeed) < 0.2)
{
System.Diagnostics.Trace.WriteLine("");
System.Diagnostics.Trace.WriteLine(state.GetLineage());
return;
}
alreadySeen.Add(state);
queue.Enqueue(state);
}
}
System.Diagnostics.Trace.WriteLine("FAILED");
}
public static void CalculateMovementForWallGap()
{
float startX = -258.926910400391f;
float startY = 2373f;
float startZ = 5770.876953125f;
float startXSpeed = 30.5356960296631f;
float startYSpeed = -10f;
float startZSpeed = 0f;
float startHSpeed = 30.5356960296631f;
float goalX = -89.956619262695313f;
int listLength = 1000;
List<float> floats = new List<float>();
List<int> counts = new List<int>();
float f = goalX;
for (int i = 0; i < listLength; i++)
{
floats.Add(f);
f += 0.00001f;
counts.Add(0);
}
ushort marioAngle = 16384;
ushort cameraAngle = 49152;
int inputRadius = 8;
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
0,
0,
0,
marioAngle,
cameraAngle,
null,
null,
0);
int lastIndex = -1;
List<Input> inputs = CalculatorUtilities.GetInputRange(0, 0, -38 - inputRadius, -38 + inputRadius);
float bestDiff = float.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
HashSet<MarioState> alreadySeen = new HashSet<MarioState>();
queue.Enqueue(startState);
alreadySeen.Add(startState);
while (queue.Count != 0)
{
MarioState dequeue = queue.Dequeue();
List<MarioState> nextStates = inputs.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input));
foreach (MarioState state in nextStates)
{
if (alreadySeen.Contains(state)) continue;
if (state.Index > lastIndex)
{
lastIndex = state.Index;
Config.Print("Now at index " + state.Index + " with queue size " + queue.Count);
/*
if (queue.Count > 100000)
{
Config.Print("Commence pruning");
List<MarioState> states = queue.ToList();
queue.Clear();
Random random = new Random();
while (queue.Count < 100000)
{
int index = random.Next(0, states.Count);
MarioState enqueue = states[index];
states.RemoveAt(index);
queue.Enqueue(enqueue);
}
Config.Print("Now at index " + state.Index + " with queue size " + queue.Count);
}
*/
}
int numFramesRemaining = ((int)state.YSpeed + 34) / 4;
float expectedX = AirMovementCalculator.ComputePosition(state.X, state.XSpeed, numFramesRemaining);
float expectedDiff = Math.Abs(expectedX - goalX);
float threshold = (float)Math.Pow(2, numFramesRemaining) * 2;
if (expectedDiff > threshold) continue;
if (state.YSpeed == -34)
{
float diff = Math.Abs(state.X - goalX);
if (diff <= bestDiff / 1.1f || diff == 0)
{
bestDiff = diff;
bestState = state;
Config.Print("New best diff of " + diff + " with state:\r\n" + state.GetLineage());
}
for (int i = 0; i < floats.Count; i++)
{
if (state.X == floats[i]) counts[i]++;
}
}
else
{
queue.Enqueue(state);
alreadySeen.Add(state);
}
}
}
Config.Print("END");
for (int i = 0; i < floats.Count; i++)
{
Config.Print(i + "\t" + counts[i] + "\t" + floats[i]);
}
}
public static void CalculateMovementForTtmHolp()
{
float startX = 1094.12268066406f;
float startY = -476.171997070313f;
float startZ = -3675.9716796875f;
float startXSpeed = -6.70571994781494f;
float startYSpeed = -52f;
float startZSpeed = -0.628647029399872f;
float startHSpeed = -6.70173645019531f;
ushort marioAngle = 16455;
Dictionary<int, ushort> cameraAngles =
new Dictionary<int, ushort>()
{
[0] = 28563,
[1] = 28552,
[2] = 28548,
[3] = 28533,
[4] = 28524,
[5] = 28514,
[6] = 28500,
};
float goalX = 1060.860229f;
float goalY = -5001.017029f;
float goalZ = -3678.57666f;
int xInput = 56;
int zInput = 22;
int xRadius = 5;
int zRadius = 5;
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
0,
0,
0,
marioAngle,
cameraAngles[0],
null,
null,
0);
int lastIndex = -1;
List<Input> inputs = CalculatorUtilities.GetInputRange(xInput - xRadius, xInput + xRadius, zInput - zRadius, zInput + zRadius);
float bestDiff = float.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
HashSet<MarioState> alreadySeen = new HashSet<MarioState>();
queue.Enqueue(startState);
alreadySeen.Add(startState);
while (queue.Count != 0)
{
MarioState dequeue = queue.Dequeue();
List<MarioState> nextStates = inputs.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input));
nextStates = nextStates.ConvertAll(state => state.WithCameraAngle(cameraAngles[state.Index]));
foreach (MarioState state in nextStates)
{
if (alreadySeen.Contains(state)) continue;
if (state.Index > 4) continue;
if (state.Index != lastIndex)
{
lastIndex = state.Index;
System.Diagnostics.Trace.WriteLine("Now at index " + lastIndex);
}
if (state.Index == 4)
{
float diff = (float)MoreMath.GetDistanceBetween(state.X, state.Z, goalX, goalZ);
if (diff > 1 ? diff < bestDiff * 0.5 : diff < bestDiff)
{
bestDiff = diff;
bestState = state;
System.Diagnostics.Trace.WriteLine("Diff of " + bestDiff + " is: " + bestState.GetLineage());
}
}
alreadySeen.Add(state);
queue.Enqueue(state);
}
}
System.Diagnostics.Trace.WriteLine("Done");
}
public static List<(float, float)> GetSuccessFloatPositions()
{
// initial
float startX = -1378.91674804688f;
float startY = -2434f;
float startZ = -1423.35168457031f;
float startXSpeed = 0f;
float startYSpeed = 20f;
float startZSpeed = 0f;
float startHSpeed = 0f;
// after all 4 q steps (no wall displacement)
float endX = -1376.13940429688f;
float endY = -2414f;
float endZ = -1423.66223144531f;
float endXSpeed = 2.7774920463562f;
float endYSpeed = 16f;
float endZSpeed = -0.310500144958496f;
float endHSpeed = -1.45670866966248f;
// after 1 q step (no wall displacement)
float qstepX = -1378.22241210938f;
float qstepY = -2429f;
float qstepZ = -1423.42932128906f;
float qstepXSpeed = 2.7774920463562f;
float qstepYSpeed = -4f;
float qstepZSpeed = -0.310500144958496f;
float qstepHSpeed = -1.45670866966248f;
// after 1 q step and wall displacement
float displacedX = -1307.73107910156f;
float displacedY = -2429f;
float displacedZ = -1353.11071777344f;
float displacedXSpeed = 0f;
float displacedYSpeed = -4f;
float displacedZSpeed = 0f;
float displacedHSpeed = 0f;
// closest starting position that works
float closestX = -1378.91381835938f;
float closestY = -2434f;
float closestZ = -1423.34875488281f;
float closestXSpeed = -3.67686033248901f;
float closestYSpeed = 0f;
float closestZSpeed = -4.74138116836548f;
float closestHSpeed = 6f;
// farthest starting position that is within range (doesn't work)
float farthestX = -1379.22241210938f;
float farthestY = -2434f;
float farthestZ = -1423.65734863281f;
float farthestXSpeed = 0f;
float farthestYSpeed = 0f;
float farthestZSpeed = 0f;
float farthestHSpeed = 0f;
ushort marioAngle = 39655;
ushort cameraAngle = 7142;
TriangleDataModel tri = TriangleDataModel.CreateLazy(0x8015F910);
List<(float, float)> successPositions = new List<(float, float)>();
int numAttempts = 0;
int numSuccesses = 0;
for (float lineX = closestX, lineZ = closestZ; lineX >= farthestX; lineX -= 0.0001f, lineZ -= 0.0001f)
{
List<float> pointXs = new List<float>();
float temp = lineX;
pointXs.Add(temp);
temp = lineX;
for (int i = 0; i < 10; i++)
{
temp -= 0.0001f;
pointXs.Add(temp);
}
temp = lineX;
for (int i = 0; i < 10; i++)
{
temp += 0.0001f;
pointXs.Add(temp);
}
float pointZ = lineZ;
foreach (float pointX in pointXs)
{
MarioState pointState = new MarioState(
pointX,
startY,
pointZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
0,
0,
0,
marioAngle,
cameraAngle,
null,
null,
0);
Input input = new Input(32, -124);
MarioState movedState = AirMovementCalculator.ApplyInput(pointState, input, 1);
(float dispX, float dispZ) = WallDisplacementCalculator.HandleWallDisplacement(
movedState.X, movedState.Y, movedState.Z, tri, 50, 150);
bool match = dispX == displacedX && dispZ == displacedZ;
if (match)
{
successPositions.Add((pointX, pointZ));
/*
Config.Print(
"({0},{1}) => ({2},{3}) match={4}",
(double)pointX, (double)pointZ, (double)dispX, (double)dispZ, match);
*/
}
numAttempts++;
if (match) numSuccesses++;
}
}
/*
Config.Print("numAttempts = " + numAttempts);
Config.Print("numSuccesses = " + numSuccesses);
*/
successPositions.Sort((a, b) => Math.Sign(a.Item1 - b.Item1));
return successPositions;
}
public static void TestWalkingCode()
{
float startX = -7390.01953125f;
float startY = -3153f;
float startZ = 3936.21435546875f;
float startXSpeed = 7.88103151321411f;
float startYSpeed = 0f;
float startZSpeed = -15.0203580856323f;
float startHSpeed = 16.9623641967773f;
ushort startMarioAngle = 27738;
ushort startCameraAngle = 0;
MarioState marioState = new MarioState(
startX, startY, startZ,
startXSpeed, startYSpeed, startZSpeed, startHSpeed,
0, 0, 0,
startMarioAngle, startCameraAngle, null, null, 0);
Input input = new Input(23, 26);
for (int i = 0; i < 10; i++)
{
Config.Print(i + ": " + marioState);
marioState = GroundMovementCalculator.ApplyInput(marioState, input);
}
}
public static void TestGetRelativePosition()
{
float marioX = -1431.61889648438f;
float marioY = -4003f;
float marioZ = -1318.10009765625f;
ushort marioAngle = 53906;
(float x, float y, float z) = ObjectCalculator.GetRelativePosition(
marioX, marioY, marioZ, marioAngle, 0, 60, 100);
Config.Print("{0},{1},{2}", (double)x, (double)y, (double)z);
}
public static void TestGetObjectDisplacement()
{
float marioX = -1462.44079589844f;
float marioY = -4003f;
float marioZ = -1196.89099121094f;
float marioRadius = 37;
float bobombX = -1538.07922363281f;
float bobombY = -4003f;
float bobombZ = -1257.61840820313f;
float bobombRadius = 65 * 1.2f;
float padding = -5;
(float x, float z) = ObjectCalculator.GetHardObjectDisplacement(
marioX, marioZ, marioRadius, 0, bobombX, bobombZ, bobombRadius, padding);
Config.Print("{0},{1}", (double)x, (double)z);
}
public static void TestCombined()
{
float marioX = -918.42724609375f;
float marioY = -2434f;
float marioZ = -1730.48791503906f;
float marioXSpeed = 1.16657888889313f;
float marioYSpeed = 0f;
float marioZSpeed = 5.46906852722168f;
float marioHSpeed = 5.59210300445557f;
ushort marioAngle = 2206;
ushort cameraAngle = 4132;
float objX = -897.566040039063f;
float objZ = -1632.68811035156f;
int inputX = -14;
int inputY = -48;
MarioState marioState = new MarioState(
marioX, marioY, marioZ,
marioXSpeed, marioYSpeed, marioZSpeed, marioHSpeed,
0, 0, 0,
marioAngle, cameraAngle, null, null, 0);
Input input = new Input(inputX, inputY);
// walking
MarioState afterWalkingTemp = GroundMovementCalculator.ApplyInput(marioState, input);
MarioState afterWalking = afterWalkingTemp.WithPosition(marioState.X, marioState.Y, marioState.Z);
// displacement
(float afterDisplacementX, float afterDisplacementZ) =
ObjectCalculator.GetHardObjectDisplacement(
afterWalking.X, afterWalking.Z, 37, afterWalking.MarioAngle,
objX, objZ, 65 * 1.2f, -5);
// relative position
(float relX, float relY, float relZ) = ObjectCalculator.GetRelativePosition(
afterDisplacementX, afterWalking.Y, afterDisplacementZ,
afterWalking.MarioAngle, 0, 60, 100);
MarioState finalState = new MarioState(
afterDisplacementX, afterWalking.Y, afterDisplacementZ,
afterWalking.XSpeed, afterWalking.YSpeed, afterWalking.ZSpeed, afterWalking.HSpeed,
afterWalking.SlidingSpeedX, afterWalking.SlidingSpeedZ, afterWalking.SlidingAngle,
afterWalking.MarioAngle, cameraAngle, null, null, 0);
Config.Print(finalState);
Config.Print("{0},{1},{2}", (double)relX, (double)relY, (double)relZ);
}
public static void TestMovementTowardsSpot()
{
float startX = -1323.72937011719f;
float startY = -2434f;
float startZ = -1579.7392578125f;
float startXSpeed = 2.64395904541016f;
float startYSpeed = 0f;
float startZSpeed = -11.6073894500732f;
float startHSpeed = 11.9047050476074f;
ushort startAngle = 30442;
List<ushort> cameraAngles = new List<ushort>()
{
7997,
8089,
8185,
8276,
8364,
8454,
8546,
8640,
8704,
8983,
9007,
9007,
9007,
9050,
9138,
9225,
9249,
9249,
9249,
9249,
9249,
9249,
9249,
};
int INDEX_START = 0;
float objStartX = -1301.52001953125f;
float objStartZ = -1677.24182128906f;
int inputX = 127;
int inputY = 87;
MarioState marioState = new MarioState(
startX, startY, startZ,
startXSpeed, startYSpeed, startZSpeed, startHSpeed,
0, 0, 0,
startAngle, cameraAngles[INDEX_START], null, null, 0);
MarioBobombState marioBobombState = new MarioBobombState(
marioState, objStartX, objStartZ);
Input input = new Input(inputX, inputY);
MarioBobombState prevMarioBobombState = null;
for (int i = INDEX_START + 1; i < 9; i++)
{
ushort nextCameraAngle = cameraAngles[i];
prevMarioBobombState = marioBobombState;
marioBobombState = ApplyInputToMarioBobombState(marioBobombState, input, nextCameraAngle);
}
Config.Print(marioBobombState);
MarioState m = prevMarioBobombState.MarioState;
(float holpX, float holpY, float holpZ) = HolpCalculator.GetHolpForWalking(58, m.X, m.Y, m.Z, m.MarioAngle);
MarioState m2 = marioBobombState.MarioState;
float marioX = m2.X;
float marioY = m2.Y;
float marioZ = m2.Z;
ushort marioAngle = m2.MarioAngle;
float marioRadius = 37;
float bobombX = holpX;
float bobombY = holpY;
float bobombZ = holpZ;
float padding = -5;
for (int i = 1; i <= 4; i++)
{
if (i == 2)
{
ushort bobombAngle = m.MarioAngle;
float delX = 5 * InGameTrigUtilities.InGameSine(bobombAngle);
float delZ = 5 * InGameTrigUtilities.InGameCosine(bobombAngle);
bobombX += delX;
bobombZ += delZ;
}
float bobombRadius = 65 * (1f + 0.2f * i);
(marioX, marioZ) = ObjectCalculator.GetHardObjectDisplacement(
marioX, marioZ, marioRadius, 0, bobombX, bobombZ, bobombRadius, padding);
Config.Print("{0}: ({1},{2})", i, (double)marioX, (double)marioZ);
}
}
public static bool IsInSortedPositions(
List<(float, float)> positions, (float, float) position)
{
return IsInSortedPositions(positions, position, 0, positions.Count - 1);
}
public static bool IsInSortedPositions(
List<(float, float)> positions, (float, float) position, int startIndex, int endIndex)
{
if (startIndex > endIndex) return false;
int midIndex = (startIndex + endIndex) / 2;
(float midValue1, float midValue2) = positions[midIndex];
if (position.Item1 > midValue1)
{
return IsInSortedPositions(positions, position, midIndex + 1, endIndex);
}
else if (position.Item1 < midValue1)
{
return IsInSortedPositions(positions, position, startIndex, midIndex - 1);
}
else
{
return position.Item2 == midValue2;
}
}
public static float IsInSortedPositions2(
List<(float, float)> positions, (float, float) position)
{
return IsInSortedPositions2(positions, position, 0, positions.Count - 1);
}
public static float IsInSortedPositions2(
List<(float, float)> positions, (float, float) position, int startIndex, int endIndex)
{
if (startIndex > endIndex) return float.MaxValue;
int midIndex = (startIndex + endIndex) / 2;
(float midValue1, float midValue2) = positions[midIndex];
if (position.Item1 > midValue1)
{
return IsInSortedPositions2(positions, position, midIndex + 1, endIndex);
}
else if (position.Item1 < midValue1)
{
return IsInSortedPositions2(positions, position, startIndex, midIndex - 1);
}
else
{
return Math.Abs(position.Item2 - midValue2);
}
}
public static List<int> GetAngleDiffs(int mid, int range, int multiplier = 1)
{
List<int> angleDiffs = new List<int>();
for (int i = -1 * range; i <= range; i++)
{
int angleDiff = mid + i * multiplier * 16;
angleDiffs.Add(angleDiff);
}
return angleDiffs;
}
public static List<List<int>> GetAngleDiffsList(int length, int mid, int range)
{
List<int> angleDiffs = new List<int>();
for (int i = -1 * range; i <= range; i++)
{
int angleDiff = mid + i * 16;
angleDiffs.Add(angleDiff);
}
List<List<int>> output = new List<List<int>>();
GetAngleDiffsListRecursion(output, new List<int>(), length, angleDiffs);
return output;
}
public static void GetAngleDiffsListRecursion(
List<List<int>> output, List<int> state, int length, List<int> values)
{
if (state.Count == length)
{
List<int> temp = new List<int>(state);
output.Add(temp);
return;
}
foreach (int value in values)
{
state.Add(value);
GetAngleDiffsListRecursion(output, state, length, values);
state.RemoveAt(state.Count - 1);
}
}
public static void TestBruteForceMovingToSpot()
{
Config.Print("START BRUTE FORCE");
List<(float, float)> successPositions = GetSuccessFloatPositions();
bool boolValue = IsInSortedPositions(
successPositions, (-1379.0001f, 0f));
List<List<int>> angleDiffsList = GetAngleDiffsList(7, 96, 5);
angleDiffsList.ForEach(list => list.Add(0));
// List<int> angleDiffs = new List<int>() { 89, 92, 96, 91, 88, 90, 92, 2048 };
//float minDiff = float.MaxValue;
for (int i = 0; i < angleDiffsList.Count; i++)
{
List<int> angleDiffs = angleDiffsList[i];
(float x, float z) = MoveIntoSpot(angleDiffs);
float diff = IsInSortedPositions2(successPositions, (x, z));
if (diff < 0.0002f)
{
Config.Print("{0}: [{1}] ({2},{3})", i, (double)diff, (double)x, (double)z);
MoveIntoSpot(angleDiffs, true);
Config.Print();
}
}
Config.Print("END BRUTE FORCE");
}
public static (float x, float z) MoveIntoSpot(List<int> angleDiffs, bool print = false)
{
float startX = -1323.72937011719f;
float startY = -2434f;
float startZ = -1579.7392578125f;
float startXSpeed = 2.64395904541016f;
float startYSpeed = 0f;
float startZSpeed = -11.6073894500732f;
float startHSpeed = 11.9047050476074f;
ushort startAngle = 30442;
float objStartX = -1301.52001953125f;
float objStartZ = -1677.24182128906f;
MarioState marioState = new MarioState(
startX, startY, startZ,
startXSpeed, startYSpeed, startZSpeed, startHSpeed,
0, 0, 0,
startAngle, 0, null, null, 0);
MarioBobombState marioBobombState = new MarioBobombState(
marioState, objStartX, objStartZ);
MarioBobombState prevMarioBobombState = null;
for (int i = 0; i < 8; i++)
{
prevMarioBobombState = marioBobombState;
marioBobombState = ApplyInputToMarioBobombState(marioBobombState, angleDiffs[i]);
if (print)
{
//Config.Print((43226 + i) + ": " + marioBobombState);
Config.Print(
"{0} {1} {2} {3} {4}",
(43227 + i),
(double)marioBobombState.MarioState.X,
(double)marioBobombState.MarioState.Y,
(double)marioBobombState.MarioState.Z,
(double)marioBobombState.MarioState.MarioAngle);
}
}
//Config.Print(marioBobombState);
MarioState m = prevMarioBobombState.MarioState;
(float holpX, float holpY, float holpZ) = HolpCalculator.GetHolpForWalking(58, m.X, m.Y, m.Z, m.MarioAngle);
MarioState m2 = marioBobombState.MarioState;
float marioX = m2.X;
float marioY = m2.Y;
float marioZ = m2.Z;
ushort marioAngle = m2.MarioAngle;
float marioRadius = 37;
float bobombX = holpX;
float bobombY = holpY;
float bobombZ = holpZ;
float padding = -5;
for (int i = 1; i <= 4; i++)
{
if (i == 2)
{
ushort bobombAngle = m.MarioAngle;
float delX = 5 * InGameTrigUtilities.InGameSine(bobombAngle);
float delZ = 5 * InGameTrigUtilities.InGameCosine(bobombAngle);
bobombX += delX;
bobombZ += delZ;
}
float bobombRadius = 65 * (1f + 0.2f * i);
(marioX, marioZ) = ObjectCalculator.GetHardObjectDisplacement(
marioX, marioZ, marioRadius, 0, bobombX, bobombZ, bobombRadius, padding);
//Config.Print("{0}: ({1},{2})", i, (double)marioX, (double)marioZ);
if (print)
{
if (i == 1)
{
for (int j = 0; j < 4; j++)
{
Config.Print(
"{0} {1} {2} {3} {4}",
43235 + j,
(double)marioX,
(double)m2.Y,
(double)marioZ,
(double)m2.MarioAngle);
}
}
else
{
Config.Print(
"{0} {1} {2} {3} {4}",
43237 + i,
(double)marioX,
(double)m2.Y,
(double)marioZ,
(double)m2.MarioAngle);
}
}
}
return (marioX, marioZ);
}
public class MarioBobombState
{
public readonly MarioState MarioState;
public readonly float ObjX;
public readonly float ObjZ;
public MarioBobombState(MarioState marioState, float objX, float objZ)
{
MarioState = marioState;
ObjX = objX;
ObjZ = objZ;
}
public override string ToString()
{
return String.Format("{0} obj=({1},{2})", MarioState, (double)ObjX, (double)ObjZ);
}
}
public static MarioBobombState ApplyInputToMarioBobombState(
MarioBobombState initialState, Input input, ushort nextCameraAngle)
{
// get vars
MarioState marioState = initialState.MarioState;
float objX = initialState.ObjX;
float objZ = initialState.ObjZ;
// walking
MarioState afterWalkingTemp = GroundMovementCalculator.ApplyInput(marioState, input);
// doesn't move due to ceiling
MarioState afterWalking = afterWalkingTemp.WithPosition(marioState.X, marioState.Y, marioState.Z);
// displacement
(float afterDisplacementX, float afterDisplacementZ) =
ObjectCalculator.GetHardObjectDisplacement(
afterWalking.X, afterWalking.Z, 37, afterWalking.MarioAngle,
objX, objZ, 65 * 1.2f, -5);
// relative position
(float relX, float relY, float relZ) = ObjectCalculator.GetRelativePosition(
afterDisplacementX, afterWalking.Y, afterDisplacementZ,
afterWalking.MarioAngle, 0, 60, 100);
MarioState finalMarioState = new MarioState(
afterDisplacementX, afterWalking.Y, afterDisplacementZ,
afterWalking.XSpeed, afterWalking.YSpeed, afterWalking.ZSpeed, afterWalking.HSpeed,
afterWalking.SlidingSpeedX, afterWalking.SlidingSpeedZ, afterWalking.SlidingAngle,
afterWalking.MarioAngle, nextCameraAngle, null, null, 0);
MarioBobombState finalMarioBobombState = new MarioBobombState(finalMarioState, relX, relZ);
return finalMarioBobombState;
}
public static MarioBobombState ApplyInputToMarioBobombState(
MarioBobombState initialState, int angleDiff)
{
// get vars
MarioState marioState = initialState.MarioState;
float objX = initialState.ObjX;
float objZ = initialState.ObjZ;
// walking
MarioState afterWalkingTemp = GroundMovementCalculator.ApplyInput(marioState, angleDiff);
// doesn't move due to ceiling
MarioState afterWalking = afterWalkingTemp.WithPosition(marioState.X, marioState.Y, marioState.Z);
// displacement
(float afterDisplacementX, float afterDisplacementZ) =
ObjectCalculator.GetHardObjectDisplacement(
afterWalking.X, afterWalking.Z, 37, afterWalking.MarioAngle,
objX, objZ, 65 * 1.2f, -5);
// relative position
(float relX, float relY, float relZ) = ObjectCalculator.GetRelativePosition(
afterDisplacementX, afterWalking.Y, afterDisplacementZ,
afterWalking.MarioAngle, 0, 60, 100);
MarioState finalMarioState = new MarioState(
afterDisplacementX, afterWalking.Y, afterDisplacementZ,
afterWalking.XSpeed, afterWalking.YSpeed, afterWalking.ZSpeed, afterWalking.HSpeed,
afterWalking.SlidingSpeedX, afterWalking.SlidingSpeedZ, afterWalking.SlidingAngle,
afterWalking.MarioAngle, 0, null, null, 0);
MarioBobombState finalMarioBobombState = new MarioBobombState(finalMarioState, relX, relZ);
return finalMarioBobombState;
}
public static void CalculateTylerChallenge()
{
float startX = 0f;
float startY = 251.947235107422f;
float startZ = -12.3211631774902f;
float startXSpeed = 0f;
float startYSpeed = 7.99412536621094f;
float startZSpeed = 2.85620307922363f;
float startHSpeed = 2.85620307922363f;
ushort marioAngle = 0;
ushort cameraAngle = 32768;
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
0,
0,
0,
marioAngle,
cameraAngle,
null,
null,
0);
int lastIndex = -1;
List<Input> inputs = CalculatorUtilities.GetInputRange(0, 0, -65, 65);
float bestDiff = 1;
Queue<MarioState> queue = new Queue<MarioState>();
HashSet<MarioState> alreadySeen = new HashSet<MarioState>();
queue.Enqueue(startState);
while (queue.Count != 0)
{
MarioState dequeue = queue.Dequeue();
List<MarioState> nextStates = inputs.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input));
foreach (MarioState state in nextStates)
{
if (alreadySeen.Contains(state)) continue;
if (state.Index != lastIndex)
{
if (state.Index == 5) return;
lastIndex = state.Index;
Config.Print("Now at index " + lastIndex);
}
float diff = (float)MoreMath.GetDistanceBetween(state.X, state.Z, 0, 0);
if (diff < bestDiff)
{
bestDiff = diff;
Config.Print("New best diff of " + diff);
Config.Print(state.GetLineage());
Config.Print();
}
alreadySeen.Add(state);
queue.Enqueue(state);
}
}
Config.Print("FAILED");
}
public static void TestButtSlide()
{
float startX = 3182.2568359375f;
float startY = 2087.14599609375f;
float startZ = -1143.09411621094f;
float startXSpeed = -4.60398626327515f;
float startYSpeed = 0f;
float startZSpeed = 16.3799514770508f;
float startHSpeed = 17.014684677124f;
float startXSlidingSpeed = -4.60398626327515f;
float startZSlidingSpeed = 16.3799514770508f;
ushort startYawMoving = 62676;
ushort startYawFacing = 62676;
ushort startCentAngle = 19725;
float goalY = 2322.00244140625f;
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
startXSlidingSpeed,
startZSlidingSpeed,
startYawMoving,
startYawFacing,
startCentAngle,
null,
null,
0);
startState = MarioState.CreateMarioState();
Input input = new Input(0, 0);
TriangleDataModel floor = TriangleDataModel.CreateLazy(0x80198DA0);
TriangleDataModel wall = TriangleDataModel.CreateLazy(0x801962E0);
List<TriangleDataModel> walls = new List<TriangleDataModel>() { wall };
/////////////////////////////////
int indexRadius = 10;
int spreadMultiplier = 20;
/////////////////////////////////
List<int> angleDiffs = Enumerable.Range(0, 2 * indexRadius + 1).ToList().ConvertAll(
index => spreadMultiplier * 16 * (index - indexRadius));
Queue<MarioState> queue = new Queue<MarioState>();
queue.Enqueue(startState);
float bestMin = float.MaxValue;
int currentIndex = 0;
while (queue.Count > 0)
{
MarioState dequeue = queue.Dequeue();
if (dequeue.Index != currentIndex)
{
currentIndex = dequeue.Index;
Config.Print("now at index " + currentIndex);
}
List<float> heights = GetPossibleHeights(dequeue.Y, dequeue.HSpeed);
float min = heights.Min(height => Math.Abs(height - goalY));
if (min < bestMin)
{
bestMin = min;
Config.Print("new best min of " + min + " using " + dequeue.GetLineage());
}
if (dequeue.Index >= 4) continue;
List<MarioState> successors = angleDiffs.ConvertAll(
angleDiff => GroundMovementCalculator.PerformButtSlide(dequeue, angleDiff, floor, walls));
successors.ForEach(successor => queue.Enqueue(successor));
}
Config.Print("DONE");
}
private static List<float> GetPossibleHeights(float initialY, float hSpeed)
{
float initialYSpeed = 42 + hSpeed / 4;
List<float> heights = new List<float>();
for (int numAHeldFrames = 1; numAHeldFrames < 20; numAHeldFrames++)
{
float y = initialY;
float ySpeed = initialYSpeed;
for (int frame = 0; y >= initialY; frame++)
{
y += ySpeed / 4;
if (ySpeed < 0) heights.Add(y);
y += ySpeed / 4;
if (ySpeed < 0) heights.Add(y);
y += ySpeed / 4;
if (ySpeed < 0) heights.Add(y);
y += ySpeed / 4;
if (ySpeed < 0) heights.Add(y);
if (frame >= numAHeldFrames && ySpeed > 20) // fast gravity
{
ySpeed /= 4;
}
else // slow gravity
{
ySpeed -= 4;
if (ySpeed < -75) ySpeed = -75;
}
}
}
return heights;
}
public static void CalculateMovementForCcmWallGap()
{
float startX = 3122f;
float startY = 2294.47412109375f;
float startZ = -904.069885253906f;
float startXSpeed = -5.59027242660522f;
float startYSpeed = 25.04638671875f;
float startZSpeed = 10.3451957702637f;
float startHSpeed = 11.6010656356812f;
float startXSlidingSpeed = -5.59027242660522f;
float startZSlidingSpeed = 10.3451957702637f;
ushort startYawMoving = 62083;
ushort startYawFacing = 62083;
ushort startCentAngle = 20073;
Dictionary<int, ushort> cameraAngles =
new Dictionary<int, ushort>()
{
[0] = 20073,
[1] = 20081,
[2] = 20097,
[3] = 20102,
[4] = 20115,
[5] = 20128,
[6] = 20140,
};
float goalX = 3122;
float goalY = 2322.00244140625f;
float goalZ = -854.901306152344f;
int xInput = -19;
int zInput = 18;
int xRadius = 5;
int zRadius = 5;
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
startXSlidingSpeed,
startZSlidingSpeed,
startYawMoving,
startYawFacing,
startCentAngle,
null,
null,
0);
int lastIndex = -1;
List<Input> inputs = CalculatorUtilities.GetInputRange(xInput - xRadius, xInput + xRadius, zInput - zRadius, zInput + zRadius);
float bestDiff = float.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
queue.Enqueue(startState);
while (queue.Count > 0)
{
MarioState dequeue = queue.Dequeue();
int numQSteps = dequeue.Index == 4 ? 3 : 4;
List<MarioState> nextStates = inputs.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input, numQSteps));
nextStates = nextStates.ConvertAll(state => state.WithCameraAngle(cameraAngles[state.Index]));
foreach (MarioState state in nextStates)
{
if (state.Index > 5) continue;
if (state.Index != lastIndex)
{
lastIndex = state.Index;
Config.Print("Now at index " + lastIndex);
}
if (state.Index == 5)
{
float diff = (float)MoreMath.GetDistanceBetween(state.X, state.Z, goalX, goalZ);
if (diff < bestDiff)
{
bestDiff = diff;
bestState = state;
Config.Print("Diff of " + bestDiff + " is: " + bestState.GetLineage());
}
}
queue.Enqueue(state);
}
}
Config.Print("DONE");
}
public static void CalculateMovementForBobombSoftlock()
{
float startX = -5867.13623046875f;
float startY = 380.164794921875f;
float startZ = 5501.29931640625f;
float startXSpeed = 0.593941569328308f;
float startYSpeed = -1.07592010498047f;
float startZSpeed = 3.81162405014038f;
float startHSpeed = 3.17501330375671f;
float startXSlidingSpeed = 0.593941569328308f;
float startZSlidingSpeed = 3.81162405014038f;
ushort startYawMoving = 60856;
ushort startYawFacing = 60856;
ushort startCentAngle = 47052;
Dictionary<int, ushort> cameraAngles =
new Dictionary<int, ushort>()
{
[0] = 47052,
[1] = 47052,
[2] = 47052,
[3] = 47052,
[4] = 47072,
[5] = 47072,
[6] = 47072,
[7] = 47072,
[8] = 47072,
[9] = 47072,
[10] = 47072,
};
float goalX = -5857.476563f;
float goalY = 128f;
float goalZ = 5512.975098f;
int xInput = -16;
int zInput = 45;
int xRadius = 3;
int zRadius = 3;
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
startXSlidingSpeed,
startZSlidingSpeed,
startYawMoving,
startYawFacing,
startCentAngle,
null,
null,
0);
int lastIndex = -1;
List<Input> inputs = CalculatorUtilities.GetInputRange(xInput - xRadius, xInput + xRadius, zInput - zRadius, zInput + zRadius);
float bestDiff = float.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
queue.Enqueue(startState);
while (queue.Count > 0)
{
MarioState dequeue = queue.Dequeue();
if (dequeue.Index != lastIndex)
{
lastIndex = dequeue.Index;
Config.Print("Now at index " + lastIndex);
}
if (dequeue.Index == 4)
{
MarioState state5 = AirMovementCalculator.ApplyInput(dequeue, new Input(0, 0));
MarioState state6 = AirMovementCalculator.ApplyInput(state5, new Input(0, 0));
MarioState state7 = AirMovementCalculator.ApplyInput(state6, new Input(0, 0));
MarioState state8 = AirMovementCalculator.ApplyInput(state7, new Input(0, 0));
MarioState state9 = AirMovementCalculator.ApplyInput(state8, new Input(0, 0));
MarioState state10 = AirMovementCalculator.ApplyInput(state9, new Input(0, 0));
MarioState state11 = AirMovementCalculator.ApplyInput(state10, new Input(0, 0));
if (state11.HSpeed != 0) continue;
float diff = (float)MoreMath.GetDistanceBetween(state11.X, state11.Z, goalX, goalZ);
if (diff < bestDiff)
{
bestDiff = diff;
bestState = state11;
Config.Print("Diff of " + bestDiff + " is: " + bestState.GetLineage());
}
continue;
}
List<MarioState> nextStates = inputs.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input));
nextStates = nextStates.ConvertAll(state => state.WithCameraAngle(cameraAngles[state.Index]));
nextStates = ControlUtilities.Randomize(nextStates);
nextStates.ForEach(state => queue.Enqueue(state));
}
Config.Print("DONE");
}
public static void CalculateMovementForBobombSoftlockGoomba()
{
float startX = -5504.3388671875f;
float startY = 368.588073730469f;
float startZ = 5443.33837890625f;
float startXSpeed = 1.67060232162476f;
float startYSpeed = -18.9632110595703f;
float startZSpeed = 15.7245416641235f;
float startHSpeed = 15.8130369186401f;
float startXSlidingSpeed = 1.67060232162476f;
float startZSlidingSpeed = 15.7245416641235f;
ushort startYawMoving = 1106;
ushort startYawFacing = 1106;
ushort startCentAngle = 1106;
Dictionary<int, ushort> cameraAngles =
new Dictionary<int, ushort>()
{
[0] = 1106,
[1] = 1106,
[2] = 1106,
[3] = 1106,
[4] = 1106,
[5] = 1106,
};
float goalX = -5496.86669921875f;
float goalY = 268.735046386719f;
float goalZ = 5506.06005859375f;
int xInput = 0;
int zInput = -38;
int xRadius = 9;
int zRadius = 4;
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
startXSlidingSpeed,
startZSlidingSpeed,
startYawMoving,
startYawFacing,
startCentAngle,
null,
null,
0);
int lastIndex = -1;
List<Input> inputs = CalculatorUtilities.GetInputRange(xInput - xRadius, xInput + xRadius, zInput - zRadius, zInput + zRadius);
float bestDiff = float.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
queue.Enqueue(startState);
while (queue.Count > 0)
{
MarioState dequeue = queue.Dequeue();
if (dequeue.Index != lastIndex)
{
lastIndex = dequeue.Index;
Config.Print("Now at index " + lastIndex);
}
if (dequeue.Index == 4)
{
float diff = Math.Abs(dequeue.Z - goalZ);
if (diff <= bestDiff)
{
bestDiff = diff;
bestState = dequeue;
Config.Print("Diff of " + bestDiff + " is: " + bestState.GetLineage());
}
continue;
}
List<MarioState> nextStates = inputs.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input));
nextStates = nextStates.ConvertAll(state => state.WithCameraAngle(cameraAngles[state.Index]));
nextStates = ControlUtilities.Randomize(nextStates);
nextStates.ForEach(state => queue.Enqueue(state));
}
Config.Print("DONE");
}
public static void CalculateMovementForLLLPoleSoftlock()
{
float startX = 1280.70056152344f;
float startY = 4464.54296875f;
float startZ = -2482.5f;
float startXSpeed = 13.7614297866821f;
float startYSpeed = 14f;
float startZSpeed = -15.9914541244507f;
float startHSpeed = 18.5792484283447f;
float startXSlidingSpeed = 13.7614297866821f;
float startZSlidingSpeed = -15.9914541244507f;
ushort startYawMoving = 59938;
ushort startYawFacing = 20218;
ushort startCentAngle = 59680;
float poleX = 1413f;
float poleY = 3222f;
float poleZ = -2190f;
uint wallAddress = 0x8019AB30;
List<TriangleDataModel> walls = new List<TriangleDataModel>() { TriangleDataModel.CreateLazy(wallAddress) };
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
startXSlidingSpeed,
startZSlidingSpeed,
startYawMoving,
startYawFacing,
startCentAngle,
null,
null,
0);
int lastIndex = -1;
List<int> angleDiffs = GetAngleDiffs(14500, 14, 3);
//List<int> angleDiffs = GetAngleDiffs((int)SpecialConfig.CustomX, 0);
float bestDiff = float.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
queue.Enqueue(startState);
List<(float x, float y, float z)> endingPositions = new List<(float x, float y, float z)>();
while (queue.Count > 0)
{
MarioState dequeue = queue.Dequeue();
if (dequeue.Index != lastIndex)
{
lastIndex = dequeue.Index;
Config.Print("Now at index " + lastIndex);
}
if (dequeue.Index == 4)
{
dequeue = dequeue.WithDive();
}
if (dequeue.Index == 5)
{
(double sidewaysDist, double forwardsDist) =
MoreMath.GetSidewaysAndForwardsDist(poleX, poleZ, dequeue.X, dequeue.Z, 34384);
float goalSideways = -0.0041583f;
//float diff = (float)Math.Abs(sidewaysDist - goalSideways);
float diff = (float)MoreMath.GetDistanceBetween(dequeue.X, dequeue.Z, 1355.78442382813, -2556.30688476563);
//float threshold = 0.002f;
float threshold = bestDiff;
if (diff <= threshold && !endingPositions.Contains((dequeue.X, dequeue.Y, dequeue.Z)))
{
endingPositions.Add((dequeue.X, dequeue.Y, dequeue.Z));
bestDiff = diff;
bestState = dequeue;
Config.Print("Diff of " + bestDiff + " is: " + bestState.GetLineage());
//Config.Print("{0},{1},{2}", (double)dequeue.X, (double)dequeue.Y, (double)dequeue.Z);
}
continue;
}
List<MarioState> nextStates = angleDiffs.ConvertAll(
angleDiff => AirMovementCalculator.ApplyInput(dequeue, angleDiff, wallTris: walls));
nextStates = ControlUtilities.Randomize(nextStates);
nextStates.ForEach(state => queue.Enqueue(state));
}
Config.Print("DONE");
}
public static void CalculateMovementForCCMPenguinSoftlock()
{
float startX = 3170.953125f;
float startY = -4382f;
float startZ = -370.703369140625f;
float startXSpeed = 1.92227721214294f;
float startYSpeed = -42f;
float startZSpeed = 8.9207706451416f;
float startHSpeed = -0.620457470417023f;
float startXSlidingSpeed = 1.92227721214294f;
float startZSlidingSpeed = 8.9207706451416f;
ushort startYawMoving = 33417;
ushort startYawFacing = 50668;
ushort startCentAngle = 28319;
float penguinX = 3211.611328125f;
float penguinY = -4806.134765625f;
float penguinZ = -460.21923828125f;
uint wallAddress1 = 0x8019B470;
uint wallAddress2 = 0x8019B2F0;
List<TriangleDataModel> walls =
new List<TriangleDataModel>()
{
TriangleDataModel.CreateLazy(wallAddress1),
TriangleDataModel.CreateLazy(wallAddress2),
};
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
startXSlidingSpeed,
startZSlidingSpeed,
startYawMoving,
startYawFacing,
startCentAngle,
null,
null,
0);
int lastIndex = -1;
List<int> angleDiffs = GetAngleDiffs(-2800, 5, 3);
//List<int> angleDiffs = GetAngleDiffs((int)SpecialConfig.CustomX, 0);
float bestDiff = float.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
queue.Enqueue(startState);
List<(float x, float y, float z)> endingPositions = new List<(float x, float y, float z)>();
while (queue.Count > 0)
{
MarioState dequeue = queue.Dequeue();
if (dequeue.Index != lastIndex)
{
lastIndex = dequeue.Index;
Config.Print("Now at index " + lastIndex);
}
if (dequeue.Index == 4)
{
dequeue = dequeue.WithDive();
}
if (dequeue.Index == 6)
{
float xDistToMario = -1 * (dequeue.X - penguinX);
float zDistToMario = dequeue.Z - penguinZ;
float diff = Math.Abs(xDistToMario - zDistToMario);
//float threshold = 0.002f;
float threshold = bestDiff;
if (diff <= threshold && !endingPositions.Contains((dequeue.X, dequeue.Y, dequeue.Z)))
{
endingPositions.Add((dequeue.X, dequeue.Y, dequeue.Z));
bestDiff = diff;
bestState = dequeue;
Config.Print("Diff of " + bestDiff + " is: " + bestState.GetLineage());
//Config.Print("{0},{1},{2}", (double)dequeue.X, (double)dequeue.Y, (double)dequeue.Z);
}
continue;
}
List<MarioState> nextStates = angleDiffs.ConvertAll(
angleDiff => AirMovementCalculator.ApplyInput(dequeue, angleDiff, wallTris: walls));
nextStates = ControlUtilities.Randomize(nextStates);
nextStates.ForEach(state => queue.Enqueue(state));
}
Config.Print("DONE");
}
public static void TestBobomb()
{
BobombState bobomb = new BobombState(
x: -1900,
y: 0,
z: 3450,
xSpeed: 0,
ySpeed: 0,
zSpeed: 0,
hSpeed: 0,
yaw: 0,
homeX: -1900,
homeY: 0,
homeZ: 3450);
for (int i = 0; i < 1000; i++)
{
Config.Print("i={0} bobomb={1}", i, bobomb);
bobomb.bobomb_act_patrol();
}
}
public static void TestBobomb3()
{
//// x=-1900 z=3450 yaw=23040 lastChangeTime=7069 mins=3 bestMins=3
//BobombState bobomb = new BobombState(
// x: -1900,
// y: 0,
// z: 3450,
// xSpeed: 0,
// ySpeed: 0,
// zSpeed: 0,
// hSpeed: 0,
// yaw: 9216,
// homeX: -1900,
// homeY: 0,
// homeZ: 3450);
//for (int i = 0; i < 10000; i++)
//{
// Config.Print("{0}: {1}", i, bobomb);
// bobomb.bobomb_act_patrol();
//}
BobombState bobomb2 = new BobombState(
x: -1900,
y: 0,
z: 3450,
xSpeed: 0,
ySpeed: 0,
zSpeed: 0,
hSpeed: 0,
yaw: 9216,
homeX: -1900,
homeY: 0,
homeZ: 3450);
int lastChangeTime = GetLastAngleChangeTime(bobomb2, 10000);
Config.Print("lastChangeTime=" + lastChangeTime);
}
public static void TestBobomb2()
{
List<string> superlatives = new List<string>();
int bestMins = 0;
for (int xDiff = 0; xDiff < 100; xDiff += 20)
{
for (int zDiff = 0; zDiff < 100; zDiff += 20)
{
for (int yaw = 0; yaw < 65536; yaw += 512)
{
float x = -1900 + xDiff;
float z = 3450 + zDiff;
BobombState bobomb = new BobombState(
x: x,
y: 0,
z: z,
xSpeed: 0,
ySpeed: 0,
zSpeed: 0,
hSpeed: 0,
yaw: (ushort)yaw,
homeX: x,
homeY: 0,
homeZ: z);
int lastChangeTime = GetLastAngleChangeTime(bobomb, 10000);
int mins = lastChangeTime / 30 / 60;
if (mins > bestMins)
{
bestMins = mins;
}
string output = string.Format(
"x={0} z={1} yaw={2} lastChangeTime={3} mins={4} bestMins={5}",
x, z, yaw, lastChangeTime, mins, bestMins);
Config.Print(output);
if (mins > 10)
{
superlatives.Add(output);
}
}
}
}
Config.Print("SUPERLATIVES START");
superlatives.ForEach(output => Config.Print(output));
Config.Print("SUPERLATIVES END");
}
public static int GetLastAngleChangeTime(BobombState bobomb, int numIterations)
{
List<ushort> previousAngles = new List<ushort>();
int lastAngleChangeTime = 0;
int lastTimer = 0;
for (int i = 0; i < numIterations; i++)
{
ushort angle = GetAngleToFarPoint(bobomb);
bool alreadyHaveIt = previousAngles.Any(prevAngle => MoreMath.GetAngleDistance(angle, prevAngle) < 5000);
//Config.Print(
// "Does {0} contain anything close to {1}? {2}",
// previousAngles.Count == 0 ? "{}" : "{" + string.Join(",", previousAngles) + "}",
// angle,
// alreadyHaveIt);
if (!alreadyHaveIt)
{
previousAngles.Add(angle);
lastAngleChangeTime = i;
lastTimer = bobomb.Timer;
}
}
return lastTimer;
}
public static ushort GetAngleToFarPoint(BobombState bobomb)
{
List<(float x, float y, float z, double dist)> dists = new List<(float x, float y, float z, double dist)>();
while (true)
{
bobomb.bobomb_act_patrol();
//Config.Print("bobomb = " + bobomb);
double dist = MoreMath.GetDistanceBetween(bobomb.HomeX, bobomb.HomeZ, bobomb.X, bobomb.Z);
dists.Add((bobomb.X, bobomb.Y, bobomb.Z, dist));
if (dists.Count >= 4) dists.RemoveAt(0);
if (dists.Count == 3)
{
double dist1 = dists[0].dist;
double dist2 = dists[1].dist;
double dist3 = dists[2].dist;
if (dist2 > dist1 && dist2 > dist3 && dist2 > 200)
{
return MoreMath.AngleTo_AngleUnitsRounded(
bobomb.HomeX, bobomb.HomeZ, dists[1].x, dists[1].z);
}
}
}
}
public static void TestX()
{
float startX = -2474.70849609375f;
float startY = -1909.26416015625f;
float startZ = 3520.89599609375f;
float startXSpeed = 9.54115295410156f;
float startYSpeed = 2.07013988494873f;
float startZSpeed = 0f;
float startHSpeed = 9.54115295410156f;
float startXSlidingSpeed = 9.54115295410156f;
float startZSlidingSpeed = 0f;
ushort startYawMoving = 16384;
ushort startYawFacing = 16384;
ushort startCentAngle = 49152;
float goalX = -2436.54248046875f;
float goalZ = 4730.4560546875f;
int xInput = 0;
int zInput = 25;
int xRadius = 0;
int zRadius = 15;
List<Input> inputs = CalculatorUtilities.GetInputRange(xInput - xRadius, xInput + xRadius, zInput - zRadius, zInput + zRadius);
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
startXSlidingSpeed,
startZSlidingSpeed,
startYawMoving,
startYawFacing,
startCentAngle,
null,
null,
0);
int counter = 0;
int lastIndex = -1;
float bestDiff = float.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
queue.Enqueue(startState);
while (queue.Count > 0)
{
MarioState dequeue = queue.Dequeue();
if (dequeue.Index != lastIndex)
{
lastIndex = dequeue.Index;
Config.Print("Now at index " + lastIndex);
}
if (dequeue.Index == 4)
{
counter++;
float diff = Math.Abs(dequeue.X - goalX);
if (diff <= bestDiff)
{
bestDiff = diff;
bestState = dequeue;
Config.Print("Diff of " + bestDiff + " is: " + bestState.GetLineage());
}
continue;
}
List<MarioState> nextStates = inputs.ConvertAll(
input => AirMovementCalculator.ApplyInput(dequeue, input));
nextStates = ControlUtilities.Randomize(nextStates);
nextStates.ForEach(state => queue.Enqueue(state));
}
Config.Print("DONE having considered " + counter + " paths");
}
public static void TestZ()
{
float startX = -2436.54248046875f;
float startY = -1835.79418945313f;
float startZ = 4651.9716796875f;
float startXSpeed = 0f;
float startYSpeed = 18.0824966430664f;
float startZSpeed = 18.9386978149414f;
float startHSpeed = 18.9386978149414f;
float startXSlidingSpeed = 0f;
float startZSlidingSpeed = 18.9386978149414f;
ushort startYawMoving = 0;
ushort startYawFacing = 0;
ushort startCentAngle = 32768;
float goalX = -2436.54248046875f;
float goalZ = 4730.4560546875f;
int xInput = 0;
int zInput = 42;
int xRadius = 0;
int zRadius = 15;
List<Input> inputs = CalculatorUtilities.GetInputRange(xInput - xRadius, xInput + xRadius, zInput - zRadius, zInput + zRadius);
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
startXSlidingSpeed,
startZSlidingSpeed,
startYawMoving,
startYawFacing,
startCentAngle,
null,
null,
0);
int counter = 0;
int lastIndex = -1;
float bestDiff = float.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
queue.Enqueue(startState);
while (queue.Count > 0)
{
MarioState dequeue = queue.Dequeue();
if (dequeue.Index != lastIndex)
{
lastIndex = dequeue.Index;
Config.Print("Now at index " + lastIndex);
}
if (dequeue.Index == 4)
{
counter++;
float diff = Math.Abs(dequeue.Z - goalZ);
if (diff <= bestDiff)
{
bestDiff = diff;
bestState = dequeue;
Config.Print("Diff of " + bestDiff + " is: " + bestState.GetLineage());
}
continue;
}
List<MarioState> nextStates = inputs.ConvertAll(
input => AirMovementCalculator.ApplyInput(dequeue, input));
nextStates = ControlUtilities.Randomize(nextStates);
nextStates.ForEach(state => queue.Enqueue(state));
}
Config.Print("DONE having considered " + counter + " paths");
}
public static void TestBitfsPosition1()
{
float startX = -2320.41186523438f;
float startY = -2845.64770507813f;
float startZ = -715f;
float startXSpeed = 22.2516231536865f;
float startYSpeed = -22f;
float startZSpeed = 0f;
float startHSpeed = 22.2516231536865f;
float startXSlidingSpeed = 22.2516231536865f;
float startZSlidingSpeed = 0f;
ushort startYawMoving = 16384;
ushort startYawFacing = 16384;
ushort startCentAngle = 49152;
float goalX = -2250.10009765625f;
float goalZ = -715f;
int xInput = 0;
int zInput = 40;
int xRadius = 0;
int zRadius = 25;
List<Input> inputs = CalculatorUtilities.GetInputRange(xInput - xRadius, xInput + xRadius, -20, 75);
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
startXSlidingSpeed,
startZSlidingSpeed,
startYawMoving,
startYawFacing,
startCentAngle,
null,
null,
0);
int counter = 0;
int lastIndex = -1;
double bestDiff = double.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
queue.Enqueue(startState);
while (queue.Count > 0)
{
MarioState dequeue = queue.Dequeue();
if (dequeue.Index != lastIndex)
{
lastIndex = dequeue.Index;
Config.Print("Now at index " + lastIndex);
}
if (dequeue.Index == 4)
{
counter++;
double diff = Math.Abs(dequeue.X - goalX);
if (diff < bestDiff)
{
bestDiff = diff;
bestState = dequeue;
Config.Print("Diff of " + bestDiff + " is: " + bestState.GetLineage());
}
continue;
}
int numQSteps = dequeue.Index == 3 ? 1 : 4;
List<MarioState> nextStates = inputs.ConvertAll(
input => AirMovementCalculator.ApplyInput(dequeue, input, numQSteps: numQSteps));
nextStates = ControlUtilities.Randomize(nextStates);
nextStates.ForEach(state => queue.Enqueue(state));
}
Config.Print("DONE having considered " + counter + " paths");
}
public static void TestTtcTreadmillPosition()
{
float startX = 2031f;
float startY = -2523.00024414063f;
float startZ = -444.763092041016f;
float startXSpeed = 0f;
float startYSpeed = -24f;
float startZSpeed = 0f;
float startHSpeed = 0f;
float startXSlidingSpeed = 0f;
float startZSlidingSpeed = 0f;
ushort startYawMoving = 16403;
ushort startYawFacing = 16403;
ushort startCentAngle = 53619;
ushort centAngle2 = 53629;
float goalX = 2031f;
float goalY = -2554.00024414063f;
float goalZ = -439.64697265625f;
List<Input> inputs1 = CalculatorUtilities.GetInputRange(0, 70, -70, 70);
List<Input> inputs2 = CalculatorUtilities.GetInputRange(0, 127, -70, 70);
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
startXSlidingSpeed,
startZSlidingSpeed,
startYawMoving,
startYawFacing,
startCentAngle,
null,
null,
0);
int counter = 0;
int lastIndex = -1;
double bestDiff = double.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
queue.Enqueue(startState);
while (queue.Count > 0)
{
MarioState dequeue = queue.Dequeue();
if (dequeue.Index != lastIndex)
{
lastIndex = dequeue.Index;
Config.Print("Now at index " + lastIndex);
}
if (dequeue.Index == 1)
{
double diff = Math.Abs(dequeue.Z - goalZ);
if (diff > 3) continue;
if (dequeue.Z > -441) continue;
}
if (dequeue.Index == 2)
{
counter++;
double diff = Math.Abs(dequeue.Z - goalZ);
if (diff == 0 && dequeue.X >= 2031 && dequeue.XSpeed > 0)
{
bestDiff = diff;
bestState = dequeue;
Config.Print("Diff of " + bestDiff + " is: " + bestState.GetLineage());
Config.Print();
}
continue;
}
List<MarioState> nextStates;
if (dequeue.Index == 0)
{
nextStates = inputs1.ConvertAll(
input => AirMovementCalculator.ApplyInput(dequeue, input, numQSteps: 4));
nextStates = nextStates.ConvertAll(state => state.WithCameraAngle(centAngle2));
}
else // dequeue.Index == 1
{
nextStates = inputs2.ConvertAll(
input => AirMovementCalculator.ApplyInput(dequeue, input, numQSteps: 1));
}
nextStates = ControlUtilities.Randomize(nextStates);
nextStates.ForEach(state => queue.Enqueue(state));
}
Config.Print("DONE having considered " + counter + " paths");
}
public static void TestPendulumLanding()
{
float startX = -1640.13903808594f;
float startY = 568.999877929688f;
float startZ = -804.69677734375f;
float startXSpeed = -23.9479904174805f;
float startYSpeed = -38f;
float startZSpeed = -9.76013565063477f;
float startHSpeed = 23.850606918335f;
float startXSlidingSpeed = -23.9479904174805f;
float startZSlidingSpeed = -9.76013565063477f;
ushort startYawMoving = 40982;
ushort startYawFacing = 40982;
ushort startCentAngle = 15763;
ushort centAngle2 = 15703;
ushort centAngle3 = 15571;
TriangleDataModel tri = TriangleDataModel.CreateCustom(-1747, 426, -781, -1342, 764, -1187, -1370, 764, -1214);
int goalX = -1719;
float goalZ = -869.552673339844f;
int radius = 5;
List<Input> inputs1 = CalculatorUtilities.GetInputRange(-128, -128 + 2 * radius, 109 - radius, 109 + radius);
List<Input> inputs2 = CalculatorUtilities.GetInputRange(-47 - radius, -47 + radius, -52 - radius, -52 + radius);
List<Input> inputs3 = CalculatorUtilities.GetInputRange(-47 - radius, -47 + radius, -52 - radius, -52 + radius);
MarioState startState = new MarioState(
startX,
startY,
startZ,
startXSpeed,
startYSpeed,
startZSpeed,
startHSpeed,
startXSlidingSpeed,
startZSlidingSpeed,
startYawMoving,
startYawFacing,
startCentAngle,
null,
null,
0);
int counter = 0;
int lastIndex = -1;
double bestDiff = double.MaxValue;
MarioState bestState = null;
Queue<MarioState> queue = new Queue<MarioState>();
queue.Enqueue(startState);
while (queue.Count > 0)
{
MarioState dequeue = queue.Dequeue();
if (dequeue.Index != lastIndex)
{
lastIndex = dequeue.Index;
Config.Print("Now at index " + lastIndex);
}
if (dequeue.Index == 3)
{
counter++;
float? y = tri.GetTruncatedHeightOnTriangleIfInsideTriangle(dequeue.X, dequeue.Z);
if (!y.HasValue) continue;
MarioState afterPunch = DoPunchFrames(dequeue);
double zDiff = Math.Abs(afterPunch.Z - goalZ);
int xDiff = (int)afterPunch.X - goalX;
if (zDiff == 0 && xDiff == 0)
{
bestDiff = zDiff;
bestState = dequeue;
Config.Print("Diff of " + bestDiff + " is: " + bestState.GetLineage());
Config.Print();
}
continue;
}
List<MarioState> nextStates = null;
if (dequeue.Index == 0)
{
nextStates = inputs1.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input, numQSteps: 4));
nextStates = nextStates.ConvertAll(state => state.WithCameraAngle(centAngle2));
}
if (dequeue.Index == 1)
{
nextStates = inputs2.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input, numQSteps: 4));
nextStates = nextStates.ConvertAll(state => state.WithCameraAngle(centAngle3));
}
if (dequeue.Index == 2)
{
nextStates = inputs3.ConvertAll(input => AirMovementCalculator.ApplyInput(dequeue, input, numQSteps: 3));
}
nextStates.ForEach(state => queue.Enqueue(state));
}
Config.Print("DONE having considered " + counter + " paths");
}
public static MarioState DoPunchFrames(MarioState marioState)
{
TriangleDataModel tri1 = TriangleDataModel.CreateCustom(-1739, 405, -790, -1370, 764, -1214, -1766, 405, -818);
TriangleDataModel tri2 = TriangleDataModel.CreateCustom(-1729, 383, -800, -1371, 763, -1213, -1756, 383, -828);
TriangleDataModel tri3 = TriangleDataModel.CreateCustom(-1717, 358, -812, -1371, 763, -1213, -1744, 358, -839);
TriangleDataModel tri4 = TriangleDataModel.CreateCustom(-1652, 235, -810, -1746, 235, -904, -1753, 312, -898);
MutableMarioState mutableMarioState = marioState.GetMutableMarioState(new Input(0, 0));
apply_slope_decel(mutableMarioState, 0.5f, tri1);
for (int i = 0; i < 4; i++)
{
mutableMarioState.X += tri1.NormY * (mutableMarioState.XSpeed / 4.0f);
mutableMarioState.Z += tri1.NormY * (mutableMarioState.ZSpeed / 4.0f);
}
apply_slope_decel(mutableMarioState, 0.5f, tri2);
for (int i = 0; i < 4; i++)
{
mutableMarioState.X += tri2.NormY * (mutableMarioState.XSpeed / 4.0f);
mutableMarioState.Z += tri2.NormY * (mutableMarioState.ZSpeed / 4.0f);
}
apply_slope_decel(mutableMarioState, 0.5f, tri3);
for (int i = 0; i < 2; i++)
{
mutableMarioState.X += tri3.NormY * (mutableMarioState.XSpeed / 4.0f);
mutableMarioState.Z += tri3.NormY * (mutableMarioState.ZSpeed / 4.0f);
}
for (int i = 0; i < 2; i++)
{
mutableMarioState.X += tri4.NormY * (mutableMarioState.XSpeed / 4.0f);
mutableMarioState.Z += tri4.NormY * (mutableMarioState.ZSpeed / 4.0f);
}
return mutableMarioState.GetMarioState(marioState.PreviousState, marioState.LastInput);
}
public static void apply_slope_decel(MutableMarioState marioState, float decelCoef, TriangleDataModel floor)
{
float decel = decelCoef * 2.0f;
marioState.HSpeed = CalculatorUtilities.ApproachFloat(marioState.HSpeed, 0.0f, decel, decel);
apply_slope_accel(marioState, floor);
}
public static void apply_slope_accel(MutableMarioState marioState, TriangleDataModel floor) {
float steepness = (float)Math.Sqrt(floor.NormX * floor.NormX + floor.NormZ * floor.NormZ);
int floorAngle = InGameTrigUtilities.InGameATan(floor.NormZ, floor.NormX);
short floorDYaw = MoreMath.NormalizeAngleShort(floorAngle - marioState.MarioAngle);
if (mario_floor_is_slope(floor)) {
float slopeAccel = 1.7f;
if (floorDYaw > -0x4000 && floorDYaw< 0x4000) {
marioState.HSpeed += slopeAccel* steepness;
} else {
marioState.HSpeed -= slopeAccel* steepness;
}
}
marioState.SlidingAngle = marioState.MarioAngle;
marioState.SlidingSpeedX = marioState.HSpeed * InGameTrigUtilities.InGameSine(marioState.MarioAngle);
marioState.SlidingSpeedZ = marioState.HSpeed * InGameTrigUtilities.InGameCosine(marioState.MarioAngle);
marioState.XSpeed = marioState.SlidingSpeedX;
marioState.YSpeed = 0.0f;
marioState.ZSpeed = marioState.SlidingSpeedZ;
}
public static bool mario_floor_is_slope(TriangleDataModel tri) {
float normY = 0.9659258f;
return tri.NormY <= normY;
}
}
}
================================================
FILE: STROOP/Calculators/CalculatorUtilities.cs
================================================
using STROOP.Forms;
using STROOP.Managers;
using STROOP.Structs.Configurations;
using STROOP.Utilities;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace STROOP.Structs
{
public static class CalculatorUtilities
{
public static List<Input> GetAllInputs()
{
return GetInputRange(-128, 127, -128, 127);
}
public static List<Input> GetInputRange(int minX, int maxX, int minZ, int maxZ)
{
List<Input> output = new List<Input>();
for (int x = minX; x <= maxX; x++)
{
if (MoreMath.InputIsInDeadZone(x)) continue;
for (int z = minZ; z <= maxZ; z++)
{
if (MoreMath.InputIsInDeadZone(z)) continue;
output.Add(new Input(x, z));
}
}
return output;
}
public static int ApproachInt(int current, int target, int inc, int dec)
{
if (current < target)
{
current += inc;
if (current > target)
current = target;
}
else
{
current -= dec;
if (current < target)
current = target;
}
return current;
}
public static float ApproachFloat(float current, float target, float inc, float dec)
{
if (current < target)
{
current += inc;
if (current > target)
{
current = target;
}
}
else
{
current -= dec;
if (current < target)
{
current = target;
}
}
return current;
}
}
}
================================================
FILE: STROOP/Calculators/GroundMovementCalculator.cs
================================================
using STROOP.Forms;
using STROOP.Managers;
using STROOP.Models;
using STROOP.Structs.Configurations;
using STROOP.Utilities;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace STROOP.Structs
{
public static class GroundMovementCalculator
{
// act_hold_walking
public static MarioState ApplyInput(MarioState initialState, Input input)
{
MutableMarioState mutableMarioState = initialState.GetMutableMarioState(input);
mutableMarioState.IntendedMagnitude *= 0.4f;
UpdateWalkingSpeed(mutableMarioState);
PerformGroundStep(mutableMarioState);
MarioState finalState = mutableMarioState.GetMarioState(initialState, input);
return finalState;
}
public static MarioState ApplyInput(MarioState initialState, int angleDiff)
{
MutableMarioState mutableMarioState = initialState.GetMutableMarioState(angleDiff);
mutableMarioState.IntendedMagnitude *= 0.4f;
UpdateWalkingSpeed(mutableMarioState);
PerformGroundStep(mutableMarioState);
MarioState finalState = mutableMarioState.GetMarioState(initialState, null);
return finalState;
}
// update_walking_speed
private static void UpdateWalkingSpeed(MutableMarioState marioState)
{
float maxTargetSpeed;
float targetSpeed;
bool slowSurface = false;
if (slowSurface)
maxTargetSpeed = 24.0f;
else
maxTargetSpeed = 32.0f;
targetSpeed = marioState.IntendedMagnitude < maxTargetSpeed ? marioState.IntendedMagnitude : maxTargetSpeed;
if (marioState.HSpeed <= 0.0f)
marioState.HSpeed += 1.1f;
else if (marioState.HSpeed <= targetSpeed)
marioState.HSpeed += 1.1f - marioState.HSpeed / 43.0f;
else
marioState.HSpeed -= 1.0f;
if (marioState.HSpeed > 48.0f)
marioState.HSpeed = 48.0f;
marioState.MarioAngle = MoreMath.NormalizeAngleUshort(
marioState.IntendedAngle - CalculatorUtilities.ApproachInt(
MoreMath.NormalizeAngleShort(marioState.IntendedAngle - marioState.MarioAngle), 0, 0x800, 0x800));
ApplySlopeAccel(marioState);
}
// apply_slope_accel
private static void ApplySlopeAccel(MutableMarioState marioState)
{
marioState.XSpeed = marioState.HSpeed * InGameTrigUtilities.InGameSine(marioState.MarioAngle);
marioState.YSpeed = 0.0f;
marioState.ZSpeed = marioState.HSpeed * InGameTrigUtilities.InGameCosine(marioState.MarioAngle);
}
// perform_ground_step
private static void PerformGroundStep(MutableMarioState marioState)
{
for (int i = 0; i < 4; i++)
{
marioState.X = marioState.X + marioState.XSpeed / 4.0f;
marioState.Z = marioState.Z + marioState.ZSpeed / 4.0f;
}
}
public static MarioState PerformButtSlide(MarioState marioState, Input input, TriangleDataModel floor, List<TriangleDataModel> walls)
{
MutableMarioState mutableMarioState = marioState.GetMutableMarioState(input);
common_slide_action_with_jump(mutableMarioState, floor, walls);
return mutableMarioState.GetMarioState(marioState, input);
}
public static MarioState PerformButtSlide(MarioState marioState, int angleDiff, TriangleDataModel floor, List<TriangleDataModel> walls)
{
MutableMarioState mutableMarioState = marioState.GetMutableMarioState(angleDiff);
common_slide_action_with_jump(mutableMarioState, floor, walls);
return mutableMarioState.GetMarioState(marioState, new Input(angleDiff, 0));
}
private static void common_slide_action_with_jump(MutableMarioState marioState, TriangleDataModel floor, List<TriangleDataModel> walls)
{
update_sliding(marioState, 4.0f, floor, walls);
common_slide_action(marioState, floor, walls);
}
private static void update_sliding(MutableMarioState marioState, float stopSpeed, TriangleDataModel floor, List<TriangleDataModel> walls)
{
short intendedDYaw = MoreMath.NormalizeAngleShort(marioState.IntendedAngle - marioState.SlidingAngle);
float forward = InGameTrigUtilities.InGameCosine(intendedDYaw);
float sideward = InGameTrigUtilities.InGameSine(intendedDYaw);
//! 10k glitch
if (forward < 0.0f && marioState.HSpeed >= 0.0f)
{
forward *= 0.5f + 0.5f * marioState.HSpeed / 100.0f;
}
float accel;
float lossFactor;
int floorClass = 0x13;
switch (floorClass)
{
case 0x0013:
accel = 10.0f;
lossFactor = marioState.IntendedMagnitude / 32.0f * forward * 0.02f + 0.98f;
break;
case 0x0014:
accel = 8.0f;
lossFactor = marioState.IntendedMagnitude / 32.0f * forward * 0.02f + 0.96f;
break;
default:
accel = 7.0f;
lossFactor = marioState.IntendedMagnitude / 32.0f * forward * 0.02f + 0.92f;
break;
case 0x0015:
accel = 5.0f;
lossFactor = marioState.IntendedMagnitude / 32.0f * forward * 0.02f + 0.92f;
break;
}
float oldSpeed = (float)Math.Sqrt(
marioState.SlidingSpeedX * marioState.SlidingSpeedX +
marioState.SlidingSpeedZ * marioState.SlidingSpeedZ);
//! This is attempting to use trig derivatives to rotate mario's speed.
// It is slightly off/asymmetric since it uses the new X speed, but the old
// Z speed.
marioState.SlidingSpeedX += marioState.SlidingSpeedZ * (marioState.IntendedMagnitude / 32.0f) * sideward * 0.05f;
marioState.SlidingSpeedZ -= marioState.SlidingSpeedX * (marioState.IntendedMagnitude / 32.0f) * sideward * 0.05f;
float newSpeed = (float)Math.Sqrt(
marioState.SlidingSpeedX * marioState.SlidingSpeedX +
marioState.SlidingSpeedZ * marioState.SlidingSpeedZ);
if (oldSpeed > 0.0f && newSpeed > 0.0f)
{
marioState.SlidingSpeedX = marioState.SlidingSpeedX * oldSpeed / newSpeed;
marioState.SlidingSpeedZ = marioState.SlidingSpeedZ * oldSpeed / newSpeed;
}
update_sliding_angle(marioState, accel, lossFactor, floor, walls);
}
private static void update_sliding_angle(MutableMarioState marioState, float accel, float lossFactor, TriangleDataModel floor, List<TriangleDataModel> walls)
{
short slopeAngle = MoreMath.NormalizeAngleShort(InGameTrigUtilities.InGameATan(floor.NormZ, floor.NormX));
float steepness = (float)Math.Sqrt(floor.NormX * floor.NormX + floor.NormZ * floor.NormZ);
marioState.SlidingSpeedX += accel * steepness * InGameTrigUtilities.InGameSine(slopeAngle);
marioState.SlidingSpeedZ += accel * steepness * InGameTrigUtilities.InGameCosine(slopeAngle);
marioState.SlidingSpeedX *= lossFactor;
marioState.SlidingSpeedZ *= lossFactor;
marioState.SlidingAngle = InGameTrigUtilities.InGameATan(marioState.SlidingSpeedZ, marioState.SlidingSpeedX);
short facingDYaw = MoreMath.NormalizeAngleShort(marioState.MarioAngle - marioState.SlidingAngle);
int newFacingDYaw = facingDYaw;
//! -0x4000 not handled - can slide down a slope while facing perpendicular to it
if (newFacingDYaw > 0 && newFacingDYaw <= 0x4000) {
if ((newFacingDYaw -= 0x200) < 0) {
newFacingDYaw = 0;
}
} else if (newFacingDYaw > -0x4000 && newFacingDYaw < 0) {
if ((newFacingDYaw += 0x200) > 0) {
newFacingDYaw = 0;
}
} else if (newFacingDYaw > 0x4000 && newFacingDYaw < 0x8000) {
if ((newFacingDYaw += 0x200) > 0x8000) {
newFacingDYaw = 0x8000;
}
} else if (newFacingDYaw > -0x8000 && newFacingDYaw < -0x4000) {
if ((newFacingDYaw -= 0x200) < -0x8000) {
newFacingDYaw = -0x8000;
}
}
marioState.MarioAngle = MoreMath.NormalizeAngleUshort(marioState.SlidingAngle + newFacingDYaw);
marioState.XSpeed = marioState.SlidingSpeedX;
marioState.YSpeed = 0.0f;
marioState.ZSpeed = marioState.SlidingSpeedZ;
//! Speed is capped a frame late (butt slide HSG)
marioState.HSpeed = (float)Math.Sqrt(
marioState.SlidingSpeedX * marioState.SlidingSpeedX +
marioState.SlidingSpeedZ * marioState.SlidingSpeedZ);
if (marioState.HSpeed > 100.0f) {
marioState.SlidingSpeedX = marioState.SlidingSpeedX * 100.0f / marioState.HSpeed;
marioState.SlidingSpeedZ = marioState.SlidingSpeedZ * 100.0f / marioState.HSpeed;
}
if (newFacingDYaw < -0x4000 || newFacingDYaw > 0x4000) {
marioState.HSpeed *= -1.0f;
}
}
private static void common_slide_action(
MutableMarioState marioState, TriangleDataModel floor, List<TriangleDataModel> walls)
{
perform_ground_step(marioState, floor, walls);
// TODO: confirm that result doesn't matter
}
private static void perform_ground_step(
MutableMarioState marioState, TriangleDataModel floor, List<TriangleDataModel> walls)
{
for (int i = 0; i < 4; i++)
{
float intendedPosX = marioState.X + floor.NormY * (marioState.XSpeed / 4.0f);
float intendedPosZ = marioState.Z + floor.NormY * (marioState.ZSpeed / 4.0f);
float intendedPosY = marioState.Y;
perform_ground_quarter_step(
marioState, intendedPosX, intendedPosY, intendedPosZ, floor, walls);
}
}
private static void perform_ground_quarter_step(
MutableMarioState marioState, float intendedPosX, float intendedPosY, float intendedPosZ,
TriangleDataModel floor, List<TriangleDataModel> walls)
{
(intendedPosX, intendedPosZ) =
WallDisplacementCalculator.HandleWallDisplacement(
intendedPosX, intendedPosY, intendedPosZ, walls, 50, 60);
float floorHeight = floor.GetTruncatedHeightOnTriangle(intendedPosX, intendedPosZ);
marioState.X = intendedPosX;
marioState.Y = floorHeight;
marioState.Z = intendedPosZ;
}
}
}
================================================
FILE: STROOP/Calculators/HolpCalculator.cs
================================================
using STROOP.Forms;
using STROOP.Managers;
using STROOP.Models;
using STROOP.Structs.Configurations;
using STROOP.Utilities;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace STROOP.Structs
{
public static class HolpCalculator
{
private static List<(int, double, double, double)> _dataForWalking = new List<(int, double, double, double)>()
{
(0,-13.852560043335,82.7928466796875,43.2764892578125),
(1,-13.8603839874268,84.1005249023438,43.2064208984375),
(2,-13.8159141540527,84.2417602539063,43.1217041015625),
(3,-13.8067932128906,84.3388061523438,43.032958984375),
(4,-13.8156032562256,84.4673461914063,42.8843994140625),
(5,-13.8143367767334,84.3573608398438,42.7357177734375),
(6,-13.8485641479492,84.4801635742188,42.5528564453125),
(7,-13.913293838501,84.3718872070313,42.3017578125),
(8,-13.9324378967285,84.2554931640625,42.12255859375),
(9,-14.0344524383545,83.8282470703125,41.887451171875),
(10,-14.1320991516113,83.65185546875,41.6539306640625),
(11,-14.2047386169434,83.2032470703125,41.481689453125),
(12,-14.3437423706055,82.9824829101563,41.230224609375),
(13,-14.4278945922852,82.4707641601563,41.1116943359375),
(14,-14.6146621704102,81.8866577148438,40.9158935546875),
(15,-14.7635688781738,81.2904663085938,40.7923583984375),
(16,-14.983922958374,80.6292724609375,40.6275634765625),
(17,-15.2353763580322,79.8695678710938,40.525634765625),
(18,-15.4751510620117,79.0504760742188,40.5074462890625),
(19,-15.7339839935303,78.1624145507813,40.528564453125),
(20,-16.0744380950928,77.209716796875,40.4693603515625),
(21,-16.350076675415,76.2724609375,40.4874267578125),
(22,-16.6590099334717,75.2498779296875,40.524169921875),
(23,-16.9654483795166,74.2208862304688,40.5496826171875),
(24,-17.286901473999,73.1162719726563,40.60302734375),
(25,-17.5732021331787,72.0418090820313,40.662109375),
(26,-17.8684062957764,70.9493408203125,40.6968994140625),
(27,-18.1436023712158,70.1430053710938,40.7091064453125),
(28,-18.4258403778076,69.06982421875,40.7000732421875),
(29,-18.6577587127686,68.073974609375,40.6951904296875),
(30,-18.8827457427979,66.8560180664063,40.662353515625),
(31,-19.0599193572998,65.9683227539063,40.640380859375),
(32,-19.2313365936279,65.8605346679688,40.594970703125),
(33,-19.3553791046143,66.3665161132813,40.5447998046875),
(34,-19.4837818145752,67.1422729492188,40.4661865234375),
(35,-19.5892887115479,67.9154052734375,40.43017578125),
(36,-19.659029006958,69.2606811523438,40.4078369140625),
(37,-19.7250804901123,70.356201171875,40.3907470703125),
(38,-19.7577571868896,71.4926147460938,40.40869140625),
(39,-19.7571697235107,72.4199829101563,40.462158203125),
(40,-19.7728824615479,73.1315307617188,40.45849609375),
(41,-19.7376079559326,73.8190307617188,40.5723876953125),
(42,-19.7122821807861,74.5830078125,40.6121826171875),
(43,-19.6650981903076,75.282958984375,40.739013671875),
(44,-19.57346534729,75.8268432617188,40.88525390625),
(45,-19.4797077178955,76.1210327148438,41.033203125),
(46,-19.3439426422119,76.4605102539063,41.2265625),
(47,-19.2333011627197,76.2872314453125,41.37890625),
(48,-19.0889110565186,76.1022338867188,41.597900390625),
(49,-18.9064617156982,75.9515380859375,41.857421875),
(50,-18.7486705780029,75.5679321289063,42.0560302734375),
(51,-18.5583438873291,75.1459350585938,42.33203125),
(52,-18.3875865936279,74.7825317382813,42.52978515625),
(53,-18.1501483917236,74.1698608398438,42.83203125),
(54,-17.9086894989014,73.806396484375,43.1324462890625),
(55,-17.7250003814697,73.1712646484375,43.34814453125),
(56,-17.4643001556396,72.8579711914063,43.6300048828125),
(57,-17.1985988616943,72.2935791015625,43.9110107421875),
(58,-16.9619617462158,71.688720703125,44.1668701171875),
(59,-16.7159366607666,71.3931274414063,44.3900146484375),
(60,-16.4704761505127,70.817626953125,44.6248779296875),
(61,-16.1780300140381,70.2903442382813,44.8857421875),
(62,-15.9158897399902,70.0347900390625,45.0811767578125),
(63,-15.6951370239258,69.4375,45.2755126953125),
(64,-15.4251079559326,69.2108764648438,45.447509765625),
(65,-15.1985931396484,68.4242553710938,45.596435546875),
(66,-14.9584121704102,67.7183227539063,45.701416015625),
(67,-14.7734146118164,67.4125366210938,45.7999267578125),
(68,-14.5395526885986,68.2246704101563,45.871826171875),
(69,-14.385705947876,70.1324462890625,45.7674560546875),
(70,-14.2014904022217,72.6931762695313,45.574951171875),
(71,-14.1282138824463,75.119140625,45.1312255859375),
(72,-13.9819869995117,77.0831298828125,44.716552734375),
(73,-13.9631118774414,78.2352905273438,44.156494140625),
(74,-13.8647117614746,79.316162109375,43.736083984375),
(75,-13.8919486999512,80.1707763671875,43.3465576171875),
};
private static List<(int, double, double, double)> _dataForStanding = new List<(int, double, double, double)>()
{
(0,-14.9768142700195,70.0527954101563,46.1116943359375),
(1,-15.0781002044678,68.8441772460938,46.2886962890625),
(2,-15.1815433502197,67.6535034179688,46.4891357421875),
(3,-15.2864570617676,66.4968872070313,46.6727294921875),
(4,-15.4240989685059,65.3958129882813,46.7882080078125),
(5,-15.5248756408691,64.2696533203125,46.9483642578125),
(6,-15.6575241088867,63.5349731445313,47.0325927734375),
(7,-15.7512474060059,62.8151245117188,47.1492919921875),
(8,-15.8002777099609,62.2562866210938,47.2369384765625),
(9,-15.8486957550049,62.0972290039063,47.2794189453125),
(10,-15.8909912109375,62.0515747070313,47.27490234375),
(11,-15.8591861724854,62.265380859375,47.27587890625),
(12,-15.859338760376,62.816650390625,47.187744140625),
(13,-15.7759399414063,63.7854614257813,47.0892333984375),
(14,-15.6890602111816,64.8377685546875,46.96875),
(15,-15.5938949584961,65.9906616210938,46.784423828125),
(16,-15.4942493438721,67.1390991210938,46.58642578125),
(17,-15.3519325256348,67.94384765625,46.4541015625),
(18,-15.2373886108398,69.06005859375,46.2559814453125),
(19,-15.1235389709473,69.7003173828125,46.1351318359375),
(20,-14.9768142700195,70.0527954101563,46.1116943359375),
(21,-14.8577976226807,70.2546997070313,46.1241455078125),
(22,-14.7283592224121,70.18115234375,46.167236328125),
(23,-14.5577449798584,69.81005859375,46.2996826171875),
(24,-14.3835906982422,69.622314453125,46.4842529296875),
(25,-14.2441596984863,69.1331787109375,46.658935546875),
(26,-14.0631008148193,68.68505859375,46.8543701171875),
(27,-13.9271926879883,68.18115234375,47.030517578125),
(28,-13.8096122741699,67.6304931640625,47.2154541015625),
(29,-13.7399406433105,67.3751220703125,47.305908203125),
(30,-13.7294921875,67.3475952148438,47.339111328125),
(31,-13.7399406433105,67.3751220703125,47.305908203125),
(32,-13.8096122741699,67.6304931640625,47.2154541015625),
(33,-13.9271926879883,68.18115234375,47.030517578125),
(34,-14.0631008148193,68.68505859375,46.8543701171875),
(35,-14.2348442077637,69.1707763671875,46.6429443359375),
(36,-14.3747138977051,69.6599731445313,46.4674072265625),
(37,-14.5577449798584,69.81005859375,46.2996826171875),
(38,-14.7283592224121,70.18115234375,46.167236328125),
(39,-14.8577976226807,70.2546997070313,46.1241455078125),
(40,-14.9768142700195,70.0527954101563,46.1116943359375),
(41,-15.1239433288574,69.745849609375,46.1343994140625),
(42,-15.2446212768555,69.0670776367188,46.2738037109375),
(43,-15.3988609313965,68.053955078125,46.4130859375),
(44,-15.5546684265137,67.1847534179688,46.6026611328125),
(45,-15.6641502380371,66.0863647460938,46.8216552734375),
(46,-15.8019599914551,65.0361328125,46.9552001953125),
(47,-15.900447845459,64.0007934570313,47.117431640625),
(48,-15.9886722564697,63.0756225585938,47.221923828125),
(49,-16.0358943939209,62.5552368164063,47.295654296875),
(50,-16.0395030975342,62.44921875,47.343505859375),
(51,-16.0358943939209,62.5552368164063,47.295654296875),
(52,-15.9487285614014,63.134521484375,47.245361328125),
(53,-15.8516540527344,64.1402587890625,47.10791015625),
(54,-15.7057952880859,65.27294921875,46.9495849609375),
(55,-15.5549392700195,66.400390625,46.7799072265625),
(56,-15.3991146087646,67.5536499023438,46.5782470703125),
(57,-15.238431930542,68.4193725585938,46.3848876953125),
(58,-15.1240825653076,69.3726806640625,46.22314453125),
(59,-15.0214500427246,69.9351196289063,46.13720703125),
(60,-14.9768142700195,70.0527954101563,46.1116943359375),
};
private static Dictionary<int, (double, double, double)> _dictionaryForWalking;
private static Dictionary<int, (double, double, double)> _dictionaryForStanding;
public static readonly int WALKING_COUNT = 76;
public static readonly int STANDING_COUNT = 61;
static HolpCalculator()
{
_dictionaryForWalking = new Dictionary<int, (double, double, double)>();
foreach ((int index, double x, double y, double z) in _dataForWalking)
{
_dictionaryForWalking[index] = (x, y, z);
}
_dictionaryForStanding = new Dictionary<int, (double, double, double)>();
foreach ((int index, double x, double y, double z) in _dataForStanding)
{
_dictionaryForStanding[index] = (x, y, z);
}
}
public static (float x, float y, float z) GetHolpForWalking(int index)
{
if (!_dictionaryForWalking.ContainsKey(index)) return (float.NaN, float.NaN, float.NaN);
(double xOffset, double yOffset, double zOffset) = _dictionaryForWalking[index];
return ((float)xOffset, (float)yOffset, (float)zOffset);
}
public static (float x, float y, float z) GetHolpForStanding(int index)
{
if (!_dictionaryForStanding.ContainsKey(index)) return (float.NaN, float.NaN, float.NaN);
(double xOffset, double yOffset, double zOffset) = _dictionaryForStanding[index];
return ((float)xOffset, (float)yOffset, (float)zOffset);
}
public static (float x, float y, float z) GetHolpForWalking(
int index, float marioX, float marioY, float marioZ, ushort marioAngle)
{
if (!_dictionaryForWalking.ContainsKey(index)) return (float.NaN, float.NaN, float.NaN);
(double xOffset, double yOffset, double zOffset) = _dictionaryForWalking[index];
double vectorMagnitude = MoreMath.GetHypotenuse(xOffset, zOffset);
double vectorAngle = MoreMath.AngleTo_AngleUnits(xOffset, zOffset);
double rotatedAngle = vectorAngle + MoreMath.NormalizeAngleTruncated(marioAngle);
(double rotatedX, double rotatedZ) = MoreMath.GetComponentsFromVector(vectorMagnitude, rotatedAngle);
double offsetX = rotatedX + marioX;
double offsetY = yOffset + marioY;
double offsetZ = rotatedZ + marioZ;
return ((float)offsetX, (float)offsetY, (float)offsetZ);
}
public static (float x, float y, float z) GetHolpForStanding(
int index, float marioX, float marioY, float marioZ, ushort marioAngle)
{
if (!_dictionaryForStanding.ContainsKey(index)) return (float.NaN, float.NaN, float.NaN);
(double xOffset, double yOffset, double zOffset) = _dictionaryForStanding[index];
double vectorMagnitude = MoreMath.GetHypotenuse(xOffset, zOffset);
double vectorAngle = MoreMath.AngleTo_AngleUnits(xOffset, zOffset);
double rotatedAngle = vectorAngle + MoreMath.NormalizeAngleTruncated(marioAngle);
(double rotatedX, double rotatedZ) = MoreMath.GetComponentsFromVector(vectorMagnitude, rotatedAngle);
double offsetX = rotatedX + marioX;
double offsetY = yOffset + marioY;
double offsetZ = rotatedZ + marioZ;
return ((float)offsetX, (float)offsetY, (float)offsetZ);
}
}
}
================================================
FILE: STROOP/Calculators/Input.cs
================================================
using STROOP.Forms;
using STROOP.Managers;
using STROOP.Structs.Configurations;
using STROOP.Utilities;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace STROOP.Structs
{
// Y value is inputted and stored in sm64 convention
// Y value is displayed in mupen convention
public class Input
{
public static bool USE_TAS_INPUT_Y = true;
public readonly int X;
public readonly int Y;
public Input(int x, int y)
{
X = x;
Y = y;
}
public float GetScaledMagnitude()
{
return MoreMath.GetScaledInputMagnitude(X, Y, false);
}
public override string ToString()
{
return String.Format("({0},{1})", X, (USE_TAS_INPUT_Y ? -1 : 1) * Y);
}
}
}
================================================
FILE: STROOP/Calculators/LoadingZoneMain.cs
================================================
using STROOP.Forms;
using STROOP.Managers;
using STROOP.Models;
using STROOP.Structs.Configurations;
using STROOP.Ttc;
using STROOP.Utilities;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace STROOP.Structs
{
public static class LoadingZoneMain
{
public static Random r = new Random();
public static Dictionary<UnloadableId, bool?> BaseUnloadStrategy =
new Dictionary<UnloadableId, bool?>()
{
[UnloadableId.LOADED_ALWAYS] = false, // do not change
[UnloadableId.SKEETER_CLOSE] = false,
[UnloadableId.SKEETER_FAR] = true,
[UnloadableId.CORK_BOX_EXPRESS_ELEVATOR] = false,
[UnloadableId.CORK_BOX_EDGE_1] = false,
[UnloadableId.CORK_BOX_EDGE_2] = false,
[UnloadableId.CORK_BOX_EDGE_3] = false,
[UnloadableId.CORK_BOX_EDGE_4] = false,
[UnloadableId.CORK_BOX_BIG] = false,
[UnloadableId.BLUE_COIN] = true,
[UnloadableId.ITEM_BLOCK_PENTAGON_PLATFORM] = false,
[UnloadableId.ITEM_BLOCK_EXPRESS_ELEVATOR] = false,
[UnloadableId.ITEM_BLOCK_SLIDE_KICK] = false,
[UnloadableId.ITEM_BLOCK_HIGH_CORNER] = false,
[UnloadableId.ONE_UP_TUNNEL_1] = false,
[UnloadableId.ONE_UP_TUNNEL_2] = false,
[UnloadableId.SECRET_EXPRESS_ELEVATOR] = false,
[UnloadableId.SECRET_BLOCK_HOLE] = false,
[UnloadableId.SECRET_PENTAGON_PLATFORM] = false,
[UnloadableId.SECRET_HIGH_CORNER] = false,
[UnloadableId.SECRET_WATER_BLOCK] = false,
};
public static Dictionary<UnloadableId, bool> UnloadStrategy;
public static List<(int numBubbles, bool bubbleSpawnerPresent)> BubbleConfigurations =
new List<(int numBubbles, bool bubbleSpawnerPresent)>()
{
(5, true),
(6, false),
(6, true),
(7, false),
(7, true),
(8, false),
(8, true),
(9, false),
(9, true),
(10, false),
(10, true),
(11, false),
(11, true),
(12, false),
(12, true),
(13, false),
(13, true),
(14, false),
(14, true),
(15, false),
(15, true),
};
public static List<(int numBubbles, bool bubbleSpawnerPresent)> BubbleConfigurationsSimplified =
new List<(int numBubbles, bool bubbleSpawnerPresent)>()
{
(5, true),
(6, true),
(7, true),
(8, true),
(9, true),
(10, true),
(11, true),
(12, true),
(13, true),
(14, true),
(15, true),
};
public class LoadingZoneState
{
public readonly int Frame;
public readonly List<int> LoadingZoneFrames;
public LoadingZoneState(
int frame,
List<int> loadingZoneFrames)
{
Frame = frame;
LoadingZoneFrames = loadingZoneFrames;
}
public List<LoadingZoneState> GetSuccessors()
{
List<LoadingZoneState> output = new List<LoadingZoneState>();
int remainingFrames = 17 - Frame;
for (int i = 2; i <= remainingFrames; i++)
{
LoadingZoneState state = new LoadingZoneState(
Frame + i, LoadingZoneFrames.Concat(new List<int>() { i }).ToList());
output.Add(state);
}
return output;
}
}
public static List<int> GetRngIndexes()
{
List<List<int>> loadingZoneFramesList = new List<List<int>>()
{
//new List<int>() { 1,2,2,2,2,7,1 },
new List<int>() { 1,2,4,2,2,4,2 },
//new List<int>() { 1,2,4,2,2,5,1 },
//new List<int>() { 1,2,4,3,2,4,1 },
//new List<int>() { 1,2,5,2,2,4,1 },
//new List<int>() { 1,3,4,2,2,4,1 },
};
GenerateUnloadStrategy();
bool isBubbleSpawnerPresent = true;
int numInitialBubbles = 5;
List<int> rngIndexes = new List<int>();
for (int rngIndex = 0; rngIndex < 65114; rngIndex++)
{
foreach (List<int> loadingZoneFrames in loadingZoneFramesList)
{
int rngValue = RngIndexer.GetRngValue(rngIndex);
(bool success, int result, ObjName objName, int numTransitions, int numFrames) =
Simulate(ObjName.CORK_BOX_WHITE_BUILDING, loadingZoneFrames, rngValue, isBubbleSpawnerPresent, numInitialBubbles, false);
if (success)
{
rngIndexes.Add(rngIndex);
break;
}
}
}
return rngIndexes;
}
public static void Run5()
{
Config.Print("START");
List<List<int>> loadingZoneFramesList = new List<List<int>>()
{
//new List<int>() { 1,2,2,2,2,7,1 },
new List<int>() { 1,2,4,2,2,4,2 },
//new List<int>() { 1,2,4,2,2,5,1 },
//new List<int>() { 1,2,4,3,2,4,1 },
//new List<int>() { 1,2,5,2,2,4,1 },
//new List<int>() { 1,3,4,2,2,4,1 },
};
GenerateUnloadStrategy();
bool isBubbleSpawnerPresent = false;
int numInitialBubbles = 6;
int rngIndex = 17551;
//for (int rngIndex = 0; rngIndex < 65114; rngIndex++)
{
foreach (List<int> loadingZoneFrames in loadingZoneFramesList)
{
int rngValue = RngIndexer.GetRngValue(rngIndex);
(bool success, int result, ObjName objName, int numTransitions, int numFrames) =
Simulate(ObjName.CORK_BOX_WHITE_BUILDING, loadingZoneFrames, rngValue, isBubbleSpawnerPresent, numInitialBubbles, true);
string instructions = FormatLoadingZoneFrames(loadingZoneFrames);
if (success)
{
Config.Print("-------------------------------------");
Config.Print("objName = " + objName);
Config.Print("numFrames = " + numFrames);
Config.Print("numTransitions = " + numTransitions);
Config.Print("loadingZoneFrames = " + string.Join(",", loadingZoneFrames));
Config.Print("rngIndex = " + rngIndex);
Config.Print("rngValue = " + rngValue);
Config.Print("isBubbleSpawnerPresent = " + isBubbleSpawnerPresent);
Config.Print("numInitialBubbles = " + numInitialBubbles);
Config.Print(instructions);
Config.Print("-------------------------------------");
}
}
}
Config.Print("DONE");
}
public static void Run4()
{
Config.Print("START");
Queue<LoadingZoneState> queue = new Queue<LoadingZoneState>();
List<LoadingZoneState> allStates = new List<LoadingZoneState>();
LoadingZoneState initialState = new LoadingZoneState(1, new List<int>() { 1 });
queue.Enqueue(initialState);
allStates.Add(initialState);
while (queue.Count > 0)
{
LoadingZoneState dequeue = queue.Dequeue();
List<LoadingZoneState> successors = dequeue.GetSuccessors();
foreach (LoadingZoneState successor in successors)
{
queue.Enqueue(successor);
allStates.Add(successor);
}
}
List<int> bubbleSpawnerMaxTimers = new List<int>() { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
GenerateUnloadStrategy();
foreach (var bubbleConfiguration in BubbleConfigurationsSimplified)
{
foreach (LoadingZoneState state in allStates)
{
(bool success, int result, ObjName objName, int numTransitions, int numFrames) =
Simulate(
ObjName.CORK_BOX_WHITE_BUILDING,
state.LoadingZoneFrames,
bubbleSpawnerMaxTimers,
bubbleConfiguration.bubbleSpawnerPresent,
bubbleConfiguration.numBubbles,
false);
if (success && numFrames <= 17)
{
Config.Print("new List<int>() { " + string.Join(",", state.LoadingZoneFrames) + " },");
Config.Print("bubbleConfiguration.bubbleSpawnerPresent = " + bubbleConfiguration.bubbleSpawnerPresent);
Config.Print("bubbleConfiguration.numBubbles = " + bubbleConfiguration.numBubbles);
Config.Print();
}
}
}
Config.Print("DONE");
}
public static void Run3()
{
Config.Print("START");
Queue<LoadingZoneState> queue = new Queue<LoadingZoneState>();
List<LoadingZoneState> allStates = new List<LoadingZoneState>();
LoadingZoneState initialState = new LoadingZoneState(1, new List<int>() { 1 });
queue.Enqueue(initialState);
allStates.Add(initialState);
while (queue.Count > 0)
{
LoadingZoneState dequeue = queue.Dequeue();
List<LoadingZoneState> successors = dequeue.GetSuccessors();
foreach (LoadingZoneState successor in successors)
{
queue.Enqueue(successor);
allStates.Add(successor);
}
}
List<int> bubbleSpawnerMaxTimers = new List<int>() { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
int numNull = BaseUnloadStrategy.Values.ToList().FindAll(b => b == null).Count;
List<List<bool>> boolsList = GenerateBoolLists(numNull);
boolsList = boolsList.FindAll(list => list.Count(b => b) <= 4);
boolsList.Sort((b1, b2) =>
{
int c1 = b1.Count(b => b);
int c2 = b2.Count(b => b);
return c1.CompareTo(c2);
});
int minFrames = int.MaxValue;
int counter = 0;
foreach (List<bool> bools in boolsList)
{
bool boolsSuccess = false;
if (counter % 100 == 0)
{
Config.Print(counter + " / " + boolsList.Count);
Config.Print();
}
counter++;
GenerateUnloadStrategy(bools);
foreach (var bubbleConfiguration in BubbleConfigurationsSimplified)
{
foreach (LoadingZoneState state in allStates)
{
(bool success, int result, ObjName objName, int numTransitions, int numFrames) =
Simulate(
ObjName.CORK_BOX_WHITE_BUILDING,
state.LoadingZoneFrames,
bubbleSpawnerMaxTimers,
bubbleConfiguration.bubbleSpawnerPresent,
bubbleConfiguration.numBubbles,
false);
if (success && numFrames <= 17)
{
Config.Print("success = " + success);
Config.Print("result = " + result);
Config.Print("objName = " + objName);
Config.Print("numTransitions = " + numTransitions);
Config.Print("numFrames = " + numFrames);
Config.Print("bools = " + string.Join(",", bools));
Config.Print("loadingZoneFrames = " + string.Join(",", state.LoadingZoneFrames));
Config.Print("bubbleSpawnerMaxTimers = " + string.Join(",", bubbleSpawnerMaxTimers));
Config.Print("bubbleSpawnerPresent = " + bubbleConfiguration.bubbleSpawnerPresent);
Config.Print("numBubbles = " + bubbleConfiguration.numBubbles);
List<UnloadableId> ids = BaseUnloadStrategy.ToList().FindAll(p => p.Value == null).ConvertAll(p => p.Key);
List<UnloadableId> unloaded = new List<UnloadableId>();
for (int i = 0; i < bools.Count; i++)
{
if (bools[i]) unloaded.Add(ids[i]);
}
Config.Print("unloadedObjs = " + string.Join(",", unloaded));
Config.Print("unloadedCount = " + unloaded.Count);
Config.Print();
minFrames = Math.Min(minFrames, numFrames);
boolsSuccess = true;
}
if (boolsSuccess) break;
}
if (boolsSuccess) break;
}
if (boolsSuccess) continue;
}
Config.Print("MIN FRAMES = " + minFrames);
Config.Print("DONE");
}
public static void Run()
{
Config.Print("STARTING...");
HashSet<string> instructionList = new HashSet<string>();
while (true)
{
GenerateUnloadStrategy();
List<int> loadingZoneFrames = GenerateRandomLoadingZoneFrames();
int rngIndex = RngIndexer.GetRngIndex();
int rng = RngIndexer.GetRngValue();
foreach (bool isBubbleSpawnerPresent in new List<bool>() { false })
{
for (int numInitialBubbles = 7; numInitialBubbles <= 7; numInitialBubbles++)
{
(bool success, int result, ObjName objName, int numTransitions, int numFrames) =
Simulate(ObjName.STAR, loadingZoneFrames, rng, isBubbleSpawnerPresent, numInitialBubbles, false);
string instructions = FormatLoadingZoneFrames(loadingZoneFrames);
if (success && !instructionList.Contains(instructions))
{
instructionList.Add(instructions);
Config.Print("-------------------------------------");
Config.Print("objName = " + objName);
Config.Print("numFrames = " + numFrames);
Config.Print("numTransitions = " + numTransitions);
Config.Print("loadingZoneFrames = " + string.Join(",", loadingZoneFrames));
Config.Print("rngIndex = " + rngIndex);
Config.Print("rng = " + rng);
Config.Print("isBubbleSpawnerPresent = " + isBubbleSpawnerPresent);
Config.Print("numInitialBubbles = " + numInitialBubbles);
Config.Print(instructions);
Config.Print(DictionaryUtilities.GetString(UnloadStrategy));
Config.Print("-------------------------------------");
}
}
}
}
}
public static void Test()
{
for (int rngIndex = 0; rngIndex < 65114; rngIndex++)
{
bool success1 = Run(rngIndex, false, 7, 1, false);
bool success2 = Run(rngIndex, true, 6, 1, false);
if (success1) Config.Print("success1 " + rngIndex);
if (success2) Config.Print("success2 " + rngIndex);
}
}
public static bool Run(int rngIndex, bool isBubbleSpawnerPresent, int numInitialBubbles, int numTries, bool print)
{
for (int i = 0; i < numTries; i++)
{
GenerateUnloadStrategy();
List<int> loadingZoneFrames = new List<int>() { 1, 2, 4, 2, 3, 10, 2, 8, 7, 10, 6, 5, 3, 10, 11, 9 }; //GenerateRandomLoadingZoneFrames();
int rng = RngIndexer.GetRngValue(rngIndex);
(bool success, int result, ObjName objName, int numTransitions, int numFrames) =
Simulate(ObjName.STAR, loadingZoneFrames, rng, isBubbleSpawnerPresent, numInitialBubbles, false);
string instructions = FormatLoadingZoneFrames(loadingZoneFrames);
if (success)
{
if (print)
{
Config.Print("-------------------------------------");
Config.Print("objName = " + objName);
Config.Print("numFrames = " + numFrames);
Config.Print("numTransitions = " + numTransitions);
Config.Print("loadingZoneFrames = " + string.Join(",", loadingZoneFrames));
Config.Print("rngIndex = " + rngIndex);
Config.Print("rng = " + rng);
Config.Print("isBubbleSpawnerPresent = " + isBubbleSpawnerPresent);
Config.Print("numInitialBubbles = " + numInitialBubbles);
Config.Print(instructions);
Config.Print(DictionaryUtilities.GetString(UnloadStrategy));
Config.Print("-------------------------------------");
}
return true;
}
}
return false;
}
public static void Run2()
{
HashSet<int> results = new HashSet<int>();
HashSet<string> instructionList = new HashSet<string>();
while (true)
{
GenerateUnloadStrategy();
List<int> loadingZoneFrames = GenerateRandomLoadingZoneFrames();
List<int> bubbleSpawnerMaxTimers = GenerateRandomBubbleSpawnerMaxTimers();
foreach ((int numInitialBubbles, bool isBubbleSpawnerPresent) in BubbleConfigurations)
{
(bool success, int result, ObjName objName, int numTransitions, int numFrames) =
Simulate(ObjName.STAR, loadingZoneFrames, bubbleSpawnerMaxTimers, isBubbleSpawnerPresent, numInitialBubbles, false);
if (!results.Contains(result))
{
Config.Print(result + " " + objName);
results.Add(result);
}
string instructions = FormatLoadingZoneFrames(loadingZoneFrames);
if (success)
{
instructionList.Add(instructions);
Config.Print("-------------------------------------");
Config.Print("objName = " + objName);
Config.Print("numFrames = " + numFrames);
Config.Print("numTransitions = " + numTransitions);
Config.Print("loadingZoneFrames = " + string.Join(",", loadingZoneFrames));
Config.Print("bubbleSpawnerMaxTimers = " + string.Join(",", bubbleSpawnerMaxTimers));
Config.Print("isBubbleSpawnerPresent = " + isBubbleSpawnerPresent);
Config.Print("numInitialBubbles = " + numInitialBubbles);
Config.Print(instructions);
Config.Print(DictionaryUtilities.GetString(UnloadStrategy));
Config.Print("-------------------------------------");
}
}
}
}
public static List<List<bool>> GenerateBoolLists(int size)
{
List<List<bool>> output = new List<List<bool>>() { new List<bool>() { } };
for (int i = 0; i < size; i++)
{
output = output.SelectMany(b => new List<List<bool>>()
{
b.Concat(new List<bool>() { false }).ToList(),
b.Concat(new List<bool>() { true }).ToList(),
}).ToList();
}
return output;
}
public static void GenerateUnloadStrategy()
{
UnloadStrategy = new Dictionary<UnloadableId, bool>();
foreach (UnloadableId key in BaseUnloadStrategy.Keys)
{
bool? valueNullable = BaseUnloadStrategy[key];
bool value = valueNullable ?? (r.Next(0, 2) == 0 ? false : true);
UnloadStrategy[key] = value;
}
}
public static void GenerateUnloadStrategy(List<bool> bools)
{
UnloadStrategy = new Dictionary<UnloadableId, bool>();
int counter = 0;
foreach (UnloadableId key in BaseUnloadStrategy.Keys)
{
bool? valueNullable = BaseUnloadStrategy[key];
bool value = valueNullable ?? bools[counter++];
UnloadStrategy[key] = value;
}
}
public static List<int> GenerateRandomLoadingZoneFrames()
{
List<int> loadingZoneFrames = new List<int>() { 1 };
int max = r.Next(2, 24);
for (int i = 0; i < 15; i++)
{
loadingZoneFrames.Add(r.Next(2, max));
}
return loadingZoneFrames;
}
public static List<int> GenerateRandomBubbleSpawnerMaxTimers()
{
List<int> bubbleSpawnerMaxTimers = new List<int>();
int max = r.Next(2, 7);
for (int i = 0; i < 15; i++)
{
bubbleSpawnerMaxTimers.Add(r.Next(2, max));
}
return bubbleSpawnerMaxTimers;
}
public static string FormatLoadingZoneFrames(List<int> loadingZoneFrames)
{
List<string> outputList = new List<string>();
bool rightwards = true;
int frame = 1904;
for (int i = 1; i < 11 && i < loadingZoneFrames.Count; i++)
{
int frames = loadingZoneFrames[i];
frame += frames;
rightwards = !rightwards;
string output = frame + " " + (rightwards ? "RIGHT" : "LEFT");
outputList.Add(output);
}
return string.Join("\r\n", outputList);
}
public static void RunTest()
{
List<int> loadingZoneFrames = new List<int>() { 1, 2, 3, 3, 10 };
List<int> bubbleSpawnerMaxTimers = new List<int>() { 10, 2, 3, 3, 9, 5 };
bool isBubbleSpawnerPresent = true;
int numInitialBubbles = 7;
Simulate(ObjName.STAR, loadingZoneFrames, bubbleSpawnerMaxTimers, isBubbleSpawnerPresent, numInitialBubbles, true);
}
public static void RunTest2()
{
List<int> loadingZoneFrames = new List<int>() { 1, 2, 3, 3, 10 };
int rng = 24331;
bool isBubbleSpawnerPresent = true;
int numInitialBubbles = 7;
Simulate(ObjName.STAR, loadingZoneFrames, rng, isBubbleSpawnerPresent, numInitialBubbles, true);
}
public static (bool success, int result, ObjName objName, int numTransitions, int numFrames) Simulate(
ObjName objName,
List<int> loadingZoneFrames,
List<int> bubbleSpawnerMaxTimers,
bool isBubbleSpawnerPresent,
int numInitialBubbles,
bool shouldPrint)
{
FrameTracker frameTracker = new FrameTracker(loadingZoneFrames);
BubbleTracker bubbleTracker = new BubbleTracker(bubbleSpawnerMaxTimers);
ObjSlotManager objSlotManager = InitializeObjSlotManager(isBubbleSpawnerPresent, numInitialBubbles, bubbleTracker);
return Simulate(objName, frameTracker, objSlotManager, shouldPrint);
}
public static (bool success, int result, ObjName objName, int numTransitions, int numFrames) Simulate(
ObjName objName,
List<int> loadingZoneFrames,
int rng,
bool isBubbleSpawnerPresent,
int numInitialBubbles,
bool shouldPrint)
{
FrameTracker frameTracker = new FrameTracker(loadingZoneFrames);
TtcRng ttcRng = new TtcRng((ushort)rng);
ObjSlotManager objSlotManager = InitializeObjSlotManager(isBubbleSpawnerPresent, numInitialBubbles, ttcRng);
return Simulate(objName, frameTracker, objSlotManager, shouldPrint);
}
public static (bool success, int result, ObjName objName, int numTransitions, int numFrames) Simulate(
ObjName objName,
FrameTracker frameTracker,
ObjSlotManager objSlotManager,
bool shouldPrint)
{
int startFrame = 7797;
int frame = 0;
bool isTownLoaded = false;
int numFramesAreaLoaded = 0;
int numTransitions = 0;
ObjSlot heldSlot = objSlotManager.FindSlot(ObjName.CHUCKYA);
void print()
{
Config.Print(
"FRAME=" + (startFrame + frame) +
" isTownLoaded=" + isTownLoaded +
" numFramesAreaLoaded=" + numFramesAreaLoaded);
Config.Print(objSlotManager);
Config.Print();
}
if (shouldPrint) print();
(bool success, int result, ObjName objName, int numTransitions, int numFrames) returnValue = (false, -1, ObjName.UNKNOWN, numTransitions, -1);
while (true)
{
bool? shouldLoadTown = frameTracker.AdvanceFrame();
if (shouldLoadTown.HasValue)
{
PassThroughLoadingZone(objSlotManager, shouldLoadTown.Value);
isTownLoaded = shouldLoadTown.Value;
numFramesAreaLoaded = 0;
numTransitions++;
}
frame++;
numFramesAreaLoaded++;
if (isTownLoaded && numFramesAreaLoaded == 2)
{
LoadYellowCoins(objSlotManager);
}
objSlotManager.FrameAdvance();
if (shouldPrint) print();
if (isTownLoaded && heldSlot.Color != ObjSlotColor.GREY)
{
returnValue = (false, objSlotManager.GetCurrentSlotIndex(heldSlot), heldSlot.ObjName, numTransitions, frame);
if (heldSlot.ObjName == objName)
{
return (true, heldSlot.InitialIndex, heldSlot.ObjName, numTransitions, frame);
}
}
if (frame == 24) break;
}
return returnValue;
}
public static void PassThroughLoadingZone(ObjSlotManager objSlotManager, bool loadsTown)
{
UnloadEverything(objSlotManager);
Load(objSlotManager, loadsTown ? area2ObjData : area1ObjData);
}
public static void UnloadEverything(ObjSlotManager objSlotManager)
{
objSlotManager.UnloadColor(ObjSlotColor.GREEN);
objSlotManager.UnloadColor(ObjSlotColor.BLUE);
objSlotManager.UnloadColor(ObjSlotColor.PURPLE);
objSlotManager.UnloadColor(ObjSlotColor.RED);
objSlotManager.UnloadColor(ObjSlotColor.ORANGE);
objSlotManager.UnloadColor(ObjSlotColor.PINK);
objSlotManager.UnloadColor(ObjSlotColor.BROWN);
}
public static void Load(ObjSlotManager objSlotManager, List<(ObjName objName, ObjSlotColor color, UnloadableId id)> objData)
{
foreach (var data in objData)
{
if (UnloadStrategy[data.id]) continue;
objSlotManager.Load(data);
}
}
public static void LoadYellowCoins(ObjSlotManager objSlotManager)
{
for (int i = 0; i < 5; i++)
{
objSlotManager.Load((ObjName.YELLOW_COIN, ObjSlotColor.BLUE, UnloadableId.LOADED_ALWAYS));
}
}
public static ObjSlotManager InitializeObjSlotManager(
bool isBubbleSpawnerPresent,
int numInitialBubbles,
TtcRng rng)
{
ObjSlotManager objSlotManager = new RngObjSlotManager(rng);
return InitializeBubbleObjSlotManager(objSlotManager, isBubbleSpawnerPresent, numInitialBubbles);
}
public static ObjSlotManager InitializeObjSlotManager(
bool isBubbleSpawnerPresent,
int numInitialBubbles,
BubbleTracker bubbleTracker)
{
ObjSlotManager objSlotManager = new BubbleObjSlotManager(bubbleTracker);
return InitializeBubbleObjSlotManager(objSlotManager, isBubbleSpawnerPresent, numInitialBubbles);
}
public static ObjSlotManager InitializeBubbleObjSlotManager(
ObjSlotManager objSlotManager,
bool isBubbleSpawnerPresent,
int numInitialBubbles)
{
int counter = 0;
foreach (var data in initialObjData)
{
if (UnloadStrategy[data.id]) continue;
objSlotManager.AddToEndOfList(new ObjSlot(counter++, data.objName, data.color));
}
if (isBubbleSpawnerPresent)
{
objSlotManager.AddToEndOfList(new ObjSlot(counter++, ObjName.BUBBLE_SPAWNER, ObjSlotColor.PURPLE));
}
for (int i = 0; i < numInitialBubbles; i++)
{
objSlotManager.AddToEndOfList(new ObjSlot(counter++, ObjName.BUBBLE, ObjSlotColor.BROWN));
}
while (counter < 240)
{
objSlotManager.AddToEndOfList(new ObjSlot(counter++, ObjName.UNKNOWN, ObjSlotColor.GREY));
}
return objSlotManager;
}
public enum ObjSlotColor
{
PINK,
RED,
ORANGE,
YORANGE,
GREEN,
BLUE,
PURPLE,
BROWN,
GREY,
};
public enum ObjName
{
COIN_RING,
COIN_LINE,
SIGN,
BLUE_COIN_BLOCK,
ITEM_BLOCK,
CANNON_LID,
PUSHABLE_BLOCK,
CORK_BOX,
CORK_BOX_RED_ROOF,
CORK_BOX_WHITE_BUILDING,
SWITCH,
ROTATING_PLATFORM,
LONG_WOODEN_BOARD,
EXPRESS_ELEVATOR,
HIDDEN_WOODEN_BLOCK,
CRYSTAL_TAP,
ARROW_LIFT,
SHORT_WOODEN_BOARD,
MARIO,
BOB_OMB_BUDDY,
AMP,
HEAVE_HO,
CHUCKYA,
FIRE_SPITTER,
SKEETER,
HEAVE_HO_ANCHOR,
CHUCKYA_ANCHOR,
BLUE_COIN,
ONE_UP,
SECRET,
STAR,
SECRET_STAR_SPAWNER,
TELEPORTER,
WATER_LEVEL_MANAGER,
MARIO_SPAWNER,
METAL_CAP_BLOCK,
VANISH_CAP_BLOCK,
TREE,
POLE,
RED_COIN,
ONE_UP_ACTIVATOR,
RED_COIN_STAR_SPAWNER,
YELLOW_COIN,
STAR_MARKER,
BUBBLE_SPAWNER,
BUBBLE,
UNKNOWN,
};
public enum UnloadableId
{
LOADED_ALWAYS,
SKEETER_CLOSE,
SKEETER_FAR,
CORK_BOX_EXPRESS_ELEVATOR,
CORK_BOX_EDGE_1,
CORK_BOX_EDGE_2,
CORK_BOX_EDGE_3,
CORK_BOX_EDGE_4,
CORK_BOX_BIG,
BLUE_COIN,
ITEM_BLOCK_PENTAGON_PLATFORM,
ITEM_BLOCK_EXPRESS_ELEVATOR,
ITEM_BLOCK_SLIDE_KICK,
ITEM_BLOCK_HIGH_CORNER,
ONE_UP_TUNNEL_1,
ONE_UP_TUNNEL_2,
SECRET_EXPRESS_ELEVATOR,
SECRET_BLOCK_HOLE,
SECRET_PENTAGON_PLATFORM,
SECRET_HIGH_CORNER,
SECRET_WATER_BLOCK,
};
public class ObjSlot
{
public readonly int InitialIndex;
public ObjName ObjName;
public ObjSlotColor Color;
public int Timer;
public int BubbleSpawnerMaxTimer;
public int BobombBuddyBlinkingTimer;
public bool ShouldUnload;
public ObjSlot(int initialIndex, ObjName objName, ObjSlotColor color)
{
InitialIndex = initialIndex;
ObjName = objName;
Color = color;
Timer = 0;
BubbleSpawnerMaxTimer = 0;
BobombBuddyBlinkingTimer = 0;
ShouldUnload = false;
}
public void Apply((ObjName objName, ObjSlotColor color, UnloadableId id) data)
{
ObjName = data.objName;
Color = data.color;
}
public override string ToString()
{
return string.Format(
"({0},{1},{2}____{3},{4},{5},{6})",
InitialIndex, ObjName, Color,
Timer, BubbleSpawnerMaxTimer, BobombBuddyBlinkingTimer, ShouldUnload);
}
public void Reset()
{
Timer = 0;
BubbleSpawnerMaxTimer = 0;
BobombBuddyBlinkingTimer = 0;
ShouldUnload = false;
}
public void FrameAdvance(RngObjSlotManager rngObjSlotManager, TtcRng rng)
{
if (Color == ObjSlotColor.GREY) return;
switch (ObjName)
{
case ObjName.ARROW_LIFT:
if (Timer == 0)
{
rng.PollRNG();
}
break;
case ObjName.AMP:
if (Timer == 0)
{
rng.PollRNG();
}
break;
case ObjName.BUBBLE_SPAWNER:
if (Timer == 0)
{
BubbleSpawnerMaxTimer = 2 + (int)(9 * rng.PollFloat());
}
if (Timer == BubbleSpawnerMaxTimer)
{
rngObjSlotManager.LoadBubble();
ShouldUnload = true;
}
break;
case ObjName.BUBBLE:
if (Timer == 0)
{
rng.PollRNG(9);
}
else
{
rng.PollRNG(2);
}
break;
case ObjName.BOB_OMB_BUDDY:
if (BobombBuddyBlinkingTimer > 0)
{
BobombBuddyBlinkingTimer = (BobombBuddyBlinkingTimer + 1) % 16;
}
else
{
if (rng.PollRNG() <= 655)
{
BobombBuddyBlinkingTimer++;
}
}
break;
}
Timer++;
}
}
public abstract class ObjSlotManager
{
protected readonly Dictionary<ObjSlotColor, List<ObjSlot>> _dictionary;
protected readonly List<ObjSlotColor> _colors;
public ObjSlotManager()
{
_dictionary = new Dictionary<ObjSlotColor, List<ObjSlot>>();
_colors = EnumUtilities.GetEnumValues<ObjSlotColor>(typeof(ObjSlotColor));
foreach (ObjSlotColor color in _colors)
{
_dictionary[color] = new List<ObjSlot>();
}
}
public void AddToEndOfList(ObjSlot objSlot)
{
_dictionary[objSlot.Color].Add(objSlot);
objSlot.Reset();
}
public void AddToStartOfList(ObjSlot objSlot)
{
_dictionary[objSlot.Color].Insert(0, objSlot);
}
public void UnloadColor(ObjSlotColor color)
{
List<ObjSlot> listToUnload = _dictionary[color];
while (listToUnload.Count > 0)
{
ObjSlot objSlot = listToUnload[0];
listToUnload.RemoveAt(0);
objSlot.Color = ObjSlotColor.GREY;
AddToStartOfList(objSlot);
}
}
public void Load((ObjName objName, ObjSlotColor color, UnloadableId id) data)
{
List<ObjSlot> unloadedSlots = _dictionary[ObjSlotColor.GREY];
ObjSlot objSlot = unloadedSlots[0];
unloadedSlots.RemoveAt(0);
objSlot.Apply(data);
AddToEndOfList(objSlot);
PostLoad(data);
}
public abstract void PostLoad((ObjName objName, ObjSlotColor color, UnloadableId id) data);
public void Unload(ObjSlot objSlot)
{
List<ObjSlot> listToUnloadFrom = _dictionary[objSlot.Color];
listToUnloadFrom.Remove(objSlot);
objSlot.Color = ObjSlotColor.GREY;
AddToStartOfList(objSlot);
}
public abstract void FrameAdvance();
public ObjSlot FindSlot(ObjName objName)
{
foreach (ObjSlotColor color in _colors)
{
foreach (ObjSlot objSlot in _dictionary[color])
{
if (objSlot.ObjName == objName) return objSlot;
}
}
return null;
}
public int GetCurrentSlotIndex(ObjSlot goalObjSlot)
{
int counter = 0;
foreach (ObjSlotColor color in _colors)
{
foreach (ObjSlot objSlot in _dictionary[color])
{
if (objSlot == goalObjSlot) return counter;
counter++;
}
}
return -1;
}
public override string ToString()
{
List<string> strings = new List<string>();
strings.Add(GetFirstLineForToString());
foreach (ObjSlotColor color in _colors)
{
foreach (ObjSlot objSlot in _dictionary[color])
{
strings.Add(objSlot.ToString());
}
}
return string.Join("\r\n", strings);
}
public abstract string GetFirstLineForToString();
}
public class BubbleObjSlotManager : ObjSlotManager
{
private readonly BubbleTracker _bubbleTracker;
private int bubbleSpawnerMaxTimer;
private int bubbleSpawnerTimer;
public BubbleObjSlotManager(BubbleTracker bubbleTracker)
: base()
{
_bubbleTracker = bubbleTracker;
bubbleSpawnerMaxTimer = int.MaxValue;
bubbleSpawnerTimer = 0;
}
public override void PostLoad((ObjName objName, ObjSlotColor color, UnloadableId id) data)
{
if (data.objName == ObjName.BUBBLE_SPAWNER)
{
bubbleSpawnerMaxTimer = _bubbleTracker.GetNextMaxTimer();
bubbleSpawnerTimer = 0;
}
}
public override void FrameAdvance()
{
ObjSlot bubbleSpawner = _dictionary[ObjSlotColor.PURPLE].FirstOrDefault(
objSlot => objSlot.ObjName == ObjName.BUBBLE_SPAWNER);
if (bubbleSpawner == null)
{
Load((ObjName.BUBBLE_SPAWNER, ObjSlotColor.PURPLE, UnloadableId.LOADED_ALWAYS));
bubbleSpawnerTimer++;
}
else
{
bubbleSpawnerTimer++;
if (bubbleSpawnerTimer > bubbleSpawnerMaxTimer)
{
Load((ObjName.BUBBLE, ObjSlotColor.BROWN, UnloadableId.LOADED_ALWAYS));
Unload(bubbleSpawner);
}
}
}
public override string GetFirstLineForToString()
{
return string.Format("timer={0} maxTimer={1}", bubbleSpawnerTimer, bubbleSpawnerMaxTimer);
}
}
public class RngObjSlotManager : ObjSlotManager
{
private readonly TtcRng _rng;
public RngObjSlotManager(TtcRng rng)
: base()
{
_rng = rng;
}
public override void PostLoad((ObjName objName, ObjSlotColor color, UnloadableId id) data)
{
}
public override void FrameAdvance()
{
ObjSlot bubbleSpawner = _dictionary[ObjSlotColor.PURPLE].FirstOrDefault(
objSlot => objSlot.ObjName == ObjName.BUBBLE_SPAWNER);
if (bubbleSpawner == null)
{
Load((ObjName.BUBBLE_SPAWNER, ObjSlotColor.PURPLE, UnloadableId.LOADED_ALWAYS));
}
List<ObjSlot> objSlotsToUnload = new List<ObjSlot>();
foreach (ObjSlotColor color in _colors)
{
foreach (ObjSlot objSlot in _dictionary[color])
{
objSlot.FrameAdvance(this, _rng);
if (objSlot.ShouldUnload)
{
objSlotsToUnload.Add(objSlot);
}
}
}
foreach (ObjSlot objSlot in objSlotsToUnload)
{
Unload(objSlot);
}
}
public void LoadBubble()
{
Load((ObjName.BUBBLE, ObjSlotColor.BROWN, UnloadableId.LOADED_ALWAYS));
}
public override string GetFirstLineForToString()
{
return string.Format("index={0} value={1}", _rng.GetIndex(), _rng.GetRng());
}
}
public class FrameTracker
{
private readonly List<int> _loadingZoneFrames;
private bool _isTownLoaded;
public FrameTracker(List<int> loadingZoneFrames)
{
_loadingZoneFrames = new List<int>(loadingZoneFrames);
_isTownLoaded = false;
}
public bool? AdvanceFrame()
{
if (_loadingZoneFrames.Count == 0) return null;
if (_loadingZoneFrames[0] > 1)
{
_loadingZoneFrames[0]--;
return null;
}
else
{
_loadingZoneFrames.RemoveAt(0);
_isTownLoaded = !_isTownLoaded;
return _isTownLoaded;
}
}
}
public class BubbleTracker
{
private readonly List<int> _bubbleSpawnerMaxTimers;
public BubbleTracker(List<int> bubbleSpawnerMaxTimers)
{
_bubbleSpawnerMaxTimers = new List<int>(bubbleSpawnerMaxTimers);
}
public int GetNextMaxTimer()
{
if (_bubbleSpawnerMaxTimers.Count == 0) return int.MaxValue;
int firstValue = _bubbleSpawnerMaxTimers[0];
_bubbleSpawnerMaxTimers.RemoveAt(0);
return firstValue;
}
}
public static List<(ObjName objName, ObjSlotColor color, UnloadableId id)> initialObjData =
new List<(ObjName objName, ObjSlotColor color, UnloadableId id)>()
{
(ObjName.COIN_RING, ObjSlotColor.PINK, UnloadableId.LOADED_ALWAYS),
(ObjName.COIN_LINE, ObjSlotColor.PINK, UnloadableId.LOADED_ALWAYS),
(ObjName.COIN_LINE, ObjSlotColor.PINK, UnloadableId.LOADED_ALWAYS),
(ObjName.SIGN, ObjSlotColor.RED, UnloadableId.LOADED_ALWAYS),
(ObjName.BLUE_COIN_BLOCK, ObjSlotColor.RED, UnloadableId.BLUE_COIN),
(ObjName.ITEM_BLOCK, ObjSlotColor.RED, UnloadableId.LOADED_ALWAYS),
(ObjName.CANNON_LID, ObjSlotColor.RED, UnloadableId.LOADED_ALWAYS),
(ObjName.PUSHABLE_BLOCK, ObjSlotColor.RED, UnloadableId.LOADED_ALWAYS),
(ObjName.PUSHABLE_BLOCK, ObjSlotColor.RED, UnloadableId.LOADED_ALWAYS),
(ObjName.CORK_BOX, ObjSlotColor.RED, UnloadableId.CORK_BOX_EXPRESS_ELEVATOR),
(ObjName.SWITCH, ObjSlotColor.RED, UnloadableId.LOADED_ALWAYS),
(ObjName.CORK_BOX, ObjSlotColor.RED, UnloadableId.LOADED_ALWAYS),
(ObjName.
gitextract_wl97lnnh/ ├── .gitattributes ├── .gitignore ├── Directory.Build.props ├── README.md ├── STROOP/ │ ├── App.config │ ├── Calculators/ │ │ ├── AirMovementCalculator.cs │ │ ├── BobombState.cs │ │ ├── CalculatorMain.cs │ │ ├── CalculatorUtilities.cs │ │ ├── GroundMovementCalculator.cs │ │ ├── HolpCalculator.cs │ │ ├── Input.cs │ │ ├── LoadingZoneMain.cs │ │ ├── MarioState.cs │ │ ├── MutableMarioState.cs │ │ ├── ObjectCalculator.cs │ │ ├── OverflowJumpCalculator.cs │ │ ├── PendulumData.cs │ │ ├── PendulumMain.cs │ │ ├── PunchRecoilCalculator.cs │ │ ├── SlideCalculator.cs │ │ ├── SlidingMarioState.cs │ │ ├── WallDisplacementCalculator.cs │ │ ├── WaterLevelCalculator.cs │ │ ├── WaterMain.cs │ │ └── WaterState.cs │ ├── Config/ │ │ ├── ActionsData.xml │ │ ├── AreaData.xml │ │ ├── CamHackData.xml │ │ ├── CameraData.xml │ │ ├── CellsData.xml │ │ ├── Config.xml │ │ ├── CourseData.xml │ │ ├── CustomData.xml │ │ ├── DebugData.xml │ │ ├── FileData.xml │ │ ├── FileImageAssociations.xml │ │ ├── Hacks.xml │ │ ├── HudData.xml │ │ ├── InputData.xml │ │ ├── InputImageAssociations.xml │ │ ├── KoopaTheQuick1Waypoints.xml │ │ ├── KoopaTheQuick2Waypoints.xml │ │ ├── MainSaveData.xml │ │ ├── MapAssociations.xml │ │ ├── MapVars.xml │ │ ├── MarioActions.xml │ │ ├── MarioAnimations.xml │ │ ├── MarioData.xml │ │ ├── MarioStateData.xml │ │ ├── MhsData.xml │ │ ├── MiscData.xml │ │ ├── Missions.xml │ │ ├── MusicData.xml │ │ ├── MusicData2.xml │ │ ├── ObjectAssociations.xml │ │ ├── ObjectData.xml │ │ ├── OptionsData.xml │ │ ├── PaintingData.xml │ │ ├── PendulumSwings.xml │ │ ├── PuData.xml │ │ ├── QuarterFrameData.xml │ │ ├── RacingPenguinWaypoints.xml │ │ ├── SavedSettings.xml │ │ ├── ScriptData.xml │ │ ├── SnowData.xml │ │ ├── TasData.xml │ │ ├── TriangleInfo.xml │ │ ├── TrianglesData.xml │ │ ├── TtmBowlingBallPoints.xml │ │ ├── WarpData.xml │ │ └── WaterData.xml │ ├── Controls/ │ │ ├── BetterContextMenuStrip.cs │ │ ├── BetterSplitContainer.cs │ │ ├── BetterTextbox.cs │ │ ├── BinaryButton.cs │ │ ├── BorderedTableLayoutPanel.cs │ │ ├── CarretlessTextBox.cs │ │ ├── CoinRingDisplayPanel.cs │ │ ├── ColorSelector.Designer.cs │ │ ├── ColorSelector.cs │ │ ├── ColorSelector.resx │ │ ├── DoubleBufferedTableLayoutPanel.cs │ │ ├── FileBinaryPictureBox.cs │ │ ├── FileCoinScoreTextbox.cs │ │ ├── FileCourseLabel.cs │ │ ├── FileHatLocationPictureBox.cs │ │ ├── FileHatPositionTextbox.cs │ │ ├── FileKeyDoorPictureBox.cs │ │ ├── FilePictureBox.cs │ │ ├── FileStarPictureBox.cs │ │ ├── FileTextbox.cs │ │ ├── InputDisplayPanel.cs │ │ ├── IntPictureBox.cs │ │ ├── MainSaveTextbox.cs │ │ ├── ModelGraphics.cs │ │ ├── NoTearFlowLayoutPanel.cs │ │ ├── ObjectSlot.cs │ │ ├── ObjectSlotFlowLayoutPanel.cs │ │ ├── PanelEx.cs │ │ ├── RichTextBoxEx.cs │ │ ├── TabControlEx.cs │ │ ├── TrackBarEx.cs │ │ ├── TransparentTextbox.cs │ │ ├── VarHackContainer.Designer.cs │ │ ├── VarHackContainer.cs │ │ ├── VarHackContainer.resx │ │ ├── VarHackContainerDefaults.cs │ │ ├── VarHackFlowLayoutPanel.cs │ │ ├── WatchVariable.cs │ │ ├── WatchVariableAddressWrapper.cs │ │ ├── WatchVariableAngleWrapper.cs │ │ ├── WatchVariableBooleanWrapper.cs │ │ ├── WatchVariableControl.Designer.cs │ │ ├── WatchVariableControl.cs │ │ ├── WatchVariableControl.resx │ │ ├── WatchVariableControlPrecursor.cs │ │ ├── WatchVariableControlSettings.cs │ │ ├── WatchVariableFlowLayoutPanel.cs │ │ ├── WatchVariableLock.cs │ │ ├── WatchVariableNumberWrapper.cs │ │ ├── WatchVariableObjectWrapper.cs │ │ ├── WatchVariableStringWrapper.cs │ │ ├── WatchVariableTriangleWrapper.cs │ │ └── WatchVariableWrapper.cs │ ├── EmbeddedResources/ │ │ ├── Python.xshd │ │ └── decompile.py │ ├── Enums/ │ │ ├── AddToTabTypeEnum.cs │ │ ├── AggregateMathOperation.cs │ │ ├── AngleUnitType.cs │ │ ├── BaseAddressTypeEnum.cs │ │ ├── BinaryMathOperation.cs │ │ ├── CamHackMode.cs │ │ ├── CellSelectionType.cs │ │ ├── CoinParamsOrder.cs │ │ ├── CompassPosition.cs │ │ ├── Coordinate.cs │ │ ├── CoordinateAngle.cs │ │ ├── CoordinateSystem.cs │ │ ├── CopyTypeEnum.cs │ │ ├── EndiannessType.cs │ │ ├── FileType.cs │ │ ├── FrameInputRelationType.cs │ │ ├── HatLocation.cs │ │ ├── InputDisplayTypeEnum.cs │ │ ├── Map3DCameraMode.cs │ │ ├── MapTrackerIconType.cs │ │ ├── MapTrackerOrderType.cs │ │ ├── MapTrackerVisibilityType.cs │ │ ├── MapType.cs │ │ ├── MouseEvent.cs │ │ ├── PaintingListTypeEnum.cs │ │ ├── PositionControllerRelativity.cs │ │ ├── ReadWriteMode.cs │ │ ├── RelativeDirection.cs │ │ ├── RomVersion.cs │ │ ├── RomVersionSelection.cs │ │ ├── TriangleClassification.cs │ │ ├── TriangleClassificationExtended.cs │ │ ├── TriangleVertexOffset.cs │ │ ├── VariableGroup.cs │ │ └── WatchVariableSubclass.cs │ ├── Extensions/ │ │ ├── BitmapExtensions.cs │ │ ├── ColorExtensions.cs │ │ ├── ControlCollectionsExtensions.cs │ │ ├── FormExtensions.cs │ │ ├── IEnumerableExtensions.cs │ │ ├── RectangleExtensions.cs │ │ ├── RichTextBoxExtensions.cs │ │ └── SizeExtensions.cs │ ├── Forms/ │ │ ├── ActionForm.Designer.cs │ │ ├── ActionForm.cs │ │ ├── ActionForm.resx │ │ ├── CoinRingDisplayForm.Designer.cs │ │ ├── CoinRingDisplayForm.cs │ │ ├── CoinRingDisplayForm.resx │ │ ├── FormManager.cs │ │ ├── IUpdatableForm.cs │ │ ├── ImageForm.Designer.cs │ │ ├── ImageForm.cs │ │ ├── ImageForm.resx │ │ ├── InfoForm.Designer.cs │ │ ├── InfoForm.cs │ │ ├── InfoForm.resx │ │ ├── LoadingForm.Designer.cs │ │ ├── LoadingForm.cs │ │ ├── LoadingForm.resx │ │ ├── MainLoadingForm.Designer.cs │ │ ├── MainLoadingForm.cs │ │ ├── MainLoadingForm.resx │ │ ├── MapPopOutForm.Designer.cs │ │ ├── MapPopOutForm.cs │ │ ├── MapPopOutForm.resx │ │ ├── SelectionForm.Designer.cs │ │ ├── SelectionForm.cs │ │ ├── SelectionForm.resx │ │ ├── StroopMainForm.Designer.cs │ │ ├── StroopMainForm.cs │ │ ├── StroopMainForm.resx │ │ ├── TabForm.Designer.cs │ │ ├── TabForm.cs │ │ ├── TabForm.resx │ │ ├── TriangleListForm.Designer.cs │ │ ├── TriangleListForm.cs │ │ ├── TriangleListForm.resx │ │ ├── ValueForm.Designer.cs │ │ ├── ValueForm.cs │ │ ├── ValueForm.resx │ │ ├── ValueSplitForm.Designer.cs │ │ ├── ValueSplitForm.cs │ │ ├── ValueSplitForm.resx │ │ ├── VariableBitForm.Designer.cs │ │ ├── VariableBitForm.cs │ │ ├── VariableBitForm.resx │ │ ├── VariableControllerForm.Designer.cs │ │ ├── VariableControllerForm.cs │ │ ├── VariableControllerForm.resx │ │ ├── VariableCreationForm.Designer.cs │ │ ├── VariableCreationForm.cs │ │ ├── VariableCreationForm.resx │ │ ├── VariablePopOutForm.Designer.cs │ │ ├── VariablePopOutForm.cs │ │ ├── VariablePopOutForm.resx │ │ ├── VariableTripletControllerForm.Designer.cs │ │ ├── VariableTripletControllerForm.cs │ │ ├── VariableTripletControllerForm.resx │ │ ├── VariableViewerForm.Designer.cs │ │ ├── VariableViewerForm.cs │ │ └── VariableViewerForm.resx │ ├── Licenses.txt │ ├── LoadingHandler.cs │ ├── M64/ │ │ ├── M64CopiedData.cs │ │ ├── M64CopiedFrame.cs │ │ ├── M64File.cs │ │ ├── M64Header.cs │ │ ├── M64InputCell.cs │ │ ├── M64InputFrame.cs │ │ ├── M64Stats.cs │ │ └── M64Utilities.cs │ ├── Managers/ │ │ ├── ActionsManager.cs │ │ ├── AreaManager.cs │ │ ├── CamHackManager.cs │ │ ├── CameraManager.cs │ │ ├── CellsManager.cs │ │ ├── CoinManager.cs │ │ ├── CustomManager.cs │ │ ├── DataManager.cs │ │ ├── DebugManager.cs │ │ ├── DisassemblyManager.cs │ │ ├── FileManager.cs │ │ ├── GfxManager.cs │ │ ├── HackManager.cs │ │ ├── HudManager.cs │ │ ├── IVariableAdder.cs │ │ ├── InputManager.cs │ │ ├── M64Manager.cs │ │ ├── MainSaveManager.cs │ │ ├── MapManager.cs │ │ ├── MarioManager.cs │ │ ├── MemoryManager.cs │ │ ├── MiscManager.cs │ │ ├── ModelManager.cs │ │ ├── MusicManager.cs │ │ ├── ObjectManager.cs │ │ ├── ObjectSlotsManager.cs │ │ ├── OptionsManager.cs │ │ ├── PaintingManager.cs │ │ ├── PuManager.cs │ │ ├── QuarterFrameManager.cs │ │ ├── ScriptManager.cs │ │ ├── SearchManager.cs │ │ ├── SnowManager.cs │ │ ├── SoundManager.cs │ │ ├── TasManager.cs │ │ ├── TestingManager.cs │ │ ├── TriangleManager.cs │ │ ├── VarHackManager.cs │ │ ├── VariableAdder.cs │ │ ├── WarpManager.cs │ │ ├── WatchVariableControlSettingsManager.cs │ │ ├── WatchVariableLockManager.cs │ │ └── WaterManager.cs │ ├── Map/ │ │ ├── Map3D/ │ │ │ ├── Map3DCamera.cs │ │ │ ├── Map3DGraphics.cs │ │ │ └── Map3DVertex.cs │ │ ├── MapDrawType.cs │ │ ├── MapGraphics.cs │ │ ├── MapGui.cs │ │ ├── MapObject.cs │ │ ├── MapObjectAggregatedPath.cs │ │ ├── MapObjectAllMapObjectsWithName.cs │ │ ├── MapObjectAllObjectCeiling.cs │ │ ├── MapObjectAllObjectFloor.cs │ │ ├── MapObjectAllObjectWall.cs │ │ ├── MapObjectAllObjectsWithName.cs │ │ ├── MapObjectAngleRange.cs │ │ ├── MapObjectArrow.cs │ │ ├── MapObjectBackground.cs │ │ ├── MapObjectBounds.cs │ │ ├── MapObjectBranchPath.cs │ │ ├── MapObjectCUpFloor.cs │ │ ├── MapObjectCamera.cs │ │ ├── MapObjectCameraFocus.cs │ │ ├── MapObjectCameraView.cs │ │ ├── MapObjectCeiling.cs │ │ ├── MapObjectCellGridlines.cs │ │ ├── MapObjectCircle.cs │ │ ├── MapObjectCoffinBox.cs │ │ ├── MapObjectCompass.cs │ │ ├── MapObjectCoordinateLabels.cs │ │ ├── MapObjectCorkBoxTester.cs │ │ ├── MapObjectCurrentBackground.cs │ │ ├── MapObjectCurrentCell.cs │ │ ├── MapObjectCurrentLevel.cs │ │ ├── MapObjectCurrentUnit.cs │ │ ├── MapObjectCustomBackground.cs │ │ ├── MapObjectCustomCeiling.cs │ │ ├── MapObjectCustomCylinder.cs │ │ ├── MapObjectCustomCylinderPoints.cs │ │ ├── MapObjectCustomFloor.cs │ │ ├── MapObjectCustomGridlines.cs │ │ ├── MapObjectCustomIconPoints.cs │ │ ├── MapObjectCustomLevel.cs │ │ ├── MapObjectCustomPositionAngle.cs │ │ ├── MapObjectCustomPositionAngleArrow.cs │ │ ├── MapObjectCustomSphere.cs │ │ ├── MapObjectCustomSpherePoints.cs │ │ ├── MapObjectCustomUnitPoints.cs │ │ ├── MapObjectCustomWall.cs │ │ ├── MapObjectCylinder.cs │ │ ├── MapObjectDrawDistanceSphere.cs │ │ ├── MapObjectDrawing.cs │ │ ├── MapObjectEffectiveHitboxCylinder.cs │ │ ├── MapObjectEffectiveHitboxHurtboxCylinder.cs │ │ ├── MapObjectEffectiveHurtboxCylinder.cs │ │ ├── MapObjectFacingDivider.cs │ │ ├── MapObjectFloatGridlines.cs │ │ ├── MapObjectFloor.cs │ │ ├── MapObjectFlyGuyZoneDividers.cs │ │ ├── MapObjectGhost.cs │ │ ├── MapObjectGridlines.cs │ │ ├── MapObjectHitboxCylinder.cs │ │ ├── MapObjectHitboxTriangle.cs │ │ ├── MapObjectHolp.cs │ │ ├── MapObjectHolpDisplayer.cs │ │ ├── MapObjectHome.cs │ │ ├── MapObjectHomeLine.cs │ │ ├── MapObjectHorizontalTriangle.cs │ │ ├── MapObjectHoverData.cs │ │ ├── MapObjectHoverDataEnum.cs │ │ ├── MapObjectHurtboxCylinder.cs │ │ ├── MapObjectIcon.cs │ │ ├── MapObjectIconPoint.cs │ │ ├── MapObjectIconRectangle.cs │ │ ├── MapObjectIwerlipses.cs │ │ ├── MapObjectLedgeGrabChecker.cs │ │ ├── MapObjectLevel.cs │ │ ├── MapObjectLevelCeiling.cs │ │ ├── MapObjectLevelFloor.cs │ │ ├── MapObjectLevelTriangleInterface.cs │ │ ├── MapObjectLevelWall.cs │ │ ├── MapObjectLine.cs │ │ ├── MapObjectLineSegment.cs │ │ ├── MapObjectMario.cs │ │ ├── MapObjectMarioCeiling.cs │ │ ├── MapObjectMarioFacingArrow.cs │ │ ├── MapObjectMarioFloor.cs │ │ ├── MapObjectMarioFloorArrow.cs │ │ ├── MapObjectMarioIntendedArrow.cs │ │ ├── MapObjectMarioMovingArrow.cs │ │ ├── MapObjectMarioSlidingArrow.cs │ │ ├── MapObjectMarioSpeedArrow.cs │ │ ├── MapObjectMarioTwirlArrow.cs │ │ ├── MapObjectMarioWall.cs │ │ ├── MapObjectNextPositions.cs │ │ ├── MapObjectOJPosition.cs │ │ ├── MapObjectObject.cs │ │ ├── MapObjectObjectAngleToMarioArrow.cs │ │ ├── MapObjectObjectCeiling.cs │ │ ├── MapObjectObjectCustomArrow.cs │ │ ├── MapObjectObjectFacingArrow.cs │ │ ├── MapObjectObjectFloor.cs │ │ ├── MapObjectObjectGraphicsArrow.cs │ │ ├── MapObjectObjectGraphicsTriangles.cs │ │ ├── MapObjectObjectMovingArrow.cs │ │ ├── MapObjectObjectSpeedArrow.cs │ │ ├── MapObjectObjectTargetArrow.cs │ │ ├── MapObjectObjectWall.cs │ │ ├── MapObjectOffsetPositionAngle.cs │ │ ├── MapObjectPath.cs │ │ ├── MapObjectPathSegment.cs │ │ ├── MapObjectPoint.cs │ │ ├── MapObjectPreviousPositions.cs │ │ ├── MapObjectPuGridlines.cs │ │ ├── MapObjectPunchDetector.cs │ │ ├── MapObjectPunchFloor.cs │ │ ├── MapObjectPushHitboxCylinder.cs │ │ ├── MapObjectPyramidNormal.cs │ │ ├── MapObjectPyramidNormalTarget.cs │ │ ├── MapObjectPyramidPlatformNormals.cs │ │ ├── MapObjectQuad.cs │ │ ├── MapObjectRenderTable.cs │ │ ├── MapObjectScuttlebugLungingArrow.cs │ │ ├── MapObjectSector.cs │ │ ├── MapObjectSelf.cs │ │ ├── MapObjectSettings.cs │ │ ├── MapObjectSettingsAccumulator.cs │ │ ├── MapObjectSlidePositions.cs │ │ ├── MapObjectSphere.cs │ │ ├── MapObjectSquishCancelSpots.cs │ │ ├── MapObjectSwooperEffectiveTargetArrow.cs │ │ ├── MapObjectTangibilitySphere.cs │ │ ├── MapObjectTriangle.cs │ │ ├── MapObjectUnitGridlines.cs │ │ ├── MapObjectWall.cs │ │ ├── MapObjectWaters.cs │ │ ├── MapSemaphore.cs │ │ ├── MapSemaphoreManager.cs │ │ ├── MapTracker.Designer.cs │ │ ├── MapTracker.cs │ │ ├── MapTracker.resx │ │ ├── MapTrackerFlowLayoutPanel.cs │ │ └── MapUtilities.cs │ ├── Models/ │ │ ├── ByteModel.cs │ │ ├── CameraDataModel.cs │ │ ├── DataModels.cs │ │ ├── IUpdatableDataModel.cs │ │ ├── LevelDataModel.cs │ │ ├── MarioDataModel.cs │ │ ├── ObjectDataModel.cs │ │ ├── ObjectProcessorDataModel.cs │ │ ├── PanModel.cs │ │ ├── TriangleDataModel.cs │ │ ├── TriangleDataModelCustom.cs │ │ ├── TriangleDataModelFull.cs │ │ ├── TriangleDataModelLazy.cs │ │ └── TriangleMapData.cs │ ├── Program.cs │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── Resources/ │ │ ├── Hacks/ │ │ │ ├── Camera45Hack.hck │ │ │ ├── CameraControl.hck │ │ │ ├── DisplayVariable.hck │ │ │ ├── DisplayVariable2.hck │ │ │ ├── HitboxViewJ.hck │ │ │ ├── HitboxViewU.hck │ │ │ ├── NumRngUsagesJ.hck │ │ │ ├── NumRngUsagesU.hck │ │ │ ├── ObjectGraphicsTriangles.hck │ │ │ ├── ObjectGraphicsTrianglesCameraPov.hck │ │ │ ├── PreviousPositionsHackJ.hck │ │ │ ├── PreviousPositionsHackU.hck │ │ │ ├── PuVisible.hck │ │ │ ├── QFrameInfoHack.hck │ │ │ ├── RcpCrashJ.hck │ │ │ ├── RcpCrashU.hck │ │ │ ├── ReenableDebugControlsJ.hck │ │ │ ├── ReenableDebugControlsU.hck │ │ │ └── SpawnHack.hck │ │ ├── Scripts/ │ │ │ ├── FrameProc.src64 │ │ │ ├── ObjectEndProc.src64 │ │ │ └── ObjectStartProc.src64 │ │ └── Shaders/ │ │ ├── FragmentShader.glsl │ │ └── VertexShader.glsl │ ├── STROOP.csproj │ ├── Script/ │ │ ├── ScriptEngine.cs │ │ └── TokenScript.cs │ ├── Structs/ │ │ ├── ActionTable.cs │ │ ├── AnimationTable.cs │ │ ├── BehaviorCriteria.cs │ │ ├── Configurations/ │ │ │ ├── AreaConfig.cs │ │ │ ├── CamHackConfig.cs │ │ │ ├── CameraConfig.cs │ │ │ ├── Config.cs │ │ │ ├── DebugConfig.cs │ │ │ ├── FileConfig.cs │ │ │ ├── GhostHackConfig.cs │ │ │ ├── GotoRetrieveConfig.cs │ │ │ ├── HackConfig.cs │ │ │ ├── HudConfig.cs │ │ │ ├── InputConfig.cs │ │ │ ├── LockConfig.cs │ │ │ ├── M64Config.cs │ │ │ ├── MainSaveConfig.cs │ │ │ ├── MapConfig.cs │ │ │ ├── MappingConfig.cs │ │ │ ├── MarioConfig.cs │ │ │ ├── MarioObjectConfig.cs │ │ │ ├── MiscConfig.cs │ │ │ ├── ObjectConfig.cs │ │ │ ├── ObjectSlotsConfig.cs │ │ │ ├── OptionsConfig.cs │ │ │ ├── OverlayConfig.cs │ │ │ ├── PaintingConfig.cs │ │ │ ├── PositionControllerRelativityConfig.cs │ │ │ ├── RefreshRateConfig.cs │ │ │ ├── RomVersionConfig.cs │ │ │ ├── SavedSettingsConfig.cs │ │ │ ├── SnowConfig.cs │ │ │ ├── SpecialConfig.cs │ │ │ ├── TableConfig.cs │ │ │ ├── TestingConfig.cs │ │ │ ├── TriangleConfig.cs │ │ │ ├── TriangleOffsetsConfig.cs │ │ │ ├── TtcObjectConfig.cs │ │ │ ├── VarHackConfig.cs │ │ │ └── WaypointConfig.cs │ │ ├── CourseDataTable.cs │ │ ├── Emulator.cs │ │ ├── FlyGuyDataTable.cs │ │ ├── GameScript.cs │ │ ├── Gui/ │ │ │ ├── FileImageGui.cs │ │ │ ├── InputImageGui.cs │ │ │ ├── M64Gui.cs │ │ │ └── ObjectSlotManagerGui.cs │ │ ├── InputFrame.cs │ │ ├── Map/ │ │ │ ├── BackgroundImage.cs │ │ │ ├── MapAssociations.cs │ │ │ └── MapLayout.cs │ │ ├── MissionTable.cs │ │ ├── MusicEntry.cs │ │ ├── MusicTable.cs │ │ ├── ObjectAngleTable.cs │ │ ├── ObjectAssociations.cs │ │ ├── ObjectBehaviorAssociation.cs │ │ ├── PendulumSwingTable.cs │ │ ├── PendulumVertexTable.cs │ │ ├── PointTable.cs │ │ ├── ProcessSelection.cs │ │ ├── PushHitbox.cs │ │ ├── RomHack.cs │ │ ├── SpawnHack.cs │ │ ├── TriangleInfoTable.cs │ │ ├── TrigTable.cs │ │ └── WaypointTable.cs │ ├── TTC/ │ │ ├── TTCAmp.cs │ │ ├── TTCBobomb.cs │ │ ├── TTCCog.cs │ │ ├── TTCDust.cs │ │ ├── TTCElevator.cs │ │ ├── TTCHand.cs │ │ ├── TTCMain.cs │ │ ├── TTCObject.cs │ │ ├── TTCPendulum.cs │ │ ├── TTCPitBlock.cs │ │ ├── TTCPusher.cs │ │ ├── TTCRNG.cs │ │ ├── TTCRotatingBlock.cs │ │ ├── TTCRotatingTriangularPrism.cs │ │ ├── TTCSpinner.cs │ │ ├── TTCSpinningTriangle.cs │ │ ├── TTCThwomp.cs │ │ ├── TTCTreadmill.cs │ │ ├── TTCWheel.cs │ │ ├── TtcPendulum2.cs │ │ ├── TtcPendulumBad.cs │ │ ├── TtcRng2.cs │ │ ├── TtcSaveState.cs │ │ ├── TtcSaveStateByteIterator.cs │ │ ├── TtcSimulation.cs │ │ └── TtcUtilities.cs │ ├── Utilities/ │ │ ├── AnimationUtilities.cs │ │ ├── AreaUtilities.cs │ │ ├── BehaviorDecoder.cs │ │ ├── BitfsPlatformGroupTable.cs │ │ ├── BoolUtilities.cs │ │ ├── ButtonUtilities.cs │ │ ├── CamHackUtilities.cs │ │ ├── CellSnapshot.cs │ │ ├── CellUtilities.cs │ │ ├── CogUtilities.cs │ │ ├── CoinMovementCalculator.cs │ │ ├── CoinObject.cs │ │ ├── CoinTrajectoryFilter.cs │ │ ├── CoinTrajejctory.cs │ │ ├── ColorUtilities.cs │ │ ├── ControlUtilities.cs │ │ ├── CopyUtilities.cs │ │ ├── CorkBox.cs │ │ ├── CorkBoxUtilities.cs │ │ ├── DecompilerFunctionUtilities.cs │ │ ├── DemoCounterUtilities.cs │ │ ├── DialogUtilities.cs │ │ ├── DictionaryUtilities.cs │ │ ├── EasingUtilities.cs │ │ ├── EndianUtilities.cs │ │ ├── EndiannessUtilities.cs │ │ ├── EnumUtilities.cs │ │ ├── ExtendedLevelBoundariesUtilities.cs │ │ ├── Fast3DDecoder.cs │ │ ├── FlyingUtilities.cs │ │ ├── HelpfulHintUtilities.cs │ │ ├── HexUtilities.cs │ │ ├── ImageUtilities.cs │ │ ├── InGameFunctionCall.cs │ │ ├── InGameTrigUtilities.cs │ │ ├── Kernal32NativeMethods.cs │ │ ├── KeyboardUtilities.cs │ │ ├── LazyImage.cs │ │ ├── MathOperationUtilities.cs │ │ ├── MoreMath.cs │ │ ├── MupenUtilities.cs │ │ ├── N64Disassembler.cs │ │ ├── ObjectOrderingUtilities.cs │ │ ├── ObjectRngUtilities.cs │ │ ├── ObjectSnapshot.cs │ │ ├── ObjectUtilities.cs │ │ ├── ParsingUtilities.cs │ │ ├── PasteUtilities.cs │ │ ├── PlushUtilities.cs │ │ ├── PositionAngle.cs │ │ ├── ProcessGroupUtilities.cs │ │ ├── PuUtilities.cs │ │ ├── RngIndexer.cs │ │ ├── ScriptParser.cs │ │ ├── SegmentationUtilities.cs │ │ ├── SkribblioUtilities.cs │ │ ├── Stream/ │ │ │ ├── BaseProcessIO.cs │ │ │ ├── DolphinProcessIO.cs │ │ │ ├── IEmuRamIO.cs │ │ │ ├── ProcessStream.cs │ │ │ ├── StFileIO.cs │ │ │ └── WindowsProcessIO.cs │ │ ├── StringUtilities.cs │ │ ├── SubtitleUtilities.cs │ │ ├── TestUtilities.cs │ │ ├── TestUtilities2.cs │ │ ├── TrackPlatform.cs │ │ ├── TrackPlatformTable.cs │ │ ├── TriangleUtilities.cs │ │ ├── TtcSpeedSettingUtilities.cs │ │ ├── TypeUtilities.cs │ │ ├── VarHackSpecialUtilities.cs │ │ ├── WatchVariableCoordinateManager.cs │ │ ├── WatchVariableSelectionUtilities.cs │ │ ├── WatchVariableSpecialDictionary.cs │ │ ├── WatchVariableSpecialUtilities.cs │ │ ├── WatchVariableUtilities.cs │ │ ├── WaterUtilities.cs │ │ ├── XmlConfigParser.cs │ │ └── ZipUtilities.cs │ └── app.manifest ├── STROOP.sln ├── STROOPUnitTests/ │ ├── Mocks/ │ │ └── MockEmuIO.cs │ ├── ProcessStreamTests.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── STROOPUnitTests.csproj │ └── app.config └── azure-pipelines.yml
Showing preview only (491K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5191 symbols across 541 files)
FILE: STROOP/Calculators/AirMovementCalculator.cs
class AirMovementCalculator (line 15) | public static class AirMovementCalculator
method ApplyInput (line 17) | public static MarioState ApplyInput(MarioState marioState, Input input...
method ApplyInput (line 25) | public static MarioState ApplyInput(MarioState marioState, int angleDi...
method ApplyInput (line 33) | public static MarioState ApplyInput(MarioState marioState, RelativeDir...
method ApplyInputRepeatedly (line 41) | public static MarioState ApplyInputRepeatedly(MarioState marioState, R...
method AirMove (line 52) | public static MarioState AirMove(MarioState initialState, int numQStep...
method ComputeAirHSpeed (line 124) | private static MarioState ComputeAirHSpeed(MarioState initialState, in...
method ComputeAirHSpeed (line 170) | private static MarioState ComputeAirHSpeed(MarioState initialState, In...
method ComputeAirHSpeed (line 217) | private static MarioState ComputeAirHSpeed(MarioState initialState, Re...
method ComputeAirHSpeed (line 282) | private static float ComputeAirHSpeed(float initialHSpeed)
method ComputePosition (line 291) | public static float ComputePosition(float position, float hSpeed, int ...
method ComputeAirYSpeed (line 301) | private static MarioState ComputeAirYSpeed(MarioState initialState)
method ApproachHSpeed (line 322) | private static float ApproachHSpeed(float speed, float maxSpeed, float...
FILE: STROOP/Calculators/BobombState.cs
class BobombState (line 14) | public class BobombState
method BobombState (line 30) | public BobombState(
method bobomb_act_patrol (line 58) | public void bobomb_act_patrol()
method object_step (line 66) | public void object_step()
method calc_new_obj_vel_and_pos_y (line 74) | void calc_new_obj_vel_and_pos_y(float objVelX, float objVelZ) {
method obj_update_pos_vel_xz (line 138) | public void obj_update_pos_vel_xz()
method obj_return_home_if_safe (line 146) | public void obj_return_home_if_safe() {
method approach_s16_symmetric (line 153) | public short approach_s16_symmetric(short value, short target, short i...
method ToString (line 181) | public override string ToString()
FILE: STROOP/Calculators/CalculatorMain.cs
class CalculatorMain (line 15) | public static class CalculatorMain
method CalculateMovementForBitsHolp (line 17) | public static void CalculateMovementForBitsHolp()
method CalculateMovementForWfHolp (line 99) | public static void CalculateMovementForWfHolp()
method CalculateMovementForBully (line 194) | public static void CalculateMovementForBully()
method CalculateMovementForWallGap (line 283) | public static void CalculateMovementForWallGap()
method CalculateMovementForTtmHolp (line 406) | public static void CalculateMovementForTtmHolp()
method GetSuccessFloatPositions (line 500) | public static List<(float, float)> GetSuccessFloatPositions()
method TestWalkingCode (line 633) | public static void TestWalkingCode()
method TestGetRelativePosition (line 659) | public static void TestGetRelativePosition()
method TestGetObjectDisplacement (line 672) | public static void TestGetObjectDisplacement()
method TestCombined (line 691) | public static void TestCombined()
method TestMovementTowardsSpot (line 740) | public static void TestMovementTowardsSpot()
method IsInSortedPositions (line 836) | public static bool IsInSortedPositions(
method IsInSortedPositions (line 842) | public static bool IsInSortedPositions(
method IsInSortedPositions2 (line 863) | public static float IsInSortedPositions2(
method IsInSortedPositions2 (line 869) | public static float IsInSortedPositions2(
method GetAngleDiffs (line 890) | public static List<int> GetAngleDiffs(int mid, int range, int multipli...
method GetAngleDiffsList (line 901) | public static List<List<int>> GetAngleDiffsList(int length, int mid, i...
method GetAngleDiffsListRecursion (line 915) | public static void GetAngleDiffsListRecursion(
method TestBruteForceMovingToSpot (line 933) | public static void TestBruteForceMovingToSpot()
method MoveIntoSpot (line 961) | public static (float x, float z) MoveIntoSpot(List<int> angleDiffs, bo...
class MarioBobombState (line 1064) | public class MarioBobombState
method MarioBobombState (line 1070) | public MarioBobombState(MarioState marioState, float objX, float objZ)
method ToString (line 1077) | public override string ToString()
method ApplyInputToMarioBobombState (line 1083) | public static MarioBobombState ApplyInputToMarioBobombState(
method ApplyInputToMarioBobombState (line 1116) | public static MarioBobombState ApplyInputToMarioBobombState(
method CalculateTylerChallenge (line 1149) | public static void CalculateTylerChallenge()
method TestButtSlide (line 1218) | public static void TestButtSlide()
method GetPossibleHeights (line 1297) | private static List<float> GetPossibleHeights(float initialY, float hS...
method CalculateMovementForCcmWallGap (line 1330) | public static void CalculateMovementForCcmWallGap()
method CalculateMovementForBobombSoftlock (line 1424) | public static void CalculateMovementForBobombSoftlock()
method CalculateMovementForBobombSoftlockGoomba (line 1529) | public static void CalculateMovementForBobombSoftlockGoomba()
method CalculateMovementForLLLPoleSoftlock (line 1619) | public static void CalculateMovementForLLLPoleSoftlock()
method CalculateMovementForCCMPenguinSoftlock (line 1712) | public static void CalculateMovementForCCMPenguinSoftlock()
method TestBobomb (line 1809) | public static void TestBobomb()
method TestBobomb3 (line 1830) | public static void TestBobomb3()
method TestBobomb2 (line 1867) | public static void TestBobomb2()
method GetLastAngleChangeTime (line 1917) | public static int GetLastAngleChangeTime(BobombState bobomb, int numIt...
method GetAngleToFarPoint (line 1941) | public static ushort GetAngleToFarPoint(BobombState bobomb)
method TestX (line 1965) | public static void TestX()
method TestZ (line 2045) | public static void TestZ()
method TestBitfsPosition1 (line 2125) | public static void TestBitfsPosition1()
method TestTtcTreadmillPosition (line 2205) | public static void TestTtcTreadmillPosition()
method TestPendulumLanding (line 2303) | public static void TestPendulumLanding()
method DoPunchFrames (line 2405) | public static MarioState DoPunchFrames(MarioState marioState)
method apply_slope_decel (line 2443) | public static void apply_slope_decel(MutableMarioState marioState, flo...
method apply_slope_accel (line 2450) | public static void apply_slope_accel(MutableMarioState marioState, Tri...
method mario_floor_is_slope (line 2475) | public static bool mario_floor_is_slope(TriangleDataModel tri) {
FILE: STROOP/Calculators/CalculatorUtilities.cs
class CalculatorUtilities (line 14) | public static class CalculatorUtilities
method GetAllInputs (line 16) | public static List<Input> GetAllInputs()
method GetInputRange (line 21) | public static List<Input> GetInputRange(int minX, int maxX, int minZ, ...
method ApproachInt (line 36) | public static int ApproachInt(int current, int target, int inc, int dec)
method ApproachFloat (line 53) | public static float ApproachFloat(float current, float target, float i...
FILE: STROOP/Calculators/GroundMovementCalculator.cs
class GroundMovementCalculator (line 15) | public static class GroundMovementCalculator
method ApplyInput (line 18) | public static MarioState ApplyInput(MarioState initialState, Input input)
method ApplyInput (line 28) | public static MarioState ApplyInput(MarioState initialState, int angle...
method UpdateWalkingSpeed (line 39) | private static void UpdateWalkingSpeed(MutableMarioState marioState)
method ApplySlopeAccel (line 69) | private static void ApplySlopeAccel(MutableMarioState marioState)
method PerformGroundStep (line 77) | private static void PerformGroundStep(MutableMarioState marioState)
method PerformButtSlide (line 86) | public static MarioState PerformButtSlide(MarioState marioState, Input...
method PerformButtSlide (line 93) | public static MarioState PerformButtSlide(MarioState marioState, int a...
method common_slide_action_with_jump (line 100) | private static void common_slide_action_with_jump(MutableMarioState ma...
method update_sliding (line 106) | private static void update_sliding(MutableMarioState marioState, float...
method update_sliding_angle (line 168) | private static void update_sliding_angle(MutableMarioState marioState,...
method common_slide_action (line 224) | private static void common_slide_action(
method perform_ground_step (line 231) | private static void perform_ground_step(
method perform_ground_quarter_step (line 244) | private static void perform_ground_quarter_step(
FILE: STROOP/Calculators/HolpCalculator.cs
class HolpCalculator (line 15) | public static class HolpCalculator
method HolpCalculator (line 167) | static HolpCalculator()
method GetHolpForWalking (line 182) | public static (float x, float y, float z) GetHolpForWalking(int index)
method GetHolpForStanding (line 189) | public static (float x, float y, float z) GetHolpForStanding(int index)
method GetHolpForWalking (line 196) | public static (float x, float y, float z) GetHolpForWalking(
method GetHolpForStanding (line 214) | public static (float x, float y, float z) GetHolpForStanding(
FILE: STROOP/Calculators/Input.cs
class Input (line 16) | public class Input
method Input (line 23) | public Input(int x, int y)
method GetScaledMagnitude (line 29) | public float GetScaledMagnitude()
method ToString (line 34) | public override string ToString()
FILE: STROOP/Calculators/LoadingZoneMain.cs
class LoadingZoneMain (line 16) | public static class LoadingZoneMain
class LoadingZoneState (line 96) | public class LoadingZoneState
method LoadingZoneState (line 101) | public LoadingZoneState(
method GetSuccessors (line 109) | public List<LoadingZoneState> GetSuccessors()
method GetRngIndexes (line 123) | public static List<int> GetRngIndexes()
method Run5 (line 157) | public static void Run5()
method Run4 (line 204) | public static void Run4()
method Run3 (line 255) | public static void Run3()
method Run (line 361) | public static void Run()
method Test (line 399) | public static void Test()
method Run (line 411) | public static bool Run(int rngIndex, bool isBubbleSpawnerPresent, int ...
method Run2 (line 444) | public static void Run2()
method GenerateBoolLists (line 483) | public static List<List<bool>> GenerateBoolLists(int size)
method GenerateUnloadStrategy (line 497) | public static void GenerateUnloadStrategy()
method GenerateUnloadStrategy (line 508) | public static void GenerateUnloadStrategy(List<bool> bools)
method GenerateRandomLoadingZoneFrames (line 520) | public static List<int> GenerateRandomLoadingZoneFrames()
method GenerateRandomBubbleSpawnerMaxTimers (line 531) | public static List<int> GenerateRandomBubbleSpawnerMaxTimers()
method FormatLoadingZoneFrames (line 542) | public static string FormatLoadingZoneFrames(List<int> loadingZoneFrames)
method RunTest (line 558) | public static void RunTest()
method RunTest2 (line 567) | public static void RunTest2()
method Simulate (line 576) | public static (bool success, int result, ObjName objName, int numTrans...
method Simulate (line 590) | public static (bool success, int result, ObjName objName, int numTrans...
method Simulate (line 604) | public static (bool success, int result, ObjName objName, int numTrans...
method PassThroughLoadingZone (line 667) | public static void PassThroughLoadingZone(ObjSlotManager objSlotManage...
method UnloadEverything (line 673) | public static void UnloadEverything(ObjSlotManager objSlotManager)
method Load (line 684) | public static void Load(ObjSlotManager objSlotManager, List<(ObjName o...
method LoadYellowCoins (line 693) | public static void LoadYellowCoins(ObjSlotManager objSlotManager)
method InitializeObjSlotManager (line 701) | public static ObjSlotManager InitializeObjSlotManager(
method InitializeObjSlotManager (line 710) | public static ObjSlotManager InitializeObjSlotManager(
method InitializeBubbleObjSlotManager (line 719) | public static ObjSlotManager InitializeBubbleObjSlotManager(
type ObjSlotColor (line 745) | public enum ObjSlotColor
type ObjName (line 758) | public enum ObjName
type UnloadableId (line 812) | public enum UnloadableId
class ObjSlot (line 843) | public class ObjSlot
method ObjSlot (line 854) | public ObjSlot(int initialIndex, ObjName objName, ObjSlotColor color)
method Apply (line 866) | public void Apply((ObjName objName, ObjSlotColor color, UnloadableId...
method ToString (line 872) | public override string ToString()
method Reset (line 880) | public void Reset()
method FrameAdvance (line 888) | public void FrameAdvance(RngObjSlotManager rngObjSlotManager, TtcRng...
class ObjSlotManager (line 946) | public abstract class ObjSlotManager
method ObjSlotManager (line 951) | public ObjSlotManager()
method AddToEndOfList (line 961) | public void AddToEndOfList(ObjSlot objSlot)
method AddToStartOfList (line 967) | public void AddToStartOfList(ObjSlot objSlot)
method UnloadColor (line 972) | public void UnloadColor(ObjSlotColor color)
method Load (line 984) | public void Load((ObjName objName, ObjSlotColor color, UnloadableId ...
method PostLoad (line 995) | public abstract void PostLoad((ObjName objName, ObjSlotColor color, ...
method Unload (line 997) | public void Unload(ObjSlot objSlot)
method FrameAdvance (line 1005) | public abstract void FrameAdvance();
method FindSlot (line 1007) | public ObjSlot FindSlot(ObjName objName)
method GetCurrentSlotIndex (line 1019) | public int GetCurrentSlotIndex(ObjSlot goalObjSlot)
method ToString (line 1033) | public override string ToString()
method GetFirstLineForToString (line 1047) | public abstract string GetFirstLineForToString();
class BubbleObjSlotManager (line 1050) | public class BubbleObjSlotManager : ObjSlotManager
method BubbleObjSlotManager (line 1056) | public BubbleObjSlotManager(BubbleTracker bubbleTracker)
method PostLoad (line 1065) | public override void PostLoad((ObjName objName, ObjSlotColor color, ...
method FrameAdvance (line 1074) | public override void FrameAdvance()
method GetFirstLineForToString (line 1094) | public override string GetFirstLineForToString()
class RngObjSlotManager (line 1100) | public class RngObjSlotManager : ObjSlotManager
method RngObjSlotManager (line 1104) | public RngObjSlotManager(TtcRng rng)
method PostLoad (line 1110) | public override void PostLoad((ObjName objName, ObjSlotColor color, ...
method FrameAdvance (line 1114) | public override void FrameAdvance()
method LoadBubble (line 1141) | public void LoadBubble()
method GetFirstLineForToString (line 1146) | public override string GetFirstLineForToString()
class FrameTracker (line 1152) | public class FrameTracker
method FrameTracker (line 1157) | public FrameTracker(List<int> loadingZoneFrames)
method AdvanceFrame (line 1163) | public bool? AdvanceFrame()
class BubbleTracker (line 1181) | public class BubbleTracker
method BubbleTracker (line 1185) | public BubbleTracker(List<int> bubbleSpawnerMaxTimers)
method GetNextMaxTimer (line 1190) | public int GetNextMaxTimer()
FILE: STROOP/Calculators/MarioState.cs
class MarioState (line 14) | public class MarioState
method MarioState (line 33) | public MarioState(
method CreateMarioState (line 58) | public static MarioState CreateMarioState()
method GetMutableMarioState (line 78) | public MutableMarioState GetMutableMarioState(Input input)
method GetMutableMarioState (line 87) | public MutableMarioState GetMutableMarioState(int angleDiff)
method ToString (line 96) | public override string ToString()
method ToStringWithInput (line 106) | public string ToStringWithInput()
method GetFields (line 112) | private List<object> GetFields()
method Equals (line 123) | public override bool Equals(object obj)
method GetHashCode (line 131) | public override int GetHashCode()
method GetLineage (line 136) | public string GetLineage()
method WithCameraAngle (line 148) | public MarioState WithCameraAngle(ushort cameraAngle)
method WithPosition (line 158) | public MarioState WithPosition(float x, float y, float z)
method WithDive (line 168) | public MarioState WithDive()
method WithAddedHSpeedIncrease (line 178) | public MarioState WithAddedHSpeedIncrease(float hSpeedIncrease)
FILE: STROOP/Calculators/MutableMarioState.cs
class MutableMarioState (line 14) | public class MutableMarioState
method MutableMarioState (line 30) | public MutableMarioState(
method MutableMarioState (line 60) | public MutableMarioState(
method GetMarioState (line 89) | public MarioState GetMarioState(MarioState previousState, Input lastIn...
FILE: STROOP/Calculators/ObjectCalculator.cs
class ObjectCalculator (line 15) | public static class ObjectCalculator
method GetHardObjectDisplacement (line 18) | public static (float newMarioX, float newMarioZ) GetHardObjectDisplace...
method GetSoftObjectDisplacement (line 48) | public static (float newMarioX, float newMarioZ) GetSoftObjectDisplace...
method GetRelativePosition (line 65) | public static (float objectX, float objectY, float objectZ) GetRelativ...
FILE: STROOP/Calculators/OverflowJumpCalculator.cs
class OverflowJumpCalculator (line 16) | public static class OverflowJumpCalculator
method Test (line 21) | public static void Test()
method TestOverflowJump (line 92) | public static MarioPuState TestOverflowJump(MarioPuState state, int an...
class MarioPuState (line 130) | public class MarioPuState
method MarioPuState (line 140) | public MarioPuState(double x, double y, double z, double hSpeed, dou...
method GetLineage (line 151) | public string GetLineage()
method ToString (line 159) | public override string ToString()
method GetSuccessiveHSpeeds (line 167) | public static List<double> GetSuccessiveHSpeeds(double hSpeed)
method GetSuccessiveStates (line 182) | public static List<MarioPuState> GetSuccessiveStates(MarioPuState state)
FILE: STROOP/Calculators/PendulumData.cs
class PendulumData (line 14) | public static class PendulumData
class COL_VERTEX (line 16) | public class COL_VERTEX
method COL_VERTEX (line 22) | public COL_VERTEX(int x, int y, int z)
class COL_TRI (line 70) | public class COL_TRI
method COL_TRI (line 76) | public COL_TRI(int index1, int index2, int index3)
class Mat4 (line 142) | public class Mat4
method Mat4 (line 146) | public Mat4()
FILE: STROOP/Calculators/PendulumMain.cs
class PendulumMain (line 17) | public static class PendulumMain
method Test (line 19) | public static void Test()
method Test2 (line 56) | public static void Test2()
method GetNextPendulumPossibilities (line 82) | public static List<PendulumPossibility> GetNextPendulumPossibilities(P...
method GetBestPossibilities (line 98) | public static List<PendulumPossibility> GetBestPossibilities(List<Pend...
method GetTotalBoolPermutation (line 105) | public static List<bool> GetTotalBoolPermutation(PendulumPossibility p...
class PendulumPossibility (line 116) | public class PendulumPossibility
method PendulumPossibility (line 122) | public PendulumPossibility(
method GetBools (line 133) | public static List<List<bool>> GetBools(int count)
method GetBools (line 138) | public static List<List<bool>> GetBools(int count, List<List<bool>> list)
method CreateSolution (line 162) | public static List<bool> CreateSolution()
FILE: STROOP/Calculators/PunchRecoilCalculator.cs
class PunchRecoilCalculator (line 10) | public static class PunchRecoilCalculator
method Test (line 23) | public static void Test()
method FindWallOverlapsStepDownEarly (line 30) | public static void FindWallOverlapsStepDownEarly()
method FindWallOverlapsWithoutUsingSideFloor (line 208) | public static void FindWallOverlapsWithoutUsingSideFloor()
method FindWallOverlapsUsingSideFloor (line 335) | public static void FindWallOverlapsUsingSideFloor()
method FindWallOverlapsUsingSideFloorStepDownEarly (line 421) | public static void FindWallOverlapsUsingSideFloorStepDownEarly()
class PointData (line 541) | public class PointData
method PointData (line 548) | public PointData(int angle, int x, float y, int z)
method FindGoodAngles (line 557) | public static void FindGoodAngles()
method SetUpDictionary (line 581) | public static void SetUpDictionary()
method GetDictionaryValue (line 607) | public static TriangleDataModel GetDictionaryValue(int angle, int triI...
method GetTriPoints (line 613) | public static string GetTriPoints(TriangleDataModel tri)
FILE: STROOP/Calculators/SlideCalculator.cs
class SlideCalculator (line 15) | public static class SlideCalculator
method SetCellSnapshot (line 61) | public static void SetCellSnapshot(CellSnapshot cellSnapshot)
method DoSlideFrame (line 66) | public static void DoSlideFrame(SlidingMarioState m)
method update_mario_geometry_inputs (line 72) | public static void update_mario_geometry_inputs(SlidingMarioState m)
method f32_find_wall_collision (line 139) | public static int f32_find_wall_collision(ref float xPtr, ref float yP...
method act_crouch_slide (line 162) | public static int act_crouch_slide(SlidingMarioState m)
method common_slide_action_with_jump (line 172) | public static int common_slide_action_with_jump(
method common_slide_action (line 187) | public static void common_slide_action(SlidingMarioState m, uint endAc...
method slide_bonk (line 231) | public static void slide_bonk(SlidingMarioState m, uint fastAction, ui...
method mario_bonk_reflection (line 245) | public static void mario_bonk_reflection(SlidingMarioState m, uint neg...
method align_with_floor (line 267) | public static void align_with_floor(SlidingMarioState m)
method perform_ground_step (line 272) | public static int perform_ground_step(SlidingMarioState m)
method perform_ground_quarter_step (line 298) | static int perform_ground_quarter_step(SlidingMarioState m, ref (float...
class WallCollisionData (line 369) | public class WallCollisionData
method resolve_and_return_wall_collisions (line 380) | public static TriangleDataModel resolve_and_return_wall_collisions(
method find_wall_collisions (line 404) | public static int find_wall_collisions(WallCollisionData colData)
method find_wall_collisions_from_list (line 432) | public static int find_wall_collisions_from_list(WallCollisionData dat...
method update_sliding (line 561) | public static int update_sliding(SlidingMarioState m, float stopSpeed)
method mario_set_forward_vel (line 624) | public static void mario_set_forward_vel(SlidingMarioState m, float fo...
method update_sliding_angle (line 635) | public static void update_sliding_angle(SlidingMarioState m, float acc...
method mario_get_floor_class (line 703) | public static int mario_get_floor_class(SlidingMarioState m) {
method mario_floor_is_slope (line 746) | public static int mario_floor_is_slope(SlidingMarioState m) {
method mario_floor_is_slippery (line 775) | public static uint mario_floor_is_slippery(SlidingMarioState m)
FILE: STROOP/Calculators/SlidingMarioState.cs
class SlidingMarioState (line 15) | public class SlidingMarioState
method SlidingMarioState (line 37) | public SlidingMarioState(
FILE: STROOP/Calculators/WallDisplacementCalculator.cs
class WallDisplacementCalculator (line 15) | public static class WallDisplacementCalculator
method HandleWallDisplacement (line 17) | public static (float newMarioX, float newMarioZ) HandleWallDisplacement(
method HandleWallDisplacement (line 23) | public static (float newMarioX, float newMarioZ) HandleWallDisplacement(
method HandleWallDisplacement2 (line 102) | public static (float newMarioX, float newMarioZ, bool collidedWithWall...
method GetNumWallCollisions (line 184) | public static int GetNumWallCollisions(
FILE: STROOP/Calculators/WaterLevelCalculator.cs
class WaterLevelCalculator (line 14) | public static class WaterLevelCalculator
method GetWaterLevelIndex (line 16) | public static int GetWaterLevelIndex()
method GetWaterLevelFromIndex (line 24) | public static int GetWaterLevelFromIndex(int index)
FILE: STROOP/Calculators/WaterMain.cs
class WaterMain (line 16) | public static class WaterMain
method FindAllBubbleConfigurations (line 20) | public static void FindAllBubbleConfigurations()
method BruteForce2 (line 42) | public static void BruteForce2()
method BruteForce (line 81) | public static void BruteForce()
method GenerateInputs (line 112) | public static List<Input> GenerateInputs()
method Simulate (line 146) | public static ObjSlotManager Simulate(List<Input> inputs, bool print)
class ObjSlotManager (line 163) | public class ObjSlotManager
method ObjSlotManager (line 179) | public ObjSlotManager(List<Input> inputs)
method Update (line 234) | public void Update()
method AddObject (line 264) | public void AddObject(WaterObject waterObject)
method HasBubbleSpawner (line 280) | public bool HasBubbleSpawner()
method HasBubbleConfiguration (line 285) | public bool HasBubbleConfiguration(int numBubbles, bool bubbleSpawne...
method GetBubbleConfiguration (line 292) | public (int numBubbles, bool bubbleSpawnerPresent) GetBubbleConfigur...
method ToString (line 297) | public override string ToString()
class WaterObject (line 308) | public abstract class WaterObject
method WaterObject (line 314) | public WaterObject(ObjSlotManager objectSlotsManager, TtcRng rng)
method Update (line 321) | public abstract void Update();
method MarkForDeletion (line 323) | public void MarkForDeletion()
class MarioObject (line 329) | public class MarioObject : WaterObject
method MarioObject (line 334) | public MarioObject(ObjSlotManager objSlotManager, TtcRng rng, List<I...
method Update (line 341) | public override void Update()
method ToString (line 358) | public override string ToString()
class BobombBuddyObject (line 369) | public class BobombBuddyObject : WaterObject
method BobombBuddyObject (line 373) | public BobombBuddyObject(ObjSlotManager objSlotManager, TtcRng rng, ...
method Update (line 379) | public override void Update()
method ToString (line 394) | public override string ToString()
class BubbleSpawnerObject (line 400) | public class BubbleSpawnerObject : WaterObject
method BubbleSpawnerObject (line 406) | public BubbleSpawnerObject(
method Update (line 416) | public override void Update()
method ToString (line 434) | public override string ToString()
class BubbleObject (line 442) | public class BubbleObject : WaterObject
method BubbleObject (line 451) | public BubbleObject(
method Update (line 465) | public override void Update()
method bhv_bubble_wave_init (line 493) | public void bhv_bubble_wave_init()
method bhvSmallWaterWave398 (line 499) | public void bhvSmallWaterWave398()
method bhv_small_water_wave_loop (line 506) | public void bhv_small_water_wave_loop()
method ToString (line 515) | public override string ToString()
FILE: STROOP/Calculators/WaterState.cs
class WaterState (line 14) | public class WaterState
method WaterState (line 24) | public WaterState()
method ToString (line 35) | public override string ToString()
method Update (line 43) | public void Update(Input input, int waterLevel)
method act_water_punch (line 49) | public void act_water_punch(Input input, int waterLevel)
method update_swimming_yaw (line 57) | public void update_swimming_yaw(Input input)
method update_swimming_pitch (line 99) | public void update_swimming_pitch(Input input)
method perform_water_step (line 129) | public void perform_water_step(int waterLevel)
method update_swimming_speed (line 141) | public void update_swimming_speed(int waterLevel)
method approach_s32 (line 147) | public int approach_s32(int current, int target, int inc, int dec)
method get_buoyancy (line 168) | public float get_buoyancy(int waterLevel) {
method swimming_near_surface (line 179) | public bool swimming_near_surface(int waterLevel) {
FILE: STROOP/Controls/BetterContextMenuStrip.cs
class BetterContextMenuStrip (line 17) | public class BetterContextMenuStrip : ContextMenuStrip
method BetterContextMenuStrip (line 21) | public BetterContextMenuStrip()
method AddToBeginningList (line 26) | public void AddToBeginningList(ToolStripItem item)
method AddToEndingList (line 32) | public void AddToEndingList(ToolStripItem item)
FILE: STROOP/Controls/BetterSplitContainer.cs
class BetterSplitContainer (line 18) | public class BetterSplitContainer : SplitContainer
method BetterSplitContainer (line 22) | public BetterSplitContainer()
method splitCont_DoubleClick (line 33) | private void splitCont_DoubleClick(object sender, EventArgs e)
method splitCont_MouseDown (line 42) | private void splitCont_MouseDown(object sender, MouseEventArgs e)
method splitCont_MouseUp (line 54) | private void splitCont_MouseUp(object sender, MouseEventArgs e)
method splitCont_MouseMove (line 61) | private void splitCont_MouseMove(object sender, MouseEventArgs e)
FILE: STROOP/Controls/BetterTextbox.cs
class BetterTextbox (line 17) | public class BetterTextbox : TextBox
method BetterTextbox (line 37) | public BetterTextbox()
method SubmitText (line 49) | public void SubmitText(string text)
method SubmitTextLoosely (line 56) | public void SubmitTextLoosely(string text)
method Reset (line 61) | public void Reset()
method AddEnterAction (line 66) | public void AddEnterAction(Action enterAction)
method AddEscapeAction (line 77) | public void AddEscapeAction(Action escapeAction)
method AddLostFocusAction (line 88) | public void AddLostFocusAction(Action lostFocusAction)
method AddDoubleClickAction (line 93) | public void AddDoubleClickAction(Action doubleClickAction)
FILE: STROOP/Controls/BinaryButton.cs
class BinaryButton (line 17) | public class BinaryButton : Button
method BinaryButton (line 25) | public BinaryButton()
method Initialize (line 29) | public void Initialize(string primaryText, string secondaryText, Actio...
method UpdateButton (line 42) | public void UpdateButton()
FILE: STROOP/Controls/BorderedTableLayoutPanel.cs
class BorderedTableLayoutPanel (line 12) | class BorderedTableLayoutPanel : TableLayoutPanel
method BorderedTableLayoutPanel (line 16) | public BorderedTableLayoutPanel()
method OnPaint (line 75) | protected override void OnPaint(PaintEventArgs e)
method Dispose (line 82) | protected override void Dispose(bool disposing)
FILE: STROOP/Controls/CarretlessTextBox.cs
class CarretlessTextBox (line 18) | public class CarretlessTextBox : TextBox
method HideCaret (line 20) | [DllImport("user32.dll")]
method ShowCaret (line 23) | [DllImport("user32.dll")]
method CarretlessTextBox (line 26) | public CarretlessTextBox()
method HideTheCaret (line 30) | public void HideTheCaret()
method ShowTheCaret (line 35) | public void ShowTheCaret()
FILE: STROOP/Controls/CoinRingDisplayPanel.cs
class CoinRingDisplayPanel (line 20) | public class CoinRingDisplayPanel : Panel
method CoinRingDisplayPanel (line 67) | public CoinRingDisplayPanel()
method OnPaint (line 77) | protected override void OnPaint(PaintEventArgs e)
method GetRectangle (line 142) | private Rectangle GetRectangle(double row, double col)
FILE: STROOP/Controls/ColorSelector.Designer.cs
class ColorSelector (line 3) | partial class ColorSelector
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Controls/ColorSelector.cs
class ColorSelector (line 18) | public partial class ColorSelector : UserControl
method ColorSelector (line 40) | public ColorSelector()
method AddColorChangeAction (line 56) | public void AddColorChangeAction(Action<Color> action)
method SubmitColorText (line 61) | private void SubmitColorText()
FILE: STROOP/Controls/DoubleBufferedTableLayoutPanel.cs
class DoubleBufferedTableLayoutPanel (line 12) | class DoubleBufferedTableLayoutPanel : TableLayoutPanel
method DoubleBufferedTableLayoutPanel (line 14) | public DoubleBufferedTableLayoutPanel()
FILE: STROOP/Controls/FileBinaryPictureBox.cs
class FileBinaryPictureBox (line 17) | public class FileBinaryPictureBox : FilePictureBox
method FileBinaryPictureBox (line 22) | public FileBinaryPictureBox()
method Initialize (line 26) | public void Initialize(uint addressOffset, byte mask, Image onImage, I...
method GetImageForValue (line 33) | protected override Image GetImageForValue(byte value)
FILE: STROOP/Controls/FileCoinScoreTextbox.cs
class FileCoinScoreTextbox (line 18) | public class FileCoinScoreTextbox : FileTextbox
method FileCoinScoreTextbox (line 22) | public FileCoinScoreTextbox()
method Initialize (line 26) | public override void Initialize(uint addressOffset)
method GetCoinScoreFromMemory (line 32) | private byte GetCoinScoreFromMemory()
method SubmitValue (line 37) | protected override void SubmitValue()
method ResetValue (line 49) | protected override void ResetValue()
method UpdateText (line 56) | public override void UpdateText()
FILE: STROOP/Controls/FileCourseLabel.cs
class FileCourseLabel (line 18) | public class FileCourseLabel : Label
method FileCourseLabel (line 42) | public FileCourseLabel()
method Initialize (line 46) | public void Initialize(uint addressOffset, byte mask, int courseIndex)
method SetValue (line 59) | private void SetValue(byte value)
method GetValue (line 68) | private byte GetValue()
method GetNewValueForValue (line 75) | private byte GetNewValueForValue(byte oldValue)
method ClickAction (line 80) | private void ClickAction(object sender, EventArgs e)
FILE: STROOP/Controls/FileHatLocationPictureBox.cs
class FileHatLocationPictureBox (line 18) | public class FileHatLocationPictureBox : FilePictureBox
method FileHatLocationPictureBox (line 25) | public FileHatLocationPictureBox()
method Initialize (line 29) | public void Initialize(HatLocation definingHatLocation, Image onImage,...
method GetCurrentHatLocation (line 37) | private HatLocation? GetCurrentHatLocation()
method GetImageForValue (line 54) | private Image GetImageForValue(HatLocation? hatLocation)
method ClickAction (line 63) | protected override void ClickAction(object sender, EventArgs e)
method SetHatMode (line 103) | private void SetHatMode(byte hatModeByte)
method UpdateImage (line 110) | public override void UpdateImage()
FILE: STROOP/Controls/FileHatPositionTextbox.cs
class FileHatPositionTextbox (line 18) | public class FileHatPositionTextbox : FileTextbox
method FileHatPositionTextbox (line 22) | public FileHatPositionTextbox()
method Initialize (line 26) | public override void Initialize(uint addressOffset)
method GetHatLocationValueFromMemory (line 32) | private short GetHatLocationValueFromMemory()
method SubmitValue (line 37) | protected override void SubmitValue()
method ResetValue (line 49) | protected override void ResetValue()
method UpdateText (line 56) | public override void UpdateText()
FILE: STROOP/Controls/FileKeyDoorPictureBox.cs
class FileKeyDoorPictureBox (line 17) | public class FileKeyDoorPictureBox : FilePictureBox
method FileKeyDoorPictureBox (line 27) | public FileKeyDoorPictureBox()
method Initialize (line 31) | public void Initialize(uint addressOffset, byte mask1, byte mask2,
method GetImageForValue (line 45) | protected override Image GetImageForValue(byte value)
method GetNewValueForValue (line 57) | protected override byte GetNewValueForValue(byte oldValue)
FILE: STROOP/Controls/FilePictureBox.cs
class FilePictureBox (line 18) | public abstract class FilePictureBox : PictureBox
method FilePictureBox (line 25) | public FilePictureBox()
method Initialize (line 29) | protected void Initialize(uint addressOffset, byte mask)
method SetValue (line 40) | private void SetValue(bool boolValue)
method SetValue (line 48) | private void SetValue(byte value)
method GetValue (line 55) | private byte GetValue()
method GetImageForValue (line 62) | protected virtual Image GetImageForValue(byte value)
method GetNewValueForValue (line 67) | protected virtual byte GetNewValueForValue(byte oldValue)
method ClickAction (line 72) | protected virtual void ClickAction(object sender, EventArgs e)
method UpdateImage (line 79) | public virtual void UpdateImage()
FILE: STROOP/Controls/FileStarPictureBox.cs
class FileStarPictureBox (line 17) | public class FileStarPictureBox : FileBinaryPictureBox
method FileStarPictureBox (line 38) | public FileStarPictureBox()
method Initialize (line 42) | public void Initialize(FileImageGui gui, uint addressOffset, byte mask...
FILE: STROOP/Controls/FileTextbox.cs
class FileTextbox (line 17) | public abstract class FileTextbox : TextBox
method FileTextbox (line 21) | public FileTextbox()
method Initialize (line 25) | public virtual void Initialize(uint addressOffset)
method SubmitValue (line 46) | protected abstract void SubmitValue();
method ResetValue (line 48) | protected abstract void ResetValue();
method UpdateText (line 50) | public abstract void UpdateText();
FILE: STROOP/Controls/InputDisplayPanel.cs
class InputDisplayPanel (line 19) | public class InputDisplayPanel : Panel
class RecordingSession (line 28) | class RecordingSession
method RecordingSession (line 36) | public RecordingSession(Size imageSize)
method AddFrame (line 43) | public void AddFrame(InputFrame inputs)
method Render (line 57) | public void Render(string filePath, Control controlToRender, Action<...
method InputDisplayPanel (line 84) | public InputDisplayPanel()
method SetInputDisplayGui (line 89) | public void SetInputDisplayGui(List<InputImageGui> guiList)
method UpdateInputs (line 123) | public void UpdateInputs()
method RecordToolStrip_Click (line 139) | private void RecordToolStrip_Click(object sender, EventArgs e)
method GetBackColor (line 174) | private Color GetBackColor(InputDisplayTypeEnum inputDisplayType)
method GetScale (line 189) | private float GetScale(InputDisplayTypeEnum inputDisplayType)
method OnPaint (line 204) | protected override void OnPaint(PaintEventArgs e)
FILE: STROOP/Controls/IntPictureBox.cs
class IntPictureBox (line 14) | public class IntPictureBox : PictureBox
method OnPaint (line 18) | protected override void OnPaint(PaintEventArgs paintEventArgs)
FILE: STROOP/Controls/MainSaveTextbox.cs
class MainSaveTextbox (line 18) | public class MainSaveTextbox : TextBox
method MainSaveTextbox (line 26) | public MainSaveTextbox()
method Initialize (line 30) | public void Initialize(int level, int file)
method GetValueFromMemory (line 54) | private uint GetValueFromMemory()
method SetValueInMemory (line 59) | private void SetValueInMemory(uint value)
method SubmitValue (line 64) | private void SubmitValue()
method ResetValue (line 76) | private void ResetValue()
method UpdateText (line 83) | public void UpdateText()
FILE: STROOP/Controls/ModelGraphics.cs
class ModelGraphics (line 18) | public class ModelGraphics
method ModelGraphics (line 40) | public ModelGraphics(GLControl control)
method _timer_Tick (line 48) | private void _timer_Tick(object sender, EventArgs e)
method Load (line 68) | public void Load()
method Control_MouseClick (line 87) | private void Control_MouseClick(object sender, System.Windows.Forms.Mo...
method Control_MouseScroll (line 92) | private void Control_MouseScroll(object sender, System.Windows.Forms.M...
method GetSpeedMultiplier (line 99) | private float GetSpeedMultiplier(KeyboardState keyState)
method CameraFly (line 115) | public void CameraFly()
method OnPaint (line 219) | public void OnPaint(object sender, EventArgs e)
method OnResize (line 259) | public void OnResize(object sender, EventArgs e)
method SetupViewport (line 265) | private void SetupViewport()
method ColorFromTri (line 275) | public Color ColorFromTri(Vector3 v1, Vector3 v2, Vector3 v3)
method DrawModel (line 289) | private void DrawModel()
method ClearModel (line 353) | public void ClearModel()
method ChangeModel (line 360) | public void ChangeModel(List<short[]> vertices, List<int[]> triangles)
method ChangeVertexSelection (line 403) | public void ChangeVertexSelection(bool[] vertexSelected)
method ChangeTriangleSelection (line 412) | public void ChangeTriangleSelection(bool[] triangleSelected)
method SetPerspectiveProjection (line 421) | private void SetPerspectiveProjection(int width, int height, float FOV)
method SetLookAtCamera (line 428) | private void SetLookAtCamera(Vector3 position, Vector3 target)
FILE: STROOP/Controls/NoTearFlowLayoutPanel.cs
class NoTearFlowLayoutPanel (line 12) | public class NoTearFlowLayoutPanel : FlowLayoutPanel
FILE: STROOP/Controls/ObjectSlot.cs
class ObjectSlot (line 21) | public class ObjectSlot : Panel
type SelectionType (line 45) | enum SelectionType { NOT_SELECTED, NORMAL_SELECTION, MAP_SELECTION, MO...
type MouseStateType (line 51) | public enum MouseStateType {None, Over, Down};
method ObjectSlot (line 83) | public ObjectSlot(ObjectSlotsManager manager, int index, ObjectSlotMan...
method SetUpContextMenuStrip (line 115) | private void SetUpContextMenuStrip()
method RebufferObjectImage (line 313) | private void RebufferObjectImage()
method UpdateColors (line 352) | public bool UpdateColors()
method OnDrag (line 405) | private void OnDrag(object sender, System.Windows.Forms.MouseEventArgs e)
method GetCurrentOverlayValues (line 412) | private List<object> GetCurrentOverlayValues()
method OnPaint (line 445) | protected override void OnPaint(PaintEventArgs e)
method Update (line 571) | public void Update(ObjectDataModel obj)
method ToString (line 776) | public override string ToString()
FILE: STROOP/Controls/ObjectSlotFlowLayoutPanel.cs
class ObjectSlotFlowLayoutPanel (line 17) | public class ObjectSlotFlowLayoutPanel : NoTearFlowLayoutPanel
method ObjectSlotFlowLayoutPanel (line 19) | public ObjectSlotFlowLayoutPanel()
method ResetSlots (line 106) | private void ResetSlots()
FILE: STROOP/Controls/PanelEx.cs
class PanelEx (line 9) | public class PanelEx : Panel
FILE: STROOP/Controls/RichTextBoxEx.cs
class RichTextBoxEx (line 9) | public class RichTextBoxEx : RichTextBox
type CHARFORMAT2_STRUCT (line 12) | [ StructLayout( LayoutKind.Sequential )]
method SendMessage (line 38) | [DllImport("user32.dll", CharSet=CharSet.Auto)]
method RichTextBoxEx (line 111) | public RichTextBoxEx()
method InsertLink (line 129) | public void InsertLink(string text)
method InsertLink (line 139) | public void InsertLink(string text, int position)
method InsertLink (line 160) | public void InsertLink(string text, string hyperlink)
method InsertLink (line 174) | public void InsertLink(string text, string hyperlink, int position)
method SetSelectionLink (line 190) | public void SetSelectionLink(bool link)
method GetSelectionLink (line 198) | public int GetSelectionLink()
method SetSelectionStyle (line 204) | private void SetSelectionStyle(UInt32 mask, UInt32 effect)
method GetSelectionStyle (line 220) | private int GetSelectionStyle(UInt32 mask, UInt32 effect)
method SetTextColor (line 252) | public void SetTextColor(int index, int length, Color color)
method SetBackColor (line 259) | public void SetBackColor(int index, int length, Color color)
FILE: STROOP/Controls/TabControlEx.cs
class TabControlEx (line 18) | public class TabControlEx : TabControl
method TabControlEx (line 29) | public TabControlEx()
FILE: STROOP/Controls/TrackBarEx.cs
class TrackBarEx (line 17) | public class TrackBarEx : TrackBar
method TrackBarEx (line 21) | public TrackBarEx()
method AddManualChangeAction (line 25) | public void AddManualChangeAction(Action action)
method StartChangingByCode (line 33) | public void StartChangingByCode()
method StopChangingByCode (line 38) | public void StopChangingByCode()
FILE: STROOP/Controls/TransparentTextbox.cs
class TransparentTextbox (line 17) | public class TransparentTextbox : TextBox
method TransparentTextbox (line 19) | public TransparentTextbox()
FILE: STROOP/Controls/VarHackContainer.Designer.cs
class VarHackContainer (line 3) | partial class VarHackContainer
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Controls/VarHackContainer.cs
class VarHackContainer (line 18) | public partial class VarHackContainer : UserControl
method VarHackContainer (line 26) | private VarHackContainer(
method CreateDefault (line 104) | public static VarHackContainer CreateDefault(
method CreateWithParameters (line 123) | public static VarHackContainer CreateWithParameters(
method CreateSpecial (line 147) | public static VarHackContainer CreateSpecial(
method CreateFromXml (line 167) | public static VarHackContainer CreateFromXml(
method ToXml (line 216) | public XElement ToXml()
method Clone (line 238) | public VarHackContainer Clone()
method GetHexIntVersions (line 243) | public (VarHackContainer, VarHackContainer) GetHexIntVersions()
method GetBigEndianByteArray (line 294) | public byte[] GetBigEndianByteArray()
method GetLittleEndianByteArray (line 362) | public byte[] GetLittleEndianByteArray()
method WriteBytes (line 379) | private void WriteBytes(byte[] bytesToWrite, byte[] byteHolder, uint o...
method ConvertBytesToString (line 388) | public static string ConvertBytesToString(byte[] bytes)
method SetPosition (line 401) | public void SetPosition(int xPos, int yPos)
method GetCurrentName (line 407) | private string GetCurrentName()
method GetCurrentAddress (line 412) | private uint? GetCurrentAddress()
method GetCurrentUsePointer (line 417) | private bool GetCurrentUsePointer()
method GetCurrentPointerOffset (line 422) | private ushort? GetCurrentPointerOffset()
method GetCurrentTypeByte (line 428) | private byte GetCurrentTypeByte()
method GetCurrentSigned (line 441) | private bool GetCurrentSigned()
method GetCurrentType (line 454) | private Type GetCurrentType()
method GetRadioButtonForType (line 466) | private RadioButton GetRadioButtonForType(Type type)
method GetCurrentUseHex (line 478) | private bool GetCurrentUseHex()
method GetCurrentNoNumber (line 483) | private bool GetCurrentNoNumber()
method GetCurrentXPosition (line 488) | private ushort? GetCurrentXPosition()
method GetCurrentYPosition (line 493) | private ushort? GetCurrentYPosition()
method UpdatesContinuously (line 498) | public bool UpdatesContinuously()
FILE: STROOP/Controls/VarHackContainerDefaults.cs
class VarHackContainerDefaults (line 11) | public class VarHackContainerDefaults
method VarHackContainerDefaults (line 30) | public VarHackContainerDefaults(int creationIndex)
FILE: STROOP/Controls/VarHackFlowLayoutPanel.cs
class VarHackFlowLayoutPanel (line 16) | public class VarHackFlowLayoutPanel : NoTearFlowLayoutPanel
method VarHackFlowLayoutPanel (line 22) | public VarHackFlowLayoutPanel()
method MoveUpControl (line 29) | public void MoveUpControl(VarHackContainer varHackContainer)
method MoveDownControl (line 40) | public void MoveDownControl(VarHackContainer varHackContainer)
method RemoveControl (line 51) | public void RemoveControl(VarHackContainer varHackContainer)
method DuplicateControl (line 59) | public void DuplicateControl(VarHackContainer varHackContainer)
method ConvertToHexIntVersions (line 71) | public void ConvertToHexIntVersions(VarHackContainer varHackContainer)
method ApplyVariableToMemory (line 86) | public void ApplyVariableToMemory(VarHackContainer varHackContainer)
method AddNewControl (line 94) | public void AddNewControl(string varName, uint address, Type memoryTyp...
method AddNewControl (line 106) | public void AddNewControl(string specialType)
method AddNewControl (line 119) | public void AddNewControl()
method GetCurrentXmlElements (line 129) | private List<XElement> GetCurrentXmlElements()
method OpenVariables (line 143) | public void OpenVariables()
method SaveVariables (line 154) | public void SaveVariables()
method ClearVariables (line 160) | public void ClearVariables()
method SetPositions (line 168) | public void SetPositions(int xPos, int yPos, int yDelta)
method ShowVariableBytesInLittleEndian (line 182) | public void ShowVariableBytesInLittleEndian()
method ShowVariableBytesInBigEndian (line 200) | public void ShowVariableBytesInBigEndian()
method ApplyVariablesToMemory (line 220) | public void ApplyVariablesToMemory()
method ApplyVariableToMemory (line 231) | private void ApplyVariableToMemory(int index)
method ClearVariablesInMemory (line 248) | public void ClearVariablesInMemory()
method UpdateControls (line 260) | public void UpdateControls()
FILE: STROOP/Controls/WatchVariable.cs
class WatchVariable (line 17) | public class WatchVariable
method GetBaseAddressList (line 71) | public List<uint> GetBaseAddressList()
method GetAddressList (line 76) | public List<uint> GetAddressList(List<uint> addresses)
method WatchVariable (line 83) | public WatchVariable(string name, string memoryTypeName, string specia...
method GetValues (line 153) | public List<object> GetValues(List<uint> addresses = null)
method SetValue (line 169) | public bool SetValue(object value, bool allowToggle, List<uint> addres...
method SetValues (line 189) | public bool SetValues(List<object> values, bool allowToggle, List<uint...
method GetLocks (line 213) | public List<WatchVariableLock> GetLocks(List<uint> addresses = null)
method GetLocksWithoutValues (line 230) | public List<WatchVariableLock> GetLocksWithoutValues(List<uint> addres...
method GetSetters (line 246) | public List<Func<object, bool, bool>> GetSetters(List<uint> addresses ...
method GetTypeDescription (line 253) | public string GetTypeDescription()
method GetBaseTypeOffsetDescription (line 281) | public string GetBaseTypeOffsetDescription()
method GetProcessAddressListString (line 287) | public string GetProcessAddressListString(List<uint> addresses = null)
method GetProcessBaseAddressListString (line 297) | public string GetProcessBaseAddressListString(List<uint> addresses = n...
method GetProcessAddressList (line 306) | private List<UIntPtr> GetProcessAddressList(List<uint> addresses, int?...
method GetRamAddressListString (line 313) | public string GetRamAddressListString(bool addressArea = true, List<ui...
method GetRamAddressList (line 323) | private List<uint> GetRamAddressList(bool addressArea, List<uint> addr...
method GetRamAddress (line 328) | private uint GetRamAddress(uint addr, bool addressArea = true)
method GetBaseAddressListString (line 342) | public string GetBaseAddressListString(List<uint> addresses = null)
FILE: STROOP/Controls/WatchVariableAddressWrapper.cs
class WatchVariableAddressWrapper (line 16) | public class WatchVariableAddressWrapper : WatchVariableNumberWrapper
method WatchVariableAddressWrapper (line 18) | public WatchVariableAddressWrapper(
method AddAddressContextMenuStripItems (line 26) | private void AddAddressContextMenuStripItems()
method HandleVerification (line 51) | protected override void HandleVerification(object value)
method GetClass (line 58) | public override string GetClass()
FILE: STROOP/Controls/WatchVariableAngleWrapper.cs
class WatchVariableAngleWrapper (line 15) | public class WatchVariableAngleWrapper : WatchVariableNumberWrapper
method WatchVariableAngleWrapper (line 52) | public WatchVariableAngleWrapper(
method AddAngleContextMenuStripItems (line 85) | private void AddAngleContextMenuStripItems()
method GetAngleUnitTypeMaxValue (line 146) | private double GetAngleUnitTypeMaxValue(AngleUnitType? angleUnitTypeNu...
method GetAngleUnitTypeAndMaybeSignedMaxValue (line 166) | private double GetAngleUnitTypeAndMaybeSignedMaxValue(AngleUnitType? a...
method GetAngleUnitTypeAndMaybeSignedMinValue (line 174) | private double GetAngleUnitTypeAndMaybeSignedMinValue(AngleUnitType? a...
method HandleAngleConverting (line 182) | protected override object HandleAngleConverting(object value)
method HandleAngleUnconverting (line 202) | protected override object HandleAngleUnconverting(object value)
method HandleAngleRoundingOut (line 217) | protected override object HandleAngleRoundingOut(object value)
method GetHexDigitCount (line 229) | protected override int? GetHexDigitCount()
method ApplySettings (line 234) | public override void ApplySettings(WatchVariableControlSettings settings)
method GetClass (line 292) | public override string GetClass()
FILE: STROOP/Controls/WatchVariableBooleanWrapper.cs
class WatchVariableBooleanWrapper (line 6) | public class WatchVariableBooleanWrapper : WatchVariableNumberWrapper
method WatchVariableBooleanWrapper (line 11) | public WatchVariableBooleanWrapper(
method AddBooleanContextMenuStripItems (line 23) | private void AddBooleanContextMenuStripItems()
method ConvertValueToCheckState (line 47) | protected override CheckState ConvertValueToCheckState(object value)
method ConvertCheckStateToValue (line 55) | protected override object ConvertCheckStateToValue(CheckState checkState)
method HandleInverting (line 65) | private bool HandleInverting(bool boolValue)
method GetClass (line 70) | public override string GetClass()
FILE: STROOP/Controls/WatchVariableControl.Designer.cs
class WatchVariableControl (line 3) | partial class WatchVariableControl
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Controls/WatchVariableControl.cs
class WatchVariableControl (line 16) | public partial class WatchVariableControl : UserControl
method WatchVariableControl (line 194) | public WatchVariableControl(
method SetUseCheckbox (line 286) | public void SetUseCheckbox(bool useCheckbox)
method OnValueTextValueKeyDown (line 300) | private void OnValueTextValueKeyDown(System.Windows.Forms.KeyEventArgs e)
method OnContextMenuStripOpening (line 322) | private void OnContextMenuStripOpening()
method OnVariableClick (line 341) | private void OnVariableClick()
method OnNameTextBoxDoubleClick (line 498) | private void OnNameTextBoxDoubleClick()
method OnNameTextValueKeyDown (line 505) | private void OnNameTextValueKeyDown(System.Windows.Forms.KeyEventArgs e)
method OnCheckboxClick (line 527) | private void OnCheckboxClick()
method UpdateControl (line 533) | public void UpdateControl()
method UpdateSettings (line 556) | private void UpdateSettings()
method UpdatePictureBoxes (line 566) | private void UpdatePictureBoxes()
method GetImageForCheckState (line 587) | private static Image GetImageForCheckState(CheckState checkState)
method UpdateFlush (line 612) | private void UpdateFlush()
method UpdateSize (line 623) | private void UpdateSize()
method UpdateColor (line 649) | private void UpdateColor()
method FlashColor (line 680) | public void FlashColor(Color color)
method BelongsToGroup (line 691) | public bool BelongsToGroup(VariableGroup variableGroup)
method BelongsToAnyGroup (line 698) | public bool BelongsToAnyGroup(List<VariableGroup> variableGroups)
method BelongsToAnyGroupOrHasNoGroup (line 703) | public bool BelongsToAnyGroupOrHasNoGroup(List<VariableGroup> variable...
method ApplySettings (line 712) | public void ApplySettings(WatchVariableControlSettings settings)
method SetPanel (line 767) | public void SetPanel(WatchVariableFlowLayoutPanel panel)
method RemoveFromPanel (line 773) | public void RemoveFromPanel()
method OpenPanelOptions (line 779) | public void OpenPanelOptions(Point point)
method CreateCopy (line 785) | public WatchVariableControl CreateCopy()
method GetAddToTabType (line 794) | private static AddToTabTypeEnum GetAddToTabType()
method AddToTab (line 802) | public void AddToTab(DataManager dataManager, AddToTabTypeEnum? addToT...
method AddVarsToTab (line 807) | public static void AddVarsToTab(
method AddToVarHackTab (line 869) | public void AddToVarHackTab()
method NotifyPanelOfReodering (line 875) | public void NotifyPanelOfReodering()
method ToggleFixedAddress (line 880) | public void ToggleFixedAddress()
method SetFixedAddress (line 893) | public void SetFixedAddress(bool fix)
method ToggleHighlighted (line 906) | public void ToggleHighlighted(Color? color = null)
method GetMemoryType (line 941) | public Type GetMemoryType()
method GetBaseAddresses (line 946) | public List<uint> GetBaseAddresses()
method GetValues (line 951) | public List<object> GetValues(bool useRounding = false, bool handleFor...
method GetValue (line 956) | public object GetValue(bool useRounding = false, bool handleFormatting...
method SetValueOfValues (line 961) | public bool SetValueOfValues(object value, bool allowToggle, int index)
method SetValues (line 972) | public bool SetValues(List<object> values, bool allowToggle)
method SetValue (line 979) | public bool SetValue(object value, bool allowToggle)
method AddValue (line 986) | public bool AddValue(object value, bool add, bool allowToggle)
method ToXml (line 993) | public XElement ToXml(bool useCurrentState = true)
method GetVarInfo (line 1003) | public List<string> GetVarInfo()
method GetSetters (line 1008) | public List<Func<object, bool, bool>> GetSetters()
method UnselectText (line 1013) | public void UnselectText()
method StopEditing (line 1019) | public void StopEditing()
method ToString (line 1025) | public override string ToString()
method MakeNightMode (line 1030) | public void MakeNightMode()
method UnMakeNightMode (line 1038) | public void UnMakeNightMode()
FILE: STROOP/Controls/WatchVariableControlPrecursor.cs
class WatchVariableControlPrecursor (line 16) | public class WatchVariableControlPrecursor
method WatchVariableControlPrecursor (line 31) | public WatchVariableControlPrecursor(
method WatchVariableControlPrecursor (line 84) | public WatchVariableControlPrecursor(
method WatchVariableControlPrecursor (line 114) | public WatchVariableControlPrecursor(XElement element)
method VerifyState (line 171) | private void VerifyState()
method CreateWatchVariableControl (line 261) | public WatchVariableControl CreateWatchVariableControl(
method ToXML (line 283) | public XElement ToXML(
method ToString (line 376) | public override string ToString()
method FormatString (line 385) | private static string FormatString(object obj)
method FormatEnum (line 393) | private static string FormatEnum(Type type, object obj)
method FormatGroupList (line 398) | private static string FormatGroupList(List<VariableGroup> groupList)
method FormatFixedAddresses (line 412) | private static string FormatFixedAddresses(List<uint> fixedAddresses)
method FormatBool (line 426) | private static string FormatBool(bool b)
method FormatType (line 431) | private static string FormatType(Type type)
method FormatColor (line 436) | private static string FormatColor(Color color)
method ToStringForCode (line 442) | public string ToStringForCode()
FILE: STROOP/Controls/WatchVariableControlSettings.cs
class WatchVariableControlSettings (line 28) | public class WatchVariableControlSettings
method WatchVariableControlSettings (line 87) | public WatchVariableControlSettings(
FILE: STROOP/Controls/WatchVariableFlowLayoutPanel.cs
class WatchVariableFlowLayoutPanel (line 17) | public class WatchVariableFlowLayoutPanel : NoTearFlowLayoutPanel
method WatchVariableFlowLayoutPanel (line 35) | public WatchVariableFlowLayoutPanel()
method Initialize (line 58) | public void Initialize(
method AddItemsToContextMenuStrip (line 110) | private void AddItemsToContextMenuStrip()
method GetSelectionToolStripItems (line 232) | public List<ToolStripItem> GetSelectionToolStripItems()
method CreateFilterItem (line 237) | private ToolStripMenuItem CreateFilterItem(VariableGroup varGroup)
method ToggleVarGroupVisibility (line 244) | private void ToggleVarGroupVisibility(VariableGroup varGroup, bool? ne...
method UpdateFilterItemCheckedStatuses (line 260) | private void UpdateFilterItemCheckedStatuses()
method UpdateControlsBasedOnFilters (line 270) | private void UpdateControlsBasedOnFilters()
method AddVariable (line 283) | public void AddVariable(WatchVariableControl watchVarControl)
method AddVariables (line 291) | public void AddVariables(List<WatchVariableControl> watchVarControls)
method RemoveVariable (line 304) | public void RemoveVariable(WatchVariableControl watchVarControl)
method RemoveVariables (line 310) | public void RemoveVariables(List<WatchVariableControl> watchVarControls)
method RemoveVariableGroup (line 326) | public void RemoveVariableGroup(VariableGroup varGroup)
method ShowOnlyVariableGroup (line 334) | public void ShowOnlyVariableGroup(VariableGroup visibleVarGroup)
method ShowOnlyVariableGroups (line 339) | public void ShowOnlyVariableGroups(List<VariableGroup> visibleVarGroups)
method ClearVariables (line 348) | public void ClearVariables()
method ClearAllButHighlightedVariables (line 355) | public void ClearAllButHighlightedVariables()
method FixVerticalScroll (line 363) | public void FixVerticalScroll()
method ResetVariables (line 370) | private void ResetVariables()
method UnselectAllVariables (line 383) | public void UnselectAllVariables()
method UnselectText (line 390) | public void UnselectText()
method StopEditing (line 398) | public void StopEditing()
method AddAllVariablesToCustomTab (line 406) | private void AddAllVariablesToCustomTab()
method GetCurrentVarXmlElements (line 412) | private List<XElement> GetCurrentVarXmlElements(bool useCurrentState =...
method OpenVariables (line 417) | public void OpenVariables(string fileName = null)
method OpenVariablesAsPopOut (line 423) | public void OpenVariablesAsPopOut(string fileName = null)
method OpenVariables (line 435) | public void OpenVariables(List<XElement> elements)
method SaveVariablesInPlace (line 449) | public void SaveVariablesInPlace()
method SaveVariables (line 456) | public void SaveVariables(string fileName = null)
method NotifyOfReordering (line 462) | public void NotifyOfReordering(WatchVariableControl watchVarControl)
method NotifyOfReorderingStart (line 474) | public void NotifyOfReorderingStart(List<WatchVariableControl> watchVa...
method NotifyOfReorderingEnd (line 483) | public void NotifyOfReorderingEnd(List<WatchVariableControl> watchVarC...
method NotifyOfReorderingClear (line 498) | public void NotifyOfReorderingClear()
method NotifySelectClick (line 505) | public void NotifySelectClick(
method GetCurrentVariableControls (line 544) | public List<WatchVariableControl> GetCurrentVariableControls()
method GetCurrentVariablePrecursors (line 558) | public List<WatchVariableControlPrecursor> GetCurrentVariablePrecursors()
method GetCurrentVariableValues (line 563) | public List<object> GetCurrentVariableValues(bool useRounding = false,...
method GetCurrentVariableNames (line 568) | public List<string> GetCurrentVariableNames()
method GetCurrentVariableInfo (line 573) | public List<(string name, object value, string clazz)> GetCurrentVaria...
method SetVariableValueByName (line 579) | public bool SetVariableValueByName(string name, object value, bool all...
method UpdatePanel (line 586) | public void UpdatePanel()
method ShouldShow (line 595) | private bool ShouldShow(WatchVariableControl watchVarControl)
method ToString (line 600) | public override string ToString()
method ColorVarsUsingFunction (line 606) | public void ColorVarsUsingFunction(Func<WatchVariableControl, Color> g...
method MakeYawVariablesBeTruncated (line 614) | public void MakeYawVariablesBeTruncated()
FILE: STROOP/Controls/WatchVariableLock.cs
class WatchVariableLock (line 17) | public class WatchVariableLock
method WatchVariableLock (line 33) | public WatchVariableLock(
method Invoke (line 62) | public void Invoke()
method UpdateLockValue (line 67) | public void UpdateLockValue(object value)
method Equals (line 72) | public override bool Equals(object obj)
method EqualsMemorySignature (line 94) | public bool EqualsMemorySignature(uint address, Type type, uint? mask,...
method GetHashCode (line 110) | public override int GetHashCode()
method GetHeaderLine (line 117) | public static string GetHeaderLine()
method ToString (line 136) | public override string ToString()
method GetCondensedInfo (line 155) | public string GetCondensedInfo()
FILE: STROOP/Controls/WatchVariableNumberWrapper.cs
class WatchVariableNumberWrapper (line 15) | public class WatchVariableNumberWrapper : WatchVariableWrapper
method WatchVariableNumberWrapper (line 33) | public WatchVariableNumberWrapper(
method AddNumberContextMenuStripItems (line 59) | private void AddNumberContextMenuStripItems()
method AddCoordinateContextMenuStripItems (line 84) | private void AddCoordinateContextMenuStripItems()
method EnableCoordinateContextMenuStripItemFunctionality (line 100) | public void EnableCoordinateContextMenuStripItemFunctionality(List<Wat...
method HandleVerification (line 182) | protected override void HandleVerification(object value)
method GetClass (line 189) | public override string GetClass()
method HandleRounding (line 194) | protected override object HandleRounding(object value, bool handleRoun...
method HandleHexDisplaying (line 212) | protected override object HandleHexDisplaying(object value)
method HandleHexUndisplaying (line 220) | protected override object HandleHexUndisplaying(object value)
method GetHexDigitCount (line 239) | protected virtual int? GetHexDigitCount()
method GetUseHex (line 245) | public override bool GetUseHex()
method GetUseHexExactly (line 250) | protected override bool GetUseHexExactly()
method ApplySettings (line 255) | public override void ApplySettings(WatchVariableControlSettings settings)
method ToggleDisplayAsHex (line 274) | public override void ToggleDisplayAsHex(bool? displayAsHexNullable = n...
method HandleNumberConversion (line 280) | protected override object HandleNumberConversion(object value)
FILE: STROOP/Controls/WatchVariableObjectWrapper.cs
class WatchVariableObjectWrapper (line 16) | public class WatchVariableObjectWrapper : WatchVariableAddressWrapper
method WatchVariableObjectWrapper (line 20) | public WatchVariableObjectWrapper(
method AddObjectContextMenuStripItems (line 30) | private void AddObjectContextMenuStripItems()
method GetClass (line 55) | public override string GetClass()
method HandleHexDisplaying (line 60) | protected override object HandleHexDisplaying(object value)
method HandleObjectDisplaying (line 66) | protected override object HandleObjectDisplaying(object value)
method HandleObjectUndisplaying (line 77) | protected override object HandleObjectUndisplaying(object value)
method GetUseHexExactly (line 91) | protected override bool GetUseHexExactly()
FILE: STROOP/Controls/WatchVariableStringWrapper.cs
class WatchVariableStringWrapper (line 16) | public class WatchVariableStringWrapper : WatchVariableWrapper
method WatchVariableStringWrapper (line 18) | public WatchVariableStringWrapper(
method AddStringContextMenuStripItems (line 26) | private void AddStringContextMenuStripItems(string specialType)
method HandleVerification (line 78) | protected override void HandleVerification(object value)
method GetClass (line 85) | public override string GetClass()
FILE: STROOP/Controls/WatchVariableTriangleWrapper.cs
class WatchVariableTriangleWrapper (line 16) | public class WatchVariableTriangleWrapper : WatchVariableAddressWrapper
method WatchVariableTriangleWrapper (line 18) | public WatchVariableTriangleWrapper(
method AddTriangleContextMenuStripItems (line 26) | private void AddTriangleContextMenuStripItems()
method GetClass (line 45) | public override string GetClass()
FILE: STROOP/Controls/WatchVariableWrapper.cs
class WatchVariableWrapper (line 16) | public abstract class WatchVariableWrapper
method CreateWatchVariableWrapper (line 43) | public static WatchVariableWrapper CreateWatchVariableWrapper(
method WatchVariableWrapper (line 89) | protected WatchVariableWrapper(WatchVariable watchVar, WatchVariableCo...
method StartsAsCheckbox (line 101) | public bool StartsAsCheckbox()
method GetContextMenuStrip (line 106) | public ContextMenuStrip GetContextMenuStrip()
method AddContextMenuStripItems (line 111) | private void AddContextMenuStripItems()
method AddExternalContextMenuStripItems (line 136) | private void AddExternalContextMenuStripItems()
method AddCustomContextMenuStripItems (line 154) | private void AddCustomContextMenuStripItems()
method ShowVarInfo (line 177) | public void ShowVarInfo()
method GetVarInfo (line 192) | public List<string> GetVarInfo()
method GetVarInfoLabels (line 207) | public static List<string> GetVarInfoLabels()
method GetSetters (line 222) | public List<Func<object, bool, bool>> GetSetters(List<uint> addresses ...
method ShowControllerForm (line 227) | public void ShowControllerForm()
method ShowBitForm (line 237) | public void ShowBitForm()
method ViewInMemoryTab (line 248) | public void ViewInMemoryTab()
method GetLockedCheckState (line 259) | public CheckState GetLockedCheckState(List<uint> addresses = null)
method GetLockedBool (line 264) | public bool GetLockedBool(List<uint> addresses = null)
method UpdateItemCheckStates (line 269) | public void UpdateItemCheckStates(List<uint> addresses = null)
method ToggleLocked (line 276) | public void ToggleLocked(bool? newLockedValueNullable, List<uint> addr...
method Paste (line 292) | public bool Paste()
method GetMemoryType (line 301) | public Type GetMemoryType()
method GetBaseAddresses (line 306) | public List<uint> GetBaseAddresses(List<uint> addresses = null)
method GetVerifiedValues (line 311) | private List<object> GetVerifiedValues(List<uint> addresses = null)
method GetValues (line 318) | public List<object> GetValues(
method GetValue (line 328) | public object GetValue(
method ConvertValue (line 341) | private object ConvertValue(
method SetValues (line 358) | public bool SetValues(List<object> values, bool allowToggle, List<uint...
method SetValue (line 364) | public bool SetValue(object value, bool allowToggle, List<uint> addres...
method UnconvertValue (line 370) | public object UnconvertValue(object value)
method GetCheckStateValue (line 379) | public CheckState GetCheckStateValue(List<uint> addresses = null)
method SetCheckStateValue (line 387) | public bool SetCheckStateValue(CheckState checkState, bool allowToggle...
method AddValue (line 393) | public bool AddValue(object objectValue, bool add, bool allowToggle, L...
method GetCurrentAddressesToFix (line 417) | public List<uint> GetCurrentAddressesToFix()
method CombineValues (line 426) | protected (bool meaningfulValue, object value) CombineValues(List<obje...
method CombineCheckStates (line 437) | protected CheckState CombineCheckStates(List<CheckState> checkStates)
method HandleVerification (line 452) | protected virtual void HandleVerification(object value)
method GetClass (line 458) | public abstract string GetClass();
method HandleRounding (line 462) | protected virtual object HandleRounding(object value, bool handleRound...
method HandleHexDisplaying (line 467) | protected virtual object HandleHexDisplaying(object value)
method HandleHexUndisplaying (line 472) | protected virtual object HandleHexUndisplaying(object value)
method HandleNumberConversion (line 477) | protected virtual object HandleNumberConversion(object value)
method HandleAngleConverting (line 484) | protected virtual object HandleAngleConverting(object value)
method HandleAngleUnconverting (line 489) | protected virtual object HandleAngleUnconverting(object value)
method HandleAngleRoundingOut (line 494) | protected virtual object HandleAngleRoundingOut(object value)
method HandleObjectDisplaying (line 501) | protected virtual object HandleObjectDisplaying(object value)
method HandleObjectUndisplaying (line 506) | protected virtual object HandleObjectUndisplaying(object value)
method ConvertValueToCheckState (line 513) | protected virtual CheckState ConvertValueToCheckState(object value)
method ConvertCheckStateToValue (line 518) | protected virtual object ConvertCheckStateToValue(CheckState checkState)
method GetUseHex (line 527) | public virtual bool GetUseHex()
method GetUseHexExactly (line 532) | protected virtual bool GetUseHexExactly()
method ApplySettings (line 537) | public virtual void ApplySettings(WatchVariableControlSettings settings)
method ToggleDisplayAsHex (line 545) | public virtual void ToggleDisplayAsHex(bool? displayAsHexNullable = null)
FILE: STROOP/Enums/AddToTabTypeEnum.cs
type AddToTabTypeEnum (line 12) | public enum AddToTabTypeEnum
FILE: STROOP/Enums/AggregateMathOperation.cs
type AggregateMathOperation (line 12) | public enum AggregateMathOperation
FILE: STROOP/Enums/AngleUnitType.cs
type AngleUnitType (line 12) | public enum AngleUnitType
FILE: STROOP/Enums/BaseAddressTypeEnum.cs
type BaseAddressTypeEnum (line 13) | public enum BaseAddressTypeEnum
FILE: STROOP/Enums/BinaryMathOperation.cs
type BinaryMathOperation (line 12) | public enum BinaryMathOperation
FILE: STROOP/Enums/CamHackMode.cs
type CamHackMode (line 12) | public enum CamHackMode
FILE: STROOP/Enums/CellSelectionType.cs
type CellSelectionType (line 12) | public enum CellSelectionType
FILE: STROOP/Enums/CoinParamsOrder.cs
type CoinParamOrder (line 12) | public enum CoinParamOrder
FILE: STROOP/Enums/CompassPosition.cs
type CompassPosition (line 12) | public enum CompassPosition
FILE: STROOP/Enums/Coordinate.cs
type Coordinate (line 12) | public enum Coordinate
FILE: STROOP/Enums/CoordinateAngle.cs
type CoordinateAngle (line 12) | public enum CoordinateAngle
FILE: STROOP/Enums/CoordinateSystem.cs
type CoordinateSystem (line 12) | public enum CoordinateSystem
FILE: STROOP/Enums/CopyTypeEnum.cs
type CopyTypeEnum (line 9) | public enum CopyTypeEnum
FILE: STROOP/Enums/EndiannessType.cs
type EndiannessType (line 9) | public enum EndiannessType
FILE: STROOP/Enums/FileType.cs
type FileType (line 12) | public enum FileType
FILE: STROOP/Enums/FrameInputRelationType.cs
type FrameInputRelationType (line 12) | public enum FrameInputRelationType
FILE: STROOP/Enums/HatLocation.cs
type HatLocation (line 12) | public enum HatLocation
FILE: STROOP/Enums/InputDisplayTypeEnum.cs
type InputDisplayTypeEnum (line 12) | public enum InputDisplayTypeEnum
FILE: STROOP/Enums/Map3DCameraMode.cs
type Map3DCameraMode (line 12) | public enum Map3DCameraMode
FILE: STROOP/Enums/MapTrackerIconType.cs
type MapTrackerIconType (line 12) | public enum MapTrackerIconType
FILE: STROOP/Enums/MapTrackerOrderType.cs
type MapTrackerOrderType (line 12) | public enum MapTrackerOrderType
FILE: STROOP/Enums/MapTrackerVisibilityType.cs
type MapTrackerVisibilityType (line 12) | public enum MapTrackerVisibilityType
FILE: STROOP/Enums/MapType.cs
type MapType (line 12) | public enum MapType
FILE: STROOP/Enums/MouseEvent.cs
type MouseEvent (line 12) | public enum MouseEvent
FILE: STROOP/Enums/PaintingListTypeEnum.cs
type PaintingListTypeEnum (line 12) | public enum PaintingListTypeEnum
FILE: STROOP/Enums/PositionControllerRelativity.cs
type PositionControllerRelativity (line 12) | public enum PositionControllerRelativity
FILE: STROOP/Enums/ReadWriteMode.cs
type ReadWriteMode (line 12) | public enum ReadWriteMode
FILE: STROOP/Enums/RelativeDirection.cs
type RelativeDirection (line 12) | public enum RelativeDirection
FILE: STROOP/Enums/RomVersion.cs
type RomVersion (line 12) | public enum RomVersion
FILE: STROOP/Enums/RomVersionSelection.cs
type RomVersionSelection (line 12) | public enum RomVersionSelection
FILE: STROOP/Enums/TriangleClassification.cs
type TriangleClassification (line 11) | public enum TriangleClassification
FILE: STROOP/Enums/TriangleClassificationExtended.cs
type TriangleClassificationExtended (line 11) | public enum TriangleClassificationExtended
FILE: STROOP/Enums/TriangleVertexOffset.cs
type TriangleVertexOffset (line 12) | public enum TriangleVertexOffset
FILE: STROOP/Enums/VariableGroup.cs
type VariableGroup (line 12) | public enum VariableGroup
FILE: STROOP/Enums/WatchVariableSubclass.cs
type WatchVariableSubclass (line 12) | public enum WatchVariableSubclass
FILE: STROOP/Extensions/BitmapExtensions.cs
class BitmapExtensions (line 11) | public static class BitmapExtensions
method GetOpaqueImage (line 13) | public static Image GetOpaqueImage(this Image image, float opacity)
method Grayscale (line 39) | public static Image Grayscale(this Image image)
FILE: STROOP/Extensions/ColorExtensions.cs
class ColorExtensions (line 10) | public static class ColorExtensions
method Lighten (line 12) | public static Color Lighten(this Color color, double amount)
method Darken (line 20) | public static Color Darken(this Color color, double amount)
FILE: STROOP/Extensions/ControlCollectionsExtensions.cs
class ControlCollectionsExtensions (line 10) | public static class ControlCollectionsExtensions
method Insert (line 12) | public static void Insert(this Control.ControlCollection collection, C...
FILE: STROOP/Extensions/FormExtensions.cs
class FormExtensions (line 10) | public static class FormExtensions
method TryInvoke (line 12) | public static void TryInvoke(this Form form, Delegate method)
FILE: STROOP/Extensions/IEnumerableExtensions.cs
class IEnumerableExtensions (line 9) | public static class IEnumerableExtensions
method IndexOfMin (line 11) | public static int IndexOfMin<T>(this IEnumerable<T> source) where T : ...
FILE: STROOP/Extensions/RectangleExtensions.cs
class RectangleExtensions (line 10) | public static class RectangleExtensions
method Zoom (line 12) | public static RectangleF Zoom(this RectangleF inRec, Size objZoom)
method Zoom (line 31) | public static Rectangle Zoom(this Rectangle inRec, Size objZoom)
FILE: STROOP/Extensions/RichTextBoxExtensions.cs
class RichTextBoxExtensions (line 11) | public static class RichTextBoxExtensions
method AppendText (line 13) | public static void AppendText(this RichTextBox box, string text, Color...
FILE: STROOP/Extensions/SizeExtensions.cs
class SizeExtensions (line 10) | public static class SizeExtensions
method Divide (line 12) | public static Size Divide (this Size a, int b)
FILE: STROOP/Forms/ActionForm.Designer.cs
class ActionForm (line 3) | partial class ActionForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/ActionForm.cs
class ActionForm (line 11) | public partial class ActionForm : Form
method ActionForm (line 13) | public ActionForm()
method GetRowParams (line 25) | public List<object> GetRowParams(uint action)
method GetBit (line 44) | private bool GetBit(uint action, int bit)
FILE: STROOP/Forms/CoinRingDisplayForm.Designer.cs
class CoinRingDisplayForm (line 3) | partial class CoinRingDisplayForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/CoinRingDisplayForm.cs
class CoinRingDisplayForm (line 11) | public partial class CoinRingDisplayForm : Form, IUpdatableForm
method CoinRingDisplayForm (line 13) | public CoinRingDisplayForm()
method UpdateForm (line 20) | public void UpdateForm()
FILE: STROOP/Forms/FormManager.cs
class FormManager (line 16) | public static class FormManager
method AddForm (line 20) | public static void AddForm(IUpdatableForm form)
method RemoveForm (line 25) | public static void RemoveForm(IUpdatableForm form)
method Update (line 30) | public static void Update()
method GetPopOutForms (line 38) | public static List<VariablePopOutForm> GetPopOutForms()
method GetMapCounts (line 44) | public static (int num2DTopDown, int num2DOrthographic, int num3D) Get...
method SavePopOuts (line 81) | public static void SavePopOuts()
method GetPopOutData (line 87) | public static List<XElement> GetPopOutData()
FILE: STROOP/Forms/IUpdatableForm.cs
type IUpdatableForm (line 14) | public interface IUpdatableForm
method UpdateForm (line 16) | void UpdateForm();
FILE: STROOP/Forms/ImageForm.Designer.cs
class ImageForm (line 3) | partial class ImageForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/ImageForm.cs
class ImageForm (line 12) | public partial class ImageForm : Form
method ImageForm (line 16) | public ImageForm()
FILE: STROOP/Forms/InfoForm.Designer.cs
class InfoForm (line 3) | partial class InfoForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/InfoForm.cs
class InfoForm (line 9) | public partial class InfoForm : Form
method InfoForm (line 11) | public InfoForm()
method SetTriangleCoordinates (line 18) | public void SetTriangleCoordinates(short[] coordinates)
method SetTriangleEquation (line 25) | public void SetTriangleEquation(float normalX, float normalY, float no...
method SetTriangleData (line 33) | public void SetTriangleData(List<short[]> coordinateList, bool repeatF...
method SetTriangleVertices (line 43) | public void SetTriangleVertices(List<short[]> coordinateList)
method SetTriangles (line 81) | public void SetTriangles(List<TriangleDataModel> triangleList)
method StringifyCoordinates (line 88) | private String StringifyCoordinates(short[] coordinates, bool repeatCo...
method StringifyCoordinate (line 105) | private String StringifyCoordinate(short[] coordinate)
method SetDictionary (line 112) | public void SetDictionary<TKey, TValue>(Dictionary<TKey, TValue> dicti...
method SetText (line 128) | public void SetText(string formTitle, string textTitle, string text)
method ShowValue (line 135) | public static void ShowValue(object value, string formTitle = "Title",...
FILE: STROOP/Forms/LoadingForm.Designer.cs
class LoadingForm (line 3) | partial class LoadingForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/LoadingForm.cs
class LoadingForm (line 14) | public partial class LoadingForm : Form
method LoadingForm (line 16) | public LoadingForm()
method LoadingForm_Load (line 21) | private void LoadingForm_Load(object sender, EventArgs e)
method UpdateStatus (line 26) | public void UpdateStatus(int progressValue, int progressMax, string st...
FILE: STROOP/Forms/MainLoadingForm.Designer.cs
class MainLoadingForm (line 3) | partial class MainLoadingForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/MainLoadingForm.cs
class MainLoadingForm (line 15) | public partial class MainLoadingForm : Form
method MainLoadingForm (line 20) | public MainLoadingForm(int maxStatus)
method LoadingForm_Load (line 31) | private void LoadingForm_Load(object sender, EventArgs e)
method UpdateStatus (line 37) | public void UpdateStatus(string status, int number)
method MainLoadingForm_MouseDown (line 52) | private void MainLoadingForm_MouseDown(object sender, MouseEventArgs e)
method MainLoadingForm_MouseMove (line 58) | private void MainLoadingForm_MouseMove(object sender, MouseEventArgs e)
method progressBarLoading_MouseDown (line 67) | private void progressBarLoading_MouseDown(object sender, MouseEventArg...
method progressBarLoading_MouseMove (line 73) | private void progressBarLoading_MouseMove(object sender, MouseEventArg...
FILE: STROOP/Forms/MapPopOutForm.Designer.cs
class MapPopOutForm (line 3) | partial class MapPopOutForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/MapPopOutForm.cs
class MapPopOutForm (line 13) | public partial class MapPopOutForm : Form, IUpdatableForm
method MapPopOutForm (line 17) | public MapPopOutForm()
method UpdateForm (line 24) | public void UpdateForm()
method ShowForm (line 29) | public void ShowForm()
method Load2D (line 34) | private async void Load2D(object sender, EventArgs e)
method IsOrthographicViewEnabled (line 48) | public bool IsOrthographicViewEnabled()
FILE: STROOP/Forms/SelectionForm.Designer.cs
class SelectionForm (line 3) | partial class SelectionForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/SelectionForm.cs
class SelectionForm (line 11) | public partial class SelectionForm : Form
method SelectionForm (line 18) | public SelectionForm()
method Initialize (line 30) | public void Initialize<T>(
method ShowActionDescriptionSelectionForm (line 52) | public static void ShowActionDescriptionSelectionForm()
method ShowPreviousActionDescriptionSelectionForm (line 68) | public static void ShowPreviousActionDescriptionSelectionForm()
method ShowAnimationDescriptionSelectionForm (line 84) | public static void ShowAnimationDescriptionSelectionForm()
method GetAnimation (line 103) | public static int? GetAnimation(string firstText, string secondText)
method ShowTriangleTypeDescriptionSelectionForm (line 120) | public static void ShowTriangleTypeDescriptionSelectionForm()
method ShowDemoCounterDescriptionSelectionForm (line 143) | public static void ShowDemoCounterDescriptionSelectionForm()
method ShowTtcSpeedSettingDescriptionSelectionForm (line 161) | public static void ShowTtcSpeedSettingDescriptionSelectionForm()
method ShowAreaTerrainDescriptionSelectionForm (line 179) | public static void ShowAreaTerrainDescriptionSelectionForm()
method ShowMap3DModeSelectionForm (line 199) | public static void ShowMap3DModeSelectionForm()
method ShowCompassPositionSelectionForm (line 217) | public static void ShowCompassPositionSelectionForm()
method ShowDataManagerSelectionForm (line 235) | public static void ShowDataManagerSelectionForm(List<WatchVariableCont...
FILE: STROOP/Forms/StroopMainForm.Designer.cs
class StroopMainForm (line 7) | partial class StroopMainForm
method Dispose (line 18) | protected override void Dispose(bool disposing)
method InitializeComponent (line 33) | private void InitializeComponent()
FILE: STROOP/Forms/StroopMainForm.cs
class StroopMainForm (line 27) | public partial class StroopMainForm : Form
method StroopMainForm (line 45) | public StroopMainForm()
method AttachToProcess (line 52) | private bool AttachToProcess(Process process)
method StroopMainForm_Load (line 65) | private void StroopMainForm_Load(object sender, EventArgs e)
method InitializeTabRemoval (line 104) | private void InitializeTabRemoval()
method SetUpContextMenuStrips (line 125) | private void SetUpContextMenuStrips()
method CreateManagers (line 263) | private void CreateManagers()
method _sm64Stream_WarnReadonlyOff (line 487) | private void _sm64Stream_WarnReadonlyOff(object sender, EventArgs e)
method _sm64Stream_OnDisconnect (line 510) | private void _sm64Stream_OnDisconnect(object sender, EventArgs e)
method LoadConfig (line 519) | public void LoadConfig(MainLoadingForm loadingForm)
method GetAvailableProcesses (line 586) | private List<Process> GetAvailableProcesses()
method OnUpdate (line 610) | private void OnUpdate(object sender, EventArgs e)
method UpdateComboBoxes (line 661) | private void UpdateComboBoxes()
method _sm64Stream_FpsUpdated (line 670) | private void _sm64Stream_FpsUpdated(object sender, EventArgs e)
method SetupViews (line 678) | private void SetupViews()
method glControlMap2D_Load (line 707) | private async void glControlMap2D_Load(object sender, EventArgs e)
method glControlMap3D_Load (line 718) | private async void glControlMap3D_Load(object sender, EventArgs e)
method glControlModelView_Load (line 729) | private async void glControlModelView_Load(object sender, EventArgs e)
method buttonShowTopPanel_Click (line 740) | private void buttonShowTopPanel_Click(object sender, EventArgs e)
method buttonShowBottomPanel_Click (line 750) | private void buttonShowBottomPanel_Click(object sender, EventArgs e)
method buttonShowTopBottomPanel_Click (line 760) | private void buttonShowTopBottomPanel_Click(object sender, EventArgs e)
method buttonShowLeftPanel_Click (line 770) | private void buttonShowLeftPanel_Click(object sender, EventArgs e)
method buttonShowRightPanel_Click (line 780) | private void buttonShowRightPanel_Click(object sender, EventArgs e)
method buttonShowLeftRightPanel_Click (line 790) | private void buttonShowLeftRightPanel_Click(object sender, EventArgs e)
method buttonMoveTabLeft_Click (line 800) | private void buttonMoveTabLeft_Click(object sender, EventArgs e)
method buttonMoveTabRight_Click (line 812) | private void buttonMoveTabRight_Click(object sender, EventArgs e)
method MoveTab (line 824) | private void MoveTab(bool rightwards)
method buttonTabAdd_Click (line 839) | private void buttonTabAdd_Click(object sender, EventArgs e)
method StroopMainForm_Resize (line 844) | private void StroopMainForm_Resize(object sender, EventArgs e)
method buttonConnect_Click (line 849) | private void buttonConnect_Click(object sender, EventArgs e)
method buttonRefresh_Click (line 867) | private void buttonRefresh_Click(object sender, EventArgs e)
method buttonBypass_Click (line 880) | private void buttonBypass_Click(object sender, EventArgs e)
method buttonDisconnect_Click (line 885) | private void buttonDisconnect_Click(object sender, EventArgs e)
method buttonRefreshAndConnect_Click (line 893) | private void buttonRefreshAndConnect_Click(object sender, EventArgs e)
method trackBarObjSlotSize_ValueChanged (line 899) | private async void trackBarObjSlotSize_ValueChanged(object sender, Eve...
method ChangeObjectSlotSize (line 904) | public async void ChangeObjectSlotSize(int size)
method buttonOpenSavestate_Click (line 927) | private void buttonOpenSavestate_Click(object sender, EventArgs e)
method saveAsSavestate (line 946) | private void saveAsSavestate()
method SwitchTab (line 963) | public void SwitchTab(string name)
method OnFormClosing (line 970) | protected override void OnFormClosing(FormClosingEventArgs e)
method UpdateNightMode (line 992) | private void UpdateNightMode()
method MakeNightMode (line 1006) | private void MakeNightMode()
method UnMakeNightMode (line 1077) | private void UnMakeNightMode()
FILE: STROOP/Forms/TabForm.Designer.cs
class TabForm (line 3) | partial class TabForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/TabForm.cs
class TabForm (line 11) | public partial class TabForm : Form
method TabForm (line 15) | public TabForm()
method AddTab (line 20) | public void AddTab(TabPage tab)
FILE: STROOP/Forms/TriangleListForm.Designer.cs
class TriangleListForm (line 3) | partial class TriangleListForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/TriangleListForm.cs
class TriangleListForm (line 13) | public partial class TriangleListForm : Form
method TriangleListForm (line 19) | public TriangleListForm(
method TriangleListFormClosing (line 41) | private void TriangleListFormClosing()
method RefreshAndSort (line 46) | public void RefreshAndSort()
method Annihilate (line 62) | private void Annihilate()
method Inject (line 72) | private void Inject()
method Remove (line 77) | private void Remove()
method RefreshDataGridViewAfterRemoval (line 100) | public void RefreshDataGridViewAfterRemoval()
FILE: STROOP/Forms/ValueForm.Designer.cs
class ValueForm (line 3) | partial class ValueForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/ValueForm.cs
class ValueForm (line 11) | public partial class ValueForm : Form
method ValueForm (line 15) | public ValueForm(
FILE: STROOP/Forms/ValueSplitForm.Designer.cs
class ValueSplitForm (line 3) | partial class ValueSplitForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/ValueSplitForm.cs
class ValueSplitForm (line 11) | public partial class ValueSplitForm : Form
method ValueSplitForm (line 16) | public ValueSplitForm(
FILE: STROOP/Forms/VariableBitForm.Designer.cs
class VariableBitForm (line 3) | partial class VariableBitForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/VariableBitForm.cs
class VariableBitForm (line 18) | public partial class VariableBitForm : Form, IUpdatableForm
method VariableBitForm (line 29) | public VariableBitForm(string varName, WatchVariable watchVar, List<ui...
method UpdateForm (line 66) | public void UpdateForm()
method SetValueInMemory (line 103) | public void SetValueInMemory()
method DoColoring (line 110) | private void DoColoring()
FILE: STROOP/Forms/VariableControllerForm.Designer.cs
class VariableControllerForm (line 3) | partial class VariableControllerForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/VariableControllerForm.cs
class VariableControllerForm (line 18) | public partial class VariableControllerForm : Form, IUpdatableForm
method VariableControllerForm (line 32) | public VariableControllerForm(
method VariableControllerForm (line 41) | public VariableControllerForm(
method GetValues (line 137) | private string GetValues()
method SetValues (line 145) | private void SetValues(bool allowToggle)
method GetColorForCheckState (line 157) | private Color GetColorForCheckState(CheckState checkState)
method UpdateForm (line 172) | public void UpdateForm()
method ToggleFixedAddress (line 183) | public void ToggleFixedAddress()
FILE: STROOP/Forms/VariableCreationForm.Designer.cs
class VariableCreationForm (line 3) | partial class VariableCreationForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/VariableCreationForm.cs
class VariableCreationForm (line 17) | public partial class VariableCreationForm : Form
method VariableCreationForm (line 21) | public VariableCreationForm()
method Initialize (line 46) | public void Initialize(WatchVariableFlowLayoutPanel varPanel)
method CreateWatchVariableControl (line 55) | private WatchVariableControl CreateWatchVariableControl()
FILE: STROOP/Forms/VariablePopOutForm.Designer.cs
class VariablePopOutForm (line 3) | partial class VariablePopOutForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/VariablePopOutForm.cs
class VariablePopOutForm (line 14) | public partial class VariablePopOutForm : Form, IUpdatableForm
method VariablePopOutForm (line 31) | public VariablePopOutForm()
method Initialize (line 52) | public void Initialize(List<WatchVariableControl> controls)
method SetBorderless (line 96) | public void SetBorderless(bool borderless)
method SetAlwaysOnTop (line 103) | public void SetAlwaysOnTop(bool alwaysOnTop)
method OpenPopOutForm (line 110) | public static void OpenPopOutForm(XElement element)
method UpdateForm (line 154) | public void UpdateForm()
method ShowForm (line 159) | public void ShowForm()
method GetHelper (line 165) | public VariablePopOutFormHelper GetHelper()
class VariablePopOutFormHelper (line 170) | public class VariablePopOutFormHelper : IVariableAdder
method VariablePopOutFormHelper (line 175) | public VariablePopOutFormHelper(WatchVariableFlowLayoutPanel watchVa...
method AddVariable (line 181) | public void AddVariable(WatchVariableControl watchVarControl)
method AddVariables (line 186) | public void AddVariables(List<WatchVariableControl> watchVarControls)
method ToString (line 191) | public override string ToString()
method GetData (line 197) | public XElement GetData()
FILE: STROOP/Forms/VariableTripletControllerForm.Designer.cs
class VariableTripletControllerForm (line 3) | partial class VariableTripletControllerForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/VariableTripletControllerForm.cs
class VariableTripletControllerForm (line 13) | public partial class VariableTripletControllerForm : Form
method VariableTripletControllerForm (line 15) | public VariableTripletControllerForm()
method Initialize (line 20) | public void Initialize(List<WatchVariableControl> controls)
method Initialize (line 85) | public void Initialize(
method ShowForm (line 112) | public void ShowForm()
FILE: STROOP/Forms/VariableViewerForm.Designer.cs
class VariableViewerForm (line 3) | partial class VariableViewerForm
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: STROOP/Forms/VariableViewerForm.cs
class VariableViewerForm (line 16) | public partial class VariableViewerForm : Form
method VariableViewerForm (line 18) | public VariableViewerForm(
FILE: STROOP/LoadingHandler.cs
class LoadingHandler (line 12) | class LoadingHandler
method ShowLoadingForm (line 20) | static public void ShowLoadingForm()
method ShowForm (line 31) | static private void ShowForm()
method CloseForm (line 37) | static public void CloseForm()
method CloseFormInternal (line 42) | static private void CloseFormInternal()
FILE: STROOP/M64/M64CopiedData.cs
class M64CopiedData (line 9) | public class M64CopiedData
method M64CopiedData (line 20) | private M64CopiedData(
method CreateCopiedData (line 36) | public static M64CopiedData CreateCopiedData(
method CreateCopiedDataFromClipboardForJoystick (line 54) | public static M64CopiedData CreateCopiedDataFromClipboardForJoystick(b...
method Apply (line 93) | public void Apply(List<M64InputFrame> inputs)
method Apply (line 102) | public void Apply(M64InputFrame input)
method ToString (line 107) | public override string ToString()
method GetRawValue (line 115) | internal uint GetRawValue(int index)
FILE: STROOP/M64/M64CopiedFrame.cs
class M64CopiedFrame (line 8) | public class M64CopiedFrame
method M64CopiedFrame (line 29) | public M64CopiedFrame(
method CreateCopiedFrame (line 83) | public static M64CopiedFrame CreateCopiedFrame(M64InputFrame input, bo...
method Apply (line 117) | public void Apply(M64InputFrame input)
FILE: STROOP/M64/M64File.cs
class M64File (line 20) | public class M64File
method M64File (line 36) | public M64File(M64Gui gui)
method OpenFile (line 44) | public bool OpenFile(string filePath, string fileName)
method LoadBytes (line 69) | private bool LoadBytes(byte[] fileBytes)
method ToBytes (line 100) | private byte[] ToBytes()
method Save (line 107) | public bool Save()
method Save (line 114) | public bool Save(string filePath, string fileName)
method Close (line 133) | public void Close()
method ResetChanges (line 144) | public void ResetChanges()
method DeleteRows (line 152) | public void DeleteRows(int startIndex, int endIndex)
method Paste (line 177) | public void Paste(M64CopiedData copiedData, int index, bool insert, in...
method AddPauseBufferFrames (line 230) | public void AddPauseBufferFrames(int startIndex, int endIndex)
method SetPasteProgressVisibility (line 276) | private void SetPasteProgressVisibility(bool visibility)
method SetPasteProgressCount (line 284) | private void SetPasteProgressCount(int value, int maximum)
method RefreshInputFrames (line 298) | private void RefreshInputFrames(int startIndex = 0)
FILE: STROOP/M64/M64Header.cs
class M64Header (line 16) | public class M64Header
type MovieStartTypeEnum (line 18) | public enum MovieStartTypeEnum { FromStart, FromSnapshot, FromEEPROM }
method M64Header (line 171) | public M64Header(M64File m64File, M64Gui gui)
method NotifyChange (line 177) | private void NotifyChange()
method LoadBytes (line 183) | public void LoadBytes(byte[] bytes)
method ToBytes (line 234) | public byte[] ToBytes()
method LoadBytesDebug (line 264) | public void LoadBytesDebug(byte[] bytes)
method GetControllerFlagsValue (line 387) | private uint GetControllerFlagsValue()
method GetControllerBoolList (line 399) | private List<bool> GetControllerBoolList()
method ConvertMovieStartTypeEnumToShort (line 418) | private short ConvertMovieStartTypeEnumToShort(MovieStartTypeEnum movi...
method ConvertShortToMovieStartTypeEnum (line 433) | private MovieStartTypeEnum ConvertShortToMovieStartTypeEnum(short shor...
method Clear (line 448) | public void Clear()
FILE: STROOP/M64/M64InputCell.cs
class M64InputCell (line 14) | public class M64InputCell
method M64InputCell (line 21) | public M64InputCell(DataGridViewCell cell)
method SetValue (line 30) | public void SetValue(bool value, int? intOnValue = null)
FILE: STROOP/M64/M64InputFrame.cs
class M64InputFrame (line 14) | public class M64InputFrame
method M64InputFrame (line 27) | public M64InputFrame(int frameIndex, uint rawValue, bool isOriginalFra...
method GetOriginalValues (line 92) | private List<object> GetOriginalValues()
method GetCurrentValues (line 103) | private List<object> GetCurrentValues()
method NotifyChange (line 114) | private void NotifyChange()
method UpdateCellColors (line 121) | public void UpdateCellColors()
method UpdateRowColor (line 138) | public void UpdateRowColor()
method SetByte (line 147) | private void SetByte(int num, byte value)
method GetByte (line 152) | private byte GetByte(int num)
method SetBit (line 157) | private void SetBit(int bit, bool value)
method GetBit (line 162) | private bool GetBit(int bit)
method ToBytes (line 167) | public byte[] ToBytes()
method Equals (line 172) | public override bool Equals(object obj)
method GetHashCode (line 182) | public override int GetHashCode()
method ToString (line 187) | public override string ToString()
method GetInputsString (line 192) | public string GetInputsString()
method MatchesInputs (line 221) | public bool MatchesInputs(M64InputFrame other)
FILE: STROOP/M64/M64Stats.cs
class M64Stats (line 16) | public class M64Stats
method M64Stats (line 155) | public M64Stats(M64File m64)
method FindPresses (line 160) | private List<(int, int)> FindPresses(Func<M64InputFrame, bool> isPress...
method SetNumPreses (line 200) | private void SetNumPreses(int numPresses, Action<M64InputFrame> unpres...
method FindJoystickFrames (line 209) | private List<(int, int, int)> FindJoystickFrames()
method SetNumJoystickFrames (line 221) | private void SetNumJoystickFrames(int numFrames)
method FindInputChanges (line 231) | private List<(int, string)> FindInputChanges()
method CreateContextMenuStrip (line 247) | public ContextMenuStrip CreateContextMenuStrip()
method FormatButtonPressesString (line 297) | private string FormatButtonPressesString(List<(int, int)> buttonPresse...
method FormatJoystickFramesString (line 315) | private string FormatJoystickFramesString(List<(int, int, int)> joysti...
method FormatInputChangesString (line 331) | private string FormatInputChangesString(List<(int, string)> inputChanges)
FILE: STROOP/M64/M64Utilities.cs
class M64Utilities (line 17) | public static class M64Utilities
method SetSpecificInputValue (line 68) | public static void SetSpecificInputValue(
method GetSelectedInputCells (line 169) | public static List<M64InputCell> GetSelectedInputCells(
method GetCellStats (line 208) | public static (int? minFrame, int? maxFrame, string inputsString) GetC...
method GetSelectedInputFrames (line 227) | public static List<M64InputFrame> GetSelectedInputFrames(DataGridView ...
method GetInputFramesInRange (line 238) | public static List<M64InputFrame> GetInputFramesInRange(DataGridView t...
method GetRawValueFromInputs (line 244) | public static uint GetRawValueFromInputs(
method SetByte (line 288) | public static uint SetByte(uint rawValue, int num, byte value)
method GetByte (line 294) | public static byte GetByte(uint rawValue, int num)
method SetBit (line 299) | public static uint SetBit(uint rawValue, int bit, bool value)
method GetBit (line 312) | public static bool GetBit(uint rawValue, int bit)
method ConvertFrameToDisplayedValue (line 317) | public static int ConvertFrameToDisplayedValue(int frame)
method ConvertDisplayedValueToFrame (line 322) | public static int ConvertDisplayedValueToFrame(int displayedValue)
method GetFrameInputRelationOffset (line 327) | private static int GetFrameInputRelationOffset()
FILE: STROOP/Managers/ActionsManager.cs
class ActionsManager (line 16) | public class ActionsManager : DataManager
method ActionsManager (line 21) | public ActionsManager(string varFilePath, WatchVariableFlowLayoutPanel...
method Update (line 56) | public override void Update(bool updateView)
FILE: STROOP/Managers/AreaManager.cs
class AreaManager (line 15) | public class AreaManager : DataManager
method AreaManager (line 23) | public AreaManager(Control tabControl, string varFilePath, WatchVariab...
method Update (line 48) | public override void Update(bool updateView)
FILE: STROOP/Managers/CamHackManager.cs
class CamHackManager (line 13) | public class CamHackManager : DataManager
method CamHackManager (line 26) | public CamHackManager(string varFilePath, TabPage camHackControl, Watc...
method Update (line 201) | public override void Update(bool updateView)
method NotifyNumPanChange (line 216) | public void NotifyNumPanChange(int numPans)
method CreatePanVar (line 241) | private WatchVariableControl CreatePanVar(
method CreatePanVars (line 262) | private List<WatchVariableControl> CreatePanVars(int index)
method UpdatePanning (line 298) | public void UpdatePanning()
method DoTestingCalculations (line 449) | private void DoTestingCalculations()
method getCorrectCamHackMode (line 469) | private CamHackMode getCorrectCamHackMode()
method getCorrespondingRadioButton (line 479) | private RadioButton getCorrespondingRadioButton(CamHackMode camHackMode)
FILE: STROOP/Managers/CameraManager.cs
class CameraManager (line 15) | public class CameraManager : DataManager
method CameraManager (line 19) | public CameraManager(string varFilePath, Control tabControl, WatchVari...
method Update (line 159) | public override void Update(bool updateView)
method getSphericalPivotPoint (line 167) | private (float pivotX, float pivotY, float pivotZ) getSphericalPivotPo...
FILE: STROOP/Managers/CellsManager.cs
class CellsManager (line 17) | public class CellsManager : DataManager
method CellsManager (line 24) | public CellsManager(string varFilePath, TabPage tabControl, WatchVaria...
method SetTriangleAddress (line 39) | private void SetTriangleAddress()
method BuildTree (line 45) | private void BuildTree()
method GetTreeNodeForPartition (line 54) | private TreeNode GetTreeNodeForPartition(bool staticPartition)
method GetTreeNodeForZ (line 74) | private TreeNode GetTreeNodeForZ(uint partitionAddress, int z)
method GetTreeNodeForX (line 95) | private TreeNode GetTreeNodeForX(uint partitionAddress, int z, int x)
method GetTreeNodeForType (line 116) | private TreeNode GetTreeNodeForType(uint partitionAddress, int z, int ...
method Update (line 143) | public override void Update(bool updateView)
FILE: STROOP/Managers/CoinManager.cs
class CoinManager (line 17) | public class CoinManager
method CoinManager (line 48) | public CoinManager(TabPage tabControl)
method ListBoxSelectionChange (line 114) | private void ListBoxSelectionChange()
method ClearCoinTrajectories (line 124) | public void ClearCoinTrajectories()
method CalculateCoinTrajectories (line 129) | private void CalculateCoinTrajectories()
method Update (line 212) | public void Update(bool updateView)
FILE: STROOP/Managers/CustomManager.cs
class CustomManager (line 18) | public class CustomManager : DataManager
method CustomManager (line 35) | public CustomManager(string varFilePath, Control customControl, WatchV...
method InitializeAddSubtractGetSetFuncionality (line 182) | private static void InitializeAddSubtractGetSetFuncionality(
method ToggleRecording (line 224) | private void ToggleRecording()
method ShowRecordedValues (line 229) | private void ShowRecordedValues()
method ClearRecordedValues (line 247) | private void ClearRecordedValues()
method Update (line 255) | public override void Update(bool updateView)
FILE: STROOP/Managers/DataManager.cs
class DataManager (line 15) | public class DataManager : VariableAdder
method DataManager (line 20) | public DataManager(
method RemoveVariableGroup (line 34) | public virtual void RemoveVariableGroup(VariableGroup varGroup)
method AddVariable (line 39) | public override void AddVariable(WatchVariableControl watchVarControl)
method AddVariables (line 44) | public override void AddVariables(List<WatchVariableControl> watchVarC...
method GetCurrentVariableValues (line 49) | public virtual List<object> GetCurrentVariableValues(bool useRounding ...
method GetCurrentVariableNames (line 54) | public virtual List<string> GetCurrentVariableNames()
method GetCurrentVariableInfo (line 59) | public virtual List<(string name, object value, string clazz)> GetCurr...
method SetVariableValueByName (line 64) | public virtual bool SetVariableValueByName(string name, object value, ...
method Update (line 69) | public virtual void Update(bool updateView)
FILE: STROOP/Managers/DebugManager.cs
class DebugManager (line 14) | public class DebugManager : DataManager
method DebugManager (line 28) | public DebugManager(string varFilePath, Control tabControl, WatchVaria...
method Update (line 115) | public override void Update(bool updateView)
FILE: STROOP/Managers/DisassemblyManager.cs
class DisassemblyManager (line 15) | public class DisassemblyManager
method DisassemblyManager (line 25) | public DisassemblyManager(Control tabControl)
method _output_LinkClicked (line 42) | private void _output_LinkClicked(object sender, LinkClickedEventArgs e)
method MoreButton_Click (line 52) | private void MoreButton_Click(object sender, EventArgs e)
method Disassemble (line 58) | public void Disassemble(string strAddress, int numberOfLines = NumberO...
method StartShowDisassmbly (line 72) | private void StartShowDisassmbly(uint newAddress, int numberOfLines)
method DisassemblyLines (line 84) | private void DisassemblyLines(int numberOfLines)
FILE: STROOP/Managers/FileManager.cs
class FileManager (line 15) | public class FileManager : DataManager
type FileMode (line 17) | public enum FileMode { FileA, FileB, FileC, FileD, FileASaved, FileBSa...
type AllCoinsMeaning (line 18) | private enum AllCoinsMeaning { Coins100, Coins255, MaxWithoutGlitches,...
type FileCategory (line 19) | private enum FileCategory { Stars, Cannons, Doors, Coins, Misc };
method FileManager (line 68) | public FileManager(string varFilePath, TabPage tabControl, WatchVariab...
method DoEverything (line 339) | public void DoEverything()
method CalculateNumStars (line 357) | public short CalculateNumStars(uint? nullableFileAddress = null)
method GetDoorImages (line 383) | private (Image onImage, Image offImage) GetDoorImages(int row)
method GetDoorAddressOffset (line 402) | private uint GetDoorAddressOffset(int row)
method GetDoorMask (line 425) | private byte GetDoorMask(int row)
method GetCannonAddressOffset (line 448) | private uint GetCannonAddressOffset(int row)
method GetStarAddressOffset (line 456) | private uint GetStarAddressOffset(int row)
method GetStarMask (line 486) | private byte GetStarMask(int row, int col)
method NumStarsButton_Click (line 492) | private void NumStarsButton_Click(object sender, EventArgs e)
method GetChecksum (line 500) | public ushort GetChecksum(uint? nullableFileAddress = null)
method FileSaveButton_Click (line 512) | private void FileSaveButton_Click(object sender, EventArgs e)
method FileEraseButton_Click (line 542) | private void FileEraseButton_Click(object sender, EventArgs e)
method FileCopyButton_Click (line 565) | private void FileCopyButton_Click(object sender, EventArgs e)
method FilePasteButton_Click (line 573) | private void FilePasteButton_Click(object sender, EventArgs e)
method GetBufferedBytes (line 588) | public byte[] GetBufferedBytes(uint? nullableFileAddress = null)
method SetBufferedBytes (line 599) | public void SetBufferedBytes(byte[] bufferedBytes, uint? nullableFileA...
method GetCoinScoreForCourse (line 608) | private byte GetCoinScoreForCourse(int courseIndex)
method FileSetCategory (line 625) | private void FileSetCategory(bool setOn, List<FileCategory> fileCatego...
method GetNonSavedFileAddress (line 683) | private uint GetNonSavedFileAddress(FileMode? nullableMode = null)
method getFileAddress (line 705) | private uint getFileAddress(FileMode? nullableMode = null)
method GetInGameFileAddress (line 731) | public uint GetInGameFileAddress()
method FileMode_Click (line 749) | private void FileMode_Click(FileMode mode)
method Update (line 754) | public override void Update(bool updateView)
FILE: STROOP/Managers/GfxManager.cs
class GfxManager (line 21) | public class GfxManager : DataManager
method GfxManager (line 30) | public GfxManager(Control tabControl, WatchVariableFlowLayoutPanel wat...
method InjectHitboxViewCode (line 68) | public void InjectHitboxViewCode()
method DumpButton_Click (line 95) | private void DumpButton_Click(object sender, EventArgs e)
method UpdateSpecificVariables (line 111) | void UpdateSpecificVariables(GfxNode node)
method RefreshButtonObject_Click (line 126) | private void RefreshButtonObject_Click(object sender, EventArgs e)
method _treeView_AfterSelect (line 148) | private void _treeView_AfterSelect(object sender, TreeViewEventArgs e)
method RefreshButton_Click (line 158) | private void RefreshButton_Click(object sender, EventArgs e)
method ExpandNodesUpTo (line 175) | private void ExpandNodesUpTo(TreeNodeCollection nodes, int level)
method AddToTreeView (line 186) | public void AddToTreeView(uint rootAddress)
method Update (line 192) | public override void Update(bool updateView)
method GfxToTreeNode (line 201) | public TreeNode GfxToTreeNode(GfxNode node)
class GfxNode (line 212) | public class GfxNode
method ReadGfxNode (line 219) | public static GfxNode ReadGfxNode(uint address)
method GetCommonVariables (line 287) | public static List<WatchVariableControlPrecursor> GetCommonVariables()
method gfxProperty (line 307) | protected static WatchVariableControlPrecursor gfxProperty(string name...
method GetTypeSpecificVariables (line 342) | public virtual List<WatchVariableControlPrecursor> GetTypeSpecificVari...
class GfxChildSelector (line 348) | internal class GfxChildSelector : GfxNode
method GetFunctionName (line 361) | private static string GetFunctionName(List<(uint, uint, string)> funct...
method GetTypeSpecificVariables (line 381) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxBackgroundImage (line 390) | internal class GfxBackgroundImage : GfxNode
method GetTypeSpecificVariables (line 393) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxHeldObject (line 401) | internal class GfxHeldObject : GfxNode
method GetTypeSpecificVariables (line 408) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxGeoLayoutScript (line 421) | internal class GfxGeoLayoutScript : GfxNode
method GetFunctionName (line 442) | private static string GetFunctionName(List<(uint, uint, string)> funct...
method GetTypeSpecificVariables (line 462) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxCamera (line 472) | internal class GfxCamera : GfxNode
method GetTypeSpecificVariables (line 475) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxProjection3D (line 489) | internal class GfxProjection3D : GfxNode
method GetTypeSpecificVariables (line 492) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxObjectParent (line 503) | internal class GfxObjectParent : GfxNode
method GetTypeSpecificVariables (line 506) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxShadowNode (line 514) | internal class GfxShadowNode : GfxNode
method GetTypeSpecificVariables (line 517) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxScalingNode (line 527) | internal class GfxScalingNode : GfxNode
method GetTypeSpecificVariables (line 530) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxBillboard (line 539) | internal class GfxBillboard : GfxNode
class GfxAnimationNode (line 544) | internal class GfxAnimationNode : GfxNode
method GetTypeSpecificVariables (line 547) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxGameObject (line 558) | internal class GfxGameObject : GfxNode
method GetTypeSpecificVariables (line 561) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxRotationNode (line 569) | internal class GfxRotationNode : GfxNode
method GetTypeSpecificVariables (line 573) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxTranslatedModel (line 585) | internal class GfxTranslatedModel : GfxNode
method GetTypeSpecificVariables (line 588) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxDebugTransformation (line 599) | internal class GfxDebugTransformation : GfxNode
method GetTypeSpecificVariables (line 603) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxLevelOfDetail (line 616) | internal class GfxLevelOfDetail : GfxNode
method GetTypeSpecificVariables (line 619) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxMasterList (line 630) | internal class GfxMasterList : GfxNode
method GetTypeSpecificVariables (line 633) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxGroupParent (line 657) | internal class GfxGroupParent : GfxNode
class GfxScreenSpace (line 662) | internal class GfxScreenSpace : GfxNode
method GetTypeSpecificVariables (line 665) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxRootnode (line 674) | internal class GfxRootnode : GfxNode
method GetTypeSpecificVariables (line 677) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
class GfxDisplayList (line 689) | internal class GfxDisplayList : GfxNode
method GetTypeSpecificVariables (line 692) | public override List<WatchVariableControlPrecursor> GetTypeSpecificVar...
FILE: STROOP/Managers/HackManager.cs
class HackManager (line 13) | public class HackManager
method HackManager (line 22) | public HackManager(List<RomHack> hacks, List<SpawnHack> spawnCodes, C...
method ResetButton_Click (line 51) | private void ResetButton_Click(object sender, EventArgs e)
method _spawnList_SelectedIndexChanged (line 56) | private void _spawnList_SelectedIndexChanged(object sender, EventArgs e)
method SpawnButton_Click (line 68) | private void SpawnButton_Click(object sender, EventArgs e)
method _checkList_ItemCheck (line 101) | private void _checkList_ItemCheck(object sender, ItemCheckEventArgs e)
method Update (line 110) | public void Update()
FILE: STROOP/Managers/HudManager.cs
class HudManager (line 14) | public class HudManager : DataManager
method HudManager (line 20) | public HudManager(string varFilePath, Control tabControl, WatchVariabl...
method Update (line 63) | public override void Update(bool updateView)
FILE: STROOP/Managers/IVariableAdder.cs
type IVariableAdder (line 15) | public interface IVariableAdder
method AddVariable (line 17) | void AddVariable(WatchVariableControl watchVarControl);
method AddVariables (line 18) | void AddVariables(List<WatchVariableControl> watchVarControls);
FILE: STROOP/Managers/InputManager.cs
class InputManager (line 15) | public class InputManager : DataManager
method InputManager (line 20) | public InputManager(
method Update (line 33) | public override void Update(bool updateView)
FILE: STROOP/Managers/M64Manager.cs
class M64Manager (line 17) | public class M64Manager
method M64Manager (line 25) | public M64Manager(M64Gui gui)
method DeleteRows (line 114) | private void DeleteRows()
method PasteData (line 121) | private void PasteData(bool insert)
method CopyData (line 132) | private void CopyData(bool useRow)
method CopyClipboardForJoystick (line 145) | private void CopyClipboardForJoystick(bool? component = null)
method CopyHeaderRomVersion (line 153) | private void CopyHeaderRomVersion()
method PasteHeaderRomVersion (line 160) | private void PasteHeaderRomVersion()
method SetHeaderRomVersion (line 169) | private void SetHeaderRomVersion(RomVersion romVersion)
method TabControlDetails_SelectedIndexChanged (line 189) | private void TabControlDetails_SelectedIndexChanged(object sender, Eve...
method UpdateSelectionTextboxes (line 207) | public void UpdateSelectionTextboxes()
method SetValuesOfSelection (line 217) | private void SetValuesOfSelection(CellSelectionType cellSelectionType,...
method Goto (line 231) | public void Goto(int? gotoValueNullable = null)
method SaveAs (line 241) | private void SaveAs()
method Save (line 263) | private void Save()
method Open (line 278) | private void Open()
method Open (line 290) | public void Open(string filePath, string fileName)
method Close (line 313) | private void Close()
method ListBoxCopied_KeyDown (line 321) | private void ListBoxCopied_KeyDown()
method PerformQuickDuplication (line 334) | private void PerformQuickDuplication()
method AddPauseBufferFrames (line 357) | private void AddPauseBufferFrames()
method GetFrameBounds (line 366) | private (int? startFrame, int? endFrame) GetFrameBounds()
method UpdateTableSettings (line 375) | public void UpdateTableSettings(IEnumerable<M64InputFrame> modifiedFra...
method Update (line 400) | public void Update(bool updateView)
FILE: STROOP/Managers/MainSaveManager.cs
class MainSaveManager (line 15) | public class MainSaveManager : DataManager
type MainSaveMode (line 17) | public enum MainSaveMode { MainSave, MainSaveSaved };
method MainSaveManager (line 36) | public MainSaveManager(string varFilePath, TabPage tabPage, WatchVaria...
method GetChecksum (line 82) | public ushort GetChecksum(uint? nullableMainSaveAddress = null)
method Save (line 94) | private void Save()
method GetMainSaveAddress (line 111) | private uint GetMainSaveAddress(MainSaveMode? nullableMode = null)
method Update (line 125) | public override void Update(bool updateView)
FILE: STROOP/Managers/MapManager.cs
class MapManager (line 24) | public class MapManager : DataManager
type SaveType (line 26) | private enum SaveType { MapTrackers, MapTrackersMapTabSettings, MapTra...
method NotifyDrawingEnabledChange (line 52) | public void NotifyDrawingEnabledChange(bool enabled)
method MapManager (line 57) | public MapManager(string varFilePath)
method Load2D (line 62) | public void Load2D()
method Load3D (line 73) | public void Load3D()
method InitializeControls (line 81) | private void InitializeControls()
method SetEnable3D (line 1171) | private void SetEnable3D(bool enable3D)
method SetUseCrossSection (line 1182) | private void SetUseCrossSection(bool useCrossSection)
method SetEnableObjectHover (line 1189) | private void SetEnableObjectHover(bool enableObjectHover)
method OnContextMenuStripOpening (line 1206) | private void OnContextMenuStripOpening()
method OnContextMenuStripOpened (line 1216) | private void OnContextMenuStripOpened()
method OnContextMenuStripClosed (line 1222) | private void OnContextMenuStripClosed()
method Save (line 1227) | private void Save(SaveType saveType)
method Open (line 1333) | private void Open()
method ResetToInitialState (line 1441) | private void ResetToInitialState()
method DoSurfaceTriangles (line 1454) | private void DoSurfaceTriangles(bool useWhiteBackground)
method DoTaserSettings (line 1474) | public void DoTaserSettings()
method SetGlobalIconSize (line 1507) | private void SetGlobalIconSize(float size)
method InitializeSemaphores (line 1516) | private void InitializeSemaphores()
method InitializeCheckboxSemaphore (line 1531) | private Action InitializeCheckboxSemaphore(
method Update (line 1563) | public override void Update(bool updateView)
method UpdateDataTab (line 1592) | private void UpdateDataTab()
method UpdateBasedOnObjectsSelectedOnMap (line 1624) | private void UpdateBasedOnObjectsSelectedOnMap()
method UpdateControlsBasedOnSemaphores (line 1655) | private void UpdateControlsBasedOnSemaphores()
method TrackMultipleObjects (line 1680) | private void TrackMultipleObjects(List<uint> addresses)
method UpdateVarColors (line 1749) | private void UpdateVarColors()
method UpdateBasedOnKeyboardControls (line 1761) | private void UpdateBasedOnKeyboardControls()
FILE: STROOP/Managers/MarioManager.cs
class MarioManager (line 15) | public class MarioManager : DataManager
method MarioManager (line 35) | public MarioManager(string varFilePath, Control marioControl, WatchVar...
method Update (line 187) | public override void Update(bool updateView)
FILE: STROOP/Managers/MemoryManager.cs
class MemoryManager (line 17) | public class MemoryManager : DataManager
method MemoryManager (line 96) | public MemoryManager(TabPage tabControl, WatchVariableFlowLayoutPanel ...
method BookmarkCurrentAddress (line 213) | private void BookmarkCurrentAddress()
method DeleteBookmark (line 228) | private void DeleteBookmark(ToolStripMenuItem useAddressItem, ToolStri...
method ScrollMemory (line 235) | private void ScrollMemory(int numLines)
method SetCustomAddress (line 245) | public void SetCustomAddress(uint? address)
method SetCustomMemorySize (line 262) | private void SetCustomMemorySize(uint? memorySize)
method SetObjectAddress (line 284) | public void SetObjectAddress(uint? address)
method RefreshAddressTextbox (line 292) | private void RefreshAddressTextbox()
method RefreshMemorySizeTextbox (line 298) | private void RefreshMemorySizeTextbox()
method MemoryValueClick (line 303) | private void MemoryValueClick()
method AddAllVars (line 329) | private void AddAllVars()
class ValueText (line 341) | private class ValueText
method ValueText (line 350) | public ValueText(
method OverlapsData (line 366) | public bool OverlapsData(List<WatchVariableControlPrecursor> precurs...
method GetOverlapped (line 371) | private List<WatchVariableControlPrecursor> GetOverlapped(
method AddOverlappedIfSelected (line 401) | public void AddOverlappedIfSelected(int selectedIndex, List<List<Wat...
method AddOverlapped (line 409) | private void AddOverlapped(List<List<WatchVariableControlPrecursor>>...
method AddVariableIfSelected (line 420) | public void AddVariableIfSelected(int selectedIndex, bool useObjAddr...
method AddVariable (line 428) | public void AddVariable(bool useObjAddress, bool useHex, bool useObj...
method CreatePrecursor (line 434) | private WatchVariableControlPrecursor CreatePrecursor(bool useObjAdd...
method UpdateHexDisplay (line 491) | public void UpdateHexDisplay()
method FormatAddresses (line 557) | private static string FormatAddresses(uint startAddress, int totalMemo...
method FormatValues (line 572) | private string FormatValues(
method Update (line 640) | public override void Update(bool updateView)
FILE: STROOP/Managers/MiscManager.cs
class MiscManager (line 15) | public class MiscManager : DataManager
method MiscManager (line 35) | public MiscManager(string varFilePath, WatchVariableFlowLayoutPanel va...
class CourseToGoTo (line 108) | private class CourseToGoTo
method CourseToGoTo (line 113) | public CourseToGoTo(int index, string name)
method ToString (line 119) | public override string ToString()
method Update (line 125) | public override void Update(bool updateView)
FILE: STROOP/Managers/ModelManager.cs
class ModelManager (line 18) | public class ModelManager
method ModelManager (line 83) | public ModelManager(Control tabControl)
method UpdateCounts (line 104) | private void UpdateCounts()
method CheckBoxLevel_CheckedChanged (line 110) | private void CheckBoxLevel_CheckedChanged(object sender, EventArgs e)
method SwitchLevelModel (line 119) | private void SwitchLevelModel()
method _dataGridViewVertices_SelectionChanged (line 157) | private void _dataGridViewVertices_SelectionChanged(object sender, Eve...
method _dataGridViewTriangles_SelectionChanged (line 169) | private void _dataGridViewTriangles_SelectionChanged(object sender, Ev...
method Load (line 181) | public void Load()
method GetVerticesFromModelPointer (line 190) | public List<short[]> GetVerticesFromModelPointer(ref uint modelPtr)
method GetTrianglesFromContinuedModelPointer (line 209) | public List<int[]> GetTrianglesFromContinuedModelPointer(uint contMode...
method UpdateModelPointer (line 239) | public void UpdateModelPointer()
method Update (line 276) | public virtual void Update(bool updateView = false)
FILE: STROOP/Managers/MusicManager.cs
class MusicManager (line 14) | public class MusicManager : DataManager
method MusicManager (line 18) | public MusicManager(string varFilePath, WatchVariableFlowLayoutPanel v...
method GetMusicAddress (line 29) | public uint? GetMusicAddress()
method Update (line 42) | public override void Update(bool updateView)
FILE: STROOP/Managers/ObjectManager.cs
class ObjectManager (line 20) | public class ObjectManager : DataManager
method ObjectManager (line 170) | public ObjectManager(string varFilePath, Control objectControl, WatchV...
method _objBehaviorLabel_Click (line 505) | private void _objBehaviorLabel_Click(object sender, EventArgs e)
method SetBehaviorWatchVariables (line 514) | public void SetBehaviorWatchVariables(List<WatchVariableControl> watch...
method ObjAddressLabel_Click (line 521) | private void ObjAddressLabel_Click(object sender, EventArgs e)
method Update (line 539) | public override void Update(bool updateView)
method UpdateUI (line 555) | void UpdateUI()
FILE: STROOP/Managers/ObjectSlotsManager.cs
class ObjectSlotsManager (line 20) | public class ObjectSlotsManager
type TabType (line 27) | public enum TabType { Object, Map, Model, Memory, Custom, Warp, TAS, C...
type SortMethodType (line 28) | public enum SortMethodType { ProcessingOrder, MemoryOrder, DistanceToM...
type SlotLabelType (line 29) | public enum SlotLabelType { Recommended, SlotPosVs, SlotPos, SlotIndex...
type SelectionMethodType (line 30) | public enum SelectionMethodType { Clicked, Held, StoodOn, Interaction,...
type ClickType (line 31) | public enum ClickType { ObjectClick, MapClick, ModelClick, MemoryClick...
method ObjectSlotsManager (line 57) | public ObjectSlotsManager(ObjectSlotManagerGui gui, TabControl tabCont...
method ChangeSlotSize (line 82) | public void ChangeSlotSize(int newSize)
method GetObjectSlotSize (line 88) | public int GetObjectSlotSize()
method TabControl_Selected (line 104) | private void TabControl_Selected(object sender, TabControlEventArgs e)
method OnSlotClick (line 113) | private void OnSlotClick(object sender, EventArgs e)
method DoSlotClickUsingInput (line 130) | private void DoSlotClickUsingInput(
method SelectAddresses (line 142) | public void SelectAddresses(List<uint> addresses)
method SelectSlotByAddress (line 148) | public void SelectSlotByAddress(uint address)
method GetClickType (line 157) | private ClickType GetClickType(bool isMarking)
method ShouldToggle (line 187) | private bool ShouldToggle(bool isCtrlKeyHeld, bool isMarking)
method GetTabDestination (line 196) | private TabPage GetTabDestination(bool isMarking)
method DoSlotClickUsingSpecifications (line 204) | public void DoSlotClickUsingSpecifications(
method MarkAddresses (line 330) | public void MarkAddresses(List<uint> addresses)
method UnmarkAddresses (line 342) | public void UnmarkAddresses(List<uint> addresses)
method Update (line 354) | public void Update()
method UpdateSelectionMethod (line 415) | private void UpdateSelectionMethod()
method UpdateSlots (line 471) | private void UpdateSlots(IEnumerable<ObjectDataModel> sortedObjects)
method GetLoadedObjectsWithName (line 489) | public List<ObjectDataModel> GetLoadedObjectsWithName(string name)
method GetLoadedObjectsWithRegex (line 499) | public List<ObjectDataModel> GetLoadedObjectsWithRegex(string pattern)
method GetLoadedObjectsWithPredicate (line 506) | public List<ObjectDataModel> GetLoadedObjectsWithPredicate(Func<Object...
method GetObjectFromLabel (line 513) | public ObjectDataModel GetObjectFromLabel(string name)
method GetSlotIndexFromObj (line 521) | public int? GetSlotIndexFromObj(ObjectDataModel obj)
method GetObjectFromAddress (line 526) | public ObjectDataModel GetObjectFromAddress(uint objAddress)
method GetSlotLabelFromAddress (line 536) | public string GetSlotLabelFromAddress(uint objAddress)
method GetDescriptiveSlotLabelFromAddress (line 542) | public string GetDescriptiveSlotLabelFromAddress(uint objAddress, bool...
method GetSlotLabelFromObject (line 561) | public string GetSlotLabelFromObject(ObjectDataModel obj)
FILE: STROOP/Managers/OptionsManager.cs
class OptionsManager (line 14) | public class OptionsManager : DataManager
method OptionsManager (line 22) | public OptionsManager(string varFilePath, TabPage tabControl, WatchVar...
method Update (line 220) | public override void Update(bool updateView)
FILE: STROOP/Managers/PaintingManager.cs
class PaintingManager (line 14) | public class PaintingManager : DataManager
class PaintingData (line 16) | private class PaintingData
method PaintingData (line 22) | public PaintingData(string name, PaintingListTypeEnum paintingListTy...
method ToString (line 29) | public override string ToString()
method GetAddress (line 34) | public uint GetAddress()
method PaintingManager (line 63) | public PaintingManager(string varFilePath, WatchVariableFlowLayoutPane...
method GetPaintingAddress (line 74) | public uint? GetPaintingAddress()
method Update (line 80) | public override void Update(bool updateView)
FILE: STROOP/Managers/PuManager.cs
class PuManager (line 14) | public class PuManager : DataManager
method PuManager (line 34) | public PuManager(string varFilePath, TabPage tabControl, WatchVariable...
method Update (line 84) | public override void Update(bool updateView)
FILE: STROOP/Managers/QuarterFrameManager.cs
class QuarterFrameManager (line 15) | public class QuarterFrameManager : DataManager
method QuarterFrameManager (line 30) | public QuarterFrameManager(string varFilePath, WatchVariableFlowLayout...
method Update (line 36) | public override void Update(bool updateView)
FILE: STROOP/Managers/ScriptManager.cs
class ScriptManager (line 16) | public class ScriptManager : DataManager
method ScriptManager (line 28) | public ScriptManager(string varFilePath, TabPage tabPage, WatchVariabl...
method Update (line 83) | public override void Update(bool updateView)
method RunScript (line 95) | private void RunScript()
FILE: STROOP/Managers/SearchManager.cs
class SearchManager (line 18) | public class SearchManager : DataManager
type ValueRelationship (line 20) | private enum ValueRelationship
class Result (line 46) | public class Result
method Result (line 50) | public Result(List<object> values)
method Format (line 55) | public string Format(bool useHex)
method SearchManager (line 85) | public SearchManager(TabPage tabControl, WatchVariableFlowLayoutPanel ...
method AddTableRowsAsVars (line 135) | private void AddTableRowsAsVars(List<DataGridViewRow> rows)
method DoFirstScan (line 180) | private void DoFirstScan()
method DoNextScan (line 225) | private void DoNextScan()
method ParseSearchValueAll (line 273) | private List<(object searchValue1, object searchValue2)> ParseSearchVa...
method ParseSearchValueSpecific (line 278) | private (object searchValue1, object searchValue2) ParseSearchValueSpe...
method ClearResults (line 287) | private void ClearResults()
method UpdateControlsBasedOnDictionary (line 293) | private void UpdateControlsBasedOnDictionary()
method StartProgressBar (line 306) | private void StartProgressBar()
method StopProgressBar (line 312) | private void StopProgressBar()
method SetProgressCount (line 320) | private void SetProgressCount(int value, int maximum)
method UndoScan (line 334) | private void UndoScan()
method Update (line 340) | public override void Update(bool updateView)
method ValueQualifies (line 347) | private bool ValueQualifies(object memoryObject, object oldMemoryObjec...
method HasSensibleMagnitude (line 848) | private static bool HasSensibleMagnitude(double value)
FILE: STROOP/Managers/SnowManager.cs
class SnowManager (line 15) | public class SnowManager : DataManager
method SnowManager (line 38) | public SnowManager(string varFilePath, WatchVariableFlowLayoutPanel va...
method GetSnowParticleControls (line 91) | private List<WatchVariableControl> GetSnowParticleControls(int index)
method Update (line 140) | public override void Update(bool updateView)
FILE: STROOP/Managers/SoundManager.cs
class SoundManager (line 15) | public class SoundManager
method SoundManager (line 17) | public SoundManager(TabPage tabPage)
method Update (line 67) | public void Update(bool updateView)
FILE: STROOP/Managers/TasManager.cs
class TasManager (line 14) | public class TasManager : DataManager
method TasManager (line 38) | public TasManager(string varFilePath, TabPage tabControl, WatchVariabl...
method StoreInfo (line 167) | private void StoreInfo(
method TakeInfo (line 176) | private void TakeInfo(
method ShowTaserVariables (line 185) | public void ShowTaserVariables()
method MakeYawVariablesBeTruncated (line 191) | public void MakeYawVariablesBeTruncated()
method SetScheduler (line 196) | public void SetScheduler(string text, bool useFloats)
method SetScheduler (line 237) | private void SetScheduler(Dictionary<uint, (double, double, double, do...
method Update (line 281) | public override void Update(bool updateView)
FILE: STROOP/Managers/TestingManager.cs
class TestingManager (line 18) | public class TestingManager
type ScuttlebugMission (line 137) | enum ScuttlebugMission
method TestingManager (line 181) | public TestingManager(TabPage tabControl)
method CalculateInvisibleWalls (line 451) | private void CalculateInvisibleWalls()
method CalculateInvisibleWallsViaEdgeGaps (line 554) | public void CalculateInvisibleWallsViaEdgeGaps()
method GetInvisibleWallPointsAroundEdge (line 570) | public List<(int x, float y, int z)> GetInvisibleWallPointsAroundEdge(...
method Lerp (line 682) | public float Lerp(float a, float b, float t)
method GetScuttlebugAddresses (line 687) | private List<uint> GetScuttlebugAddresses()
method InvokeScuttlebugsLungeToHome (line 704) | private void InvokeScuttlebugsLungeToHome()
method HandleScuttlebugRoomTransition (line 728) | private void HandleScuttlebugRoomTransition(int transition)
method HandleScuttlebugRoomTransition (line 760) | private void HandleScuttlebugRoomTransition(byte newRoom)
class VarState (line 788) | public abstract class VarState
method VarValues (line 790) | public abstract List<Object> VarValues();
class VarStateMario (line 793) | public class VarStateMario : VarState
method GetCurrent (line 802) | public static VarState GetCurrent()
method VarNames (line 815) | public static List<string> VarNames()
method VarValues (line 823) | public override List<Object> VarValues()
method VarNamesString (line 831) | public static string VarNamesString()
method ToString (line 836) | public override string ToString()
method Equals (line 841) | public override bool Equals(object obj)
method GetHashCode (line 848) | public override int GetHashCode()
class VarStatePenguin (line 854) | public class VarStatePenguin : VarState
method GetCurrent (line 858) | public static VarStatePenguin GetCurrent()
method VarNames (line 866) | public static List<string> VarNames()
method VarValues (line 874) | public override List<Object> VarValues()
method VarNamesString (line 882) | public static string VarNamesString()
method ToString (line 887) | public override string ToString()
method Equals (line 892) | public override bool Equals(object obj)
method GetHashCode (line 899) | public override int GetHashCode()
method SetRecordOn (line 905) | private void SetRecordOn(bool recordOn)
method Update (line 911) | public void Update(bool updateView)
method buttonScheduleButtonPreviousClick (line 1090) | private void buttonScheduleButtonPreviousClick()
method buttonScheduleButtonNextClick (line 1095) | private void buttonScheduleButtonNextClick()
method buttonScheduleButtonSetClick (line 1100) | private void buttonScheduleButtonSetClick()
method buttonScheduleButtonResetClick (line 1139) | private void buttonScheduleButtonResetClick()
method GotoClick (line 1144) | private void GotoClick()
method GotoGetCurrentClick (line 1156) | private void GotoGetCurrentClick()
method PasteAndGotoClick (line 1166) | private void PasteAndGotoClick()
method StateTransferInstructions (line 1178) | private void StateTransferInstructions()
method StateTransferUpdate (line 1200) | private void StateTransferUpdate()
method StateTransferSave (line 1220) | private void StateTransferSave()
method StateTransferApply (line 1239) | private void StateTransferApply()
method UpdateMapPanning (line 2743) | public void UpdateMapPanning()
method Interpolate (line 2907) | public float Interpolate(float v1, float v2, float p)
method Interpolate2 (line 2914) | public float Interpolate2(float v1, float v2, float p)
method Interpolate3 (line 2923) | public float Interpolate3(float v1, float v2, float p)
class MapSetting (line 2932) | public class MapSetting
method MapSetting (line 2940) | public MapSetting(string name, float x, float y, float z, float scale)
method Left (line 2949) | public float Left()
method Right (line 2954) | public float Right()
method Top (line 2959) | public float Top()
method Bottom (line 2964) | public float Bottom()
FILE: STROOP/Managers/TriangleManager.cs
class TriangleManager (line 19) | public class TriangleManager : DataManager
type TriangleMode (line 24) | public enum TriangleMode { Floor, Wall, Ceiling, Custom, MapHover, Map...
method SetTriangleAddresses (line 48) | public void SetTriangleAddresses(uint triangleAddress)
method SetTriangleAddresses (line 53) | public void SetTriangleAddresses(List<uint> triangleAddresses)
method RefreshAddressBox (line 61) | public void RefreshAddressBox()
method SetCustomTriangleAddresses (line 69) | public void SetCustomTriangleAddresses(uint triangleAddress)
method SetCustomTriangleAddresses (line 74) | public void SetCustomTriangleAddresses(List<uint> triangleAddresses)
method TriangleManager (line 100) | public TriangleManager(Control tabControl, string varFilePath, WatchVa...
method GoToClosestFloorVertex (line 410) | public void GoToClosestFloorVertex()
method UpdateBasedOnCoordinates (line 417) | private void UpdateBasedOnCoordinates()
method UpdateBasedOnCoordinates (line 426) | private void UpdateBasedOnCoordinates(
method PasteTriangles (line 453) | private void PasteTriangles()
method GetTriangleCoordinates (line 482) | private short[] GetTriangleCoordinates(uint? nullableTriAddress = null)
method ShowTriangleCoordinates (line 498) | private void ShowTriangleCoordinates()
method ShowTriangleEquation (line 506) | private void ShowTriangleEquation()
method ShowTriangleData (line 522) | private void ShowTriangleData()
method ShowTriangleVertices (line 531) | private void ShowTriangleVertices()
method ShowTriangleAddresses (line 540) | private void ShowTriangleAddresses()
method ClearTriangleData (line 552) | private void ClearTriangleData()
method Mode_Click (line 557) | private void Mode_Click(object sender, EventArgs e, TriangleMode mode)
method AddressBoxEnter (line 565) | private void AddressBoxEnter()
method EnterCustomText (line 570) | private void EnterCustomText(string text)
method Update (line 584) | public override void Update(bool updateView)
FILE: STROOP/Managers/VarHackManager.cs
class VarHackManager (line 15) | public class VarHackManager : VariableAdder
method VarHackManager (line 24) | public VarHackManager(Control varHackControlControl, VarHackFlowLayout...
method InitializePositionControls (line 148) | private void InitializePositionControls(
method SetPositionsAndApplyVariablesToMemory (line 177) | private void SetPositionsAndApplyVariablesToMemory()
method AddVariable (line 187) | public void AddVariable(string varName, uint address, Type memoryType,...
method AddVariable (line 192) | public void AddVariable(string specialType)
method AddVariable (line 197) | public override void AddVariable(WatchVariableControl control)
method AddVariables (line 230) | public override void AddVariables(List<WatchVariableControl> controls)
method Update (line 235) | public void Update(bool updateView)
FILE: STROOP/Managers/VariableAdder.cs
class VariableAdder (line 15) | public abstract class VariableAdder : IVariableAdder
method VariableAdder (line 21) | public VariableAdder(Control control)
method AddVariable (line 27) | public abstract void AddVariable(WatchVariableControl watchVarControl);
method AddVariables (line 29) | public abstract void AddVariables(List<WatchVariableControl> watchVarC...
method ToString (line 31) | public override string ToString()
FILE: STROOP/Managers/WarpManager.cs
class WarpManager (line 16) | public class WarpManager : DataManager
method WarpManager (line 34) | public WarpManager(string varFilePath, TabPage tabPage, WatchVariableF...
method Update (line 53) | public override void Update(bool updateView)
method GetWarpNodeVariables (line 68) | private List<WatchVariableControl> GetWarpNodeVariables(List<uint> add...
method GetWarpNodeVariables (line 79) | private List<WatchVariableControl> GetWarpNodeVariables(uint address, ...
method HookUpTeleporters (line 160) | public void HookUpTeleporters()
FILE: STROOP/Managers/WatchVariableControlSettingsManager.cs
class WatchVariableControlSettingsManager (line 14) | public static class WatchVariableControlSettingsManager
method AddSettings (line 19) | public static void AddSettings(WatchVariableControlSettings settings)
method GetSettingsLevel (line 24) | public static int GetSettingsLevel()
method GetSettingsToApply (line 29) | public static List<WatchVariableControlSettings> GetSettingsToApply(in...
FILE: STROOP/Managers/WatchVariableLockManager.cs
class WatchVariableLockManager (line 16) | public class WatchVariableLockManager
method WatchVariableLockManager (line 35) | public WatchVariableLockManager(PictureBox pictureBoxLock)
method WatchVariableLockManager (line 61) | public WatchVariableLockManager()
method AddLocks (line 66) | public void AddLocks(WatchVariable variable, List<uint> addresses = null)
method RemoveLocks (line 75) | public void RemoveLocks(WatchVariable variable, List<uint> addresses =...
method ContainsLocksBool (line 84) | public bool ContainsLocksBool(WatchVariable variable, List<uint> addre...
method ContainsLocksCheckState (line 89) | public CheckState ContainsLocksCheckState(
method GetExistingLockValues (line 107) | public List<object> GetExistingLockValues(
method UpdateLockValues (line 123) | public void UpdateLockValues(
method UpdateLockValues (line 141) | public void UpdateLockValues(
method GetMemoryLockValue (line 161) | public object GetMemoryLockValue(
method UpdateMemoryLockValue (line 176) | public void UpdateMemoryLockValue(
method RemoveAllLocks (line 190) | public void RemoveAllLocks()
method ContainsAnyLocks (line 195) | public bool ContainsAnyLocks()
method ContainsAnyLocksForObject (line 200) | public bool ContainsAnyLocksForObject(uint objAddress)
method GetImageForLock (line 205) | private Image GetImageForLock()
method SeeLockInfo (line 221) | private void SeeLockInfo()
method UpdateSpecificLocks (line 232) | private void UpdateSpecificLocks()
method Update (line 244) | public void Update()
method InvokeLocks (line 268) | private void InvokeLocks()
FILE: STROOP/Managers/WaterManager.cs
class WaterManager (line 15) | public class WaterManager : DataManager
method WaterManager (line 17) | public WaterManager(string varFilePath, WatchVariableFlowLayoutPanel v...
method Update (line 23) | public override void Update(bool updateView)
FILE: STROOP/Map/Map3D/Map3DCamera.cs
class Map3DCamera (line 12) | public class Map3DCamera
method Map3DCamera (line 48) | public Map3DCamera()
method UpdateProjection (line 54) | private void UpdateProjection()
method SetLookTarget (line 68) | public void SetLookTarget(Vector3 target, Vector3 up)
method SetRotation (line 73) | public void SetRotation(float yaw, float pitch, float roll)
method GetCameraMatrix (line 80) | private Matrix4 GetCameraMatrix()
FILE: STROOP/Map/Map3D/Map3DGraphics.cs
class Map3DGraphics (line 20) | public class Map3DGraphics : IDisposable
method Map3DGraphics (line 49) | public Map3DGraphics()
method Load (line 53) | public void Load()
method OnPaint (line 88) | public void OnPaint(object sender, EventArgs e)
method BindVertices (line 147) | public void BindVertices()
method OnResize (line 157) | void OnResize(object sender, EventArgs e)
method Invalidate (line 164) | public void Invalidate()
method CheckVersion (line 169) | private void CheckVersion()
method SetupShaderProgram (line 183) | private void SetupShaderProgram()
method Dispose (line 241) | protected virtual void Dispose(bool disposing)
method Dispose (line 261) | public void Dispose()
method UpdateCamera (line 268) | public void UpdateCamera()
method OnMouseDown (line 362) | private void OnMouseDown(object sender, System.Windows.Forms.MouseEven...
method OnMouseUp (line 385) | private void OnMouseUp(object sender, System.Windows.Forms.MouseEventA...
method OnMouseMove (line 399) | private void OnMouseMove(object sender, System.Windows.Forms.MouseEven...
method OnScroll (line 437) | private void OnScroll(object sender, System.Windows.Forms.MouseEventAr...
method OnDoubleClick (line 451) | private void OnDoubleClick(object sender, EventArgs e)
FILE: STROOP/Map/Map3D/Map3DVertex.cs
type Map3DVertex (line 12) | [StructLayout(LayoutKind.Sequential)]
method Map3DVertex (line 24) | public Map3DVertex(Vector3 position, Color4 color, Vector2 texCoord)
method Map3DVertex (line 31) | public Map3DVertex(Vector3 position, Color4 color)
method Map3DVertex (line 34) | public Map3DVertex(Vector3 position, Vector2 texCoord)
FILE: STROOP/Map/MapDrawType.cs
type MapDrawType (line 16) | public enum MapDrawType
FILE: STROOP/Map/MapGraphics.cs
class MapGraphics (line 14) | public class MapGraphics
type MapScale (line 18) | public enum MapScale { CourseDefault, MaxCourseSize, Custom };
type MapCenter (line 19) | public enum MapCenter { BestFit, Origin, Mario, Custom };
type MapYaw (line 20) | public enum MapYaw { Angle0, Angle16384, Angle32768, Angle49152, Mario...
type MapDragAbility (line 21) | public enum MapDragAbility { HorizontalAndVertical, HorizontalOnly, Ve...
method MapGraphics (line 69) | public MapGraphics(bool isMainGraphics, bool isOrthographicViewEnabled)
method Load (line 77) | public void Load(GLControl glControl)
method OnPaint (line 101) | private void OnPaint()
method UpdateCursor (line 121) | private void UpdateCursor()
method UpdateDraggedObject (line 149) | private void UpdateDraggedObject()
method UpdateViewport (line 157) | private void UpdateViewport()
method UpdateMapView (line 168) | private void UpdateMapView()
method UpdateScale (line 176) | private void UpdateScale()
method UpdateCenter (line 230) | private void UpdateCenter()
method UpdateAngle (line 323) | private void UpdateAngle()
method SetScale (line 401) | public void SetScale(MapScale mapScale)
method SetCenter (line 420) | public void SetCenter(MapCenter mapCenter)
method SetYaw (line 442) | public void SetYaw(MapYaw mapYaw)
method ChangeScale (line 479) | public void ChangeScale(int sign, object value)
method ChangeScale2 (line 488) | public void ChangeScale2(int power, object value)
method ChangeCenter (line 504) | public void ChangeCenter(int horizontalSign, int verticalSign, int dep...
method ChangeYaw (line 542) | public void ChangeYaw(int sign, object value)
method ChangePitch (line 552) | public void ChangePitch(int sign, object value)
method SetCustomScale (line 562) | public void SetCustomScale(object value)
method SetCustomCenter (line 568) | public void SetCustomCenter(object xValue = null, object yValue = null...
method SetCenterTextbox (line 577) | private void SetCenterTextbox(object xValue, object yValue, object zVa...
method SetCustomYaw (line 590) | public void SetCustomYaw(object value)
method SetCustomPitch (line 596) | public void SetCustomPitch(object value)
method SetCustomAngle (line 602) | public void SetCustomAngle(object yaw, object pitch)
method SetAngleTextbox (line 608) | private void SetAngleTextbox(object yawValue, object pitchValue)
method OnMouseDown (line 642) | private void OnMouseDown(object sender, System.Windows.Forms.MouseEven...
method OnMouseUp (line 690) | private void OnMouseUp(object sender, System.Windows.Forms.MouseEventA...
method OnMouseMove (line 717) | private void OnMouseMove(object sender, System.Windows.Forms.MouseEven...
method HandleDragAbility (line 897) | private int HandleDragAbility(bool isHorizontal, bool isCenter, int va...
method OnScroll (line 910) | private void OnScroll(object sender, System.Windows.Forms.MouseEventAr...
method OnDoubleClick (line 915) | private void OnDoubleClick(object sender, EventArgs e)
FILE: STROOP/Map/MapGui.cs
class MapGui (line 13) | public class MapGui
FILE: STROOP/Map/MapObject.cs
class MapObject (line 19) | public abstract class MapObject
method MapObject (line 55) | public MapObject()
method DrawOn2DControl (line 59) | public void DrawOn2DControl(MapObjectHoverData hoverData)
method DrawOn2DControlTopDownView (line 71) | public abstract void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method DrawOn2DControlOrthographicView (line 73) | public abstract void DrawOn2DControlOrthographicView(MapObjectHoverDat...
method DrawOn3DControl (line 75) | public abstract void DrawOn3DControl();
method GetModelMatrix (line 77) | public virtual Matrix4 GetModelMatrix()
method GetName (line 82) | public abstract string GetName();
method GetInternalImage (line 87) | public abstract Image GetInternalImage();
method GetImage (line 88) | public Image GetImage() { return _customImage ?? GetInternalImage(); }
method SetIconType (line 91) | public virtual void SetIconType(MapTrackerIconType iconType, Image ima...
method GetDrawType (line 115) | public abstract MapDrawType GetDrawType();
method GetY (line 117) | public virtual float GetY()
method NotifyStoreBehaviorCritera (line 124) | public void NotifyStoreBehaviorCritera()
method ShouldDisplay (line 132) | public bool ShouldDisplay(MapTrackerVisibilityType visiblityType)
method GetPositionAngle (line 150) | public virtual PositionAngle GetPositionAngle()
method GetObject (line 155) | public virtual ObjectDataModel GetObject()
method ToString (line 164) | public override string ToString()
method GetContextMenuStrip (line 169) | public virtual ContextMenuStrip GetContextMenuStrip()
method Update (line 182) | public virtual void Update()
method ParticipatesInGlobalIconSize (line 186) | public virtual bool ParticipatesInGlobalIconSize()
method GetDragPosition (line 191) | public virtual (double x, double y, double z)? GetDragPosition()
method SetDragPositionTopDownView (line 196) | public virtual void SetDragPositionTopDownView(double? x = null, doubl...
method SetDragPositionOrthographicView (line 201) | public virtual void SetDragPositionOrthographicView(double? x = null, ...
method ApplySettings (line 206) | public virtual void ApplySettings(MapObjectSettings settings)
method GetParentMapTracker (line 213) | protected MapTracker GetParentMapTracker()
method NotifyMouseEvent (line 222) | public virtual void NotifyMouseEvent(MouseEvent mouseEvent, bool isLef...
method CleanUp (line 226) | public virtual void CleanUp()
method GetHoverData (line 230) | public MapObjectHoverData GetHoverData(bool isForObjectDrag, bool forc...
method GetHoverDataTopDownView (line 259) | public virtual MapObjectHoverData GetHoverDataTopDownView(bool isForOb...
method GetHoverDataOrthographicView (line 264) | public virtual MapObjectHoverData GetHoverDataOrthographicView(bool is...
method GetHoverContextMenuStripItems (line 269) | public virtual List<ToolStripItem> GetHoverContextMenuStripItems(MapOb...
method GetXAttributes (line 274) | public virtual List<XAttribute> GetXAttributes()
method GetSubMapObjects (line 279) | public virtual List<MapObject> GetSubMapObjects()
method ToXElement (line 284) | public XElement ToXElement()
method FromXElement (line 301) | public static MapObject FromXElement(XElement xElement)
FILE: STROOP/Map/MapObjectAggregatedPath.cs
class MapObjectAggregatedPath (line 17) | public class MapObjectAggregatedPath : MapObject
method MapObjectAggregatedPath (line 19) | public MapObjectAggregatedPath()
method DrawOn2DControlTopDownView (line 24) | public override void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method DrawOn2DControlOrthographicView (line 55) | public override void DrawOn2DControlOrthographicView(MapObjectHoverDat...
method DrawOn3DControl (line 60) | public override void DrawOn3DControl()
method GetName (line 65) | public override string GetName()
method GetInternalImage (line 70) | public override Image GetInternalImage()
method GetDrawType (line 75) | public override MapDrawType GetDrawType()
FILE: STROOP/Map/MapObjectAllMapObjectsWithName.cs
class MapObjectAllMapObjectsWithName (line 19) | public class MapObjectAllMapObjectsWithName : MapObject
method MapObjectAllMapObjectsWithName (line 24) | public MapObjectAllMapObjectsWithName(string objName, List<MapObject> ...
method GetInternalImage (line 33) | public override Image GetInternalImage()
method GetName (line 38) | public override string GetName()
method DrawOn2DControlTopDownView (line 43) | public override void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method DrawOn2DControlOrthographicView (line 53) | public override void DrawOn2DControlOrthographicView(MapObjectHoverDat...
method DrawOn3DControl (line 63) | public override void DrawOn3DControl()
method GetCurrentMapObjects (line 73) | private List<MapObject> GetCurrentMapObjects()
method GetProperties (line 83) | private void GetProperties()
method SetProperties (line 95) | private void SetProperties(MapObject mapObj)
method ParticipatesInGlobalIconSize (line 106) | public override bool ParticipatesInGlobalIconSize()
method GetDrawType (line 111) | public override MapDrawType GetDrawType()
method ContainsMapObject (line 116) | public bool ContainsMapObject(MapObject mapObject)
method GetContextMenuStrip (line 121) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 126) | public override void ApplySettings(MapObjectSettings settings)
method Update (line 134) | public override void Update()
method GetHoverDataTopDownView (line 142) | public override MapObjectHoverData GetHoverDataTopDownView(bool isForO...
method GetHoverDataOrthographicView (line 153) | public override MapObjectHoverData GetHoverDataOrthographicView(bool i...
method GetHoverContextMenuStripItems (line 164) | public override List<ToolStripItem> GetHoverContextMenuStripItems(MapO...
method GetXAttributes (line 170) | public override List<XAttribute> GetXAttributes()
method GetSubMapObjects (line 178) | public override List<MapObject> GetSubMapObjects()
FILE: STROOP/Map/MapObjectAllObjectCeiling.cs
class MapObjectAllObjectCeiling (line 19) | public class MapObjectAllObjectCeiling : MapObjectCeiling
method MapObjectAllObjectCeiling (line 28) | public MapObjectAllObjectCeiling()
method GetUnfilteredTriangles (line 37) | protected override List<TriangleDataModel> GetUnfilteredTriangles()
method GetContextMenuStrip (line 47) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 80) | public override void ApplySettings(MapObjectSettings settings)
method Update (line 97) | public override void Update()
method GetName (line 109) | public override string GetName()
method GetInternalImage (line 114) | public override Image GetInternalImage()
FILE: STROOP/Map/MapObjectAllObjectFloor.cs
class MapObjectAllObjectFloor (line 19) | public class MapObjectAllObjectFloor : MapObjectFloor
method MapObjectAllObjectFloor (line 28) | public MapObjectAllObjectFloor()
method GetUnfilteredTriangles (line 37) | protected override List<TriangleDataModel> GetUnfilteredTriangles()
method GetContextMenuStrip (line 47) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 82) | public override void ApplySettings(MapObjectSettings settings)
method Update (line 99) | public override void Update()
method GetName (line 111) | public override string GetName()
method GetInternalImage (line 116) | public override Image GetInternalImage()
FILE: STROOP/Map/MapObjectAllObjectWall.cs
class MapObjectAllObjectWall (line 19) | public class MapObjectAllObjectWall : MapObjectWall
method MapObjectAllObjectWall (line 28) | public MapObjectAllObjectWall()
method GetUnfilteredTriangles (line 37) | protected override List<TriangleDataModel> GetUnfilteredTriangles()
method GetContextMenuStrip (line 47) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 80) | public override void ApplySettings(MapObjectSettings settings)
method Update (line 97) | public override void Update()
method GetName (line 109) | public override string GetName()
method GetInternalImage (line 114) | public override Image GetInternalImage()
FILE: STROOP/Map/MapObjectAllObjectsWithName.cs
class MapObjectAllObjectsWithName (line 19) | public class MapObjectAllObjectsWithName : MapObjectIcon
method MapObjectAllObjectsWithName (line 27) | public MapObjectAllObjectsWithName(string objName)
method GetObjName (line 54) | public string GetObjName()
method GetInternalImage (line 59) | public override Image GetInternalImage()
method GetName (line 66) | public override string GetName()
method DrawOn2DControlTopDownView (line 71) | public override void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method DrawOn2DControlOrthographicView (line 91) | public override void DrawOn2DControlOrthographicView(MapObjectHoverDat...
method DrawOn3DControl (line 111) | public override void DrawOn3DControl()
method GetModelMatrix (line 135) | public Matrix4 GetModelMatrix(float x, float y, float z, float ang, bo...
method GetVertices (line 151) | private Map3DVertex[] GetVertices()
method GetData (line 164) | public List<(float x, float y, float z, float angle, bool rotates, Ima...
method ParticipatesInGlobalIconSize (line 187) | public override bool ParticipatesInGlobalIconSize()
method GetDrawType (line 192) | public override MapDrawType GetDrawType()
method GetHoverDataTopDownView (line 197) | public override MapObjectHoverData GetHoverDataTopDownView(bool isForO...
method GetHoverDataOrthographicView (line 217) | public override MapObjectHoverData GetHoverDataOrthographicView(bool i...
method GetHoverContextMenuStripItems (line 237) | public override List<ToolStripItem> GetHoverContextMenuStripItems(MapO...
method GetXAttributes (line 258) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectAngleRange.cs
class MapObjectAngleRange (line 17) | public class MapObjectAngleRange : MapObjectLine
method MapObjectAngleRange (line 31) | public MapObjectAngleRange(PositionAngle posAngle)
method GetVerticesTopDownView (line 45) | protected override List<(float x, float y, float z)> GetVerticesTopDow...
method GetPositionAngle (line 73) | public override PositionAngle GetPositionAngle()
method GetName (line 78) | public override string GetName()
method GetInternalImage (line 83) | public override Image GetInternalImage()
method GetContextMenuStrip (line 88) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 131) | public override void ApplySettings(MapObjectSettings settings)
method GetXAttributes (line 155) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectArrow.cs
class MapObjectArrow (line 16) | public abstract class MapObjectArrow : MapObjectLine
method MapObjectArrow (line 33) | public MapObjectArrow()
method GetVerticesTopDownView (line 48) | protected override List<(float x, float y, float z)> GetVerticesTopDow...
method DrawOn2DControlTopDownView (line 113) | public override void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method GetArrowHeadPosition (line 123) | private (float x, float y, float z) GetArrowHeadPosition()
method GetDragPosition (line 153) | public override (double x, double y, double z)? GetDragPosition()
method SetDragPositionTopDownView (line 158) | public override void SetDragPositionTopDownView(double? x = null, doub...
method GetYaw (line 183) | protected abstract double GetYaw();
method GetPitch (line 185) | protected abstract double GetPitch();
method GetRecommendedSize (line 187) | protected abstract double GetRecommendedSize();
method SetRecommendedSize (line 189) | protected abstract void SetRecommendedSize(double size);
method SetYaw (line 191) | protected abstract void SetYaw(double yaw);
method GetInternalImage (line 193) | public override Image GetInternalImage()
method GetContextMenuStrip (line 198) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 266) | public override void ApplySettings(MapObjectSettings settings)
method GetHoverDataTopDownView (line 303) | public override MapObjectHoverData GetHoverDataTopDownView(bool isForO...
method GetHoverContextMenuStripItems (line 319) | public override List<ToolStripItem> GetHoverContextMenuStripItems(MapO...
FILE: STROOP/Map/MapObjectBackground.cs
class MapObjectBackground (line 16) | public abstract class MapObjectBackground : MapObjectIconRectangle
method MapObjectBackground (line 18) | public MapObjectBackground()
method GetDimensions (line 24) | protected override List<(PointF loc, SizeF size)> GetDimensions()
method GetDrawType (line 33) | public override MapDrawType GetDrawType()
method GetVertices (line 38) | private Map3DVertex[] GetVertices()
method DrawOn3DControl (line 63) | public override void DrawOn3DControl()
FILE: STROOP/Map/MapObjectBounds.cs
class MapObjectBounds (line 18) | public class MapObjectBounds : MapObject
method MapObjectBounds (line 32) | public MapObjectBounds()
method MapObjectBounds (line 41) | public MapObjectBounds(List<(float x, float z)> points) : this()
method Create (line 46) | public static MapObjectBounds Create(string text)
method DrawOn2DControlTopDownView (line 55) | public override void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method GetDragPosition (line 106) | public override (double x, double y, double z)? GetDragPosition()
method SetDragPositionTopDownView (line 112) | public override void SetDragPositionTopDownView(double? x = null, doub...
method DrawOn2DControlOrthographicView (line 125) | public override void DrawOn2DControlOrthographicView(MapObjectHoverDat...
method DrawOn3DControl (line 130) | public override void DrawOn3DControl()
method GetName (line 135) | public override string GetName()
method GetInternalImage (line 140) | public override Image GetInternalImage()
method GetDrawType (line 145) | public override MapDrawType GetDrawType()
method Update (line 150) | public override void Update()
method GetHoverDataTopDownView (line 159) | public override MapObjectHoverData GetHoverDataTopDownView(bool isForO...
method GetXMin (line 179) | public int GetXMin()
method GetXMax (line 184) | public int GetXMax()
method GetZMin (line 189) | public int GetZMin()
method GetZMax (line 194) | public int GetZMax()
method IsWithinBounds (line 199) | public bool IsWithinBounds(float x, float z)
method GetAllBounds (line 204) | public static List<MapObjectBounds> GetAllBounds()
method GetTotalXMin (line 209) | public static int GetTotalXMin()
method GetTotalXMax (line 214) | public static int GetTotalXMax()
method GetTotalZMin (line 219) | public static int GetTotalZMin()
method GetTotalZMax (line 224) | public static int GetTotalZMax()
method IsWithinBoundsForAny (line 229) | public static bool IsWithinBoundsForAny(float x, float z)
method GetXAttributes (line 234) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectBranchPath.cs
class MapObjectBranchPath (line 18) | public class MapObjectBranchPath : MapObject
method MapObjectBranchPath (line 28) | public MapObjectBranchPath(PositionAngle posAngle)
method MapObjectBranchPath (line 42) | public MapObjectBranchPath(PositionAngle posAngle, List<(uint globalTi...
method Create (line 50) | public static MapObjectBranchPath Create(PositionAngle posAngle, strin...
method GetSegments (line 64) | private List<MapBranchPathObjectSegment> GetSegments()
method DrawOn2DControlTopDownView (line 80) | public override void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method DrawOn2DControlOrthographicView (line 124) | public override void DrawOn2DControlOrthographicView(MapObjectHoverDat...
method DrawOn3DControl (line 168) | public override void DrawOn3DControl()
method Update (line 222) | public override void Update()
method GetContextMenuStrip (line 243) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 283) | public override void ApplySettings(MapObjectSettings settings)
method GetName (line 305) | public override string GetName()
method GetInternalImage (line 310) | public override Image GetInternalImage()
method GetDrawType (line 315) | public override MapDrawType GetDrawType()
method GetPositionAngle (line 320) | public override PositionAngle GetPositionAngle()
class MapBranchPathObjectSegment (line 325) | private class MapBranchPathObjectSegment
method MapBranchPathObjectSegment (line 335) | public MapBranchPathObjectSegment(
method GetXAttributes (line 354) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCUpFloor.cs
class MapObjectCUpFloor (line 17) | public class MapObjectCUpFloor : MapObjectCustomFloor
method GetCUpTriangleList (line 19) | private static List<uint> GetCUpTriangleList()
method MapObjectCUpFloor (line 33) | public MapObjectCUpFloor()
method GetName (line 38) | public override string GetName()
method GetInternalImage (line 43) | public override Image GetInternalImage()
FILE: STROOP/Map/MapObjectCamera.cs
class MapObjectCamera (line 15) | public class MapObjectCamera : MapObjectIconPoint
method MapObjectCamera (line 17) | public MapObjectCamera()
method GetInternalImage (line 23) | public override Image GetInternalImage()
method GetPositionAngle (line 28) | public override PositionAngle GetPositionAngle()
method GetName (line 33) | public override string GetName()
FILE: STROOP/Map/MapObjectCameraFocus.cs
class MapObjectCameraFocus (line 15) | public class MapObjectCameraFocus : MapObjectIconPoint
method MapObjectCameraFocus (line 17) | public MapObjectCameraFocus()
method GetInternalImage (line 24) | public override Image GetInternalImage()
method GetPositionAngle (line 29) | public override PositionAngle GetPositionAngle()
method GetName (line 34) | public override string GetName()
FILE: STROOP/Map/MapObjectCameraView.cs
class MapObjectCameraView (line 17) | public class MapObjectCameraView : MapObjectQuad
method MapObjectCameraView (line 25) | public MapObjectCameraView()
method GetQuadList (line 33) | protected override List<List<(float x, float y, float z, Color color, ...
method GetQuadList3D (line 97) | protected override List<List<(float x, float y, float z, Color color, ...
method GetContextMenuStrip (line 181) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 204) | public override void ApplySettings(MapObjectSettings settings)
method GetName (line 216) | public override string GetName()
method GetInternalImage (line 221) | public override Image GetInternalImage()
FILE: STROOP/Map/MapObjectCeiling.cs
class MapObjectCeiling (line 17) | public abstract class MapObjectCeiling : MapObjectHorizontalTriangle
method MapObjectCeiling (line 19) | public MapObjectCeiling()
FILE: STROOP/Map/MapObjectCellGridlines.cs
class MapObjectCellGridlines (line 16) | public class MapObjectCellGridlines : MapObjectGridlines
method MapObjectCellGridlines (line 18) | public MapObjectCellGridlines()
method GetVerticesTopDownView (line 25) | protected override List<(float x, float y, float z)> GetVerticesTopDow...
method GetGridlineIntersectionPositionsTopDownView (line 52) | protected override List<(float x, float y, float z)> GetGridlineInters...
method GetGridlineIntersectionPositionsOrthographicView (line 73) | protected override List<(float x, float y, float z)> GetGridlineInters...
method GetName (line 78) | public override string GetName()
method GetInternalImage (line 83) | public override Image GetInternalImage()
method GetContextMenuStrip (line 88) | public override ContextMenuStrip GetContextMenuStrip()
FILE: STROOP/Map/MapObjectCircle.cs
class MapObjectCircle (line 17) | public abstract class MapObjectCircle : MapObject
method MapObjectCircle (line 27) | public MapObjectCircle()
method DrawOn2DControlTopDownView (line 37) | public override void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method Get2DDimensions (line 106) | protected abstract List<(float centerX, float centerY, float centerZ, ...
method GetPoints (line 108) | protected abstract List<(float x, float y, float z)> GetPoints();
method GetDrawType (line 110) | public override MapDrawType GetDrawType()
method GetCircleToolStripMenuItems (line 115) | protected List<ToolStripMenuItem> GetCircleToolStripMenuItems()
method ApplySettings (line 145) | public override void ApplySettings(MapObjectSettings settings)
method GetHoverDataTopDownView (line 163) | public override MapObjectHoverData GetHoverDataTopDownView(bool isForO...
method GetHoverContextMenuStripItems (line 203) | public override List<ToolStripItem> GetHoverContextMenuStripItems(MapO...
FILE: STROOP/Map/MapObjectCoffinBox.cs
class MapObjectCoffinBox (line 16) | public class MapObjectCoffinBox : MapObjectLine
method MapObjectCoffinBox (line 20) | public MapObjectCoffinBox(PositionAngle posAngle)
method GetVerticesTopDownView (line 29) | protected override List<(float x, float y, float z)> GetVerticesTopDow...
method GetName (line 56) | public override string GetName()
method GetInternalImage (line 61) | public override Image GetInternalImage()
method GetPositionAngle (line 66) | public override PositionAngle GetPositionAngle()
method GetXAttributes (line 71) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCompass.cs
class MapObjectCompass (line 20) | public class MapObjectCompass : MapObject
method MapObjectCompass (line 34) | public MapObjectCompass()
method DrawOn2DControlTopDownView (line 40) | public override void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method RotatePoint (line 160) | private (float x, float z) RotatePoint(float x, float z)
method DrawOn2DControlOrthographicView (line 166) | public override void DrawOn2DControlOrthographicView(MapObjectHoverDat...
method DrawOn3DControl (line 171) | public override void DrawOn3DControl()
method GetDrawType (line 176) | public override MapDrawType GetDrawType()
method GetInternalImage (line 181) | public override Image GetInternalImage()
method GetName (line 186) | public override string GetName()
method Update (line 191) | public override void Update()
method CreateTexture (line 236) | private Bitmap CreateTexture(string text)
method GetContextMenuStrip (line 248) | public override ContextMenuStrip GetContextMenuStrip()
class CompassArrow (line 325) | public class CompassArrow
method CompassArrow (line 337) | public CompassArrow(int angle)
method GetOutlinePoints (line 359) | public List<(float x, float z)> GetOutlinePoints()
FILE: STROOP/Map/MapObjectCoordinateLabels.cs
class MapObjectCoordinateLabels (line 20) | public class MapObjectCoordinateLabels : MapObject
method MapObjectCoordinateLabels (line 27) | public MapObjectCoordinateLabels()
method DrawOn2DControlTopDownView (line 40) | public override void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method DrawOn2DControlOrthographicView (line 119) | public override void DrawOn2DControlOrthographicView(MapObjectHoverDat...
method DrawOn3DControl (line 124) | public override void DrawOn3DControl()
method GetDrawType (line 129) | public override MapDrawType GetDrawType()
method GetInternalImage (line 134) | public override Image GetInternalImage()
method GetName (line 139) | public override string GetName()
method GetTex (line 144) | public int GetTex(bool isX, double coord)
method CreateTexture (line 157) | private Bitmap CreateTexture(string text)
method GetContextMenuStrip (line 170) | public override ContextMenuStrip GetContextMenuStrip()
method GetLineIntersectionWithBorder (line 236) | public ((float x1, float z1), (float x2, float z2))? GetLineIntersecti...
method Update (line 299) | public override void Update()
FILE: STROOP/Map/MapObjectCorkBoxTester.cs
class MapObjectCorkBoxTester (line 18) | public class MapObjectCorkBoxTester : MapObject
method MapObjectCorkBoxTester (line 32) | public MapObjectCorkBoxTester()
method GetInternalImage (line 42) | public override Image GetInternalImage()
method GetName (line 47) | public override string GetName()
method DrawOn2DControlTopDownView (line 52) | public override void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method DrawOn2DControlOrthographicView (line 72) | public override void DrawOn2DControlOrthographicView(MapObjectHoverDat...
method DrawOn3DControl (line 77) | public override void DrawOn3DControl()
method GetTexForNumFrames (line 82) | private int GetTexForNumFrames(int numFrames)
method GetData (line 114) | public List<(double x, float y, double z, int numFrames)> GetData()
method GetNumFramesFromCache (line 154) | private (float y, int numFrames) GetNumFramesFromCache(double x, doubl...
method Update (line 163) | public override void Update()
method GetDrawType (line 194) | public override MapDrawType GetDrawType()
method GetHoverDataTopDownView (line 199) | public override MapObjectHoverData GetHoverDataTopDownView(bool isForO...
method GetHoverContextMenuStripItems (line 220) | public override List<ToolStripItem> GetHoverContextMenuStripItems(MapO...
FILE: STROOP/Map/MapObjectCurrentBackground.cs
class MapObjectCurrentBackground (line 15) | public class MapObjectCurrentBackground : MapObjectBackground
method MapObjectCurrentBackground (line 17) | public MapObjectCurrentBackground()
method GetInternalImage (line 22) | public override Image GetInternalImage()
method GetName (line 27) | public override string GetName()
FILE: STROOP/Map/MapObjectCurrentCell.cs
class MapObjectCurrentCell (line 18) | public class MapObjectCurrentCell : MapObjectQuad
method MapObjectCurrentCell (line 22) | public MapObjectCurrentCell(PositionAngle posAngle)
method GetQuadList (line 31) | protected override List<List<(float x, float y, float z, Color color, ...
method GetName (line 55) | public override string GetName()
method GetInternalImage (line 60) | public override Image GetInternalImage()
method GetPositionAngle (line 65) | public override PositionAngle GetPositionAngle()
method GetHoverDataTopDownView (line 70) | public override MapObjectHoverData GetHoverDataTopDownView(bool isForO...
method GetHoverDataOrthographicView (line 94) | public override MapObjectHoverData GetHoverDataOrthographicView(bool i...
method GetHoverContextMenuStripItems (line 118) | public override List<ToolStripItem> GetHoverContextMenuStripItems(MapO...
method GetXAttributes (line 148) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCurrentLevel.cs
class MapObjectCurrentLevel (line 15) | public class MapObjectCurrentLevel : MapObjectLevel
method MapObjectCurrentLevel (line 17) | public MapObjectCurrentLevel()
method GetMapLayout (line 22) | public override MapLayout GetMapLayout()
method GetName (line 27) | public override string GetName()
FILE: STROOP/Map/MapObjectCurrentUnit.cs
class MapObjectCurrentUnit (line 18) | public class MapObjectCurrentUnit : MapObjectQuad
method MapObjectCurrentUnit (line 22) | public MapObjectCurrentUnit(PositionAngle posAngle)
method GetQuadList (line 31) | protected override List<List<(float x, float y, float z, Color color, ...
method GetName (line 53) | public override string GetName()
method GetInternalImage (line 58) | public override Image GetInternalImage()
method GetPositionAngle (line 63) | public override PositionAngle GetPositionAngle()
method GetHoverDataTopDownView (line 68) | public override MapObjectHoverData GetHoverDataTopDownView(bool isForO...
method GetHoverDataOrthographicView (line 87) | public override MapObjectHoverData GetHoverDataOrthographicView(bool i...
method GetHoverContextMenuStripItems (line 106) | public override List<ToolStripItem> GetHoverContextMenuStripItems(MapO...
method GetXAttributes (line 116) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCustomBackground.cs
class MapObjectCustomBackground (line 17) | public class MapObjectCustomBackground : MapObjectBackground
method MapObjectCustomBackground (line 22) | public MapObjectCustomBackground()
method GetInternalImage (line 29) | public override Image GetInternalImage()
method GetName (line 34) | public override string GetName()
method GetContextMenuStrip (line 39) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 71) | public override void ApplySettings(MapObjectSettings settings)
FILE: STROOP/Map/MapObjectCustomCeiling.cs
class MapObjectCustomCeiling (line 19) | public class MapObjectCustomCeiling : MapObjectCeiling
method MapObjectCustomCeiling (line 26) | public MapObjectCustomCeiling(List<uint> triAddressList)
method Create (line 34) | public static MapObjectCustomCeiling Create(string text)
method GetUnfilteredTriangles (line 41) | protected override List<TriangleDataModel> GetUnfilteredTriangles()
method GetName (line 50) | public override string GetName()
method GetInternalImage (line 55) | public override Image GetInternalImage()
method GetContextMenuStrip (line 60) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 94) | public override void ApplySettings(MapObjectSettings settings)
method GetXAttributes (line 105) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCustomCylinder.cs
class MapObjectCustomCylinder (line 18) | public class MapObjectCustomCylinder : MapObjectCylinder
method MapObjectCustomCylinder (line 31) | public MapObjectCustomCylinder(PositionAngle posAngle)
method Get3DDimensions (line 39) | protected override List<(float centerX, float centerZ, float radius, f...
method GetInternalImage (line 48) | public override Image GetInternalImage()
method GetName (line 53) | public override string GetName()
method GetPositionAngle (line 58) | public override PositionAngle GetPositionAngle()
method GetContextMenuStrip (line 63) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 101) | public override void ApplySettings(MapObjectSettings settings)
method GetXAttributes (line 120) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCustomCylinderPoints.cs
class MapObjectCustomCylinderPoints (line 18) | public class MapObjectCustomCylinderPoints : MapObjectCylinder
method MapObjectCustomCylinderPoints (line 31) | public MapObjectCustomCylinderPoints(List<(float x, float y, float z)>...
method Create (line 39) | public static MapObjectCustomCylinderPoints Create(string text, bool u...
method Get3DDimensions (line 48) | protected override List<(float centerX, float centerZ, float radius, f...
method GetInternalImage (line 53) | public override Image GetInternalImage()
method GetName (line 58) | public override string GetName()
method GetContextMenuStrip (line 63) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 101) | public override void ApplySettings(MapObjectSettings settings)
method GetXAttributes (line 120) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCustomFloor.cs
class MapObjectCustomFloor (line 19) | public class MapObjectCustomFloor : MapObjectFloor
method MapObjectCustomFloor (line 26) | public MapObjectCustomFloor(List<uint> triAddressList)
method Create (line 34) | public static MapObjectCustomFloor Create(string text)
method GetUnfilteredTriangles (line 41) | protected override List<TriangleDataModel> GetUnfilteredTriangles()
method GetName (line 50) | public override string GetName()
method GetInternalImage (line 55) | public override Image GetInternalImage()
method GetContextMenuStrip (line 60) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 96) | public override void ApplySettings(MapObjectSettings settings)
method GetXAttributes (line 107) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCustomGridlines.cs
class MapObjectCustomGridlines (line 16) | public class MapObjectCustomGridlines : MapObjectGridlines
method MapObjectCustomGridlines (line 18) | public MapObjectCustomGridlines()
method GetVerticesTopDownView (line 26) | protected override List<(float x, float y, float z)> GetVerticesTopDow...
method GetGridlineIntersectionPositionsTopDownView (line 52) | protected override List<(float x, float y, float z)> GetGridlineInters...
method GetVerticesOrthographicView (line 72) | protected override List<(float x, float y, float z)> GetVerticesOrthog...
method GetGridlineIntersectionPositionsOrthographicView (line 111) | protected override List<(float x, float y, float z)> GetGridlineInters...
method GetName (line 135) | public override string GetName()
method GetInternalImage (line 140) | public override Image GetInternalImage()
method GetContextMenuStrip (line 145) | public override ContextMenuStrip GetContextMenuStrip()
FILE: STROOP/Map/MapObjectCustomIconPoints.cs
class MapObjectCustomIconPoints (line 19) | public class MapObjectCustomIconPoints : MapObject
method MapObjectCustomIconPoints (line 25) | public MapObjectCustomIconPoints(List<(float x, float y, float z)> poi...
method Create (line 33) | public static MapObjectCustomIconPoints Create(string text, bool useTr...
method DrawOn2DControlTopDownView (line 42) | public override void DrawOn2DControlTopDownView(MapObjectHoverData hov...
method DrawOn2DControlOrthographicView (line 70) | public override void DrawOn2DControlOrthographicView(MapObjectHoverDat...
method DrawOn3DControl (line 98) | public override void DrawOn3DControl()
method GetModelMatrix (line 128) | public Matrix4 GetModelMatrix(float x, float y, float z)
method GetVertices (line 144) | private Map3DVertex[] GetVertices()
method Update (line 157) | public override void Update()
method GetInternalImage (line 166) | public override Image GetInternalImage()
method GetName (line 171) | public override string GetName()
method GetDrawType (line 176) | public override MapDrawType GetDrawType()
method GetContextMenuStrip (line 181) | public override ContextMenuStrip GetContextMenuStrip()
method GetHoverDataTopDownView (line 207) | public override MapObjectHoverData GetHoverDataTopDownView(bool isForO...
method GetHoverDataOrthographicView (line 227) | public override MapObjectHoverData GetHoverDataOrthographicView(bool i...
method GetHoverContextMenuStripItems (line 247) | public override List<ToolStripItem> GetHoverContextMenuStripItems(MapO...
method GetXAttributes (line 286) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCustomLevel.cs
class MapObjectCustomLevel (line 17) | public class MapObjectCustomLevel : MapObjectLevel
method MapObjectCustomLevel (line 22) | public MapObjectCustomLevel()
method GetMapLayout (line 29) | public override MapLayout GetMapLayout()
method GetName (line 34) | public override string GetName()
method GetContextMenuStrip (line 39) | public override ContextMenuStrip GetContextMenuStrip()
method ApplySettings (line 71) | public override void ApplySettings(MapObjectSettings settings)
FILE: STROOP/Map/MapObjectCustomPositionAngle.cs
class MapObjectCustomPositionAngle (line 16) | public class MapObjectCustomPositionAngle : MapObjectIconPoint
method MapObjectCustomPositionAngle (line 20) | public MapObjectCustomPositionAngle(PositionAngle posAngle)
method GetInternalImage (line 28) | public override Image GetInternalImage()
method GetPositionAngle (line 33) | public override PositionAngle GetPositionAngle()
method GetName (line 38) | public override string GetName()
method GetXAttributes (line 43) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCustomPositionAngleArrow.cs
class MapObjectCustomPositionAngleArrow (line 17) | public class MapObjectCustomPositionAngleArrow : MapObjectArrow
method MapObjectCustomPositionAngleArrow (line 22) | public MapObjectCustomPositionAngleArrow(PositionAngle posPA, Position...
method GetPositionAngle (line 29) | public override PositionAngle GetPositionAngle()
method GetYaw (line 34) | protected override double GetYaw()
method GetPitch (line 39) | protected override double GetPitch()
method GetRecommendedSize (line 44) | protected override double GetRecommendedSize()
method SetRecommendedSize (line 49) | protected override void SetRecommendedSize(double size)
method SetYaw (line 54) | protected override void SetYaw(double yaw)
method GetName (line 59) | public override string GetName()
method GetXAttributes (line 64) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCustomSphere.cs
class MapObjectCustomSphere (line 18) | public class MapObjectCustomSphere : MapObjectSphere
method MapObjectCustomSphere (line 22) | public MapObjectCustomSphere(PositionAngle posAngle)
method Get3DDimensions (line 30) | protected override List<(float centerX, float centerY, float centerZ, ...
method GetInternalImage (line 38) | public override Image GetInternalImage()
method GetName (line 43) | public override string GetName()
method GetPositionAngle (line 48) | public override PositionAngle GetPositionAngle()
method GetContextMenuStrip (line 53) | public override ContextMenuStrip GetContextMenuStrip()
method GetXAttributes (line 64) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCustomSpherePoints.cs
class MapObjectCustomSpherePoints (line 18) | public class MapObjectCustomSpherePoints : MapObjectSphere
method MapObjectCustomSpherePoints (line 22) | public MapObjectCustomSpherePoints(List<(float x, float y, float z)> p...
method Create (line 30) | public static MapObjectCustomSpherePoints Create(string text, bool use...
method Get3DDimensions (line 39) | protected override List<(float centerX, float centerY, float centerZ, ...
method GetInternalImage (line 44) | public override Image GetInternalImage()
method GetName (line 49) | public override string GetName()
method GetContextMenuStrip (line 54) | public override ContextMenuStrip GetContextMenuStrip()
method GetXAttributes (line 65) | public override List<XAttribute> GetXAttributes()
FILE: STROOP/Map/MapObjectCustomUnitPoints.cs
class MapObjectCustomUnitPoints (line 18) | public class MapObjectCustomUnitPoints : MapObjectQuad
method MapObjectCustomUnitPoints (line 22) | public MapObjectCustomUnitPoints(List<(int x, int z)> unitPoints)
method Create (line 31) | public static MapObjectCustomUnitPoints Create(string text, bool useTr...
method GetQuadList (line 40) | protected override List<List<(float x, float y, float z, Color color, ...
method GetName (line 57) | public override string GetName()
method GetInternalImage (line 62) | public override Image GetInternalImage()
method GetHoverDataTopDownView (line 67) | public override MapObjectHoverData GetHoverDataTopDownView(bool isForO...
method GetHoverDataOrthographicView (line 87) | public override MapObjectHoverData GetHoverDataOrthographicView(bool i...
method GetHoverContextMenuStripItems (line 108) | public override List<ToolStripItem> GetHoverContextMenuStripItems(MapO...
method GetXAttributes (line 119) | public overrid
Copy disabled (too large)
Download .json
Condensed preview — 652 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (17,002K chars).
[
{
"path": ".gitattributes",
"chars": 2518,
"preview": "###############################################################################\n# Set default behavior to automatically "
},
{
"path": ".gitignore",
"chars": 3877,
"preview": "\n\n## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# Us"
},
{
"path": "Directory.Build.props",
"chars": 565,
"preview": "<Project>\n\t<PropertyGroup>\n\t\t<DefineConstants>$(DefineConstants);TRACE</DefineConstants>\n\t\t<ErrorReport>prompt</ErrorRep"
},
{
"path": "README.md",
"chars": 1794,
"preview": "# STROOP\n*SuperMario64 Technical Runtime Observer and Object Processor*\n\n STROOP is a diagnostic tool for Super Mario 6"
},
{
"path": "STROOP/App.config",
"chars": 1227,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <startup> \n <supportedRuntime version=\"v4.0\" sku=\".NE"
},
{
"path": "STROOP/Calculators/AirMovementCalculator.cs",
"chars": 13822,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utili"
},
{
"path": "STROOP/Calculators/BobombState.cs",
"chars": 5772,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nu"
},
{
"path": "STROOP/Calculators/CalculatorMain.cs",
"chars": 94134,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utili"
},
{
"path": "STROOP/Calculators/CalculatorUtilities.cs",
"chars": 1969,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nu"
},
{
"path": "STROOP/Calculators/GroundMovementCalculator.cs",
"chars": 11302,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utili"
},
{
"path": "STROOP/Calculators/HolpCalculator.cs",
"chars": 13479,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utili"
},
{
"path": "STROOP/Calculators/Input.cs",
"chars": 895,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nu"
},
{
"path": "STROOP/Calculators/LoadingZoneMain.cs",
"chars": 67685,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configurations;\nusing STROOP.Ttc;\n"
},
{
"path": "STROOP/Calculators/MarioState.cs",
"chars": 6820,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nu"
},
{
"path": "STROOP/Calculators/MutableMarioState.cs",
"chars": 2857,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nu"
},
{
"path": "STROOP/Calculators/ObjectCalculator.cs",
"chars": 2781,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utili"
},
{
"path": "STROOP/Calculators/OverflowJumpCalculator.cs",
"chars": 7101,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configurations;\nusing STROOP.Ttc;\n"
},
{
"path": "STROOP/Calculators/PendulumData.cs",
"chars": 6875,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nu"
},
{
"path": "STROOP/Calculators/PendulumMain.cs",
"chars": 6996,
"preview": "using Accord.Collections;\nusing STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configur"
},
{
"path": "STROOP/Calculators/PunchRecoilCalculator.cs",
"chars": 36203,
"preview": "using STROOP.Models;\nusing STROOP.Structs;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections."
},
{
"path": "STROOP/Calculators/SlideCalculator.cs",
"chars": 28012,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utili"
},
{
"path": "STROOP/Calculators/SlidingMarioState.cs",
"chars": 2197,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utili"
},
{
"path": "STROOP/Calculators/WallDisplacementCalculator.cs",
"chars": 9826,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utili"
},
{
"path": "STROOP/Calculators/WaterLevelCalculator.cs",
"chars": 2923,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nu"
},
{
"path": "STROOP/Calculators/WaterMain.cs",
"chars": 18987,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs.Configurations;\nusing STROOP.Ttc;\n"
},
{
"path": "STROOP/Calculators/WaterState.cs",
"chars": 5317,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nu"
},
{
"path": "STROOP/Config/ActionsData.xml",
"chars": 4164,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data type=\"uint\" offset=\"0x0C\" base=\"Mario\" useHex=\"true\" color=\"R"
},
{
"path": "STROOP/Config/AreaData.xml",
"chars": 2885,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data type=\"uint\" offset=\"0x90\" base=\"Mario\" subclass=\"Address\" col"
},
{
"path": "STROOP/Config/CamHackData.xml",
"chars": 1889,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data type=\"int\" offset=\"0x00\" base=\"CamHack\">Mode</Data>\n <Data t"
},
{
"path": "STROOP/Config/CameraData.xml",
"chars": 5598,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n \n <Data type=\"byte\" offset=\"0x165\" base=\"Camera\" subclass=\"Boolean"
},
{
"path": "STROOP/Config/CellsData.xml",
"chars": 3991,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n\n <Data base=\"None\" specialType=\"CurrentCellsTriangleAddress\" subcla"
},
{
"path": "STROOP/Config/Config.xml",
"chars": 2269,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Config>\n <Emulators>\n <!-- If you are using new Mupen, update the following"
},
{
"path": "STROOP/Config/CourseData.xml",
"chars": 3086,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<CourseData>\n <Course index=\"1\" fullName=\"Bob-omb Battlefield\" shortName=\"BoB\""
},
{
"path": "STROOP/Config/CustomData.xml",
"chars": 582,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n\n <Data type=\"float\" offset=\"0x3C\" base=\"Mario\" coord=\"X\">X</Data>\n "
},
{
"path": "STROOP/Config/DebugData.xml",
"chars": 3361,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data type=\"byte\" offsetUS=\"0x8033D263\" offsetJP=\"0x8033BEF3\" base="
},
{
"path": "STROOP/Config/FileData.xml",
"chars": 26149,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data groupList=\"Basic\" type=\"short\" offsetUS=\"0x8032DDF4\" offsetJP"
},
{
"path": "STROOP/Config/FileImageAssociations.xml",
"chars": 4004,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<FileImageAssociations>\n <Config>\n <FileImageDirectory>Resources\\File Image"
},
{
"path": "STROOP/Config/Hacks.xml",
"chars": 1306,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Hacks>\n <Config>\n <HackDirectory>Resources\\Hacks\\</HackDirectory>\n </Conf"
},
{
"path": "STROOP/Config/HudData.xml",
"chars": 3138,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data type=\"sbyte\" offset=\"0xAD\" base=\"Mario\">Life Count</Data>\n <"
},
{
"path": "STROOP/Config/InputData.xml",
"chars": 6585,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data type=\"float\" offsetUS=\"0x8033AF94\" offsetJP=\"0x80339C24\" base"
},
{
"path": "STROOP/Config/InputImageAssociations.xml",
"chars": 1784,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<InputImageAssociations>\n <Config>\n <ClassicInputImageDirectory>Resources\\I"
},
{
"path": "STROOP/Config/KoopaTheQuick1Waypoints.xml",
"chars": 1932,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Waypoints>\n <Waypoint index=\"0\" x=\"-2220\" y=\"204\" z=\"5520\"/>\n <Waypoint inde"
},
{
"path": "STROOP/Config/KoopaTheQuick2Waypoints.xml",
"chars": 698,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Waypoints>\n <Waypoint index=\"0\" x=\"-1900\" y=\"-511\" z=\"2400\"/>\n <Waypoint ind"
},
{
"path": "STROOP/Config/MainSaveData.xml",
"chars": 7474,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<VarData>\n\n <Data type=\"short\" offsetUS=\"0x8032DDF4\" offsetJP=\"0x8032CE94\" base"
},
{
"path": "STROOP/Config/MapAssociations.xml",
"chars": 18206,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<MapAssociations>\n <Config>\n <MapImageDirectory>Resources\\Maps\\Map Images\\<"
},
{
"path": "STROOP/Config/MapVars.xml",
"chars": 3217,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data base=\"None\" specialType=\"Map3DMode\" subclass=\"String\">Mode</D"
},
{
"path": "STROOP/Config/MarioActions.xml",
"chars": 33815,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<MarioActions>\n <Default afterCloneValue=\"0x08000207\" afterUncloneValue=\"0x0C4"
},
{
"path": "STROOP/Config/MarioAnimations.xml",
"chars": 11279,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<MarioAnimations>\n <Animation value=\"-1\" name=\"nonexistent\"/>\n <Animation val"
},
{
"path": "STROOP/Config/MarioData.xml",
"chars": 10961,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data groupList=\"Basic\" type=\"float\" offset=\"0x3C\" base=\"Mario\" coo"
},
{
"path": "STROOP/Config/MarioStateData.xml",
"chars": 973,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data type=\"float\" offset=\"0x3C\" base=\"Mario\" coord=\"X\">X</Data>\n "
},
{
"path": "STROOP/Config/MhsData.xml",
"chars": 983,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data type=\"ushort\" offset=\"0x2E\" base=\"Mario\" subclass=\"Angle\" yaw"
},
{
"path": "STROOP/Config/MiscData.xml",
"chars": 9407,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<VarData>\n\n <Data groupList=\"Basic\" type=\"uint\" offsetUS=\"0x8032D5D4\" offsetJP="
},
{
"path": "STROOP/Config/Missions.xml",
"chars": 15944,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Missions>\n <Mission courseIndex=\"1\" missionIndex=\"1\" inGameCourseIndex=\"1\" in"
},
{
"path": "STROOP/Config/MusicData.xml",
"chars": 1463,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Data>\n <Point index=\"00\" name=\"None\"/>\n <Point index=\"01\" name=\"Star Collect"
},
{
"path": "STROOP/Config/MusicData2.xml",
"chars": 1639,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data base=\"Music\" offset=\"0x000\" type=\"byte\" subclass=\"Boolean\" ma"
},
{
"path": "STROOP/Config/ObjectAssociations.xml",
"chars": 325313,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ObjectAssociations>\n <Config>\n <ImageDirectory>Resources\\Object Images\\</Im"
},
{
"path": "STROOP/Config/ObjectData.xml",
"chars": 35001,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n\n <Data groupList=\"Basic\" type=\"float\" offset=\"0xA0\" base=\"Object\" c"
},
{
"path": "STROOP/Config/OptionsData.xml",
"chars": 730,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data base=\"None\" specialType=\"GotoAboveOffset\">Goto Above Offset</"
},
{
"path": "STROOP/Config/PaintingData.xml",
"chars": 2274,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data base=\"Painting\" offset=\"0x0\" type=\"short\">ID</Data>\n <Data b"
},
{
"path": "STROOP/Config/PendulumSwings.xml",
"chars": 32733,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<PendulumSwings>\n <PendulumSwing index=\"-381\" amplitude=\"-7182\"/>\n <PendulumS"
},
{
"path": "STROOP/Config/PuData.xml",
"chars": 5876,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data groupList=\"Intermediate\" type=\"float\" offset=\"0x3C\" base=\"Mar"
},
{
"path": "STROOP/Config/QuarterFrameData.xml",
"chars": 16697,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data groupList=\"QuarterFrameHack\" type=\"int\" offset=\"0x104\" base=\""
},
{
"path": "STROOP/Config/RacingPenguinWaypoints.xml",
"chars": 2828,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Waypoints>\n <Waypoint index=\"0\" x=\"-4762\" y=\"6660\" z=\"-6143\"/>\n <Waypoint in"
},
{
"path": "STROOP/Config/SavedSettings.xml",
"chars": 1948,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<SavedSettings>\n <UseNightMode>false</UseNightMode>\n <DisplayYawAnglesAsUnsign"
},
{
"path": "STROOP/Config/ScriptData.xml",
"chars": 1302,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n\n <Data type=\"float\" offset=\"0x3C\" base=\"Mario\" color=\"Red\" coord=\"X"
},
{
"path": "STROOP/Config/SnowData.xml",
"chars": 2244,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<VarData>\n \n <Data groupList=\"Basic\" type=\"uint\" offsetUS=\"0x8032D5D4\" offsetJ"
},
{
"path": "STROOP/Config/TasData.xml",
"chars": 12419,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n\n <Data groupList=\"Basic\" type=\"float\" offset=\"0x3C\" base=\"Mario\" co"
},
{
"path": "STROOP/Config/TriangleInfo.xml",
"chars": 11416,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<TriangleInfo>\n <Triangle type=\"0\" description=\"Default\" slipperiness=\"0x00\" e"
},
{
"path": "STROOP/Config/TrianglesData.xml",
"chars": 18492,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data groupList=\"Basic\" base=\"Triangle\" specialType=\"Classification"
},
{
"path": "STROOP/Config/TtmBowlingBallPoints.xml",
"chars": 23655,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Points>\n <Point index=\"0\" x=\"-1639\" y=\"1146\" z=\"-1742\"/>\n <Point index=\"1\" x"
},
{
"path": "STROOP/Config/WarpData.xml",
"chars": 590,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data groupList=\"Basic\" type=\"uint\" offsetUS=\"0x8032DDC8\" offsetJP="
},
{
"path": "STROOP/Config/WaterData.xml",
"chars": 7068,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<VarData>\n <Data type=\"short\" offset=\"0x76\" base=\"Mario\" color=\"LightBlue\">Wat"
},
{
"path": "STROOP/Controls/BetterContextMenuStrip.cs",
"chars": 825,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/BetterSplitContainer.cs",
"chars": 3936,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/BetterTextbox.cs",
"chars": 2412,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/BinaryButton.cs",
"chars": 1295,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/BorderedTableLayoutPanel.cs",
"chars": 1949,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.Drawing.Drawing2D;\nusing System.Linq"
},
{
"path": "STROOP/Controls/CarretlessTextBox.cs",
"chars": 834,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/CoinRingDisplayPanel.cs",
"chars": 5618,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/ColorSelector.Designer.cs",
"chars": 3373,
"preview": "namespace STROOP.Controls\n{\n partial class ColorSelector\n {\n /// <summary> \n /// Required designer "
},
{
"path": "STROOP/Controls/ColorSelector.cs",
"chars": 2237,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Data;\nu"
},
{
"path": "STROOP/Controls/ColorSelector.resx",
"chars": 5696,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Controls/DoubleBufferedTableLayoutPanel.cs",
"chars": 405,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.Drawing.Drawing2D;\nusing System.Linq"
},
{
"path": "STROOP/Controls/FileBinaryPictureBox.cs",
"chars": 954,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/FileCoinScoreTextbox.cs",
"chars": 1702,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/FileCourseLabel.cs",
"chars": 2581,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/FileHatLocationPictureBox.cs",
"chars": 5299,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/FileHatPositionTextbox.cs",
"chars": 1741,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/FileKeyDoorPictureBox.cs",
"chars": 1824,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/FilePictureBox.cs",
"chars": 2620,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/FileStarPictureBox.cs",
"chars": 1214,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/FileTextbox.cs",
"chars": 1266,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/InputDisplayPanel.cs",
"chars": 9760,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/IntPictureBox.cs",
"chars": 667,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Drawing.Drawing2D;\nusing System.Linq;\nusing System.Text;\nu"
},
{
"path": "STROOP/Controls/MainSaveTextbox.cs",
"chars": 2466,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/ModelGraphics.cs",
"chars": 15497,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/NoTearFlowLayoutPanel.cs",
"chars": 558,
"preview": "using STROOP.Structs;\nusing System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.Linq;\nusing Sy"
},
{
"path": "STROOP/Controls/ObjectSlot.cs",
"chars": 35487,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/ObjectSlotFlowLayoutPanel.cs",
"chars": 5110,
"preview": "using STROOP.Forms;\nusing STROOP.Models;\nusing STROOP.Structs;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilit"
},
{
"path": "STROOP/Controls/PanelEx.cs",
"chars": 469,
"preview": "using System;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Windows.Forms;\nusing System.Runtime.Intero"
},
{
"path": "STROOP/Controls/RichTextBoxEx.cs",
"chars": 9220,
"preview": "using System;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Windows.Forms;\nusing System.Runtime.Intero"
},
{
"path": "STROOP/Controls/TabControlEx.cs",
"chars": 891,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/TrackBarEx.cs",
"chars": 904,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/TransparentTextbox.cs",
"chars": 579,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/VarHackContainer.Designer.cs",
"chars": 25426,
"preview": "namespace STROOP.Controls\n{\n partial class VarHackContainer\n {\n /// <summary> \n /// Required design"
},
{
"path": "STROOP/Controls/VarHackContainer.cs",
"chars": 19938,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.Data;\nu"
},
{
"path": "STROOP/Controls/VarHackContainer.resx",
"chars": 5696,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Controls/VarHackContainerDefaults.cs",
"chars": 3971,
"preview": "using STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nusing System.Collections.Generic;\nusing Syst"
},
{
"path": "STROOP/Controls/VarHackFlowLayoutPanel.cs",
"chars": 9319,
"preview": "using STROOP.Forms;\nusing STROOP.Structs;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nus"
},
{
"path": "STROOP/Controls/WatchVariable.cs",
"chars": 14475,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/WatchVariableAddressWrapper.cs",
"chars": 2199,
"preview": "using STROOP.Extensions;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs;\nusing STROOP.Structs.Configu"
},
{
"path": "STROOP/Controls/WatchVariableAngleWrapper.cs",
"chars": 11791,
"preview": "using STROOP.Extensions;\nusing STROOP.Managers;\nusing STROOP.Structs;\nusing STROOP.Structs.Configurations;\nusing STROOP"
},
{
"path": "STROOP/Controls/WatchVariableBooleanWrapper.cs",
"chars": 2818,
"preview": "using STROOP.Utilities;\nusing System.Windows.Forms;\n\nnamespace STROOP.Controls\n{\n public class WatchVariableBooleanW"
},
{
"path": "STROOP/Controls/WatchVariableControl.Designer.cs",
"chars": 9810,
"preview": "namespace STROOP.Controls\n{\n partial class WatchVariableControl\n {\n /// <summary> \n /// Required de"
},
{
"path": "STROOP/Controls/WatchVariableControl.cs",
"chars": 38017,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs;\nusing STROOP.Structs.Configurations;\nusing STROOP.Util"
},
{
"path": "STROOP/Controls/WatchVariableControl.resx",
"chars": 5696,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Controls/WatchVariableControlPrecursor.cs",
"chars": 20184,
"preview": "using STROOP.Extensions;\nusing STROOP.Managers;\nusing STROOP.Structs;\nusing STROOP.Structs.Configurations;\nusing STROOP"
},
{
"path": "STROOP/Controls/WatchVariableControlSettings.cs",
"chars": 7821,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/WatchVariableFlowLayoutPanel.cs",
"chars": 25801,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs;\nusing STROOP.Structs.Configurations;\nusing STROOP.Util"
},
{
"path": "STROOP/Controls/WatchVariableLock.cs",
"chars": 5621,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Controls/WatchVariableNumberWrapper.cs",
"chars": 12733,
"preview": "using STROOP.Extensions;\nusing STROOP.Managers;\nusing STROOP.Structs;\nusing STROOP.Structs.Configurations;\nusing STROOP"
},
{
"path": "STROOP/Controls/WatchVariableObjectWrapper.cs",
"chars": 3427,
"preview": "using STROOP.Extensions;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs;\nusing STROOP.Structs.Configu"
},
{
"path": "STROOP/Controls/WatchVariableStringWrapper.cs",
"chars": 3612,
"preview": "using STROOP.Extensions;\nusing STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs;\nusing STROOP.Structs.Configur"
},
{
"path": "STROOP/Controls/WatchVariableTriangleWrapper.cs",
"chars": 1816,
"preview": "using STROOP.Extensions;\nusing STROOP.Managers;\nusing STROOP.Models;\nusing STROOP.Structs;\nusing STROOP.Structs.Configu"
},
{
"path": "STROOP/Controls/WatchVariableWrapper.cs",
"chars": 19753,
"preview": "using STROOP.Extensions;\nusing STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs;\nusing STROOP.Structs.Configur"
},
{
"path": "STROOP/EmbeddedResources/Python.xshd",
"chars": 2823,
"preview": "<?xml version=\"1.0\"?>\n<SyntaxDefinition name=\"Python\" extensions=\".py;.pyw\" xmlns=\"http://icsharpcode.net/sharpdevelop/"
},
{
"path": "STROOP/EmbeddedResources/decompile.py",
"chars": 289,
"preview": "import dakompiler\n\nb = dakompiler.loadBindings('Resources\\DAKompiler\\sm64 ram map.txt', 'J')\nmarioRam = dakompiler.RAMS"
},
{
"path": "STROOP/Enums/AddToTabTypeEnum.cs",
"chars": 364,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/AggregateMathOperation.cs",
"chars": 350,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/AngleUnitType.cs",
"chars": 361,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/BaseAddressTypeEnum.cs",
"chars": 1030,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/BinaryMathOperation.cs",
"chars": 404,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/CamHackMode.cs",
"chars": 382,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/CellSelectionType.cs",
"chars": 334,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/CoinParamsOrder.cs",
"chars": 351,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/CompassPosition.cs",
"chars": 366,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/Coordinate.cs",
"chars": 302,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/CoordinateAngle.cs",
"chars": 322,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/CoordinateSystem.cs",
"chars": 309,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/CopyTypeEnum.cs",
"chars": 384,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "STROOP/Enums/EndiannessType.cs",
"chars": 218,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "STROOP/Enums/FileType.cs",
"chars": 426,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/FrameInputRelationType.cs",
"chars": 355,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/HatLocation.cs",
"chars": 398,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/InputDisplayTypeEnum.cs",
"chars": 329,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/Map3DCameraMode.cs",
"chars": 412,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/MapTrackerIconType.cs",
"chars": 345,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/MapTrackerOrderType.cs",
"chars": 339,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/MapTrackerVisibilityType.cs",
"chars": 370,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/MapType.cs",
"chars": 331,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/MouseEvent.cs",
"chars": 324,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/PaintingListTypeEnum.cs",
"chars": 321,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/PositionControllerRelativity.cs",
"chars": 339,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/ReadWriteMode.cs",
"chars": 309,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/RelativeDirection.cs",
"chars": 356,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/RomVersion.cs",
"chars": 317,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/RomVersionSelection.cs",
"chars": 408,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/TriangleClassification.cs",
"chars": 305,
"preview": "using STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nusing System.Collections.Generic;\nusing Syst"
},
{
"path": "STROOP/Enums/TriangleClassificationExtended.cs",
"chars": 342,
"preview": "using STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nusing System.Collections.Generic;\nusing Syst"
},
{
"path": "STROOP/Enums/TriangleVertexOffset.cs",
"chars": 321,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/VariableGroup.cs",
"chars": 830,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Enums/WatchVariableSubclass.cs",
"chars": 395,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing System;\nusing System.Collections.Generic;\nusing Syste"
},
{
"path": "STROOP/Extensions/BitmapExtensions.cs",
"chars": 2557,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Extensions/ColorExtensions.cs",
"chars": 921,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Extensions/ControlCollectionsExtensions.cs",
"chars": 455,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Extensions/FormExtensions.cs",
"chars": 448,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Extensions/IEnumerableExtensions.cs",
"chars": 943,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nna"
},
{
"path": "STROOP/Extensions/RectangleExtensions.cs",
"chars": 2000,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing Syste"
},
{
"path": "STROOP/Extensions/RichTextBoxExtensions.cs",
"chars": 572,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Extensions/SizeExtensions.cs",
"chars": 353,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
},
{
"path": "STROOP/Forms/ActionForm.Designer.cs",
"chars": 18644,
"preview": "namespace STROOP.Forms\n{\n partial class ActionForm\n {\n /// <summary>\n /// Required designer variabl"
},
{
"path": "STROOP/Forms/ActionForm.cs",
"chars": 1643,
"preview": "using STROOP.Models;\nusing STROOP.Structs;\nusing STROOP.Utilities;\nusing System;\nusing System.Collections.Generic;\nusin"
},
{
"path": "STROOP/Forms/ActionForm.resx",
"chars": 58600,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Forms/CoinRingDisplayForm.Designer.cs",
"chars": 2528,
"preview": "namespace STROOP.Forms\n{\n partial class CoinRingDisplayForm\n {\n /// <summary>\n /// Required designe"
},
{
"path": "STROOP/Forms/CoinRingDisplayForm.cs",
"chars": 575,
"preview": "using STROOP.Models;\nusing STROOP.Structs;\nusing STROOP.Utilities;\nusing System;\nusing System.Collections.Generic;\nusin"
},
{
"path": "STROOP/Forms/CoinRingDisplayForm.resx",
"chars": 53513,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Forms/FormManager.cs",
"chars": 2540,
"preview": "using STROOP.Forms;\nusing STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nu"
},
{
"path": "STROOP/Forms/IUpdatableForm.cs",
"chars": 356,
"preview": "using STROOP.Managers;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;\nusing System.Collecti"
},
{
"path": "STROOP/Forms/ImageForm.Designer.cs",
"chars": 6935,
"preview": "namespace STROOP.Forms\n{\n partial class ImageForm\n {\n /// <summary>\n /// Required designer variable"
},
{
"path": "STROOP/Forms/ImageForm.cs",
"chars": 1221,
"preview": "using STROOP.Controls;\nusing STROOP.Structs;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;"
},
{
"path": "STROOP/Forms/ImageForm.resx",
"chars": 53513,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Forms/InfoForm.Designer.cs",
"chars": 6471,
"preview": "namespace STROOP.Forms\n{\n partial class InfoForm\n {\n /// <summary>\n /// Required designer variable."
},
{
"path": "STROOP/Forms/InfoForm.cs",
"chars": 5397,
"preview": "using STROOP.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows.Forms;\n\nna"
},
{
"path": "STROOP/Forms/InfoForm.resx",
"chars": 53513,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Forms/LoadingForm.Designer.cs",
"chars": 6491,
"preview": "namespace STROOP.Forms\n{\n partial class LoadingForm\n {\n /// <summary>\n /// Required designer variab"
},
{
"path": "STROOP/Forms/LoadingForm.cs",
"chars": 1020,
"preview": "using STROOP.Structs;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nu"
},
{
"path": "STROOP/Forms/LoadingForm.resx",
"chars": 53513,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Forms/MainLoadingForm.Designer.cs",
"chars": 8994,
"preview": "namespace STROOP.Forms\n{\n partial class MainLoadingForm\n {\n /// <summary>\n /// Required designer va"
},
{
"path": "STROOP/Forms/MainLoadingForm.cs",
"chars": 2492,
"preview": "using STROOP.Structs;\nusing STROOP.Utilities;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentMod"
},
{
"path": "STROOP/Forms/MainLoadingForm.resx",
"chars": 53513,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Forms/MapPopOutForm.Designer.cs",
"chars": 2628,
"preview": "namespace STROOP.Forms\n{\n partial class MapPopOutForm\n {\n /// <summary>\n /// Required designer vari"
},
{
"path": "STROOP/Forms/MapPopOutForm.cs",
"chars": 1613,
"preview": "using STROOP.Controls;\nusing STROOP.Managers;\nusing STROOP.Map;\nusing STROOP.Structs;\nusing STROOP.Structs.Configuratio"
},
{
"path": "STROOP/Forms/MapPopOutForm.resx",
"chars": 53513,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Forms/SelectionForm.Designer.cs",
"chars": 5984,
"preview": "namespace STROOP.Forms\n{\n partial class SelectionForm\n {\n /// <summary>\n /// Required designer vari"
},
{
"path": "STROOP/Forms/SelectionForm.cs",
"chars": 9532,
"preview": "using STROOP.Controls;\nusing STROOP.Structs;\nusing STROOP.Structs.Configurations;\nusing STROOP.Utilities;\nusing System;"
},
{
"path": "STROOP/Forms/SelectionForm.resx",
"chars": 53513,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Forms/StroopMainForm.Designer.cs",
"chars": 1566996,
"preview": "using STROOP.Controls;\nusing STROOP.Map;\nusing System.Windows.Forms;\n\nnamespace STROOP\n{\n partial class StroopMainFor"
},
{
"path": "STROOP/Forms/StroopMainForm.cs",
"chars": 54688,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nu"
},
{
"path": "STROOP/Forms/StroopMainForm.resx",
"chars": 8156872,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "STROOP/Forms/TabForm.Designer.cs",
"chars": 3736,
"preview": "namespace STROOP.Forms\n{\n partial class TabForm\n {\n /// <summary>\n /// Required designer variable.\n"
}
]
// ... and 452 more files (download for full content)
About this extraction
This page contains the full source code of the SM64-TAS-ABC/STROOP GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 652 files (15.8 MB), approximately 4.2M tokens, and a symbol index with 5191 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.