Support displaying from an offset in a framebuf

It seems like this is what Silent Hill is doing, I think.  Got some confirmation that this fixes at least one of the Silent Hill games.

Also, be a bit more careful with framebuffers that don't match the display format, mostly for videos, after having relaxed the format check.

-[Unknown]