Crocomire Speedway

Room ID: 120

Wiki
Difficulty filter

From: 1
Top of the Shaft Left Door
To: 1
Top of the Shaft Left Door

Exit condition:

{
  "leaveWithRunway": {
    "length": 8,
    "openEnd": 1,
    "gentleUpTiles": 4
  }
}
From: 1
Top of the Shaft Left Door
To: 1
Top of the Shaft Left Door

Requires:

"h_canHeatedCrystalFlash"
From: 1
Top of the Shaft Left Door
To: 5
Top Right Door

Requires:

{
  "heatFrames": 130
}
From: 1
Top of the Shaft Left Door
To: 5
Top Right Door

Entrance condition:

{
  "comeInShinecharging": {
    "length": 0,
    "openEnd": 1
  }
}

Requires:

{
  "heatFrames": 120
}
{
  "shineChargeFrames": 95
}

Exit condition:

{
  "leaveShinecharged": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 1
Top of the Shaft Left Door
To: 5
Top Right Door

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 125
}
"canShinechargeMovementComplex"
{
  "heatFrames": 125
}

Exit condition:

{
  "leaveShinecharged": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 1
Top of the Shaft Left Door
To: 5
Top Right Door

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 105
}
{
  "heatFrames": 130
}
{
  "shinespark": {
    "frames": 2,
    "excessFrames": 0
  }
}

Exit condition:

{
  "leaveWithSpark": {
    "position": "top"
  }
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 1
Top of the Shaft Left Door
To: 5
Top Right Door

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 110
}
{
  "heatFrames": 130
}
{
  "shinespark": {
    "frames": 2,
    "excessFrames": 0
  }
}

Exit condition:

{
  "leaveWithSpark": {
    "position": "bottom"
  }
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 2
Far Left Door
To: 2
Far Left Door

Exit condition:

{
  "leaveWithRunway": {
    "length": 45,
    "openEnd": 1,
    "steepUpTiles": 6
  }
}
From: 2
Far Left Door
To: 2
Far Left Door

Requires:

"h_canHeatedCrystalFlash"
From: 2
Far Left Door
To: 2
Far Left Door

Use SpeedBooster to construct a structure for Moondancing that has 1 chest height block and 1 head height block to the right of it and no other Speed blocks. Crystal Flash below the lower block, exactly pixel aligned with its right side, to standup and then begin Moondancing. After Samus sinks through the bottom tile, it is possible to use Grapple to return to a crouch and wiggle right and then Turn-Around Aim Cancel to escape to the right. Without Grapple, count to 174 Moonfalls and delicately Moonfall so as to remain crouched and then wiggle to the right. Finally, use SpeedBooster if needed to break the remaining Speed blocks and reach the door.

Requires:

{
  "notable": "Speed Block Moondance"
}
"h_heatProof"
"h_getBlueSpeedMaxRunway"
"h_canCrystalFlash"
"canTrickyJump"
"canTurnaroundAimCancel"
"canTemporaryBlue"
"canMoondance"
"canSpeedball"

Exit condition:

{
  "leaveWithStoredFallSpeed": {
    "fallSpeedInTiles": 1
  }
}
From: 2
Far Left Door
To: 2
Far Left Door

Use SpeedBooster to construct a structure for Moondancing that has 1 chest height block and 1 head height block to the right of it and no other Speed blocks. Crystal Flash below the lower block, exactly pixel aligned with its right side, to standup and then begin Moondancing. After Samus sinks through the floor tiles, use Grapple to return to a standing position and count an additional 145 moonfalls. Then use Grapple to return to a crouch and wiggle right and Turn-Around Aim Cancel to escape to the right. Finally, use SpeedBooster if needed to break the remaining Speed blocks and reach the door.

Requires:

{
  "notable": "Speed Block Moondance"
}
"h_heatProof"
"h_getBlueSpeedMaxRunway"
"h_canCrystalFlash"
"canTrickyJump"
"canTurnaroundAimCancel"
"canTemporaryBlue"
"canExtendedMoondance"
"canSpeedball"

Exit condition:

{
  "leaveWithStoredFallSpeed": {
    "fallSpeedInTiles": 2
  }
}
From: 2
Far Left Door
To: 6
Bottom Right Junction

Requires:

"h_getBlueSpeedMaxRunway"
{
  "heatFrames": 380
}

Clears obstacles: A

From: 3
Bottom Door
To: 2
Far Left Door

Spark left through the speed blocks, then run to the right and back to get speed to go through the rest. If performing the spark with low energy, there is a risk of ending the spark above the spikes or in front of the Pirate; to be safe, assuming Samus has heat protection and begins sparking about 3 tiles from the Speed blocks, start with between 72 and 87 energy or at least 105 energy; with a buffered crumble jump to the right, up to 93 energy can work.

Entrance condition:

{
  "comeInShinecharged": {},
  "comesThroughToilet": "any"
}

Requires:

{
  "shineChargeFrames": 35
}
{
  "notable": "Reverse Spark"
}
"canShinechargeMovement"
"canHorizontalShinespark"
{
  "or": [
    {
      "shinespark": {
        "frames": 87,
        "excessFrames": 10
      }
    },
    {
      "and": [
        "h_heatProof",
        "canControlShinesparkEnd",
        {
          "shinespark": {
            "frames": 87,
            "excessFrames": 44
          }
        }
      ]
    }
  ]
}
{
  "heatFrames": 675
}
"h_getBlueSpeedMaxRunway"
{
  "or": [
    "canSpeedball",
    {
      "heatFrames": 15
    }
  ]
}

Clears obstacles: A

From: 3
Bottom Door
To: 2
Far Left Door

Enter the room with between 93 and 102 energy and quickly mid-air spark to the left through the Speed blocks. After the shinespark ends, run left and press pause before reaching zero energy, tanking the Pirate hit while at zero energy. Refill some energy (at least 11), and continue running to the left, using i-frames to pass through the next Pirate. Continue to pause abuse several more times. Arm pumping may be used but is not required and has little benefit; in any case, arm pumping should not be used until beginning to run through the Speed blocks, otherwise Samus will not obtain blue speed in time and will bonk into them.

Entrance condition:

{
  "comeInShinecharged": {},
  "comesThroughToilet": "any"
}

Requires:

{
  "shineChargeFrames": 35
}
{
  "notable": "Reverse Spark With Pause Abuse"
}
"canShinechargeMovementTricky"
"canTrickyJump"
"canControlShinesparkEnd"
"canPauseAbuse"
{
  "resourceAvailable": [
    {
      "type": "RegularEnergy",
      "count": 93
    }
  ]
}
{
  "shinespark": {
    "frames": 0,
    "excessFrames": 0
  }
}
{
  "resourceConsumed": [
    {
      "type": "ReserveEnergy",
      "count": 61
    }
  ]
}
{
  "or": [
    "canPreciseReserveRefill",
    {
      "resourceConsumed": [
        {
          "type": "ReserveEnergy",
          "count": 15
        }
      ]
    }
  ]
}
{
  "resourceAtMost": [
    {
      "type": "RegularEnergy",
      "count": 1
    }
  ]
}
{
  "heatFrames": 0
}

Clears obstacles: A

From: 3
Bottom Door
To: 3
Bottom Door

Entrance condition:

{
  "comeInWithSpark": {},
  "comesThroughToilet": "any"
}

Requires:

{
  "shinespark": {
    "frames": 6,
    "excessFrames": 6
  }
}
{
  "heatFrames": 120
}
From: 3
Bottom Door
To: 3
Bottom Door

Requires:

"h_canHeatedCrystalFlash"
From: 3
Bottom Door
To: 4
Bottom Right Door

Entrance condition:

{
  "comeInShinecharged": {},
  "comesThroughToilet": "any"
}

Requires:

{
  "shineChargeFrames": 70
}
"canShinechargeMovementComplex"
{
  "heatFrames": 70
}

Exit condition:

{
  "leaveShinecharged": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 3
Bottom Door
To: 4
Bottom Right Door

Entrance condition:

{
  "comeInShinecharged": {},
  "comesThroughToilet": "any"
}

Requires:

{
  "shineChargeFrames": 40
}
"canShinechargeMovementComplex"
{
  "heatFrames": 70
}
{
  "shinespark": {
    "frames": 8,
    "excessFrames": 0
  }
}

Exit condition:

{
  "leaveWithSpark": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 3
Bottom Door
To: 6
Bottom Right Junction

Requires:

{
  "heatFrames": 50
}
From: 3
Bottom Door
To: 6
Bottom Right Junction

Entrance condition:

{
  "comeInWithSpark": {},
  "comesThroughToilet": "no"
}

Requires:

{
  "shinespark": {
    "frames": 6
  }
}
{
  "heatFrames": 85
}
From: 4
Bottom Right Door
To: 2
Far Left Door

Break the speed blocks by jumping over the gap with blue speed and continuing through the room with a speedball.

Entrance condition:

{
  "comeInGettingBlueSpeed": {
    "length": 1,
    "openEnd": 0,
    "minExtraRunSpeed": "$2.4"
  }
}

Requires:

{
  "notable": "Reverse Speedball"
}
"canSpeedball"
{
  "heatFrames": 570
}

Clears obstacles: A

From: 4
Bottom Right Door
To: 2
Far Left Door

Spark left through the speed blocks, then run to the right and back to get speed to go through the rest. If performing the spark with low energy, there is a risk of ending the spark above the spikes or in front of the Pirate; to be safe, assuming Samus has heat protection, begin the shinespark at the Speed blocks with between 68 and 84 energy, or at least 101 energy; with a buffered crumble jump to the right, up to 89 energy can work.

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 85
}
{
  "notable": "Reverse Spark"
}
"canShinechargeMovement"
"canHorizontalShinespark"
{
  "or": [
    {
      "shinespark": {
        "frames": 84,
        "excessFrames": 10
      }
    },
    {
      "and": [
        "h_heatProof",
        "canControlShinesparkEnd",
        {
          "shinespark": {
            "frames": 84,
            "excessFrames": 45
          }
        }
      ]
    }
  ]
}
{
  "heatFrames": 715
}
"h_getBlueSpeedMaxRunway"
{
  "or": [
    "canSpeedball",
    {
      "heatFrames": 15
    }
  ]
}

Clears obstacles: A

From: 4
Bottom Right Door
To: 2
Far Left Door

Spark left through the speed blocks, then run to the right and back to get speed to go through the rest. If performing the spark with low energy, there is a risk of ending the spark above the spikes or in front of the Pirate; to be safe, assuming Samus has heat protection, begin the shinespark at the door (in either this or the other room) with between 81 and 96 energy, or at least 113 energy; with a buffered crumble jump to the right, up to 102 energy can work.

Entrance condition:

{
  "comeInWithSpark": {
    "position": "bottom"
  }
}

Requires:

{
  "notable": "Reverse Spark"
}
{
  "or": [
    {
      "shinespark": {
        "frames": 94,
        "excessFrames": 10
      }
    },
    {
      "and": [
        "h_heatProof",
        "canControlShinesparkEnd",
        {
          "shinespark": {
            "frames": 94,
            "excessFrames": 42
          }
        }
      ]
    }
  ]
}
{
  "heatFrames": 650
}

Clears obstacles: A

From: 4
Bottom Right Door
To: 2
Far Left Door

Start a shinespark on the other side of the door with between 94 and 103 energy. After the shinespark ends, run left and press pause before reaching zero energy, tanking the Pirate hit while at zero energy. Refill some energy (at least 11), and continue running to the left, using i-frames to pass through the next Pirate. Continue to pause abuse several more times. Arm pumping may be used but is not required and has little benefit; in any case, arm pumping should not be used until beginning to run through the Speed blocks, otherwise Samus will not obtain blue speed in time and will bonk into them.

Entrance condition:

{
  "comeInWithSpark": {
    "position": "bottom"
  }
}

Requires:

{
  "notable": "Reverse Spark With Pause Abuse"
}
"canShinechargeMovementTricky"
"canTrickyJump"
"canControlShinesparkEnd"
"canPauseAbuse"
{
  "resourceAvailable": [
    {
      "type": "RegularEnergy",
      "count": 94
    }
  ]
}
{
  "shinespark": {
    "frames": 0,
    "excessFrames": 0
  }
}
{
  "resourceConsumed": [
    {
      "type": "ReserveEnergy",
      "count": 61
    }
  ]
}
{
  "or": [
    "canPreciseReserveRefill",
    {
      "resourceConsumed": [
        {
          "type": "ReserveEnergy",
          "count": 15
        }
      ]
    }
  ]
}
{
  "resourceAtMost": [
    {
      "type": "RegularEnergy",
      "count": 1
    }
  ]
}
{
  "heatFrames": 0
}

Clears obstacles: A

From: 4
Bottom Right Door
To: 2
Far Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        5,
        3
      ],
      [
        7,
        2
      ]
    ]
  }
}

Requires:

{
  "heatFrames": 50
}
From: 4
Bottom Right Door
To: 2
Far Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        3,
        12
      ],
      [
        3,
        13
      ]
    ]
  }
}

Bypasses door shell: true

From: 4
Bottom Right Door
To: 2
Far Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        3,
        12
      ]
    ]
  }
}

Exit condition:

{
  "leaveWithGrappleTeleport": {
    "blockPositions": [
      [
        3,
        12
      ]
    ]
  }
}

Bypasses door shell: true

From: 4
Bottom Right Door
To: 2
Far Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        3,
        13
      ]
    ]
  }
}

Exit condition:

{
  "leaveWithGrappleTeleport": {
    "blockPositions": [
      [
        3,
        13
      ]
    ]
  }
}

Bypasses door shell: true

From: 4
Bottom Right Door
To: 2
Far Left Door

Exit the previous room with Samus in a standing pose (while grappled). After teleporting, press right to release Grapple while staying standing (not being forced into a crouch). Then X-ray climb to get up to the door transition, without needing to open the door.

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        18
      ],
      [
        2,
        19
      ],
      [
        2,
        28
      ],
      [
        2,
        29
      ]
    ]
  }
}

Requires:

"canXRayClimb"
{
  "heatFrames": 1600
}

Bypasses door shell: true

From: 4
Bottom Right Door
To: 2
Far Left Door

Exit the previous room with Samus in a standing pose (while grappled). After teleporting, press right to release Grapple while staying standing (not being forced into a crouch). Then X-ray climb to get up to the door transition, without needing to open the door.

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        34
      ]
    ]
  }
}

Requires:

"canXRayClimb"
{
  "heatFrames": 2800
}

Bypasses door shell: true

From: 4
Bottom Right Door
To: 3
Bottom Door

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 55
}
"canShinechargeMovementComplex"
{
  "heatFrames": 55
}

Exit condition:

{
  "leaveShinecharged": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 4
Bottom Right Door
To: 4
Bottom Right Door

Exit condition:

{
  "leaveWithRunway": {
    "length": 2,
    "openEnd": 1
  }
}
From: 4
Bottom Right Door
To: 4
Bottom Right Door

Requires:

"h_canHeatedCrystalFlash"
From: 4
Bottom Right Door
To: 5
Top Right Door

Entrance condition:

{
  "comeInShinecharging": {
    "length": 1,
    "openEnd": 1
  }
}

Requires:

"canShinechargeMovementTricky"
"canInsaneJump"
"canBePatient"
{
  "or": [
    {
      "enemyDamage": {
        "enemy": "Cacatac",
        "type": "contact",
        "hits": 1
      }
    },
    "Plasma",
    {
      "and": [
        "Wave",
        "Spazer"
      ]
    }
  ]
}
{
  "shineChargeFrames": 177
}
{
  "shinespark": {
    "frames": 10,
    "excessFrames": 0
  }
}
{
  "heatFrames": 220
}

Exit condition:

{
  "leaveWithSpark": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 4
Bottom Right Door
To: 6
Bottom Right Junction

Requires:

{
  "heatFrames": 50
}
From: 5
Top Right Door
To: 1
Top of the Shaft Left Door

Requires:

{
  "heatFrames": 160
}

Unlocks doors:

{"types":["missiles"],"requires":[{"heatFrames":30}]}
{"types":["super"],"requires":[]}
{"types":["powerbomb"],"requires":[{"heatFrames":70}]}
From: 5
Top Right Door
To: 1
Top of the Shaft Left Door

Requires:

{
  "heatFrames": 130
}

Exit condition:

{
  "leaveWithRunway": {
    "length": 8,
    "openEnd": 1,
    "gentleUpTiles": 4
  }
}

Unlocks doors:

{"types":["missiles"],"requires":[{"heatFrames":50}]}
{"types":["super"],"requires":[]}
{"types":["powerbomb"],"requires":[{"heatFrames":70}]}
From: 5
Top Right Door
To: 1
Top of the Shaft Left Door

Requires:

"canTrickyJump"
{
  "or": [
    "HiJump",
    "canPreciseWalljump"
  ]
}
{
  "heatFrames": 140
}

Unlocks doors:

{"types":["missiles"],"requires":[{"heatFrames":30}]}
{"types":["super"],"requires":[]}
{"types":["powerbomb"],"requires":[{"heatFrames":70}]}
From: 5
Top Right Door
To: 1
Top of the Shaft Left Door

Entrance condition:

{
  "comeInShinecharging": {
    "length": 5,
    "openEnd": 0
  }
}

Requires:

"canShinechargeMovementComplex"
{
  "heatFrames": 160
}
{
  "shineChargeFrames": 140
}

Exit condition:

{
  "leaveShinecharged": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 5
Top Right Door
To: 1
Top of the Shaft Left Door

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 120
}
"HiJump"
"canShinechargeMovementComplex"
{
  "heatFrames": 120
}

Exit condition:

{
  "leaveShinecharged": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 5
Top Right Door
To: 1
Top of the Shaft Left Door

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 130
}
"canWalljump"
"canShinechargeMovementComplex"
{
  "heatFrames": 130
}

Exit condition:

{
  "leaveShinecharged": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 5
Top Right Door
To: 1
Top of the Shaft Left Door

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 145
}
"canShinechargeMovementComplex"
{
  "heatFrames": 145
}

Exit condition:

{
  "leaveShinecharged": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 5
Top Right Door
To: 1
Top of the Shaft Left Door

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 70
}
"HiJump"
"canShinechargeMovementComplex"
{
  "heatFrames": 120
}
{
  "shinespark": {
    "frames": 18,
    "excessFrames": 0
  }
}

Exit condition:

{
  "leaveWithSpark": {
    "position": "bottom"
  }
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 5
Top Right Door
To: 1
Top of the Shaft Left Door

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 90
}
"canWalljump"
"canShinechargeMovementComplex"
{
  "heatFrames": 135
}
{
  "shinespark": {
    "frames": 16,
    "excessFrames": 0
  }
}

Exit condition:

{
  "leaveWithSpark": {
    "position": "bottom"
  }
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 5
Top Right Door
To: 1
Top of the Shaft Left Door

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 100
}
"canShinechargeMovementComplex"
{
  "heatFrames": 145
}
{
  "shinespark": {
    "frames": 16,
    "excessFrames": 0
  }
}

Exit condition:

{
  "leaveWithSpark": {
    "position": "bottom"
  }
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 5
Top Right Door
To: 2
Far Left Door

Either jump over a Cacatac or tank a spike hit. Perform a mid-air spark through the speed blocks. Then run to the right and back to get speed to go through the rest. If performing the spark with low energy, there is a risk of ending the spark above the spikes or in front of the Pirate; to be safe, assuming Samus has heat protection, begin the shinespark with between 73 and 88 energy, or at least 106 energy; with a buffered crumble jump to the right, up to 94 energy can work.

Entrance condition:

{
  "comeInShinecharging": {
    "length": 5,
    "openEnd": 1
  }
}

Requires:

{
  "notable": "Reverse Spark"
}
"canShinechargeMovementTricky"
"canTrickyJump"
{
  "or": [
    {
      "enemyDamage": {
        "enemy": "Cacatac",
        "type": "spike",
        "hits": 1
      }
    },
    "canBePatient"
  ]
}
{
  "or": [
    {
      "shinespark": {
        "frames": 88,
        "excessFrames": 11
      }
    },
    {
      "and": [
        "h_heatProof",
        "canControlShinesparkEnd",
        {
          "shinespark": {
            "frames": 88,
            "excessFrames": 44
          }
        }
      ]
    }
  ]
}
{
  "heatFrames": 825
}
"h_getBlueSpeedMaxRunway"
{
  "or": [
    "canSpeedball",
    {
      "heatFrames": 15
    }
  ]
}

Clears obstacles: A

From: 5
Top Right Door
To: 2
Far Left Door

Either jump over a Cacatac, tank a spike hit, or farm it if possible. While preparing to spark left through the speed blocks, press pause so that the pause hits during the shinespark wind-up Using reserves, try to refill to exactly 84 energy, the minimum amount needed to reliably break through the Speed blocks (assuming no heat protection). Hold jump and left while unpausing, to buffer activating the horizontal shinespark. After the shinespark ends, run left and press pause before reaching zero energy, tanking the Pirate hit while at zero energy. Refill to between about 11 and 13 energy, and continue running to the left, using i-frames to pass through the next Pirate. Continue to pause abuse 4 more times, trying to refill to between 11 and 13 energy each time except for the last. Arm pumping may be used but is not required and has little benefit; in any case, arm pumping should not be used until beginning to run through the Speed blocks, otherwise Samus will not obtain blue speed in time and will bonk into them.

Entrance condition:

{
  "comeInShinecharging": {
    "length": 5,
    "openEnd": 1
  }
}

Requires:

{
  "notable": "Reverse Spark With Pause Abuse"
}
"canShinechargeMovementTricky"
"canTrickyJump"
"canControlShinesparkEnd"
"canPauseAbuse"
{
  "resourceAvailable": [
    {
      "type": "RegularEnergy",
      "count": 99
    }
  ]
}
{
  "shinespark": {
    "frames": 0,
    "excessFrames": 0
  }
}
{
  "resourceConsumed": [
    {
      "type": "ReserveEnergy",
      "count": 80
    }
  ]
}
{
  "or": [
    {
      "resourceConsumed": [
        {
          "type": "ReserveEnergy",
          "count": 20
        }
      ]
    },
    {
      "and": [
        {
          "resourceMissingAtMost": [
            {
              "type": "Super",
              "count": 0
            }
          ]
        },
        {
          "or": [
            {
              "ammo": {
                "type": "Missile",
                "count": 1
              }
            },
            "Grapple",
            "Plasma",
            {
              "and": [
                "Wave",
                "Spazer"
              ]
            }
          ]
        }
      ]
    }
  ]
}
{
  "or": [
    "canPreciseReserveRefill",
    {
      "resourceConsumed": [
        {
          "type": "ReserveEnergy",
          "count": 15
        }
      ]
    }
  ]
}
{
  "resourceAtMost": [
    {
      "type": "RegularEnergy",
      "count": 1
    }
  ]
}
{
  "heatFrames": 0
}

Clears obstacles: A

From: 5
Top Right Door
To: 2
Far Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        5,
        3
      ],
      [
        7,
        2
      ]
    ]
  }
}

Requires:

{
  "heatFrames": 50
}
From: 5
Top Right Door
To: 2
Far Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        3,
        12
      ],
      [
        3,
        13
      ]
    ]
  }
}

Bypasses door shell: true

From: 5
Top Right Door
To: 2
Far Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        3,
        12
      ]
    ]
  }
}

Exit condition:

{
  "leaveWithGrappleTeleport": {
    "blockPositions": [
      [
        3,
        12
      ]
    ]
  }
}

Bypasses door shell: true

From: 5
Top Right Door
To: 2
Far Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        3,
        13
      ]
    ]
  }
}

Exit condition:

{
  "leaveWithGrappleTeleport": {
    "blockPositions": [
      [
        3,
        13
      ]
    ]
  }
}

Bypasses door shell: true

From: 5
Top Right Door
To: 2
Far Left Door

Exit the previous room with Samus in a standing pose (while grappled). After teleporting, press right to release Grapple while staying standing (not being forced into a crouch). Then X-ray climb to get up to the door transition, without needing to open the door.

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        18
      ],
      [
        2,
        19
      ],
      [
        2,
        28
      ],
      [
        2,
        29
      ]
    ]
  }
}

Requires:

"canXRayClimb"
{
  "heatFrames": 1600
}

Bypasses door shell: true

From: 5
Top Right Door
To: 2
Far Left Door

Exit the previous room with Samus in a standing pose (while grappled). After teleporting, press right to release Grapple while staying standing (not being forced into a crouch). Then X-ray climb to get up to the door transition, without needing to open the door.

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        34
      ]
    ]
  }
}

Requires:

"canXRayClimb"
{
  "heatFrames": 2800
}

Bypasses door shell: true

From: 5
Top Right Door
To: 4
Bottom Right Door

Entrance condition:

{
  "comeInShinecharging": {
    "length": 5,
    "openEnd": 1
  }
}

Requires:

"canShinechargeMovementTricky"
"canTrickyJump"
{
  "or": [
    {
      "enemyDamage": {
        "enemy": "Cacatac",
        "type": "spike",
        "hits": 1
      }
    },
    "canBePatient"
  ]
}
{
  "shinespark": {
    "frames": 10,
    "excessFrames": 0
  }
}
{
  "heatFrames": 210
}
From: 5
Top Right Door
To: 5
Top Right Door

Exit condition:

{
  "leaveWithRunway": {
    "length": 6,
    "openEnd": 1
  }
}
From: 5
Top Right Door
To: 5
Top Right Door

Requires:

"h_heatProof"
{
  "resetRoom": {
    "nodes": [
      1,
      3,
      4,
      5
    ]
  }
}
{
  "partialRefill": {
    "type": "Super",
    "limit": 10
  }
}

Resets obstacles: A

From: 5
Top Right Door
To: 5
Top Right Door

Requires:

"h_heatProof"
{
  "resetRoom": {
    "nodes": [
      1,
      3,
      4,
      5
    ]
  }
}
{
  "resourceMissingAtMost": [
    {
      "type": "Super",
      "count": 4
    }
  ]
}
{
  "refill": [
    "Super"
  ]
}
{
  "partialRefill": {
    "type": "Energy",
    "limit": 200
  }
}

Resets obstacles: A

From: 5
Top Right Door
To: 5
Top Right Door

Requires:

"h_canHeatedCrystalFlash"
From: 5
Top Right Door
To: 6
Bottom Right Junction

Requires:

{
  "heatFrames": 215
}
From: 6
Bottom Right Junction
To: 2
Far Left Door

Requires:

{
  "obstaclesCleared": [
    "A"
  ]
}
"h_getBlueSpeedMaxRunway"
{
  "heatFrames": 500
}
From: 6
Bottom Right Junction
To: 3
Bottom Door

Requires:

{
  "heatFrames": 50
}

Unlocks doors:

{"types":["missiles"],"requires":[{"heatFrames":50}]}
{"types":["super"],"requires":[]}
{"types":["powerbomb"],"requires":[{"heatFrames":70}]}
From: 6
Bottom Right Junction
To: 3
Bottom Door

Enabled by coming in from the left and breaking the speed blocks on the way, or coming in charged and opening the path to the left.

Requires:

"h_heatProof"
{
  "obstaclesCleared": [
    "A"
  ]
}
"h_canShineChargeMaxRunway"
{
  "shineChargeFrames": 80
}

Exit condition:

{
  "leaveShinecharged": {}
}

Unlocks doors:

{"types":["ammo"],"requires":[]}
From: 6
Bottom Right Junction
To: 4
Bottom Right Door

Requires:

{
  "heatFrames": 50
}

Unlocks doors:

{"types":["missiles"],"requires":[{"heatFrames":30}]}
{"types":["super"],"requires":[]}
{"types":["powerbomb"],"requires":[{"heatFrames":70}]}
From: 6
Bottom Right Junction
To: 4
Bottom Right Door

Enabled by coming in from the left and breaking the speed blocks on the way, or coming in charged and opening the path to the left.

Requires:

"h_heatProof"
{
  "obstaclesCleared": [
    "A"
  ]
}
"canShinechargeMovement"
"h_canShineChargeMaxRunway"
{
  "shineChargeFrames": 120
}

Exit condition:

{
  "leaveShinecharged": {}
}

Unlocks doors:

{"types":["ammo"],"requires":[]}
From: 6
Bottom Right Junction
To: 5
Top Right Door

Requires:

{
  "heatFrames": 300
}
From: 6
Bottom Right Junction
To: 5
Top Right Door

Move very quickly to bring a shinespark from the speedway up to the Save Room door. Preclear the Cacatacs, and it may help to not run while platforming if HiJump is not available.

Requires:

"h_heatProof"
{
  "obstaclesCleared": [
    "A"
  ]
}
"canShinechargeMovementTricky"
"h_canShineChargeMaxRunway"
{
  "shinespark": {
    "frames": 12
  }
}

Exit condition:

{
  "leaveWithSpark": {}
}

Unlocks doors:

{"types":["ammo"],"requires":[]}

{
  "$schema": "../../../schema/m3-room.schema.json",
  "id": 120,
  "name": "Crocomire Speedway",
  "area": "Norfair",
  "subarea": "Upper",
  "subsubarea": "West",
  "roomAddress": "0x7A923",
  "roomEnvironments": [
    {
      "heated": true
    }
  ],
  "nodes": [
    {
      "id": 1,
      "name": "Top of the Shaft Left Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x00193ae",
      "doorOrientation": "left",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    },
    {
      "id": 2,
      "name": "Far Left Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x00193a2",
      "doorOrientation": "left",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    },
    {
      "id": 3,
      "name": "Bottom Door",
      "nodeType": "door",
      "nodeSubType": "green",
      "nodeAddress": "0x00193d2",
      "doorOrientation": "down",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    },
    {
      "id": 4,
      "name": "Bottom Right Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x00193c6",
      "doorOrientation": "right",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    },
    {
      "id": 5,
      "name": "Top Right Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x00193ba",
      "doorOrientation": "right",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    },
    {
      "id": 6,
      "name": "Bottom Right Junction",
      "nodeType": "junction",
      "nodeSubType": "junction"
    }
  ],
  "obstacles": [
    {
      "id": "A",
      "name": "Right-side Speed Blocks",
      "obstacleType": "inanimate",
      "note": "The speed blocks on the right side of the speedway. Breaking those is needed for some leaveShinecharged strats."
    }
  ],
  "enemies": [
    {
      "id": "e1",
      "groupName": "Crocomire Speedway Left Pirates",
      "enemyName": "Red Space Pirate (standing)",
      "quantity": 3,
      "homeNodes": [
        2
      ]
    },
    {
      "id": "e2",
      "groupName": "Crocomire Speedway Multiviolas",
      "enemyName": "Multiviola",
      "quantity": 4,
      "homeNodes": [
        2
      ]
    },
    {
      "id": "e3",
      "groupName": "Crocomire Speedway Right Pirates",
      "enemyName": "Red Space Pirate (standing)",
      "quantity": 2,
      "betweenNodes": [
        2,
        6
      ]
    },
    {
      "id": "e4",
      "groupName": "Crocomire Speedway Cacatacs",
      "enemyName": "Cacatac",
      "quantity": 2,
      "betweenNodes": [
        5,
        6
      ]
    }
  ],
  "links": [
    {
      "from": 1,
      "to": [
        {
          "id": 1
        },
        {
          "id": 5
        }
      ]
    },
    {
      "from": 2,
      "to": [
        {
          "id": 2,
          "devNote": [
            "FIXME: It is possible to stored fall speed clip through the door at 3 by using a fast run speed turnaround to slide down the stairs."
          ]
        },
        {
          "id": 6
        }
      ]
    },
    {
      "from": 3,
      "to": [
        {
          "id": 2
        },
        {
          "id": 3
        },
        {
          "id": 4
        },
        {
          "id": 6
        }
      ]
    },
    {
      "from": 4,
      "to": [
        {
          "id": 2
        },
        {
          "id": 3
        },
        {
          "id": 4
        },
        {
          "id": 5
        },
        {
          "id": 6
        }
      ]
    },
    {
      "from": 5,
      "to": [
        {
          "id": 1
        },
        {
          "id": 2
        },
        {
          "id": 4
        },
        {
          "id": 5
        },
        {
          "id": 6
        }
      ]
    },
    {
      "from": 6,
      "to": [
        {
          "id": 2
        },
        {
          "id": 3
        },
        {
          "id": 4
        },
        {
          "id": 5
        }
      ]
    }
  ],
  "strats": [
    {
      "id": 1,
      "link": [
        1,
        1
      ],
      "name": "Leave with Runway",
      "requires": [],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 8,
          "openEnd": 1,
          "gentleUpTiles": 4
        }
      }
    },
    {
      "id": 2,
      "link": [
        1,
        1
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canHeatedCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 3,
      "link": [
        1,
        5
      ],
      "name": "Base",
      "requires": [
        {
          "heatFrames": 130
        }
      ]
    },
    {
      "id": 4,
      "link": [
        1,
        5
      ],
      "name": "Come In Shinecharging, Leave Shinecharged",
      "entranceCondition": {
        "comeInShinecharging": {
          "length": 0,
          "openEnd": 1
        }
      },
      "requires": [
        {
          "heatFrames": 120
        },
        {
          "shineChargeFrames": 95
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true,
      "devNote": "FIXME: Entering with too little run speed causes Samus to 'trip', so the runway cannot reliably be used for short shortcharges."
    },
    {
      "id": 50,
      "link": [
        1,
        5
      ],
      "name": "Carry Shinecharge",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 125
        },
        "canShinechargeMovementComplex",
        {
          "heatFrames": 125
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 51,
      "link": [
        1,
        5
      ],
      "name": "Come In Shinecharged, Leave With Spark (Top Position)",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 105
        },
        {
          "heatFrames": 130
        },
        {
          "shinespark": {
            "frames": 2,
            "excessFrames": 0
          }
        }
      ],
      "exitCondition": {
        "leaveWithSpark": {
          "position": "top"
        }
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 52,
      "link": [
        1,
        5
      ],
      "name": "Come In Shinecharged, Leave With Spark (Bottom Position)",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 110
        },
        {
          "heatFrames": 130
        },
        {
          "shinespark": {
            "frames": 2,
            "excessFrames": 0
          }
        }
      ],
      "exitCondition": {
        "leaveWithSpark": {
          "position": "bottom"
        }
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 5,
      "link": [
        2,
        2
      ],
      "name": "Leave with Runway",
      "requires": [],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 45,
          "openEnd": 1,
          "steepUpTiles": 6
        }
      },
      "devNote": "45 tiles is roughly in front of the first red pirate."
    },
    {
      "id": 6,
      "link": [
        2,
        2
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canHeatedCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 7,
      "link": [
        2,
        2
      ],
      "name": "Speed Block Moondance (Leave with Stored Fall Speed)",
      "requires": [
        {
          "notable": "Speed Block Moondance"
        },
        "h_heatProof",
        "h_getBlueSpeedMaxRunway",
        "h_canCrystalFlash",
        "canTrickyJump",
        "canTurnaroundAimCancel",
        "canTemporaryBlue",
        "canMoondance",
        "canSpeedball"
      ],
      "exitCondition": {
        "leaveWithStoredFallSpeed": {
          "fallSpeedInTiles": 1
        }
      },
      "flashSuitChecked": true,
      "note": [
        "Use SpeedBooster to construct a structure for Moondancing that has 1 chest height block and 1 head height block to the right of it and no other Speed blocks.",
        "Crystal Flash below the lower block, exactly pixel aligned with its right side, to standup and then begin Moondancing.",
        "After Samus sinks through the bottom tile, it is possible to use Grapple to return to a crouch and wiggle right and then Turn-Around Aim Cancel to escape to the right.",
        "Without Grapple, count to 174 Moonfalls and delicately Moonfall so as to remain crouched and then wiggle to the right.",
        "Finally, use SpeedBooster if needed to break the remaining Speed blocks and reach the door."
      ],
      "devNote": "FIXME: R-Mode can be used instead of a Crystal Flash but that depends on having more Reserve Energy than Regular Energy."
    },
    {
      "id": 8,
      "link": [
        2,
        2
      ],
      "name": "Speed Block Moondance (Leave with More Stored Fall Speed)",
      "requires": [
        {
          "notable": "Speed Block Moondance"
        },
        "h_heatProof",
        "h_getBlueSpeedMaxRunway",
        "h_canCrystalFlash",
        "canTrickyJump",
        "canTurnaroundAimCancel",
        "canTemporaryBlue",
        "canExtendedMoondance",
        "canSpeedball"
      ],
      "exitCondition": {
        "leaveWithStoredFallSpeed": {
          "fallSpeedInTiles": 2
        }
      },
      "flashSuitChecked": true,
      "note": [
        "Use SpeedBooster to construct a structure for Moondancing that has 1 chest height block and 1 head height block to the right of it and no other Speed blocks.",
        "Crystal Flash below the lower block, exactly pixel aligned with its right side, to standup and then begin Moondancing.",
        "After Samus sinks through the floor tiles, use Grapple to return to a standing position and count an additional 145 moonfalls.",
        "Then use Grapple to return to a crouch and wiggle right and Turn-Around Aim Cancel to escape to the right.",
        "Finally, use SpeedBooster if needed to break the remaining Speed blocks and reach the door."
      ],
      "devNote": "FIXME: R-Mode can be used instead of a Crystal Flash but that depends on having more Reserve Energy than Regular Energy."
    },
    {
      "id": 9,
      "link": [
        2,
        6
      ],
      "name": "Base",
      "requires": [
        "h_getBlueSpeedMaxRunway",
        {
          "heatFrames": 380
        }
      ],
      "clearsObstacles": [
        "A"
      ]
    },
    {
      "id": 10,
      "link": [
        3,
        2
      ],
      "name": "Reverse Spark",
      "entranceCondition": {
        "comeInShinecharged": {},
        "comesThroughToilet": "any"
      },
      "requires": [
        {
          "shineChargeFrames": 35
        },
        {
          "notable": "Reverse Spark"
        },
        "canShinechargeMovement",
        "canHorizontalShinespark",
        {
          "or": [
            {
              "shinespark": {
                "frames": 87,
                "excessFrames": 10
              }
            },
            {
              "and": [
                "h_heatProof",
                "canControlShinesparkEnd",
                {
                  "shinespark": {
                    "frames": 87,
                    "excessFrames": 44
                  }
                }
              ]
            }
          ]
        },
        {
          "heatFrames": 675
        },
        "h_getBlueSpeedMaxRunway",
        {
          "or": [
            "canSpeedball",
            {
              "heatFrames": 15
            }
          ]
        }
      ],
      "clearsObstacles": [
        "A"
      ],
      "flashSuitChecked": true,
      "note": [
        "Spark left through the speed blocks, then run to the right and back to get speed to go through the rest.",
        "If performing the spark with low energy, there is a risk of ending the spark above the spikes or in front of the Pirate;",
        "to be safe, assuming Samus has heat protection and begins sparking about 3 tiles from the Speed blocks, start with between 72 and 87 energy or at least 105 energy;",
        "with a buffered crumble jump to the right, up to 93 energy can work."
      ]
    },
    {
      "id": 53,
      "link": [
        3,
        2
      ],
      "name": "Reverse Spark With Pause Abuse",
      "entranceCondition": {
        "comeInShinecharged": {},
        "comesThroughToilet": "any"
      },
      "requires": [
        {
          "shineChargeFrames": 35
        },
        {
          "notable": "Reverse Spark With Pause Abuse"
        },
        "canShinechargeMovementTricky",
        "canTrickyJump",
        "canControlShinesparkEnd",
        "canPauseAbuse",
        {
          "resourceAvailable": [
            {
              "type": "RegularEnergy",
              "count": 93
            }
          ]
        },
        {
          "shinespark": {
            "frames": 0,
            "excessFrames": 0
          }
        },
        {
          "resourceConsumed": [
            {
              "type": "ReserveEnergy",
              "count": 61
            }
          ]
        },
        {
          "or": [
            "canPreciseReserveRefill",
            {
              "resourceConsumed": [
                {
                  "type": "ReserveEnergy",
                  "count": 15
                }
              ]
            }
          ]
        },
        {
          "resourceAtMost": [
            {
              "type": "RegularEnergy",
              "count": 1
            }
          ]
        },
        {
          "heatFrames": 0
        }
      ],
      "clearsObstacles": [
        "A"
      ],
      "note": [
        "Enter the room with between 93 and 102 energy and quickly mid-air spark to the left through the Speed blocks.",
        "After the shinespark ends, run left and press pause before reaching zero energy, tanking the Pirate hit while at zero energy.",
        "Refill some energy (at least 11), and continue running to the left, using i-frames to pass through the next Pirate.",
        "Continue to pause abuse several more times.",
        "Arm pumping may be used but is not required and has little benefit;",
        "in any case, arm pumping should not be used until beginning to run through the Speed blocks, otherwise Samus will not obtain blue speed in time and will bonk into them."
      ],
      "devNote": [
        "The zero shinespark requirement is to satisfy the tests, by marking that the shinecharge is used;",
        "the actual shinespark energy usage is accounted for in the resourceConsumed.",
        "This could possibly be rewritten to express the energy usage in the normal way.",
        "We don't include a `h_ShinesparksCostEnergy` requirement here, because even if shinesparks don't cost energy, it is still possible to use heat damage to make the shinespark stop in the correct place.",
        "FIXME: the regular energy required could be reduced in that case."
      ]
    },
    {
      "id": 12,
      "link": [
        3,
        3
      ],
      "name": "Shinespark",
      "entranceCondition": {
        "comeInWithSpark": {},
        "comesThroughToilet": "any"
      },
      "requires": [
        {
          "shinespark": {
            "frames": 6,
            "excessFrames": 6
          }
        },
        {
          "heatFrames": 120
        }
      ],
      "devNote": "This strat is not useful in-room, but can satisfy a strat in the room before with an exit shinespark."
    },
    {
      "id": 13,
      "link": [
        3,
        3
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canHeatedCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 54,
      "link": [
        3,
        4
      ],
      "name": "Carry Shinecharge",
      "entranceCondition": {
        "comeInShinecharged": {},
        "comesThroughToilet": "any"
      },
      "requires": [
        {
          "shineChargeFrames": 70
        },
        "canShinechargeMovementComplex",
        {
          "heatFrames": 70
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ]
    },
    {
      "id": 55,
      "link": [
        3,
        4
      ],
      "name": "Come In Shinecharged, Leave With Spark",
      "entranceCondition": {
        "comeInShinecharged": {},
        "comesThroughToilet": "any"
      },
      "requires": [
        {
          "shineChargeFrames": 40
        },
        "canShinechargeMovementComplex",
        {
          "heatFrames": 70
        },
        {
          "shinespark": {
            "frames": 8,
            "excessFrames": 0
          }
        }
      ],
      "exitCondition": {
        "leaveWithSpark": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ]
    },
    {
      "id": 14,
      "link": [
        3,
        6
      ],
      "name": "Base",
      "requires": [
        {
          "heatFrames": 50
        }
      ]
    },
    {
      "id": 15,
      "link": [
        3,
        6
      ],
      "name": "Shinespark",
      "entranceCondition": {
        "comeInWithSpark": {},
        "comesThroughToilet": "no"
      },
      "requires": [
        {
          "shinespark": {
            "frames": 6
          }
        },
        {
          "heatFrames": 85
        }
      ],
      "devNote": "This strat is not useful in-room, but can satisfy a strat in the room before with an exit shinespark."
    },
    {
      "id": 16,
      "link": [
        4,
        2
      ],
      "name": "Reverse Speedball",
      "entranceCondition": {
        "comeInGettingBlueSpeed": {
          "length": 1,
          "openEnd": 0,
          "minExtraRunSpeed": "$2.4"
        }
      },
      "requires": [
        {
          "notable": "Reverse Speedball"
        },
        "canSpeedball",
        {
          "heatFrames": 570
        }
      ],
      "clearsObstacles": [
        "A"
      ],
      "note": "Break the speed blocks by jumping over the gap with blue speed and continuing through the room with a speedball.",
      "devNote": [
        "A run speed of $2.3 can also work but with greater difficulty.",
        "FIXME: You can enter through 3 and speedball through the speedway."
      ]
    },
    {
      "id": 17,
      "link": [
        4,
        2
      ],
      "name": "Reverse Spark Near SpeedBlocks",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 85
        },
        {
          "notable": "Reverse Spark"
        },
        "canShinechargeMovement",
        "canHorizontalShinespark",
        {
          "or": [
            {
              "shinespark": {
                "frames": 84,
                "excessFrames": 10
              }
            },
            {
              "and": [
                "h_heatProof",
                "canControlShinesparkEnd",
                {
                  "shinespark": {
                    "frames": 84,
                    "excessFrames": 45
                  }
                }
              ]
            }
          ]
        },
        {
          "heatFrames": 715
        },
        "h_getBlueSpeedMaxRunway",
        {
          "or": [
            "canSpeedball",
            {
              "heatFrames": 15
            }
          ]
        }
      ],
      "clearsObstacles": [
        "A"
      ],
      "note": [
        "Spark left through the speed blocks, then run to the right and back to get speed to go through the rest.",
        "If performing the spark with low energy, there is a risk of ending the spark above the spikes or in front of the Pirate;",
        "to be safe, assuming Samus has heat protection, begin the shinespark at the Speed blocks with between 68 and 84 energy, or at least 101 energy;",
        "with a buffered crumble jump to the right, up to 89 energy can work."
      ]
    },
    {
      "id": 18,
      "link": [
        4,
        2
      ],
      "name": "Reverse Spark Through Door",
      "entranceCondition": {
        "comeInWithSpark": {
          "position": "bottom"
        }
      },
      "requires": [
        {
          "notable": "Reverse Spark"
        },
        {
          "or": [
            {
              "shinespark": {
                "frames": 94,
                "excessFrames": 10
              }
            },
            {
              "and": [
                "h_heatProof",
                "canControlShinesparkEnd",
                {
                  "shinespark": {
                    "frames": 94,
                    "excessFrames": 42
                  }
                }
              ]
            }
          ]
        },
        {
          "heatFrames": 650
        }
      ],
      "clearsObstacles": [
        "A"
      ],
      "note": [
        "Spark left through the speed blocks, then run to the right and back to get speed to go through the rest.",
        "If performing the spark with low energy, there is a risk of ending the spark above the spikes or in front of the Pirate;",
        "to be safe, assuming Samus has heat protection, begin the shinespark at the door (in either this or the other room) with between 81 and 96 energy, or at least 113 energy;",
        "with a buffered crumble jump to the right, up to 102 energy can work."
      ]
    },
    {
      "id": 56,
      "link": [
        4,
        2
      ],
      "name": "Reverse Spark With Pause Abuse",
      "entranceCondition": {
        "comeInWithSpark": {
          "position": "bottom"
        }
      },
      "requires": [
        {
          "notable": "Reverse Spark With Pause Abuse"
        },
        "canShinechargeMovementTricky",
        "canTrickyJump",
        "canControlShinesparkEnd",
        "canPauseAbuse",
        {
          "resourceAvailable": [
            {
              "type": "RegularEnergy",
              "count": 94
            }
          ]
        },
        {
          "shinespark": {
            "frames": 0,
            "excessFrames": 0
          }
        },
        {
          "resourceConsumed": [
            {
              "type": "ReserveEnergy",
              "count": 61
            }
          ]
        },
        {
          "or": [
            "canPreciseReserveRefill",
            {
              "resourceConsumed": [
                {
                  "type": "ReserveEnergy",
                  "count": 15
                }
              ]
            }
          ]
        },
        {
          "resourceAtMost": [
            {
              "type": "RegularEnergy",
              "count": 1
            }
          ]
        },
        {
          "heatFrames": 0
        }
      ],
      "clearsObstacles": [
        "A"
      ],
      "note": [
        "Start a shinespark on the other side of the door with between 94 and 103 energy.",
        "After the shinespark ends, run left and press pause before reaching zero energy, tanking the Pirate hit while at zero energy.",
        "Refill some energy (at least 11), and continue running to the left, using i-frames to pass through the next Pirate.",
        "Continue to pause abuse several more times.",
        "Arm pumping may be used but is not required and has little benefit;",
        "in any case, arm pumping should not be used until beginning to run through the Speed blocks, otherwise Samus will not obtain blue speed in time and will bonk into them."
      ],
      "devNote": [
        "The zero shinespark requirement is to satisfy the tests, by marking that the shinecharge is used;",
        "the actual shinespark energy usage is accounted for in the resourceConsumed.",
        "This could possibly be rewritten to express the energy usage in the normal way.",
        "We don't include a `h_ShinesparksCostEnergy` requirement here, because even if shinesparks don't cost energy, it is still possible to use heat damage to make the shinespark stop in the correct place.",
        "FIXME: the regular energy required could be reduced in that case."
      ]
    },
    {
      "id": 19,
      "link": [
        4,
        2
      ],
      "name": "Grapple Teleport",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              5,
              3
            ],
            [
              7,
              2
            ]
          ]
        }
      },
      "requires": [
        {
          "heatFrames": 50
        }
      ]
    },
    {
      "id": 20,
      "link": [
        4,
        2
      ],
      "name": "Grapple Teleport Door Lock Skip",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ],
            [
              3,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true
    },
    {
      "id": 21,
      "link": [
        4,
        2
      ],
      "name": "Carry Grapple Teleport (Top Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ]
          ]
        }
      }
    },
    {
      "id": 22,
      "link": [
        4,
        2
      ],
      "name": "Carry Grapple Teleport (Bottom Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              13
            ]
          ]
        }
      }
    },
    {
      "id": 23,
      "link": [
        4,
        2
      ],
      "name": "Grapple Teleport X-Ray Climb",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              18
            ],
            [
              2,
              19
            ],
            [
              2,
              28
            ],
            [
              2,
              29
            ]
          ]
        }
      },
      "requires": [
        "canXRayClimb",
        {
          "heatFrames": 1600
        }
      ],
      "bypassesDoorShell": true,
      "flashSuitChecked": true,
      "note": [
        "Exit the previous room with Samus in a standing pose (while grappled).",
        "After teleporting, press right to release Grapple while staying standing (not being forced into a crouch).",
        "Then X-ray climb to get up to the door transition, without needing to open the door."
      ]
    },
    {
      "id": 24,
      "link": [
        4,
        2
      ],
      "name": "Grapple Teleport X-Ray Climb (Two Screens)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              34
            ]
          ]
        }
      },
      "requires": [
        "canXRayClimb",
        {
          "heatFrames": 2800
        }
      ],
      "bypassesDoorShell": true,
      "flashSuitChecked": true,
      "note": [
        "Exit the previous room with Samus in a standing pose (while grappled).",
        "After teleporting, press right to release Grapple while staying standing (not being forced into a crouch).",
        "Then X-ray climb to get up to the door transition, without needing to open the door."
      ]
    },
    {
      "id": 57,
      "link": [
        4,
        3
      ],
      "name": "Carry Shinecharge",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 55
        },
        "canShinechargeMovementComplex",
        {
          "heatFrames": 55
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ]
    },
    {
      "id": 25,
      "link": [
        4,
        4
      ],
      "name": "Leave with Runway",
      "requires": [],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 2,
          "openEnd": 1
        }
      }
    },
    {
      "id": 26,
      "link": [
        4,
        4
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canHeatedCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 58,
      "link": [
        4,
        5
      ],
      "name": "Come In Shinecharging, Leave With Spark",
      "entranceCondition": {
        "comeInShinecharging": {
          "length": 1,
          "openEnd": 1
        }
      },
      "requires": [
        "canShinechargeMovementTricky",
        "canInsaneJump",
        "canBePatient",
        {
          "or": [
            {
              "enemyDamage": {
                "enemy": "Cacatac",
                "type": "contact",
                "hits": 1
              }
            },
            "Plasma",
            {
              "and": [
                "Wave",
                "Spazer"
              ]
            }
          ]
        },
        {
          "shineChargeFrames": 177
        },
        {
          "shinespark": {
            "frames": 10,
            "excessFrames": 0
          }
        },
        {
          "heatFrames": 220
        }
      ],
      "exitCondition": {
        "leaveWithSpark": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true,
      "devNote": [
        "The canBePatient requirement represents the possible need to retry in case bad RNG causes a Cac spike hit to mess up the strat."
      ]
    },
    {
      "id": 27,
      "link": [
        4,
        6
      ],
      "name": "Base",
      "requires": [
        {
          "heatFrames": 50
        }
      ]
    },
    {
      "id": 28,
      "link": [
        5,
        1
      ],
      "name": "Base",
      "requires": [
        {
          "heatFrames": 160
        }
      ],
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 30
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 70
            }
          ]
        }
      ]
    },
    {
      "id": 29,
      "link": [
        5,
        1
      ],
      "name": "Leave with Runway",
      "requires": [
        {
          "heatFrames": 130
        }
      ],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 8,
          "openEnd": 1,
          "gentleUpTiles": 4
        }
      },
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 50
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 70
            }
          ]
        }
      ]
    },
    {
      "id": 30,
      "link": [
        5,
        1
      ],
      "name": "Right Side Climb",
      "requires": [
        "canTrickyJump",
        {
          "or": [
            "HiJump",
            "canPreciseWalljump"
          ]
        },
        {
          "heatFrames": 140
        }
      ],
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 30
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 70
            }
          ]
        }
      ]
    },
    {
      "id": 31,
      "link": [
        5,
        1
      ],
      "name": "Come In Shinecharging, Leave Shinecharged",
      "entranceCondition": {
        "comeInShinecharging": {
          "length": 5,
          "openEnd": 0
        }
      },
      "requires": [
        "canShinechargeMovementComplex",
        {
          "heatFrames": 160
        },
        {
          "shineChargeFrames": 140
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 59,
      "link": [
        5,
        1
      ],
      "name": "Carry Shinecharge (HiJump)",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 120
        },
        "HiJump",
        "canShinechargeMovementComplex",
        {
          "heatFrames": 120
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 60,
      "link": [
        5,
        1
      ],
      "name": "Carry Shinecharge (Wall Jump)",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 130
        },
        "canWalljump",
        "canShinechargeMovementComplex",
        {
          "heatFrames": 130
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 61,
      "link": [
        5,
        1
      ],
      "name": "Carry Shinecharge (Ledge Grabs)",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 145
        },
        "canShinechargeMovementComplex",
        {
          "heatFrames": 145
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 62,
      "link": [
        5,
        1
      ],
      "name": "Come In Shinecharged, Leave With Spark (HiJump, Bottom Position)",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 70
        },
        "HiJump",
        "canShinechargeMovementComplex",
        {
          "heatFrames": 120
        },
        {
          "shinespark": {
            "frames": 18,
            "excessFrames": 0
          }
        }
      ],
      "exitCondition": {
        "leaveWithSpark": {
          "position": "bottom"
        }
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 63,
      "link": [
        5,
        1
      ],
      "name": "Come In Shinecharged, Leave With Spark (Wall Jump, Bottom Position)",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 90
        },
        "canWalljump",
        "canShinechargeMovementComplex",
        {
          "heatFrames": 135
        },
        {
          "shinespark": {
            "frames": 16,
            "excessFrames": 0
          }
        }
      ],
      "exitCondition": {
        "leaveWithSpark": {
          "position": "bottom"
        }
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 64,
      "link": [
        5,
        1
      ],
      "name": "Come In Shinecharged, Leave With Spark (Ledge Grabs, Bottom Position)",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 100
        },
        "canShinechargeMovementComplex",
        {
          "heatFrames": 145
        },
        {
          "shinespark": {
            "frames": 16,
            "excessFrames": 0
          }
        }
      ],
      "exitCondition": {
        "leaveWithSpark": {
          "position": "bottom"
        }
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 32,
      "link": [
        5,
        2
      ],
      "name": "Reverse Spark",
      "entranceCondition": {
        "comeInShinecharging": {
          "length": 5,
          "openEnd": 1
        }
      },
      "requires": [
        {
          "notable": "Reverse Spark"
        },
        "canShinechargeMovementTricky",
        "canTrickyJump",
        {
          "or": [
            {
              "enemyDamage": {
                "enemy": "Cacatac",
                "type": "spike",
                "hits": 1
              }
            },
            "canBePatient"
          ]
        },
        {
          "or": [
            {
              "shinespark": {
                "frames": 88,
                "excessFrames": 11
              }
            },
            {
              "and": [
                "h_heatProof",
                "canControlShinesparkEnd",
                {
                  "shinespark": {
                    "frames": 88,
                    "excessFrames": 44
                  }
                }
              ]
            }
          ]
        },
        {
          "heatFrames": 825
        },
        "h_getBlueSpeedMaxRunway",
        {
          "or": [
            "canSpeedball",
            {
              "heatFrames": 15
            }
          ]
        }
      ],
      "clearsObstacles": [
        "A"
      ],
      "note": [
        "Either jump over a Cacatac or tank a spike hit.",
        "Perform a mid-air spark through the speed blocks.",
        "Then run to the right and back to get speed to go through the rest.",
        "If performing the spark with low energy, there is a risk of ending the spark above the spikes or in front of the Pirate;",
        "to be safe, assuming Samus has heat protection, begin the shinespark with between 73 and 88 energy, or at least 106 energy;",
        "with a buffered crumble jump to the right, up to 94 energy can work."
      ],
      "devNote": [
        "The canBePatient represents retrying until RNG works out to be able to jump over one of the Cacatacs without taking a hit.",
        "There is a possibility of getting a lucky drop from one of the two Pirates;",
        "but since it is low probability, we don't model it.",
        "The speedball exit is technically not a valid way to leave normally (e.g. in case the next room is heated and Samus needs to jump);",
        "but if necessary, it is possible to unmorph near the transition."
      ]
    },
    {
      "id": 65,
      "link": [
        5,
        2
      ],
      "name": "Reverse Spark With Pause Abuse",
      "entranceCondition": {
        "comeInShinecharging": {
          "length": 5,
          "openEnd": 1
        }
      },
      "requires": [
        {
          "notable": "Reverse Spark With Pause Abuse"
        },
        "canShinechargeMovementTricky",
        "canTrickyJump",
        "canControlShinesparkEnd",
        "canPauseAbuse",
        {
          "resourceAvailable": [
            {
              "type": "RegularEnergy",
              "count": 99
            }
          ]
        },
        {
          "shinespark": {
            "frames": 0,
            "excessFrames": 0
          }
        },
        {
          "resourceConsumed": [
            {
              "type": "ReserveEnergy",
              "count": 80
            }
          ]
        },
        {
          "or": [
            {
              "resourceConsumed": [
                {
                  "type": "ReserveEnergy",
                  "count": 20
                }
              ]
            },
            {
              "and": [
                {
                  "resourceMissingAtMost": [
                    {
                      "type": "Super",
                      "count": 0
                    }
                  ]
                },
                {
                  "or": [
                    {
                      "ammo": {
                        "type": "Missile",
                        "count": 1
                      }
                    },
                    "Grapple",
                    "Plasma",
                    {
                      "and": [
                        "Wave",
                        "Spazer"
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "or": [
            "canPreciseReserveRefill",
            {
              "resourceConsumed": [
                {
                  "type": "ReserveEnergy",
                  "count": 15
                }
              ]
            }
          ]
        },
        {
          "resourceAtMost": [
            {
              "type": "RegularEnergy",
              "count": 1
            }
          ]
        },
        {
          "heatFrames": 0
        }
      ],
      "clearsObstacles": [
        "A"
      ],
      "note": [
        "Either jump over a Cacatac, tank a spike hit, or farm it if possible.",
        "While preparing to spark left through the speed blocks, press pause so that the pause hits during the shinespark wind-up",
        "Using reserves, try to refill to exactly 84 energy, the minimum amount needed to reliably break through the Speed blocks (assuming no heat protection).",
        "Hold jump and left while unpausing, to buffer activating the horizontal shinespark.",
        "After the shinespark ends, run left and press pause before reaching zero energy, tanking the Pirate hit while at zero energy.",
        "Refill to between about 11 and 13 energy, and continue running to the left, using i-frames to pass through the next Pirate.",
        "Continue to pause abuse 4 more times, trying to refill to between 11 and 13 energy each time except for the last.",
        "Arm pumping may be used but is not required and has little benefit;",
        "in any case, arm pumping should not be used until beginning to run through the Speed blocks, otherwise Samus will not obtain blue speed in time and will bonk into them."
      ],
      "devNote": [
        "The zero shinespark requirement is to satisfy the tests, by marking that the shinecharge is used;",
        "the actual shinespark energy usage is accounted for in the resourceConsumed.",
        "This could possibly be rewritten to express the energy usage in the normal way.",
        "We don't include a `h_ShinesparksCostEnergy` requirement here, because even if shinesparks don't cost energy, it is still possible to use heat damage to make the shinespark stop in the correct place.",
        "FIXME: the regular energy required could be reduced in that case."
      ]
    },
    {
      "id": 33,
      "link": [
        5,
        2
      ],
      "name": "Grapple Teleport",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              5,
              3
            ],
            [
              7,
              2
            ]
          ]
        }
      },
      "requires": [
        {
          "heatFrames": 50
        }
      ]
    },
    {
      "id": 34,
      "link": [
        5,
        2
      ],
      "name": "Grapple Teleport Door Lock Skip",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ],
            [
              3,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true
    },
    {
      "id": 35,
      "link": [
        5,
        2
      ],
      "name": "Carry Grapple Teleport (Top Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ]
          ]
        }
      }
    },
    {
      "id": 36,
      "link": [
        5,
        2
      ],
      "name": "Carry Grapple Teleport (Bottom Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              13
            ]
          ]
        }
      }
    },
    {
      "id": 37,
      "link": [
        5,
        2
      ],
      "name": "Grapple Teleport X-Ray Climb",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              18
            ],
            [
              2,
              19
            ],
            [
              2,
              28
            ],
            [
              2,
              29
            ]
          ]
        }
      },
      "requires": [
        "canXRayClimb",
        {
          "heatFrames": 1600
        }
      ],
      "bypassesDoorShell": true,
      "flashSuitChecked": true,
      "note": [
        "Exit the previous room with Samus in a standing pose (while grappled).",
        "After teleporting, press right to release Grapple while staying standing (not being forced into a crouch).",
        "Then X-ray climb to get up to the door transition, without needing to open the door."
      ]
    },
    {
      "id": 38,
      "link": [
        5,
        2
      ],
      "name": "Grapple Teleport X-Ray Climb (Two Screens)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              34
            ]
          ]
        }
      },
      "requires": [
        "canXRayClimb",
        {
          "heatFrames": 2800
        }
      ],
      "bypassesDoorShell": true,
      "flashSuitChecked": true,
      "note": [
        "Exit the previous room with Samus in a standing pose (while grappled).",
        "After teleporting, press right to release Grapple while staying standing (not being forced into a crouch).",
        "Then X-ray climb to get up to the door transition, without needing to open the door."
      ]
    },
    {
      "id": 66,
      "link": [
        5,
        4
      ],
      "name": "Come In Shinecharging, Leave With Spark",
      "entranceCondition": {
        "comeInShinecharging": {
          "length": 5,
          "openEnd": 1
        }
      },
      "requires": [
        "canShinechargeMovementTricky",
        "canTrickyJump",
        {
          "or": [
            {
              "enemyDamage": {
                "enemy": "Cacatac",
                "type": "spike",
                "hits": 1
              }
            },
            "canBePatient"
          ]
        },
        {
          "shinespark": {
            "frames": 10,
            "excessFrames": 0
          }
        },
        {
          "heatFrames": 210
        }
      ],
      "devNote": [
        "The canBePatient represents retrying until RNG works out to be able to jump over one of the Cacatacs without taking a hit."
      ]
    },
    {
      "id": 39,
      "link": [
        5,
        5
      ],
      "name": "Leave with Runway",
      "requires": [],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 6,
          "openEnd": 1
        }
      }
    },
    {
      "id": 40,
      "link": [
        5,
        5
      ],
      "name": "Cacatac Super Farm",
      "requires": [
        "h_heatProof",
        {
          "resetRoom": {
            "nodes": [
              1,
              3,
              4,
              5
            ]
          }
        },
        {
          "partialRefill": {
            "type": "Super",
            "limit": 10
          }
        }
      ],
      "resetsObstacles": [
        "A"
      ]
    },
    {
      "id": 67,
      "link": [
        5,
        5
      ],
      "name": "Cacatac Farm",
      "requires": [
        "h_heatProof",
        {
          "resetRoom": {
            "nodes": [
              1,
              3,
              4,
              5
            ]
          }
        },
        {
          "resourceMissingAtMost": [
            {
              "type": "Super",
              "count": 4
            }
          ]
        },
        {
          "refill": [
            "Super"
          ]
        },
        {
          "partialRefill": {
            "type": "Energy",
            "limit": 200
          }
        }
      ],
      "resetsObstacles": [
        "A"
      ]
    },
    {
      "id": 41,
      "link": [
        5,
        5
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canHeatedCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 42,
      "link": [
        5,
        6
      ],
      "name": "Base",
      "requires": [
        {
          "heatFrames": 215
        }
      ]
    },
    {
      "id": 43,
      "link": [
        6,
        2
      ],
      "name": "Base",
      "requires": [
        {
          "obstaclesCleared": [
            "A"
          ]
        },
        "h_getBlueSpeedMaxRunway",
        {
          "heatFrames": 500
        }
      ],
      "devNote": "The blocks will already be broken, the blue speed is to kill the enemies."
    },
    {
      "id": 44,
      "link": [
        6,
        3
      ],
      "name": "Base",
      "requires": [
        {
          "heatFrames": 50
        }
      ],
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 50
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 70
            }
          ]
        }
      ]
    },
    {
      "id": 45,
      "link": [
        6,
        3
      ],
      "name": "Leave Shinecharged",
      "requires": [
        "h_heatProof",
        {
          "obstaclesCleared": [
            "A"
          ]
        },
        "h_canShineChargeMaxRunway",
        {
          "shineChargeFrames": 80
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "ammo"
          ],
          "requires": []
        }
      ],
      "flashSuitChecked": true,
      "note": "Enabled by coming in from the left and breaking the speed blocks on the way, or coming in charged and opening the path to the left."
    },
    {
      "id": 46,
      "link": [
        6,
        4
      ],
      "name": "Base",
      "requires": [
        {
          "heatFrames": 50
        }
      ],
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 30
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 70
            }
          ]
        }
      ]
    },
    {
      "id": 47,
      "link": [
        6,
        4
      ],
      "name": "Leave Shinecharged",
      "requires": [
        "h_heatProof",
        {
          "obstaclesCleared": [
            "A"
          ]
        },
        "canShinechargeMovement",
        "h_canShineChargeMaxRunway",
        {
          "shineChargeFrames": 120
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "ammo"
          ],
          "requires": []
        }
      ],
      "flashSuitChecked": true,
      "note": "Enabled by coming in from the left and breaking the speed blocks on the way, or coming in charged and opening the path to the left."
    },
    {
      "id": 48,
      "link": [
        6,
        5
      ],
      "name": "Base",
      "requires": [
        {
          "heatFrames": 300
        }
      ]
    },
    {
      "id": 49,
      "link": [
        6,
        5
      ],
      "name": "Quick Platforming Leave Shinecharged",
      "requires": [
        "h_heatProof",
        {
          "obstaclesCleared": [
            "A"
          ]
        },
        "canShinechargeMovementTricky",
        "h_canShineChargeMaxRunway",
        {
          "shinespark": {
            "frames": 12
          }
        }
      ],
      "exitCondition": {
        "leaveWithSpark": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "ammo"
          ],
          "requires": []
        }
      ],
      "note": [
        "Move very quickly to bring a shinespark from the speedway up to the Save Room door.",
        "Preclear the Cacatacs, and it may help to not run while platforming if HiJump is not available."
      ]
    },
    {
      "link": [
        1,
        1
      ],
      "name": "Base (Unlock Door)",
      "requires": [],
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 50
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 110
            }
          ]
        }
      ]
    },
    {
      "link": [
        1,
        1
      ],
      "name": "Base (Come In Normally)",
      "entranceCondition": {
        "comeInNormally": {}
      },
      "requires": []
    },
    {
      "link": [
        2,
        2
      ],
      "name": "Base (Unlock Door)",
      "requires": [],
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 50
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 110
            }
          ]
        }
      ]
    },
    {
      "link": [
        2,
        2
      ],
      "name": "Base (Come In Normally)",
      "entranceCondition": {
        "comeInNormally": {}
      },
      "requires": []
    },
    {
      "link": [
        3,
        3
      ],
      "name": "Base (Unlock Door)",
      "requires": [],
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 50
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 110
            }
          ]
        }
      ]
    },
    {
      "link": [
        3,
        3
      ],
      "name": "Base (Come In Normally)",
      "entranceCondition": {
        "comeInNormally": {}
      },
      "requires": []
    },
    {
      "link": [
        4,
        4
      ],
      "name": "Base (Unlock Door)",
      "requires": [],
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 50
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 110
            }
          ]
        }
      ]
    },
    {
      "link": [
        4,
        4
      ],
      "name": "Base (Come In Normally)",
      "entranceCondition": {
        "comeInNormally": {}
      },
      "requires": []
    },
    {
      "link": [
        5,
        5
      ],
      "name": "Base (Unlock Door)",
      "requires": [],
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 50
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 110
            }
          ]
        }
      ]
    },
    {
      "link": [
        5,
        5
      ],
      "name": "Base (Come In Normally)",
      "entranceCondition": {
        "comeInNormally": {}
      },
      "requires": []
    }
  ],
  "devNote": [
    "FIXME: A moonfall using Multiviolas might be possible to bypass the door shell below."
  ],
  "nextStratId": 68,
  "notables": [
    {
      "id": 1,
      "name": "Reverse Spark",
      "note": "Spark left through the speed blocks, then run to the right and back to get speed to go through the rest."
    },
    {
      "id": 2,
      "name": "Speed Block Moondance",
      "note": [
        "Use SpeedBooster to construct a structure for Moondancing that has 2 top blocks intact, 2 middle blocks removed, and the bottom left block intact but the bottom right block removed.",
        "Clear the other unused Speed blocks and enemies.",
        "Crystal Flash inside the middle hole to standup and then begin Moondancing.",
        "After Samus sinks through the bottom tile, it is possible to wiggle right and then Turn-Around Aim Cancel to escape to the right."
      ]
    },
    {
      "id": 3,
      "name": "Reverse Speedball",
      "note": "Break the speed blocks by jumping over the gap with blue speed and continuing through the room with a speedball."
    },
    {
      "id": 4,
      "name": "Reverse Spark With Pause Abuse",
      "note": [
        "Spark left through the speed blocks with low energy, so that the spark stops before the first Pirate.",
        "Then use a sequence of pause abuses with reserves to cross the room.",
        "This can be done with a single Reserve Tank (no Energy Tanks), from any of the three doors on the right side of the room."
      ]
    }
  ],
  "nextNotableId": 5
}