Beispiel #1
0
void loadscores(void)
  {
  int count,count2;
  int version;
  FILE *fp;
  char path[PATH_MAX];

  for (count=0;count<32;count++)
  for (count2=0;count2<16;count2++)
    {
    highscore[count][count2].time=0;
    strcpy(highscore[count][count2].name,"Empty");
    }

  if ((fp=fopen(userpath(path,NULL,"gish.his"),"rb"))!=NULL)
    {
    fread2(&version,4,1,fp);
    if (version==2)
      {
      for (count=0;count<32;count++)
      for (count2=0;count2<16;count2++)
        {
        fread2(&highscore[count][count2].time,4,1,fp);
        fread2(highscore[count][count2].name,1,32,fp);
        }
      }
    fclose(fp);
    }
  }
Beispiel #2
0
//-------------------------------------------------------------------------
static void thread_state_restore(uint8_t index, uint8_t * filename)
{
    MYFILE *fp;
    uint8_t threadsize;
    uint16_t threadramsize;
    uint8_t *internal_ram_start;
    threadsize = sizeof(struct thread);
    threadramsize =
        (uint16_t) ((uint8_t *) thread_table[index].ramend -
                    (uint8_t *) thread_table[index].ramstart + 1);
    internal_ram_start = (uint8_t *) thread_table[index].ramstart;
    fp = fsopen((char *)filename, "r");
    fread2(fp, &thread_table[index], threadsize);
    fseek2(fp, threadsize, 1);
    fread2(fp, internal_ram_start, threadramsize);
    fclose2(fp);
}
Beispiel #3
0
void loadmappack(void)
  {
  int count;
  int version;
  int changeddir;

  changeddir=chdir("level");

  if ((fp=fopen(mappack.filename,"rb"))!=NULL)
    {
    fread2(&version,4,1,fp);

    if (version==1)
      {
      fread2(&mappack.numoflevels,4,1,fp);
      fread2(mappack.name,1,32,fp);
      for (count=0;count<64;count++)
        {
        fread2(mappack.level[count],1,32,fp);
        fread2(mappack.levelname[count],1,32,fp);
        fread2(mappack.levelmusic[count],1,32,fp);
        }
      for (count=0;count<16;count++)
        fread2(mappack.ending[count],1,64,fp);
      }

    fclose(fp);
    }

  if (changeddir==0)
    chdir("..");
  }
Beispiel #4
0
//get patch request
void reply_fromNodeToPC_type2(uint8_t * receivebuffer)
{
    uint16_t pos;
    //disabletracingfunction();

    pos = ((uint16_t) receivebuffer[4]) * 256 + receivebuffer[5];
    reply[0] = 26;
    reply[1] = 125;
    reply[2] = nodeid;
    reply[3] = pos / 256;
    reply[4] = pos % 256;
    fseek2(fp, (int32_t) pos, 0);
    fread2(fp, &reply[6], 20);
    StandardSocketSend(0xefef, 0xffff, 32, reply);
    
   // enabletracingfunction();
}
Beispiel #5
0
void loadplayermappack(void)
  {
  int count;
  int version;
  int changeddir;
  char filename[32];

  changeddir=chdir("player");

  count=0;
  while (count<24 && mappack.filename[count]!='.')
    {
    filename[count]=mappack.filename[count];
    count++;
    }
  filename[count]=0;

  strcat(filename,".gpp");

  playermappack[playernum].levelnum=0;

  if ((fp=fopen(filename,"rb"))!=NULL)
    {
    fread2(&version,4,1,fp);
    if (version==1)
      {
      for (count=0;count<8;count++)
        {
        fread2(&playermappack[count].levelnum,4,1,fp);
        fread2(&playermappack[count].numoflives,4,1,fp);
        fread2(&playermappack[count].totalscore,4,1,fp);
        fread2(&playermappack[count].difficulty,4,1,fp);
        fread2(&player[count].highscore,4,1,fp);
        }
      }
    fclose(fp);
    }

  if (changeddir==0)
    chdir("..");
  }
Beispiel #6
0
void loadoggs(void)
  {
  int count;
  int oggnum;
  int changeddir;

  changeddir=chdir("music");

  oggnum=0;
  if ((fp=fopen("sewer.ogg","rb"))!=NULL)
    {
    fseek(fp,0,SEEK_END);
    oggmemoryfile[oggnum].datasize=ftell(fp);
    oggmemoryfile[oggnum].dataread=0;
    oggmemoryfile[oggnum].data=(char *) malloc(oggmemoryfile[oggnum].datasize);

    fseek(fp,0,SEEK_SET);

    fread2(oggmemoryfile[oggnum].data,1,oggmemoryfile[oggnum].datasize,fp);

    fclose(fp);
    }

#ifndef DEMO
  oggnum=1;
  if ((fp=fopen("cave.ogg","rb"))!=NULL)
    {
    fseek(fp,0,SEEK_END);
    oggmemoryfile[oggnum].datasize=ftell(fp);
    oggmemoryfile[oggnum].dataread=0;
    oggmemoryfile[oggnum].data=(char *) malloc(oggmemoryfile[oggnum].datasize);

    fseek(fp,0,SEEK_SET);

    fread2(oggmemoryfile[oggnum].data,1,oggmemoryfile[oggnum].datasize,fp);

    fclose(fp);
    }
  oggnum=2;
  if ((fp=fopen("hell.ogg","rb"))!=NULL)
    {
    fseek(fp,0,SEEK_END);
    oggmemoryfile[oggnum].datasize=ftell(fp);
    oggmemoryfile[oggnum].dataread=0;
    oggmemoryfile[oggnum].data=(char *) malloc(oggmemoryfile[oggnum].datasize);

    fseek(fp,0,SEEK_SET);

    fread2(oggmemoryfile[oggnum].data,1,oggmemoryfile[oggnum].datasize,fp);

    fclose(fp);
    }
  oggnum=3;
  if ((fp=fopen("egypt.ogg","rb"))!=NULL)
    {
    fseek(fp,0,SEEK_END);
    oggmemoryfile[oggnum].datasize=ftell(fp);
    oggmemoryfile[oggnum].dataread=0;
    oggmemoryfile[oggnum].data=(char *) malloc(oggmemoryfile[oggnum].datasize);

    fseek(fp,0,SEEK_SET);

    fread2(oggmemoryfile[oggnum].data,1,oggmemoryfile[oggnum].datasize,fp);

    fclose(fp);
    }
  oggnum=4;
  if ((fp=fopen("church.ogg","rb"))!=NULL)
    {
    fseek(fp,0,SEEK_END);
    oggmemoryfile[oggnum].datasize=ftell(fp);
    oggmemoryfile[oggnum].dataread=0;
    oggmemoryfile[oggnum].data=(char *) malloc(oggmemoryfile[oggnum].datasize);

    fseek(fp,0,SEEK_SET);

    fread2(oggmemoryfile[oggnum].data,1,oggmemoryfile[oggnum].datasize,fp);

    fclose(fp);
    }
  oggnum=5;
  if ((fp=fopen("boss.ogg","rb"))!=NULL)
    {
    fseek(fp,0,SEEK_END);
    oggmemoryfile[oggnum].datasize=ftell(fp);
    oggmemoryfile[oggnum].dataread=0;
    oggmemoryfile[oggnum].data=(char *) malloc(oggmemoryfile[oggnum].datasize);

    fseek(fp,0,SEEK_SET);

    fread2(oggmemoryfile[oggnum].data,1,oggmemoryfile[oggnum].datasize,fp);

    fclose(fp);
    }

  if (changeddir==0)
    chdir("..");

  changeddir=chdir("data");

  oggnum=6;
  if ((fp=fopen("async.dat","rb"))!=NULL)
    {
    fseek(fp,0,SEEK_END);
    oggmemoryfile[oggnum].datasize=ftell(fp);
    oggmemoryfile[oggnum].dataread=0;
    oggmemoryfile[oggnum].data=(char *) malloc(oggmemoryfile[oggnum].datasize);

    fseek(fp,0,SEEK_SET);

    fread2(oggmemoryfile[oggnum].data,1,oggmemoryfile[oggnum].datasize,fp);

    fclose(fp);
    }

  if (changeddir==0)
    chdir("..");

  changeddir=chdir("music");

  oggnum=7;
  if ((fp=fopen("versus.ogg","rb"))!=NULL)
    {
    fseek(fp,0,SEEK_END);
    oggmemoryfile[oggnum].datasize=ftell(fp);
    oggmemoryfile[oggnum].dataread=0;
    oggmemoryfile[oggnum].data=(char *) malloc(oggmemoryfile[oggnum].datasize);

    fseek(fp,0,SEEK_SET);

    fread2(oggmemoryfile[oggnum].data,1,oggmemoryfile[oggnum].datasize,fp);

    fclose(fp);
    }
#endif

  oggnum=8;
  if ((fp=fopen("intro.ogg","rb"))!=NULL)
    {
    fseek(fp,0,SEEK_END);
    oggmemoryfile[oggnum].datasize=ftell(fp);
    oggmemoryfile[oggnum].dataread=0;
    oggmemoryfile[oggnum].data=(char *) malloc(oggmemoryfile[oggnum].datasize);

    fseek(fp,0,SEEK_SET);

    fread2(oggmemoryfile[oggnum].data,1,oggmemoryfile[oggnum].datasize,fp);

    fclose(fp);
    }

  if (changeddir==0)
    chdir("..");
  }
Beispiel #7
0
//-------------------------------------------------------------------------
void reply_fromNodeToPC_type1(uint8_t * receivebuffer)
{
    uint8_t blockid;
    char filename[13];
    int fid;
    uint16_t filesize;
    uint16_t round;
    uint16_t remain;
    uint16_t i;
    uint8_t newblockid;
    uint8_t temp1, temp2;

    blockid = receivebuffer[3];
    mystrncpy(filename, (char *)&receivebuffer[4], receivebuffer[0] - 4);
    filename[receivebuffer[0] - 4] = '\0';
    newblockid = existBlockAddr(filename, (int)blockid);
    reply[1] = 124;
    reply[2] = nodeid;
    fid = getFreeFid();
    openFile(newblockid, fid, 1);
    fp = &fidtable[fid];
    filesize = fp->size;
    temp1 = filesize / 256;
    temp2 = filesize % 256;
    reply[3] = temp1;
    reply[4] = temp2;
    //disabletracingfunction();
    //send out the size 
    StandardSocketSend(0xefef, 0xffff, 32, reply);
    
    //    StandardSocketSend(0xefef, 0xffff, 32, reply);
    //sleepThread( 100 );
    reply[3] = newblockid;
    round = filesize / 20;
    remain = filesize % 20;
    for (i = 0; i < round; i++)
    {
        fread2(fp, &reply[6], 20);
        fseek2(fp, 20, 1);
        reply[0] = 26;
        temp1 = i / 256;
        temp2 = i % 256;
        reply[4] = temp1;
        reply[5] = temp2;
        //printStringN(reply,32);                   
        // sleepThread( 100 );
        StandardSocketSend(0xefef, 0xffff, 32, reply);
    }
    if (remain > 0)
    {
        fread2(fp, &reply[6], remain);
        reply[0] = (uint8_t) remain + 6;
        reply[4] = round / 256;
        reply[5] = round % 256;
        round++;
        //printStringN(reply,32);
        //sleepThread( 25 );
        StandardSocketSend(0xefef, 0xffff, 32, reply);
    }
    temp1 = round / 256;
    temp2 = round % 256;
    //terminate signal  is here!
    reply[0] = 7;
    reply[3] = 0xef;
    reply[4] = 0xef;
    reply[5] = temp1;
    reply[6] = temp2;
    //ephread( 100 );
    StandardSocketSend(0xefef, 0xffff, 32, reply);
    //sleepThread( 100 );
    StandardSocketSend(0xefef, 0xffff, 32, reply);
    //sleepThread( 100 );
    StandardSocketSend(0xefef, 0xffff, 32, reply);
    //sleepThread( 100 );
    StandardSocketSend(0xefef, 0xffff, 32, reply);
    //do not close now!
    //       fclose2(fp); 
    
    //enabletracingfunction();
}
Beispiel #8
0
void loadplayers(void)
  {
  int count;
  int version;

  if ((fp=fopen("gish.pla","rb"))!=NULL)
    {
    fread2(&version,4,1,fp);
    if (version==2)
      {
      for (count=0;count<8;count++)
        {
        fread2(player[count].name,1,32,fp);
        fread2(&player[count].levelnum,4,1,fp);
        fread2(&player[count].numoflives,4,1,fp);
        fread2(&player[count].totalscore,4,1,fp);
        player[count].difficulty=1;
        fread2(&player[count].gamepassed,4,1,fp);
        fread2(&player[count].highscore,4,1,fp);
        fread2(player[count].unlock,4,16,fp);
        }
      }
    if (version==3)
      {
      for (count=0;count<8;count++)
        {
        fread2(player[count].name,1,32,fp);
        fread2(&player[count].levelnum,4,1,fp);
        fread2(&player[count].numoflives,4,1,fp);
        fread2(&player[count].totalscore,4,1,fp);
        fread2(&player[count].difficulty,4,1,fp);
        fread2(&player[count].gamepassed,4,1,fp);
        fread2(&player[count].highscore,4,1,fp);
        fread2(player[count].unlock,4,16,fp);
        }
      }
    fclose(fp);
    }
  }