More Adhoc functions implemented

p.Do(...) reads data from the savestate, writes data to the savestate, or verifies the savestate depending on what is being done.  DoState() is called in all 3 cases.  The order absolutely has an effect; it must be exactly what is in the savestate file.

You need to use a version check for new things you add.  Check other places like sceGe.cpp to see how this is done.

CoreTiming's events are reset every game, so it should be called each time a game is loaded.  RestoreRegisterEvent() should be called on savestates, but it's worth noting that an event may have never been registered in an older savestate.  sceDisplay.cpp's savestate code has an example of this.

-[Unknown]