Emscripten has an OpenGL 1.x implementation and Quake 2 uses pretty much OpenGL 1.1. Some years ago i ported my engine that has a GL1.x-only path to Emscripten and had an SDL backend (i removed it since then) and it took just a couple of hours to "port" (the two main problems i had were that i was doing some unaligned pointer accesses - casting a byte array to a float array to read vertex data - that Emscripten didn't knew how to handle so i wrote a slower path for Emscripten and that the OpenGL 1.x implementation wasn't that great and i had to write some workarounds).