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