using System.Collections.Generic;
const int WIDTH = 64, HEIGHT = 32;
public static void Main()
int[] inputMap = new int[WIDTH*HEIGHT];
for(int i=0;i<inputMap.Length;i++){
int[] outputMap = new int[viewMapWidth*viewMapHeight];
WriteTileRange(inputMap,outputMap,0,0,viewMapWidth,viewMapHeight);
static void OutputTheMap(int[] outputMap){
for(int i=0; i<outputMap.Length; i++){
Console.Write($"{outputMap[i].ToString("00000")},");
static void WriteTileRange(int[] inputMap, int[] outputMap, int x, int y, int w,int h){
Console.WriteLine($"{indexScreenToMap(idx)}={idx}");
outputMap[indexScreenToMap(idx)] = inputMap[idx];
static void WriteTileDelta(int[] inputMap, int[] outputMap, int x1, int y1, int x2, int y2, int w, int h){
WriteTileRange(inputMap,outputMap,xoffset1,yoffset2,Math.Abs(xdelta),h-Math.Abs(ydelta));
WriteTileRange(inputMap,outputMap,xoffset2,yoffset1,w-Math.Abs(xdelta),Math.Abs(ydelta));
if (ydelta!=0 && ydelta!=0){
WriteTileRange(inputMap,outputMap,xoffset1,yoffset1,Math.Abs(xdelta),Math.Abs(ydelta));
static int indexScreenToMap(int idx)
(idx % halfViewMapWidth) +
viewMapHeight*((idx%viewMapWidth)/ halfViewMapWidth)