.osr is a file format containing information about an osu! replay. To use it, the beatmap specified by the file is required in "Songs" folder.
|Byte||1||A single 8 bit value.|
|Short||2||A 2-byte little endian value.|
|Integer||4||A 4-byte little endian value.|
|Long||8||A 8-byte little endian value.|
|ULEB128||Variable||A variable length integer. See ULEB128.|
|String||Variable||Has three parts; a single byte which will be either 0x00, indicating that the next two parts are not present, or 0x0b (decimal 11), indicating that the next two parts are present. If it is 0x0b, there will then be a ULEB128, representing the byte length of the following string, and then the string itself, encoded in UTF-8. See UTF-8|
Byte offsets are not included in this table due to variable length values.
|Byte||Game mode of the replay (0 = osu! Standard, 1 = Taiko, 2 = Catch the Beat, 3 = osu!mania)|
|Integer||Version of the game when the replay was created (ex. 20131216)|
|String||osu! beatmap MD5 hash|
|String||osu! replay MD5 hash (includes certain properties of the replay)|
|Short||Number of 300s|
|Short||Number of 100s in standard, 150s in Taiko, 100s in CTB, 200s in mania|
|Short||Number of 50s in standard, small fruit in CTB, 50s in mania|
|Short||Number of Gekis in standard, Max 300s in mania|
|Short||Number of Katus in standard, 100s in mania|
|Short||Number of misses|
|Integer||Total score displayed on the score report|
|Short||Greatest combo displayed on the score report|
|Byte||Perfect/full combo (1 = no misses and no slider breaks and no early finished sliders)|
|Integer||Mods used. See below for list of mod values.|
|String||Life bar graph: comma separated pairs u/v, where u is the time in milliseconds into the song and v is a floating point value from 0 - 1 that represents the amount of life you have at the given time (0 = life bar is empty, 1= life bar is full)|
|Long||Time stamp (Windows ticks)|
|Integer||Length in bytes of compressed replay data|
|Byte Array||Compressed replay data|
The remaining data contains information about mouse movement and key presses in an LZMA stream.
When decompressed, the text contains data separated by commas. Each piece denotes an action, represented by 4 numbers in the form:
w | x | y | z.
|w||Long||Time in milliseconds since the previous action|
|x||Float||x-coordinate of the cursor from 0 - 512|
|y||Float||y-coordinate of the cursor from 0 - 384|
|z||Integer||Bitwise combination of keys/mouse buttons pressed (M1 = 1, M2 = 2, K1 = 4, K2 = 8) (K1 is always used with M1; K2 is always used with M2: 1+4=5; 2+8=10)|
As seen on the osu! API.
|NoVideo||4 (2)||this isn't really a mod anymore.|
|Nightcore||512 (9)||always used with DT : 512 + 64 = 576|
|TargetPractice||8388608 (23)||osu!cuttingedge only|