static void msg_command( struct mg_connection* nc, const char* p, int len ) { const char* cmd = p; int cmd_len = param_len( p, len ); if ( cmd_len == -1 ) { perror("cmd_len == -1"); return; } p += (cmd_len+1); len -= (cmd_len+1); if ( strncmp( cmd, "SAVE", cmd_len ) == 0 ) { msg_save( p, len ); return; } if ( strncmp( cmd, "RM", cmd_len ) == 0 ) { msg_rm( p, len ); return; } if ( strncmp( cmd, "JOIN", cmd_len ) == 0) { send_sources(nc); return; } if ( strncmp( cmd, "ARCHIVE", cmd_len ) == 0) { save_archive(); return; } if ( strncmp( cmd, "SAVE-ALL", cmd_len ) == 0 ) { save_all(nc); return; } printf("UNKNOWN %s\n",cmd); }
static void state_unc_close() { if(mFileZipMode==0) { fclose(mFile); } else { if (mFileRWMode == 1) save_archive(mFileName,mFileMem,mFileMemSize); free(mFileMem); mFileMem=NULL; mFileMemSize=0; mFileMemPos=0; mFileName[0]=0; } }
void savestate(const char *filename) { int i; byte *buf;//[4096]; byte *bufptr; //menu_message("Saving"); int irl = hw.cgb ? 8 : 2; int vrl = hw.cgb ? 4 : 2; int srl = mbc.ramsize << 1; int bufsize = (1 + irl + vrl + srl) * 4096; buf=(byte*)malloc(bufsize); bufptr = buf; un32 (*header)[2] = (un32 (*)[2])buf; un32 d = 0; ver = 0x105; iramblock = 1; vramblock = 1+irl; sramblock = 1+irl+vrl; wavofs = 4096 - 784; hiofs = 4096 - 768; palofs = 4096 - 512; oamofs = 4096 - 256; memset(buf, 0, 4096); for (i = 0; svars[i].len > 0; i++) { header[i][0] = *(un32 *)svars[i].key; switch (svars[i].len) { case 1: d = *(byte *)svars[i].ptr; break; case 2: d = *(un16 *)svars[i].ptr; break; case 4: d = *(un32 *)svars[i].ptr; break; } header[i][1] = LIL(d); } header[i][0] = header[i][1] = 0; memcpy(buf+hiofs, ram.hi, sizeof ram.hi); memcpy(buf+palofs, lcd.pal, sizeof lcd.pal); memcpy(buf+oamofs, lcd.oam.mem, sizeof lcd.oam); memcpy(buf+wavofs, snd.wave, sizeof snd.wave); bufptr += 4096; //fseek(f, iramblock<<12, SEEK_SET); memcpy(bufptr, ram.ibank, 4096 * irl); bufptr += 4096 * irl; //fseek(f, vramblock<<12, SEEK_SET); memcpy(bufptr, lcd.vbank, 4096 * vrl); bufptr += 4096 * vrl; //fseek(f, sramblock<<12, SEEK_SET); memcpy(bufptr, ram.sbank, 4096 * srl); bufptr += 4096 * srl; save_archive(filename, "GBCOID", buf, bufsize); free(buf); }