static void GenerateGiantSteps(const ZZ_pX& f, const ZZ_pX& h, long l, FileList& flist, long verbose) { double t; if (verbose) { cerr << "generating giant steps..."; t = GetTime(); } ZZ_pXModulus F; build(F, f); ZZ_pXArgument H; build(H, h, F, 2*SqrRoot(F.n)); ZZ_pX h1; h1 = h; long i; if (!use_files) { (*GiantStepFile).SetLength(l); } for (i = 1; i <= l-1; i++) { if (use_files) { ofstream s; OpenWrite(s, FileName("giant", i), flist); s << h1 << "\n"; CloseWrite(s); } else (*GiantStepFile)(i) = h1; CompMod(h1, h1, H, F); if (verbose) cerr << "+"; } if (use_files) { ofstream s; OpenWrite(s, FileName("giant", i), flist); s << h1 << "\n"; CloseWrite(s); } else (*GiantStepFile)(i) = h1; if (verbose) cerr << (GetTime()-t) << "\n"; }
boolean CA_WriteFile(const char *filename, const void *ptr, long length) { ssize_t l; int handle; handle = OpenWrite(filename); if (handle == -1) return false; l = WriteBytes(handle, (const byte *)ptr, length); if (l == -1) { perror("CA_FarWrite"); return false; } else if (l == 0) { fprintf(stderr, "CA_FarWrite hit EOF?\n"); return false; } else if (l != length) { fprintf(stderr, "CA_FarWrite only wrote %d out of %ld\n", l, length); return false; } CloseWrite(handle); return true; }
int palPipe::Close() { int r; r = CloseRead(); if (r) { return r; } r = CloseWrite(); return r; }
static void GenerateBabySteps(ZZ_pEX& h1, const ZZ_pEX& f, const ZZ_pEX& h, long k, FileList& flist, long verbose) { double t; if (verbose) { cerr << "generating baby steps..."; t = GetTime(); } ZZ_pEXModulus F; build(F, f); ZZ_pEXArgument H; #if 0 double n2 = sqrt(double(F.n)); double n4 = sqrt(n2); double n34 = n2*n4; long sz = long(ceil(n34/sqrt(sqrt(2.0)))); #else long sz = 2*SqrRoot(F.n); #endif build(H, h, F, sz); h1 = h; long i; if (!use_files) { (*BabyStepFile).SetLength(k-1); } for (i = 1; i <= k-1; i++) { if (use_files) { ofstream s; OpenWrite(s, FileName("baby", i), flist); s << h1 << "\n"; CloseWrite(s); } else (*BabyStepFile)(i) = h1; CompMod(h1, h1, H, F); if (verbose) cerr << "+"; } if (verbose) cerr << (GetTime()-t) << "\n"; }
void Close() { CloseRead(); CloseWrite(); }
myint SaveTheGame(const char *fn, const char *tag, myint dx, myint dy) { objtype *ob; myint fd, i, x, y; int32_t cs; fd = OpenWrite(fn); if (fd != -1) { WriteBytes(fd, (byte *)GAMEHDR, 8); WriteBytes(fd, (byte *)SAVTYPE, 4); WriteInt32(fd, 0x00000000); /* write version */ WriteBytes(fd, (byte *)GAMETYPE, 4); WriteInt32(fd, time(NULL)); WriteInt32(fd, 0x00000000); WriteInt32(fd, 0x00000000); /* write checksum (placeholder) */ WriteBytes(fd, (byte *)tag, 32); /* write savegame name */ DiskFlopAnim(dx, dy); WriteInt32(fd, gamestate_difficulty); WriteInt32(fd, gamestate.mapon); WriteInt32(fd, gamestate.oldscore); WriteInt32(fd, gamestate.score); WriteInt32(fd, gamestate.nextextra); WriteInt32(fd, gamestate.lives); WriteInt32(fd, gamestate.health); WriteInt32(fd, gamestate.ammo); WriteInt32(fd, gamestate.keys); WriteInt32(fd, gamestate.bestweapon); WriteInt32(fd, gamestate.weapon); WriteInt32(fd, gamestate.chosenweapon); WriteInt32(fd, gamestate.faceframe); WriteInt32(fd, gamestate.attackframe); WriteInt32(fd, gamestate.attackcount); WriteInt32(fd, gamestate.weaponframe); WriteInt32(fd, gamestate_episode); WriteInt32(fd, gamestate.secretcount); WriteInt32(fd, gamestate.treasurecount); WriteInt32(fd, gamestate.killcount); WriteInt32(fd, gamestate.secrettotal); WriteInt32(fd, gamestate.treasuretotal); WriteInt32(fd, gamestate.killtotal); WriteInt32(fd, gamestate.TimeCount); WriteInt32(fd, gamestate.killx); WriteInt32(fd, gamestate.killy); WriteInt8(fd, gamestate.victoryflag); DiskFlopAnim(dx, dy); #ifdef SPEAR for (i = 0; i < 20; i++) { #else for (i = 0; i < 8; i++) { #endif WriteInt32(fd, LevelRatios[i].kill); WriteInt32(fd, LevelRatios[i].secret); WriteInt32(fd, LevelRatios[i].treasure); WriteInt32(fd, LevelRatios[i].time); } DiskFlopAnim(dx, dy); WriteBytes(fd, (byte *)tilemap, 64*64); /* MAPSIZE * MAPSIZE */ DiskFlopAnim(dx, dy); for (x = 0; x < 64; x++) for (y = 0; y < 64; y++) WriteInt32(fd, actorat[x][y]); DiskFlopAnim(dx, dy); WriteBytes(fd, (byte *)&areabyplayer, 8); for (ob = player; ob; ob = obj_next(ob)) { DiskFlopAnim(dx, dy); WriteInt32(fd, obj_id(ob)); WriteInt32(fd, ob->active); WriteInt32(fd, ob->ticcount); WriteInt32(fd, ob->obclass); WriteInt32(fd, ob->state); WriteInt8(fd, ob->flags); WriteInt32(fd, ob->distance); WriteInt32(fd, ob->dir); WriteInt32(fd, ob->x); WriteInt32(fd, ob->y); WriteInt32(fd, ob->tilex); WriteInt32(fd, ob->tiley); WriteInt8(fd, ob->areanumber); WriteInt32(fd, ob->viewx); WriteInt32(fd, ob->viewheight); WriteInt32(fd, ob->transx); WriteInt32(fd, ob->transy); WriteInt32(fd, ob->angle); WriteInt32(fd, ob->hitpoints); WriteInt32(fd, ob->speed); WriteInt32(fd, ob->temp1); WriteInt32(fd, ob->temp2); //WriteInt32(fd, ob->temp3); } WriteInt32(fd, 0xFFFFFFFF); /* end of actor list */ DiskFlopAnim(dx, dy); WriteInt32(fd, laststatobj - statobjlist); /* ptr offset */ for (i = 0; i < 400; i++) { /* MAXSTATS */ WriteInt8(fd, statobjlist[i].tilex); WriteInt8(fd, statobjlist[i].tiley); WriteInt32(fd, statobjlist[i].shapenum); WriteInt8(fd, statobjlist[i].is_bonus); WriteInt8(fd, statobjlist[i].itemnumber); } DiskFlopAnim(dx, dy); for (i = 0; i < 64; i++) { /* MAXDOORS */ WriteInt32(fd, doorposition[i]); } DiskFlopAnim(dx, dy); for (i = 0; i < 64; i++) { /* MAXDOORS */ WriteInt8(fd, doorobjlist[i].tilex); WriteInt8(fd, doorobjlist[i].tiley); WriteInt8(fd, doorobjlist[i].vertical); WriteInt8(fd, doorobjlist[i].lock); WriteInt8(fd, doorobjlist[i].action); WriteInt32(fd, doorobjlist[i].ticcount); } DiskFlopAnim(dx, dy); WriteInt32(fd, pwallstate); WriteInt32(fd, pwallx); WriteInt32(fd, pwally); WriteInt32(fd, pwalldir); WriteInt32(fd, pwallpos); DiskFlopAnim(dx, dy); CloseWrite(fd); fd = OpenRead(fn); ReadSeek(fd, 64, SEEK_SET); cs = CalcFileChecksum(fd, ReadLength(fd) - 64); CloseRead(fd); fd = OpenWriteAppend(fn); WriteSeek(fd, 28, SEEK_SET); WriteInt32(fd, cs); CloseWrite(fd); } else {
myint WriteConfig() { #ifndef EMBEDDED #ifdef ENABLE_CONTROLS myint i; #endif myint fd; int32_t cs; fd = OpenWrite(configname); if (fd != -1) { WriteBytes(fd, (byte *)GAMEHDR, 8); /* WOLF3D, 0, 0 */ WriteBytes(fd, (byte *)CFGTYPE, 4); /* CFG, 0 */ WriteInt32(fd, 0x00000000); /* Version (integer) */ WriteBytes(fd, (byte *)GAMETYPE, 4); /* XXX, 0 */ WriteInt32(fd, time(NULL)); /* Time */ WriteInt32(fd, 0x00000000); /* Padding */ WriteInt32(fd, 0x00000000); /* Checksum (placeholder) */ #ifdef ENABLE_HIGHSCORES for (i = 0; i < 7; i++) { /* MaxScores = 7 */ WriteBytes(fd, (byte *)Scores[i].name, 58); WriteInt32(fd, Scores[i].score); WriteInt32(fd, Scores[i].completed); WriteInt32(fd, Scores[i].episode); } #endif WriteInt32(fd, viewsize); /* sound config, etc. (to be done) */ WriteInt32(fd, 0); /* padding */ WriteInt32(fd, 0); /* padding */ WriteInt32(fd, 0); /* padding */ WriteInt32(fd, 0); /* padding */ WriteInt32(fd, 0); /* padding */ WriteInt32(fd, 0); /* padding */ WriteInt32(fd, 0); /* padding */ WriteInt32(fd, 0); /* padding */ #ifdef ENABLE_CONTROLS /* direction keys */ for (i = 0; i < 4; i++) { WriteInt32(fd, dirscan[i]); } /* other game keys */ for (i = 0; i < 8; i++) { /* NUMBUTTONS = 8 */ WriteInt32(fd, buttonscan[i]); } /* mouse enabled */ WriteInt8(fd, mouseenabled); /* mouse buttons */ for (i = 0; i < 4; i++) { WriteInt32(fd, buttonmouse[i]); } #endif /* mouse adjustment */ WriteInt32(fd, mouseadjustment); /* joystick (to be done) */ WriteInt32(fd, -1); CloseWrite(fd); fd = OpenRead(configname); ReadSeek(fd, 32, SEEK_SET); cs = CalcFileChecksum(fd, ReadLength(fd) - 32); CloseRead(fd); fd = OpenWriteAppend(configname); WriteSeek(fd, 28, SEEK_SET); WriteInt32(fd, cs); CloseWrite(fd); } #endif return 0; }