SetViewport doesn't centre the coordinates you specify within the viewport. You use it to set the top/left of the viewport. You're probably finding that the viewport is stuck showing the bottom of the screen. To centre your character vertically at all times, you could try something like this:
Code: ags
Or even something like this if you want the middle of the character:
Code: ags
SetViewport(0, cManhat.y - (System.ViewportHeight / 2));
Or even something like this if you want the middle of the character:
ViewFrame *frame;
frame = Game.GetViewFrame(cManhat.View, cManhat.Loop, cManhat.Frame);
SetViewport(0, cManhat.y - ((Game.SpriteHeight[frame.Graphic] + System.ViewportHeight) / 2));