Initial port

Still needs sound. Note: won't run with optimizations so release build
is -O0