#include <stdio.h>
#include <system.h>
#include <io.h>
#include "background.h"
#include "letters.h"

//read x y coordinates, offset = 0 for x and offset = 1 for y
#define IORD_XY_DATA(base,offset) \
	IORD_16DIRECT(base,(offset)*2)
#define IOWR_SRAM_DATA(base,offset,data)\
	IOWR_16DIRECT(base,(offset)*2,data)
#define IORD_SRAM_DATA(base,offset)\
	IORD_16DIRECT(base,(offset)*2)

	// offset = 0 control panel 32bit
	// offset = 1 control mole 32bit
#define IOWR_CONTROL(base,offset,data) \
	IOWR_32DIRECT(base,(offset)*4,data)

//Initialization
void init()
{
	int base = 0;
	int i;
	int data = 0;

  for(i=0;i<32000;i++)
  {
	  data = background[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE,i,data);

  } //shifted by 64000

 // printf("parameter control_panel_base = %d\n",base);
  for(i=0; i< 16000;i++)
  {
	  data = control_panel[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+64000,i,data); //shift 32000 from the base

  }

 // printf("parameter mole_shape_base = %d\n",base);
  for(i=0; i< 14400;i++)
  {
	  data = mole_shape[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+96000,i,data); //shift 48000 16bit from the base
  }

//writing 26 letters into SRAM
  for(i=0; i<1024;i++)
  {
	  data = A[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+124800,i,data); //shift 48000 16bit from the base
  }

  for(i=0; i<1024;i++)
  {
	  data = B[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+126848,i,data); //shift 48000 16bit from the base
  }

  for(i=0; i<1024;i++)
  {
	  data = C[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+128896,i,data); //shift 48000 16bit from the base
	  base = base +1;
  }
  for(i=0; i<1024;i++)
  {
	  data = D[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+130944,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = E[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+132992,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = F[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+135040,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = G[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+137088,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = H[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+139136,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = I[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+141184,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = J[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+143232,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = K[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+145280,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = L[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+147328,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = M[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+149376,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = N[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+151424,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = O[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+153472,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = P[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+155520,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = Q[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+157568,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = R[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+159616,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = S[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+161664,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = T[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+163712,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = U[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+165760,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = V[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+167808,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = W[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+169856,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = X[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+171904,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = Y[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+173952,i,data); //shift 48000 16bit from the base
  }
  for(i=0; i<1024;i++)
  {
	  data = Z[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+176000,i,data); //shift 48000 16bit from the base
  }

  //write 15 main colors
  for(i=0; i<15;i++)
  {
	  data = xcolor[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+178048,i,data); //shift 48000 16bit from the base
  }

  for(i=0;i<3600;i++)
  {
	  data = clock[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+178078,i,data); //shift 48000 16bit from the base
  }

  for(i=0;i<3600;i++)
  {
	  data = heart[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+185278,i,data); //shift 48000 16bit from the base
  }

  for(i=0;i<3600;i++)
  {
	  data = coin[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+192478,i,data); //shift 48000 16bit from the base
  }

  for(i=0;i<3600;i++)
  {
	  data = indicator[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+199678,i,data); //shift 48000 16bit from the base
  }

  for(i=0;i<14400;i++)
  {
	  data = bottle[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+206878,i,data); //shift 48000 16bit from the base
  }

  for(i=0;i<14400;i++)
  {
	  data = evil[i];
	  IOWR_SRAM_DATA(SRAM_MUX_0_BASE+221278,i,data); //shift 48000 16bit from the base
  }
}


//NEW TOUCH detection

