Manually Built Demos (or MBDs) are demos which are created using manual input (usually 7 frames at a time). It is similar to demo splicing in this respect, as demos can be cut and modified using trial and error to find the most optimal route on a map, although the entire process is very tedious and can take hours to do properly. The term MBD was first coined and popularised by Mohamedraif, and he has created over 160 MBDs, all of which can be found here. TheRealOne and EddyMataGallos are both MBD contributors; however, much less so.
MBDs can be quite useful for highscorers who want to implement tricks or strategies used in MBDs to improve their own runs and/or to try to improve an existing 0th. MBDs, despite their similarity, should not be confused with TAS (Tool Assisted Speedruns), as MBDs are not technically played in frame by frame, but rather manually built using groups of key inputs, due to the way N handles demo data.
How Demo Data Works
Within N, all demos are saved in plain text format, which is then interpreted by N. This is just another one of the many features that make N a really optimised game (as far as storage size is concerned). The demo code is a series of numbers, continuously separated by vertical bars (|), which represent which keys are pressed on each frame, and this is then decoded by N. So, when you are watching a demo on N, its literally a replay, since the game is reproducing automatically each key you pressed on each frame. This technique is used by a lot of other games, but the way it saves the key presses is unique.
Each number between two vertical bars codes 7 frames of run, that is, it contains the information of the key-presses on 7 consecutive frames. Remember that you can be pressing up to three keys at the same frame, which is also saved in this number. Each action (right, left, jump, hold jump, etc.) has got a different and unique value whether they are on the 1st frame of the set, on the 2nd one, etc. To get the final number that codes all 7 frames, you must add up all values. If two keys are pressed at the same frame, the values are also added, of course.
The following table, created by Mohamedraif, contains all values from all possible combinations you need and information you must know in order to be able to MBD. The only thing you need to do is add up. It is highly recommendable, however, that you download and use a spreadhsheet created by Raif that does all the operations automatically.
Demo Data Codes
Demo Data Codes | ||||||||
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
Left Movement |
left | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | left | 0 | 0 | 0 | 0 | 0 | 16 | |
0 | 0 | left | 0 | 0 | 0 | 0 | 256 | |
0 | 0 | 0 | left | 0 | 0 | 0 | 4096 | |
0 | 0 | 0 | 0 | left | 0 | 0 | 65536 | |
0 | 0 | 0 | 0 | 0 | left | 0 | 1048576 | |
0 | 0 | 0 | 0 | 0 | 0 | left | 16777216 | |
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
Right Movement |
right | 0 | 0 | 0 | 0 | 0 | 0 | 2 |
0 | right | 0 | 0 | 0 | 0 | 0 | 32 | |
0 | 0 | right | 0 | 0 | 0 | 0 | 512 | |
0 | 0 | 0 | right | 0 | 0 | 0 | 8192 | |
0 | 0 | 0 | 0 | right | 0 | 0 | 131072 | |
0 | 0 | 0 | 0 | 0 | right | 0 | 2097152 | |
0 | 0 | 0 | 0 | 0 | 0 | right | 33554432 | |
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
1 Frame Jump |
Jump | 0 | 0 | 0 | 0 | 0 | 0 | 12 |
0 | jump | 0 | 0 | 0 | 0 | 0 | 192 | |
0 | 0 | jump | 0 | 0 | 0 | 0 | 3072 | |
0 | 0 | 0 | jump | 0 | 0 | 0 | 49152 | |
0 | 0 | 0 | 0 | jump | 0 | 0 | 786432 | |
0 | 0 | 0 | 0 | 0 | jump | 0 | 12582912 | |
0 | 0 | 0 | 0 | 0 | 0 | jump | 201326592 | |
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
Theoretical Hold Values |
hold | 0 | 0 | 0 | 0 | 0 | 0 | 4 |
0 | hold | 0 | 0 | 0 | 0 | 0 | 64 | |
0 | 0 | hold | 0 | 0 | 0 | 0 | 1024 | |
0 | 0 | 0 | hold | 0 | 0 | 0 | 16384 | |
0 | 0 | 0 | 0 | hold | 0 | 0 | 262144 | |
0 | 0 | 0 | 0 | 0 | hold | 0 | 4194304 | |
0 | 0 | 0 | 0 | 0 | 0 | hold | 67108864 | |
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
Jump Holds From All Frames |
jump | hold | 0 | 0 | 0 | 0 | 0 | 76 |
jump | hold | hold | 0 | 0 | 0 | 0 | 1100 | |
jump | hold | hold | hold | 0 | 0 | 0 | 17484 | |
jump | hold | hold | hold | hold | 0 | 0 | 279628 | |
jump | hold | hold | hold | hold | hold | 0 | 4473932 | |
jump | hold | hold | hold | hold | hold | hold | 71582796 | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | Code | |
0 | jump | hold | 0 | 0 | 0 | 0 | 1216 | |
0 | jump | hold | hold | 0 | 0 | 0 | 17600 | |
0 | jump | hold | hold | hold | 0 | 0 | 279744 | |
0 | jump | hold | hold | hold | hold | 0 | 4474048 | |
0 | jump | hold | hold | hold | hold | hold | 71582912 | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | Code | |
0 | 0 | jump | hold | 0 | 0 | 0 | 19456 | |
0 | 0 | jump | hold | hold | 0 | 0 | 281600 | |
0 | 0 | jump | hold | hold | hold | 0 | 4475904 | |
0 | 0 | jump | hold | hold | hold | hold | 71584768 | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | Code | |
0 | 0 | 0 | jump | hold | 0 | 0 | 311296 | |
0 | 0 | 0 | jump | hold | hold | 0 | 4505600 | |
0 | 0 | 0 | jump | hold | hold | hold | 71614464 | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | Code | |
0 | 0 | 0 | 0 | jump | hold | 0 | 4980736 | |
0 | 0 | 0 | 0 | jump | hold | hold | 72089600 | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | Code | |
0 | 0 | 0 | 0 | 0 | jump | Hold | 79691776 | |
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
Holds From A Jump In Previous 7 Frames |
hold | 0 | 0 | 0 | 0 | 0 | 0 | 4 |
hold | hold | 0 | 0 | 0 | 0 | 0 | 68 | |
hold | hold | hold | 0 | 0 | 0 | 0 | 1092 | |
hold | hold | hold | hold | 0 | 0 | 0 | 17476 | |
hold | hold | hold | hold | hold | 0 | 0 | 279620 | |
hold | hold | hold | hold | hold | hold | 0 | 4473924 | |
hold | hold | hold | hold | hold | hold | hold | 71582788 |