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); } }
//------------------------------------------------------------------------- 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); }
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(".."); }
//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(); }
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(".."); }
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(".."); }
//------------------------------------------------------------------------- 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(); }
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); } }