better structure for the game code

shouldn't do everything in the NMI interrupt - only drawing should
happen there in order to make sure that gets done during vblank,
everything else should happen in the main loop