表示画面のサイズ width,height
1チップのサイズ cx,cy
画面の中央にキャラを表示するものとして

キャラの現在のワールド上座標を(x,y)とすると

表示画面原点のワールド上座標は
view_x = x - width/2;
view_y = y - height/2;

チップサイズ単位のグリッドからのずれは
offset_x = view_x % cx;
offset_y = view_y % cy;

したがって画面に敷き詰めるチップのposy行posx列目
の描画位置は
draw_x = posx*cx - offset_x;
draw_y = posy*cy - offset_y;

マップデータ2次元配列上の初期位置は
ini_x = view_x/cx;
ini_y = view_y/cy;

したがってposy行posx列目のチップのデータは
map_data[posy + ini_y][posx + ini_x]

ドット単位のスクロールをしたければ(x,y)を適当に
増減すればいい。