From df1e0d6737efc886cad82c642b2fdd44ba9158cf Mon Sep 17 00:00:00 2001 From: yabause Date: Sat, 29 Nov 2008 14:29:07 +0000 Subject: [PATCH] Patch 2358908 by StrontiumDog with some changes. This patch fix some more warnings. Most of them being warnings about unused fread/fwrite results. Instead of just discarding the result, the number of read/write is stored in the variable and can be use to know if there was a problem in the fread/fwrite calls. (also change the variable names to elems_ instead of bytes_ as the function returns the number of items not the number of bytes). --- desmume/src/NDSSystem.cpp | 73 ++++++++++++++------------- desmume/src/OGLRender.cpp | 34 ++++++------- desmume/src/SPU.cpp | 15 +++--- desmume/src/arm_instructions.cpp | 16 +++--- desmume/src/cflash.cpp | 18 ++++--- desmume/src/gtk-glade/printscreen.cpp | 42 +++++++-------- desmume/src/mc.cpp | 19 ++++--- desmume/src/saves.cpp | 65 ++++++++++++------------ 8 files changed, 148 insertions(+), 134 deletions(-) diff --git a/desmume/src/NDSSystem.cpp b/desmume/src/NDSSystem.cpp index 256ab0271..2e91667c0 100644 --- a/desmume/src/NDSSystem.cpp +++ b/desmume/src/NDSSystem.cpp @@ -606,6 +606,7 @@ int NDS_WriteBMP(const char *filename) FILE *file; int i,j; u16 * bmp = (u16 *)GPU_screen; + size_t elems_written = 0; memset(&fileheader, 0, sizeof(fileheader)); fileheader.size = sizeof(fileheader); @@ -624,8 +625,8 @@ int NDS_WriteBMP(const char *filename) if ((file = fopen(filename,"wb")) == NULL) return 0; - fwrite(&fileheader, 1, sizeof(fileheader), file); - fwrite(&imageheader, 1, sizeof(imageheader), file); + elems_written += fwrite(&fileheader, 1, sizeof(fileheader), file); + elems_written += fwrite(&imageheader, 1, sizeof(imageheader), file); for(j=0;j<192*2;j++) { @@ -641,9 +642,9 @@ int NDS_WriteBMP(const char *filename) r*=255/31; g*=255/31; b*=255/31; - fwrite(&r, 1, sizeof(u8), file); - fwrite(&g, 1, sizeof(u8), file); - fwrite(&b, 1, sizeof(u8), file); + elems_written += fwrite(&r, 1, sizeof(u8), file); + elems_written += fwrite(&g, 1, sizeof(u8), file); + elems_written += fwrite(&b, 1, sizeof(u8), file); } } fclose(file); @@ -651,37 +652,37 @@ int NDS_WriteBMP(const char *filename) return 1; } -int NDS_WriteBMP_32bppBuffer(int width, int height, const void* buf, const char *filename) -{ - bmpfileheader_struct fileheader; - bmpimgheader_struct imageheader; - FILE *file; - - memset(&fileheader, 0, sizeof(fileheader)); - fileheader.size = sizeof(fileheader); - fileheader.id = 'B' | ('M' << 8); - fileheader.imgoffset = sizeof(fileheader)+sizeof(imageheader); - - memset(&imageheader, 0, sizeof(imageheader)); - imageheader.size = sizeof(imageheader); - imageheader.width = width; - imageheader.height = height; - imageheader.planes = 1; - imageheader.bpp = 32; - imageheader.cmptype = 0; // None - imageheader.imgsize = imageheader.width * imageheader.height * 4; - - if ((file = fopen(filename,"wb")) == NULL) - return 0; - - fwrite(&fileheader, 1, sizeof(fileheader), file); - fwrite(&imageheader, 1, sizeof(imageheader), file); - - fwrite(buf,1,imageheader.imgsize,file); - fclose(file); - - return 1; -} +int NDS_WriteBMP_32bppBuffer(int width, int height, const void* buf, const char *filename) +{ + bmpfileheader_struct fileheader; + bmpimgheader_struct imageheader; + FILE *file; + size_t elems_written = 0; + memset(&fileheader, 0, sizeof(fileheader)); + fileheader.size = sizeof(fileheader); + fileheader.id = 'B' | ('M' << 8); + fileheader.imgoffset = sizeof(fileheader)+sizeof(imageheader); + + memset(&imageheader, 0, sizeof(imageheader)); + imageheader.size = sizeof(imageheader); + imageheader.width = width; + imageheader.height = height; + imageheader.planes = 1; + imageheader.bpp = 32; + imageheader.cmptype = 0; // None + imageheader.imgsize = imageheader.width * imageheader.height * 4; + + if ((file = fopen(filename,"wb")) == NULL) + return 0; + + elems_written += fwrite(&fileheader, 1, sizeof(fileheader), file); + elems_written += fwrite(&imageheader, 1, sizeof(imageheader), file); + + elems_written += fwrite(buf,1,imageheader.imgsize,file); + fclose(file); + + return 1; +} static void diff --git a/desmume/src/OGLRender.cpp b/desmume/src/OGLRender.cpp index 6e2b79fec..3b29be3c8 100644 --- a/desmume/src/OGLRender.cpp +++ b/desmume/src/OGLRender.cpp @@ -30,8 +30,8 @@ #include #include #include "debug.h" - -//#define DEBUG_DUMP_TEXTURE + +//#define DEBUG_DUMP_TEXTURE bool (*oglrender_init)() = 0; bool (*oglrender_beginOpenGL)() = 0; @@ -53,15 +53,15 @@ static void ENDGL() { #include #include #include -#else +#else #ifdef DESMUME_COCOA #include #include -#else +#else #include #include #endif -#endif +#endif #include "types.h" #include "debug.h" @@ -154,14 +154,14 @@ static void xglUseProgram(GLuint program) { static GLuint oldprogram = -1; if(oldprogram==program) return; glUseProgram(oldprogram=program); -} +} #else -#if 0 /* not used */ +#if 0 /* not used */ static void xglUseProgram(GLuint program) { (void)program; return; } -#endif +#endif #endif static void xglDepthMask (GLboolean flag) { @@ -441,8 +441,8 @@ void* memcpy_fast(void* dest, const void* src, size_t count) #define memcpy_fast(d,s,c) memcpy(d,s,c) #endif - -#if defined (DEBUG_DUMP_TEXTURE) && defined (WIN32) + +#if defined (DEBUG_DUMP_TEXTURE) && defined (WIN32) static void DebugDumpTexture(int which) { char fname[100]; @@ -456,10 +456,10 @@ static void DebugDumpTexture(int which) texMAP); NDS_WriteBMP_32bppBuffer(texcache[which].sizeX,texcache[which].sizeY,texMAP,fname); -} -#else -#define DebugDumpTexture(which) do { (void)which; } while (0) -#endif +} +#else +#define DebugDumpTexture(which) do { (void)which; } while (0) +#endif //================================================================================ static int lastTexture = -1; @@ -732,7 +732,7 @@ static void setTexture(unsigned int format, unsigned int texpal) dwdst[currentPos+3] = tmp_col[(currRow>>6)&3]; if(dead) { - memset(dwdst, 0, sizeof(dwdst[0]) * 4); + memset(dwdst, 0, sizeof(dwdst[0]) * 4); } txt_slot_current_size-=4;; @@ -961,8 +961,8 @@ static void Render() //TODO - properly doublebuffer the display lists { - u32 lastTextureFormat, lastTexturePalette, lastPolyAttr; - + u32 lastTextureFormat = 0, lastTexturePalette = 0, lastPolyAttr = 0; + for(int i=0;icount;i++) { POLY *poly = &gfx3d.polylist->list[gfx3d.indexlist[i]]; int type = poly->type; diff --git a/desmume/src/SPU.cpp b/desmume/src/SPU.cpp index 2e970467d..3638721e6 100644 --- a/desmume/src/SPU.cpp +++ b/desmume/src/SPU.cpp @@ -1216,6 +1216,7 @@ int SNDFileInit(int buffersize) waveheader_struct waveheader; fmt_struct fmt; chunk_struct data; + size_t elems_written = 0; if ((spufp = fopen("ndsaudio.wav", "wb")) == NULL) return -1; @@ -1224,7 +1225,7 @@ int SNDFileInit(int buffersize) memcpy(waveheader.riff.id, "RIFF", 4); waveheader.riff.size = 0; // we'll fix this after the file is closed memcpy(waveheader.rifftype, "WAVE", 4); - fwrite((void *)&waveheader, 1, sizeof(waveheader_struct), spufp); + elems_written += fwrite((void *)&waveheader, 1, sizeof(waveheader_struct), spufp); // fmt chunk memcpy(fmt.chunk.id, "fmt ", 4); @@ -1235,12 +1236,12 @@ int SNDFileInit(int buffersize) fmt.bitspersample = 16; fmt.blockalign = fmt.bitspersample / 8 * fmt.numchan; fmt.bytespersec = fmt.rate * fmt.blockalign; - fwrite((void *)&fmt, 1, sizeof(fmt_struct), spufp); + elems_written += fwrite((void *)&fmt, 1, sizeof(fmt_struct), spufp); // data chunk memcpy(data.id, "data", 4); data.size = 0; // we'll fix this at the end - fwrite((void *)&data, 1, sizeof(chunk_struct), spufp); + elems_written += fwrite((void *)&data, 1, sizeof(chunk_struct), spufp); return 0; } @@ -1249,6 +1250,7 @@ int SNDFileInit(int buffersize) void SNDFileDeInit() { + size_t elems_written; if (spufp) { long length = ftell(spufp); @@ -1256,11 +1258,11 @@ void SNDFileDeInit() // Let's fix the riff chunk size and the data chunk size fseek(spufp, sizeof(waveheader_struct)-0x8, SEEK_SET); length -= 0x4; - fwrite((void *)&length, 1, 4, spufp); + elems_written += fwrite((void *)&length, 1, 4, spufp); fseek(spufp, sizeof(waveheader_struct)+sizeof(fmt_struct)+0x4, SEEK_SET); length -= sizeof(waveheader_struct)+sizeof(fmt_struct); - fwrite((void *)&length, 1, 4, spufp); + elems_written += fwrite((void *)&length, 1, 4, spufp); fclose(spufp); } } @@ -1269,8 +1271,9 @@ void SNDFileDeInit() void SNDFileUpdateAudio(s16 *buffer, u32 num_samples) { + size_t elems_written; if (spufp) - fwrite((void *)buffer, num_samples*2, 2, spufp); + elems_written = fwrite((void *)buffer, num_samples*2, 2, spufp); } ////////////////////////////////////////////////////////////////////////////// diff --git a/desmume/src/arm_instructions.cpp b/desmume/src/arm_instructions.cpp index 401452b9c..8a6d2798c 100644 --- a/desmume/src/arm_instructions.cpp +++ b/desmume/src/arm_instructions.cpp @@ -6687,7 +6687,7 @@ TEMPLATE static u32 FASTCALL OP_LDMDB_W() TEMPLATE static u32 FASTCALL OP_LDMIA2() { u32 i = cpu->instruction; - u32 oldmode; + u32 oldmode = 0; u32 c = 0; @@ -6744,7 +6744,7 @@ TEMPLATE static u32 FASTCALL OP_LDMIA2() TEMPLATE static u32 FASTCALL OP_LDMIB2() { u32 i = cpu->instruction; - u32 oldmode; + u32 oldmode = 0; u32 c = 0; u32 start = cpu->R[REG_POS(i,16)]; @@ -6803,7 +6803,7 @@ TEMPLATE static u32 FASTCALL OP_LDMDA2() { u32 i = cpu->instruction; - u32 oldmode; + u32 oldmode = 0; u32 c = 0; u32 * registres; u32 * waitState; @@ -6866,7 +6866,7 @@ TEMPLATE static u32 FASTCALL OP_LDMDB2() { u32 i = cpu->instruction; - u32 oldmode; + u32 oldmode = 0; u32 c = 0; u32 * registres; u32 * waitState; @@ -6928,7 +6928,7 @@ TEMPLATE static u32 FASTCALL OP_LDMIA2_W() u32 i = cpu->instruction; u32 c = 0; - u32 oldmode; + u32 oldmode = 0; u32 start = cpu->R[REG_POS(i,16)]; u32 * registres; u32 * waitState; @@ -6985,7 +6985,7 @@ TEMPLATE static u32 FASTCALL OP_LDMIB2_W() u32 i = cpu->instruction; u32 c = 0; - u32 oldmode; + u32 oldmode = 0; u32 start = cpu->R[REG_POS(i,16)]; u32 * registres; u32 * waitState; @@ -7044,7 +7044,7 @@ TEMPLATE static u32 FASTCALL OP_LDMDA2_W() u32 i = cpu->instruction; u32 c = 0; - u32 oldmode; + u32 oldmode = 0; u32 start = cpu->R[REG_POS(i,16)]; u32 * registres; u32 * waitState; @@ -7104,7 +7104,7 @@ TEMPLATE static u32 FASTCALL OP_LDMDB2_W() u32 i = cpu->instruction; u32 c = 0; - u32 oldmode; + u32 oldmode = 0; u32 start = cpu->R[REG_POS(i,16)]; u32 * registres; u32 * waitState; diff --git a/desmume/src/cflash.cpp b/desmume/src/cflash.cpp index e502bd646..8fdbedc45 100644 --- a/desmume/src/cflash.cpp +++ b/desmume/src/cflash.cpp @@ -589,6 +589,7 @@ static void resolve_path(int dirent) { /* Read from a file using a 512 byte buffer */ static u16 fread_buffered(int dirent,u32 cluster,u32 offset) { char fname[2*NAME_LEN+EXT_LEN]; + size_t elems_read = 0; offset += cluster*512*SECPERCLUS; @@ -601,7 +602,7 @@ static u16 fread_buffered(int dirent,u32 cluster,u32 offset) { return 0; } fseek(hFile, offset, SEEK_SET); - fread(&freadBuffer, 1, 512, hFile); + elems_read += fread(&freadBuffer, 1, 512, hFile); bufferStart = offset; } @@ -622,7 +623,7 @@ static u16 fread_buffered(int dirent,u32 cluster,u32 offset) { if (!hFile) return 0; bufferStart = offset; fseek(hFile, offset, SEEK_SET); - fread(&freadBuffer, 1, 512, hFile); + elems_read += fread(&freadBuffer, 1, 512, hFile); bufferStart = offset; activeDirEnt = dirent; @@ -635,6 +636,7 @@ static u16 fread_buffered(int dirent,u32 cluster,u32 offset) { unsigned int cflash_read(unsigned int address) { unsigned int ret_value = 0; + size_t elems_read; #if 0 /* used by next if 0 block */ #define BUFFERED_BLOCK_SIZE 512 static u8 block_buffer[BUFFERED_BLOCK_SIZE]; @@ -677,7 +679,7 @@ cflash_read(unsigned int address) { data[1] = block_buffer[currLBA + 1 - buffered_start_index]; #else LSEEK_FN( disk_image, currLBA, SEEK_SET); - READ_FN( disk_image, data, 2); + elems_read += READ_FN( disk_image, data, 2); #endif ret_value = data[1] << 8 | data[0]; @@ -697,13 +699,13 @@ cflash_read(unsigned int address) { ret_value = T1ReadWord(p, currLBA); // Reading the FAT - } else if ((currLBA >= filesysFAT*512) && (currLBA < filesysRootDir*512)) { + } else if (((u32)currLBA >= filesysFAT*512) && ((u32)currLBA < filesysRootDir*512)) { p = (unsigned char*)&FAT16[0]; ret_value = T1ReadWord(p, currLBA - filesysFAT * 512); // Reading directory entries - } else if ((currLBA >= filesysRootDir*512) && - (cluster <= lastDirEntCluster)) { + } else if (((u32)currLBA >= filesysRootDir*512) && + (cluster <= (u32)lastDirEntCluster)) { cluster3 = ((currLBA - (SECRESV * 512)) / (512 * SECPERCLUS)); i = (currLBA-(((cluster3-(filesysRootDir/SECPERCLUS))*SECPERCLUS+filesysRootDir)*512)); //(currLBA - cluster*BYTESPERCLUS); if (i < (dirEntriesInCluster[cluster3]*32)) { @@ -723,7 +725,7 @@ cflash_read(unsigned int address) { } } // Reading file data - } else if ((cluster2 > lastDirEntCluster) && (cluster2 <= lastFileDataCluster)) { //else if ((cluster>lastDirEntCluster)&&(cluster<=lastFileDataCluster)) { + } else if ((cluster2 > (u32)lastDirEntCluster) && (cluster2 <= (u32)lastFileDataCluster)) { //else if ((cluster>lastDirEntCluster)&&(cluster<=lastFileDataCluster)) { fileLBA = currLBA - (filesysData-32)*512; // 32 = # sectors used for the root entries // Check if the read is from the currently opened file @@ -732,7 +734,7 @@ cflash_read(unsigned int address) { ret_value = fread_buffered(activeDirEnt,cluster-dirEntries[activeDirEnt].startCluster,(fileLBA-fileStartLBA)&(BYTESPERCLUS-1)); } else { for (i=0; i=(dirEntries[i].startCluster*512*SECPERCLUS)) && + if ((fileLBA>=(u32)(dirEntries[i].startCluster*512*SECPERCLUS)) && (fileLBA <(dirEntries[i].startCluster*512*SECPERCLUS)+dirEntries[i].fileSize) && ((dirEntries[i].attrib & (ATTRIB_DIR|ATTRIB_LFN))==0)) { cluster = (fileLBA / (512 * SECPERCLUS)); diff --git a/desmume/src/gtk-glade/printscreen.cpp b/desmume/src/gtk-glade/printscreen.cpp index 63c564bda..0b8bae19c 100755 --- a/desmume/src/gtk-glade/printscreen.cpp +++ b/desmume/src/gtk-glade/printscreen.cpp @@ -47,6 +47,8 @@ typedef struct int WriteBMP(const char *filename,u16 *bmp){ BmpFileHeader fileheader; BmpImageHeader imageheader; + size_t elems_written = 0; + fileheader.size = 14; fileheader.type = 0x4D42; fileheader.r1 = 0; @@ -68,25 +70,23 @@ int WriteBMP(const char *filename,u16 *bmp){ FILE *fichier = fopen(filename,"wb"); if (!fichier) return 0; - //fwrite(&fileheader, 1, 14, fichier); - //fwrite(&imageheader, 1, 40, fichier); - fwrite( &fileheader.type, sizeof(fileheader.type), 1, fichier); - fwrite( &fileheader.size, sizeof(fileheader.size), 1, fichier); - fwrite( &fileheader.r1, sizeof(fileheader.r1), 1, fichier); - fwrite( &fileheader.r2, sizeof(fileheader.r2), 1, fichier); - fwrite( &fileheader.data_offset, sizeof(fileheader.data_offset), 1, fichier); - fwrite( &imageheader.header_size, sizeof(imageheader.header_size), 1, fichier); - fwrite( &imageheader.width, sizeof(imageheader.width), 1, fichier); - fwrite( &imageheader.height, sizeof(imageheader.height), 1, fichier); - fwrite( &imageheader.r1, sizeof(imageheader.r1), 1, fichier); - fwrite( &imageheader.depth, sizeof(imageheader.depth), 1, fichier); - fwrite( &imageheader.r2, sizeof(imageheader.r2), 1, fichier); - fwrite( &imageheader.size, sizeof(imageheader.size), 1, fichier); - fwrite( &imageheader.r3, sizeof(imageheader.r3), 1, fichier); - fwrite( &imageheader.r4, sizeof(imageheader.r4), 1, fichier); - fwrite( &imageheader.r5, sizeof(imageheader.r5), 1, fichier); - fwrite( &imageheader.r6, sizeof(imageheader.r6), 1, fichier); + elems_written += fwrite( &fileheader.type, sizeof(fileheader.type), 1, fichier); + elems_written += fwrite( &fileheader.size, sizeof(fileheader.size), 1, fichier); + elems_written += fwrite( &fileheader.r1, sizeof(fileheader.r1), 1, fichier); + elems_written += fwrite( &fileheader.r2, sizeof(fileheader.r2), 1, fichier); + elems_written += fwrite( &fileheader.data_offset, sizeof(fileheader.data_offset), 1, fichier); + elems_written += fwrite( &imageheader.header_size, sizeof(imageheader.header_size), 1, fichier); + elems_written += fwrite( &imageheader.width, sizeof(imageheader.width), 1, fichier); + elems_written += fwrite( &imageheader.height, sizeof(imageheader.height), 1, fichier); + elems_written += fwrite( &imageheader.r1, sizeof(imageheader.r1), 1, fichier); + elems_written += fwrite( &imageheader.depth, sizeof(imageheader.depth), 1, fichier); + elems_written += fwrite( &imageheader.r2, sizeof(imageheader.r2), 1, fichier); + elems_written += fwrite( &imageheader.size, sizeof(imageheader.size), 1, fichier); + elems_written += fwrite( &imageheader.r3, sizeof(imageheader.r3), 1, fichier); + elems_written += fwrite( &imageheader.r4, sizeof(imageheader.r4), 1, fichier); + elems_written += fwrite( &imageheader.r5, sizeof(imageheader.r5), 1, fichier); + elems_written += fwrite( &imageheader.r6, sizeof(imageheader.r6), 1, fichier); int i,j; for(j=0;j<192*2;j++)for(i=0;i<256;i++){ u8 r,g,b; @@ -99,9 +99,9 @@ int WriteBMP(const char *filename,u16 *bmp){ r*=255/31; g*=255/31; b*=255/31; - fwrite(&r, 1, sizeof(char), fichier); - fwrite(&g, 1, sizeof(char), fichier); - fwrite(&b, 1, sizeof(char), fichier); + elems_written += fwrite(&r, 1, sizeof(char), fichier); + elems_written += fwrite(&g, 1, sizeof(char), fichier); + elems_written += fwrite(&b, 1, sizeof(char), fichier); } fclose(fichier); return 1; diff --git a/desmume/src/mc.cpp b/desmume/src/mc.cpp index c4b6b2749..ba5f1d51a 100644 --- a/desmume/src/mc.cpp +++ b/desmume/src/mc.cpp @@ -98,6 +98,8 @@ void mc_free(memory_chip_t *mc) void mc_reset_com(memory_chip_t *mc) { + size_t elems_written = 0; + if (mc->type == MC_TYPE_AUTODETECT && mc->com == BM_CMD_AUTODETECT) { u32 addr, size; @@ -175,14 +177,14 @@ void mc_reset_com(memory_chip_t *mc) // Generate file if ((mc->fp = fopen(mc->filename, "wb+")) != NULL) - fwrite((void *)mc->data, 1, mc->size, mc->fp); + elems_written += fwrite((void *)mc->data, 1, mc->size, mc->fp); } else if (mc->com == BM_CMD_WRITELOW) { if (mc->fp) { fseek(mc->fp, 0, SEEK_SET); - fwrite((void *)mc->data, 1, mc->size, mc->fp); // fix me + elems_written += fwrite((void *)mc->data, 1, mc->size, mc->fp); // fix me } mc->write_enable = FALSE; } @@ -202,6 +204,8 @@ void mc_load_file(memory_chip_t *mc, const char* filename) long size; int type = -1; FILE* file = fopen(filename, "rb+"); + size_t elems_read; + if(file == NULL) { mc->filename = strdup(filename); @@ -231,9 +235,9 @@ void mc_load_file(memory_chip_t *mc, const char* filename) mc_realloc(mc, type, size); } - if (size > mc->size) + if ((u32)size > mc->size) size = mc->size; - fread (mc->data, 1, size, file); + elems_read = fread (mc->data, 1, size, file); mc->fp = file; } @@ -243,6 +247,7 @@ int mc_load_duc(memory_chip_t *mc, const char* filename) int type = -1; char id[16]; FILE* file = fopen(filename, "rb"); + size_t elems_read = 0; if(file == NULL) return 0; @@ -251,7 +256,7 @@ int mc_load_duc(memory_chip_t *mc, const char* filename) fseek(file, 0, SEEK_SET); // Make sure we really have the right file - fread((void *)id, sizeof(char), 16, file); + elems_read += fread((void *)id, sizeof(char), 16, file); if (memcmp(id, "ARDS000000000001", 16) != 0) { @@ -279,11 +284,11 @@ int mc_load_duc(memory_chip_t *mc, const char* filename) mc_realloc(mc, type, size); } - if (size > mc->size) + if ((u32)size > mc->size) size = mc->size; // Skip the rest of the header since we don't need it fseek(file, 500, SEEK_SET); - fread (mc->data, 1, size, file); + elems_read += fread (mc->data, 1, size, file); fclose(file); return 1; diff --git a/desmume/src/saves.cpp b/desmume/src/saves.cpp index 79db912a9..4bee231a6 100644 --- a/desmume/src/saves.cpp +++ b/desmume/src/saves.cpp @@ -229,15 +229,15 @@ SFORMAT SF_MMU[]={ }; -static void mmu_savestate(std::ostream* os) -{ +static void mmu_savestate(std::ostream* os) +{ //version - write32le(0,os); - - write32le(MMU.bupmem.size,os); - os->write((char*)MMU.bupmem.data,MMU.bupmem.size); -} - + write32le(0,os); + + write32le(MMU.bupmem.size,os); + os->write((char*)MMU.bupmem.data,MMU.bupmem.size); +} + static bool mmu_loadstate(std::istream* is) { //read version @@ -257,7 +257,7 @@ static bool mmu_loadstate(std::istream* is) static void cp15_saveone(armcp15_t *cp15, std::ostream* os) { - write32le(cp15->IDCode,os); + write32le(cp15->IDCode,os); write32le(cp15->cacheType,os); write32le(cp15->TCMSize,os); write32le(cp15->ctrl,os); @@ -283,7 +283,7 @@ static void cp15_saveone(armcp15_t *cp15, std::ostream* os) write32le(cp15->processID,os); write32le(cp15->RAM_TAG,os); write32le(cp15->testState,os); - write32le(cp15->cacheDbg,os); + write32le(cp15->cacheDbg,os); for(int i=0;i<8;i++) write32le(cp15->regionWriteMask_USR[i],os); for(int i=0;i<8;i++) write32le(cp15->regionWriteMask_SYS[i],os); for(int i=0;i<8;i++) write32le(cp15->regionReadMask_USR[i],os); @@ -298,18 +298,18 @@ static void cp15_saveone(armcp15_t *cp15, std::ostream* os) for(int i=0;i<8;i++) write32le(cp15->regionExecuteSet_SYS[i],os); } -static void cp15_savestate(std::ostream* os) -{ +static void cp15_savestate(std::ostream* os) +{ //version - write32le(0,os); - - cp15_saveone((armcp15_t *)NDS_ARM9.coproc[15],os); - cp15_saveone((armcp15_t *)NDS_ARM7.coproc[15],os); -} - -static bool cp15_loadone(armcp15_t *cp15, std::istream* is) -{ - if(!read32le(&cp15->IDCode,is)) return false; + write32le(0,os); + + cp15_saveone((armcp15_t *)NDS_ARM9.coproc[15],os); + cp15_saveone((armcp15_t *)NDS_ARM7.coproc[15],os); +} + +static bool cp15_loadone(armcp15_t *cp15, std::istream* is) +{ + if(!read32le(&cp15->IDCode,is)) return false; if(!read32le(&cp15->cacheType,is)) return false; if(!read32le(&cp15->TCMSize,is)) return false; if(!read32le(&cp15->ctrl,is)) return false; @@ -335,7 +335,7 @@ static bool cp15_loadone(armcp15_t *cp15, std::istream* is) if(!read32le(&cp15->processID,is)) return false; if(!read32le(&cp15->RAM_TAG,is)) return false; if(!read32le(&cp15->testState,is)) return false; - if(!read32le(&cp15->cacheDbg,is)) return false; + if(!read32le(&cp15->cacheDbg,is)) return false; for(int i=0;i<8;i++) if(!read32le(&cp15->regionWriteMask_USR[i],is)) return false; for(int i=0;i<8;i++) if(!read32le(&cp15->regionWriteMask_SYS[i],is)) return false; for(int i=0;i<8;i++) if(!read32le(&cp15->regionReadMask_USR[i],is)) return false; @@ -347,11 +347,11 @@ static bool cp15_loadone(armcp15_t *cp15, std::istream* is) for(int i=0;i<8;i++) if(!read32le(&cp15->regionReadSet_USR[i],is)) return false; for(int i=0;i<8;i++) if(!read32le(&cp15->regionReadSet_SYS[i],is)) return false; for(int i=0;i<8;i++) if(!read32le(&cp15->regionExecuteSet_USR[i],is)) return false; - for(int i=0;i<8;i++) if(!read32le(&cp15->regionExecuteSet_SYS[i],is)) return false; - - return true; -} - + for(int i=0;i<8;i++) if(!read32le(&cp15->regionExecuteSet_SYS[i],is)) return false; + + return true; +} + static bool cp15_loadstate(std::istream* is) { //read version @@ -454,12 +454,13 @@ void sram_write (u32 address, u8 value) { int sram_load (const char *file_name) { FILE *file; + size_t elems_read; file = fopen ( file_name, "rb" ); if( file == NULL ) return 0; - fread ( MMU.CART_RAM, SRAM_SIZE, 1, file ); + elems_read = fread ( MMU.CART_RAM, SRAM_SIZE, 1, file ); fclose ( file ); @@ -470,12 +471,13 @@ int sram_load (const char *file_name) { int sram_save (const char *file_name) { FILE *file; + size_t elems_written; file = fopen ( file_name, "wb" ); if( file == NULL ) return 0; - fwrite ( MMU.CART_RAM, SRAM_SIZE, 1, file ); + elems_written = fwrite ( MMU.CART_RAM, SRAM_SIZE, 1, file ); fclose ( file ); @@ -687,6 +689,7 @@ static bool savestate_save(std::ostream* outstream, int compressionLevel) bool savestate_save (const char *file_name) { memorystream ms; + size_t elems_written; #ifdef HAVE_LIBZ if(!savestate_save(&ms, Z_DEFAULT_COMPRESSION)) #else @@ -697,9 +700,9 @@ bool savestate_save (const char *file_name) FILE* file = fopen(file_name,"wb"); if(file) { - fwrite(ms.buf(),1,ms.size(),file); + elems_written = fwrite(ms.buf(),1,ms.size(),file); fclose(file); - return true; + return (elems_written == ms.size()); } else return false; }