You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The term "key checkpoints" were used to describe the literal effect of certain checkpoints' check area being values other than 0 (to signal the finish line), and 255 (to signal a normal checkpoint). However, we now have a much better model for understanding how checkpoints are searched, and referring to "key checkpoints" actively makes game code harder to dissect and understand.
Sectors are, very simply, groups of checkpoints. Consider the following example, assuming the value 255 signals that the checkpoint is "normal" (and thus, a continuation of the current sector):
ID
Sector
0
0
1
255
2
255
3
255
4
1
5
255
6
255
7
255
...
...
20
5
21
255
22
255
23
255
We can infer from this snippet that the known sectors formed look like this:
Sector
List of IDs
0
0, 1, 2, 3
1
4, 5, 6, 7
5
20, 21, 22, 23
When we search for the player's current checkpoint, we search the current, the next, and the previous sectors in their entirety. The sectors determine the boundaries of the search. Because sector 5 is the highest observable sector ID, when we search for the player last seen in sector 0, sectors 5, 0, and 1 will be included in the search (due to those sectors being the previous, current, and next sectors, respectively).
Consider what we currently refer to in MapdataCheckPoint as m_lastKcpType, which takes the highest possible value of every checkArea in the KMP. However, knowing what we know now, this can be more elegantly labeled as m_highestSector (or some other label that communicates its relationship with the finish line). We can use this to grasp that moving from sector 0 (which houses the finish line checkpoint) into this highest sector from the finish line checkpoint will result in a lap decrement. The opposite is also true - moving from this highest sector into the finish line checkpoint will result in a lap increment.
The text was updated successfully, but these errors were encountered:
Nintendo mistakenly trusts that normal checkpoints cannot be entered without passing through either boundary. This leads to the game knowing where you are (in certain cases), but not updating the sector. This is notably why you are required to hit the sector boundary for ultra shortcuts - otherwise, the game would never recognize you've exited sector 0. This is fixable as a mod to the base game by recursing the previous checkpoint to find its corresponding sector ID, but we cannot implement it here without introducing desyncs.
The term "key checkpoints" were used to describe the literal effect of certain checkpoints' check area being values other than 0 (to signal the finish line), and 255 (to signal a normal checkpoint). However, we now have a much better model for understanding how checkpoints are searched, and referring to "key checkpoints" actively makes game code harder to dissect and understand.
Sectors are, very simply, groups of checkpoints. Consider the following example, assuming the value 255 signals that the checkpoint is "normal" (and thus, a continuation of the current sector):
We can infer from this snippet that the known sectors formed look like this:
When we search for the player's current checkpoint, we search the current, the next, and the previous sectors in their entirety. The sectors determine the boundaries of the search. Because sector 5 is the highest observable sector ID, when we search for the player last seen in sector 0, sectors 5, 0, and 1 will be included in the search (due to those sectors being the previous, current, and next sectors, respectively).
Consider what we currently refer to in
MapdataCheckPoint
asm_lastKcpType
, which takes the highest possible value of everycheckArea
in the KMP. However, knowing what we know now, this can be more elegantly labeled asm_highestSector
(or some other label that communicates its relationship with the finish line). We can use this to grasp that moving from sector 0 (which houses the finish line checkpoint) into this highest sector from the finish line checkpoint will result in a lap decrement. The opposite is also true - moving from this highest sector into the finish line checkpoint will result in a lap increment.The text was updated successfully, but these errors were encountered: