*Things to note* 1. I did not test this on an O3DS. Too lazy to do it. 2. There are two version, one w/o comments and one with comments (GRPPUT_C). 3. I'm still a novice, so I apologize in advance for any inconveniences while reading the code. Let me know if you have any questions.