reliable sliding window - RainMz/NintendoClients GitHub Wiki

The reliable sliding window ensures that all packets arrive and in the correct order. Large messages are fragmented. The reliable sliding window is used by the following protocols:

When a reliable sliding window is used, messages are wrapped as follows:

Up to 5.12:

Offset Size Description
0x0 2 Flags
0x2 2 Payload size
0x4 4 Padding
0x8 4 Sequence id
0xC 4 Acknowledgement id
0x10 8 Extra acknowledgements
0x18 Payload

5.14:

Offset Size Description
0x0 2 Flags
0x2 2 Payload size
0x4 2 Sequence id
0x6 8 Unknown
0xE 8 Unknown
0x16 Payload

5.17 - 5.19:

Offset Size Description
0x0 1 Flags
0x1 1 Stream id
0x2 2 Payload size
0x4 2 Sequence id
0x6 2 Lowest sequence id pending ack
0x8 1 Number of multicast constant ids (N)
0x9 8*N Multicast constant ids
Payload

5.31:

Offset Size Description
0x0 1 Flags
0x1 1 Stream id
0x2 2 Payload size
0x4 2 Sequence id
0x6 2 Unknown
0x8 1 Unknown
0x9 4*N Unknown
Payload

Flags

Flag Description
1 Has payload
2 First fragment
4 Last fragment
8 Is initialize
16 Is compressed
32 Reset
64 Reset ack
⚠️ **GitHub.com Fallback** ⚠️