I finally made proper vsprintf. Vsprintf was always pain in the neck, so I'm very happy that I finally fixed this.
How did I implement this vsprintf? I just parsed the string to the proper format specified in the Microsoft document. Nothing special, I just paid close attention to the datasheets.
Now I'm going to implement interrupt system. I'm planning on making it as customizable and flexible as possible, while maintaining overall simplicity.