Learning Low-Level Computing and C++ by Making a Game Boy Emulator