J'ai essayé en écrivant les headers à partir de flash_fp au lieu de flash_fp - 22 mais ça change rien.
voici le code que j'utilise:
char save_game_to_flash(void){ unsigned long game_size = get_game_size();//get file size void *flash_fp; //unsigned long offset; char c; char *str; clrscr(); printf("\n\nwriting to flash\nEXPERIMENTAL\npress ENTER to proceed\n"); if(ngetchx()!=KEY_ENTER) return 0; flash_fp = EM_findEmptySlot(game_size); if(flash_fp == NULL){ EM_GC(FALSE); //garbadge collect without confirmation dialog if(flash_fp == NULL){ return 0;//FAILURE } } str = (char *)malloc(9 * sizeof(char)); c = -32; EM_write(&c, flash_fp - 22, sizeof(char)); sprintf(str,"main%c",0); EM_write(str, flash_fp + FLASH_HEADER_SIZE - 21, 8*sizeof(char)); sprintf(str,"filename%c",0); EM_write(str, flash_fp + FLASH_HEADER_SIZE - 13, 8*sizeof(char)); c = 0; EM_write(&c, flash_fp + FLASH_HEADER_SIZE - 5, sizeof(char)); game_size = (unsigned long)1<<31 | (game_size + 1); EM_write(&game_size, flash_fp + FLASH_HEADER_SIZE - 1, sizeof(unsigned long)); game_size = get_game_size(); //restore value //do your stuff free(str); return 1; }
si quelqu'un a une idée...