char* highscoreFilename() { char filename[255]; int file; /* path is in g_elf_name without the last 9 chars = "eboot.pbp" buffer overflow possibilities galore, but who cares? just say no to ridiculously long path and we're fine */ strncpy(filename, g_elf_name, strlen(g_elf_name)-9); filename[strlen(g_elf_name)-9]=0; strcat(filename, "scores.dat"); return filename; } void loadHighscores() { char* filename; filename = highscoreFilename(); int file; ctrl_data_t ctrl; int foo; pspDebugScreenInit(); if (0 > (file = sceIoOpen(filename, 0, 0777))) { pspDebugScreenPrintf("File %s not opened: %d\n", filename, file); // there is no highscore file yet // initialise highscores int i; for (i = 1; i <= LEVELS; i++) { highscores[i] = 0; } } else { char data[255]; int i; for (i=0; i<255; i++) { data[i]='A'; } foo = sceIoRead(file, data, 5); pspDebugScreenPrintf("File %s opened: %d\n", filename, file); pspDebugScreenPrintf("Read: %c%c%c%c%c, %u bytes\n", data[0],data[1],data[2],data[3],data[4], foo); sceIoClose(file); } while (1) { pgWaitV(); sceCtrlReadBufferPositive(&ctrl, 1); if (ctrl.buttons & CTRL_START) { break; } } } void saveHighscores() { char* filename; filename = highscoreFilename(); int file; // open/create highscore file file = sceIoOpen(filename,O_CREAT | O_TRUNC | O_RDWR, 0777); // write scores to file sceIoWrite(file,highscores,(LEVELS+1)*2); //pgWaitVn(1); sceIoClose(file); }