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).
This commit is contained in:
yabause 2008-11-29 14:29:07 +00:00
parent 3316d1e0b4
commit df1e0d6737
8 changed files with 148 additions and 134 deletions

View File

@ -606,6 +606,7 @@ int NDS_WriteBMP(const char *filename)
FILE *file; FILE *file;
int i,j; int i,j;
u16 * bmp = (u16 *)GPU_screen; u16 * bmp = (u16 *)GPU_screen;
size_t elems_written = 0;
memset(&fileheader, 0, sizeof(fileheader)); memset(&fileheader, 0, sizeof(fileheader));
fileheader.size = sizeof(fileheader); fileheader.size = sizeof(fileheader);
@ -624,8 +625,8 @@ int NDS_WriteBMP(const char *filename)
if ((file = fopen(filename,"wb")) == NULL) if ((file = fopen(filename,"wb")) == NULL)
return 0; return 0;
fwrite(&fileheader, 1, sizeof(fileheader), file); elems_written += fwrite(&fileheader, 1, sizeof(fileheader), file);
fwrite(&imageheader, 1, sizeof(imageheader), file); elems_written += fwrite(&imageheader, 1, sizeof(imageheader), file);
for(j=0;j<192*2;j++) for(j=0;j<192*2;j++)
{ {
@ -641,9 +642,9 @@ int NDS_WriteBMP(const char *filename)
r*=255/31; r*=255/31;
g*=255/31; g*=255/31;
b*=255/31; b*=255/31;
fwrite(&r, 1, sizeof(u8), file); elems_written += fwrite(&r, 1, sizeof(u8), file);
fwrite(&g, 1, sizeof(u8), file); elems_written += fwrite(&g, 1, sizeof(u8), file);
fwrite(&b, 1, sizeof(u8), file); elems_written += fwrite(&b, 1, sizeof(u8), file);
} }
} }
fclose(file); fclose(file);
@ -651,37 +652,37 @@ int NDS_WriteBMP(const char *filename)
return 1; return 1;
} }
int NDS_WriteBMP_32bppBuffer(int width, int height, const void* buf, const char *filename) int NDS_WriteBMP_32bppBuffer(int width, int height, const void* buf, const char *filename)
{ {
bmpfileheader_struct fileheader; bmpfileheader_struct fileheader;
bmpimgheader_struct imageheader; bmpimgheader_struct imageheader;
FILE *file; FILE *file;
size_t elems_written = 0;
memset(&fileheader, 0, sizeof(fileheader)); memset(&fileheader, 0, sizeof(fileheader));
fileheader.size = sizeof(fileheader); fileheader.size = sizeof(fileheader);
fileheader.id = 'B' | ('M' << 8); fileheader.id = 'B' | ('M' << 8);
fileheader.imgoffset = sizeof(fileheader)+sizeof(imageheader); fileheader.imgoffset = sizeof(fileheader)+sizeof(imageheader);
memset(&imageheader, 0, sizeof(imageheader)); memset(&imageheader, 0, sizeof(imageheader));
imageheader.size = sizeof(imageheader); imageheader.size = sizeof(imageheader);
imageheader.width = width; imageheader.width = width;
imageheader.height = height; imageheader.height = height;
imageheader.planes = 1; imageheader.planes = 1;
imageheader.bpp = 32; imageheader.bpp = 32;
imageheader.cmptype = 0; // None imageheader.cmptype = 0; // None
imageheader.imgsize = imageheader.width * imageheader.height * 4; imageheader.imgsize = imageheader.width * imageheader.height * 4;
if ((file = fopen(filename,"wb")) == NULL) if ((file = fopen(filename,"wb")) == NULL)
return 0; return 0;
fwrite(&fileheader, 1, sizeof(fileheader), file); elems_written += fwrite(&fileheader, 1, sizeof(fileheader), file);
fwrite(&imageheader, 1, sizeof(imageheader), file); elems_written += fwrite(&imageheader, 1, sizeof(imageheader), file);
fwrite(buf,1,imageheader.imgsize,file); elems_written += fwrite(buf,1,imageheader.imgsize,file);
fclose(file); fclose(file);
return 1; return 1;
} }
static void static void

View File

@ -30,8 +30,8 @@
#include <string.h> #include <string.h>
#include <assert.h> #include <assert.h>
#include "debug.h" #include "debug.h"
//#define DEBUG_DUMP_TEXTURE //#define DEBUG_DUMP_TEXTURE
bool (*oglrender_init)() = 0; bool (*oglrender_init)() = 0;
bool (*oglrender_beginOpenGL)() = 0; bool (*oglrender_beginOpenGL)() = 0;
@ -53,15 +53,15 @@ static void ENDGL() {
#include <windows.h> #include <windows.h>
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glext.h> #include <GL/glext.h>
#else #else
#ifdef DESMUME_COCOA #ifdef DESMUME_COCOA
#include <OpenGL/gl.h> #include <OpenGL/gl.h>
#include <OpenGL/glext.h> #include <OpenGL/glext.h>
#else #else
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glext.h> #include <GL/glext.h>
#endif #endif
#endif #endif
#include "types.h" #include "types.h"
#include "debug.h" #include "debug.h"
@ -154,14 +154,14 @@ static void xglUseProgram(GLuint program) {
static GLuint oldprogram = -1; static GLuint oldprogram = -1;
if(oldprogram==program) return; if(oldprogram==program) return;
glUseProgram(oldprogram=program); glUseProgram(oldprogram=program);
} }
#else #else
#if 0 /* not used */ #if 0 /* not used */
static void xglUseProgram(GLuint program) { static void xglUseProgram(GLuint program) {
(void)program; (void)program;
return; return;
} }
#endif #endif
#endif #endif
static void xglDepthMask (GLboolean flag) { 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) #define memcpy_fast(d,s,c) memcpy(d,s,c)
#endif #endif
#if defined (DEBUG_DUMP_TEXTURE) && defined (WIN32) #if defined (DEBUG_DUMP_TEXTURE) && defined (WIN32)
static void DebugDumpTexture(int which) static void DebugDumpTexture(int which)
{ {
char fname[100]; char fname[100];
@ -456,10 +456,10 @@ static void DebugDumpTexture(int which)
texMAP); texMAP);
NDS_WriteBMP_32bppBuffer(texcache[which].sizeX,texcache[which].sizeY,texMAP,fname); NDS_WriteBMP_32bppBuffer(texcache[which].sizeX,texcache[which].sizeY,texMAP,fname);
} }
#else #else
#define DebugDumpTexture(which) do { (void)which; } while (0) #define DebugDumpTexture(which) do { (void)which; } while (0)
#endif #endif
//================================================================================ //================================================================================
static int lastTexture = -1; 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]; dwdst[currentPos+3] = tmp_col[(currRow>>6)&3];
if(dead) { if(dead) {
memset(dwdst, 0, sizeof(dwdst[0]) * 4); memset(dwdst, 0, sizeof(dwdst[0]) * 4);
} }
txt_slot_current_size-=4;; txt_slot_current_size-=4;;
@ -961,8 +961,8 @@ static void Render()
//TODO - properly doublebuffer the display lists //TODO - properly doublebuffer the display lists
{ {
u32 lastTextureFormat, lastTexturePalette, lastPolyAttr; u32 lastTextureFormat = 0, lastTexturePalette = 0, lastPolyAttr = 0;
for(int i=0;i<gfx3d.polylist->count;i++) { for(int i=0;i<gfx3d.polylist->count;i++) {
POLY *poly = &gfx3d.polylist->list[gfx3d.indexlist[i]]; POLY *poly = &gfx3d.polylist->list[gfx3d.indexlist[i]];
int type = poly->type; int type = poly->type;

View File

@ -1216,6 +1216,7 @@ int SNDFileInit(int buffersize)
waveheader_struct waveheader; waveheader_struct waveheader;
fmt_struct fmt; fmt_struct fmt;
chunk_struct data; chunk_struct data;
size_t elems_written = 0;
if ((spufp = fopen("ndsaudio.wav", "wb")) == NULL) if ((spufp = fopen("ndsaudio.wav", "wb")) == NULL)
return -1; return -1;
@ -1224,7 +1225,7 @@ int SNDFileInit(int buffersize)
memcpy(waveheader.riff.id, "RIFF", 4); memcpy(waveheader.riff.id, "RIFF", 4);
waveheader.riff.size = 0; // we'll fix this after the file is closed waveheader.riff.size = 0; // we'll fix this after the file is closed
memcpy(waveheader.rifftype, "WAVE", 4); 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 // fmt chunk
memcpy(fmt.chunk.id, "fmt ", 4); memcpy(fmt.chunk.id, "fmt ", 4);
@ -1235,12 +1236,12 @@ int SNDFileInit(int buffersize)
fmt.bitspersample = 16; fmt.bitspersample = 16;
fmt.blockalign = fmt.bitspersample / 8 * fmt.numchan; fmt.blockalign = fmt.bitspersample / 8 * fmt.numchan;
fmt.bytespersec = fmt.rate * fmt.blockalign; 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 // data chunk
memcpy(data.id, "data", 4); memcpy(data.id, "data", 4);
data.size = 0; // we'll fix this at the end 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; return 0;
} }
@ -1249,6 +1250,7 @@ int SNDFileInit(int buffersize)
void SNDFileDeInit() void SNDFileDeInit()
{ {
size_t elems_written;
if (spufp) if (spufp)
{ {
long length = ftell(spufp); long length = ftell(spufp);
@ -1256,11 +1258,11 @@ void SNDFileDeInit()
// Let's fix the riff chunk size and the data chunk size // Let's fix the riff chunk size and the data chunk size
fseek(spufp, sizeof(waveheader_struct)-0x8, SEEK_SET); fseek(spufp, sizeof(waveheader_struct)-0x8, SEEK_SET);
length -= 0x4; 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); fseek(spufp, sizeof(waveheader_struct)+sizeof(fmt_struct)+0x4, SEEK_SET);
length -= sizeof(waveheader_struct)+sizeof(fmt_struct); length -= sizeof(waveheader_struct)+sizeof(fmt_struct);
fwrite((void *)&length, 1, 4, spufp); elems_written += fwrite((void *)&length, 1, 4, spufp);
fclose(spufp); fclose(spufp);
} }
} }
@ -1269,8 +1271,9 @@ void SNDFileDeInit()
void SNDFileUpdateAudio(s16 *buffer, u32 num_samples) void SNDFileUpdateAudio(s16 *buffer, u32 num_samples)
{ {
size_t elems_written;
if (spufp) if (spufp)
fwrite((void *)buffer, num_samples*2, 2, spufp); elems_written = fwrite((void *)buffer, num_samples*2, 2, spufp);
} }
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////

View File

@ -6687,7 +6687,7 @@ TEMPLATE static u32 FASTCALL OP_LDMDB_W()
TEMPLATE static u32 FASTCALL OP_LDMIA2() TEMPLATE static u32 FASTCALL OP_LDMIA2()
{ {
u32 i = cpu->instruction; u32 i = cpu->instruction;
u32 oldmode; u32 oldmode = 0;
u32 c = 0; u32 c = 0;
@ -6744,7 +6744,7 @@ TEMPLATE static u32 FASTCALL OP_LDMIA2()
TEMPLATE static u32 FASTCALL OP_LDMIB2() TEMPLATE static u32 FASTCALL OP_LDMIB2()
{ {
u32 i = cpu->instruction; u32 i = cpu->instruction;
u32 oldmode; u32 oldmode = 0;
u32 c = 0; u32 c = 0;
u32 start = cpu->R[REG_POS(i,16)]; u32 start = cpu->R[REG_POS(i,16)];
@ -6803,7 +6803,7 @@ TEMPLATE static u32 FASTCALL OP_LDMDA2()
{ {
u32 i = cpu->instruction; u32 i = cpu->instruction;
u32 oldmode; u32 oldmode = 0;
u32 c = 0; u32 c = 0;
u32 * registres; u32 * registres;
u32 * waitState; u32 * waitState;
@ -6866,7 +6866,7 @@ TEMPLATE static u32 FASTCALL OP_LDMDB2()
{ {
u32 i = cpu->instruction; u32 i = cpu->instruction;
u32 oldmode; u32 oldmode = 0;
u32 c = 0; u32 c = 0;
u32 * registres; u32 * registres;
u32 * waitState; u32 * waitState;
@ -6928,7 +6928,7 @@ TEMPLATE static u32 FASTCALL OP_LDMIA2_W()
u32 i = cpu->instruction; u32 i = cpu->instruction;
u32 c = 0; u32 c = 0;
u32 oldmode; u32 oldmode = 0;
u32 start = cpu->R[REG_POS(i,16)]; u32 start = cpu->R[REG_POS(i,16)];
u32 * registres; u32 * registres;
u32 * waitState; u32 * waitState;
@ -6985,7 +6985,7 @@ TEMPLATE static u32 FASTCALL OP_LDMIB2_W()
u32 i = cpu->instruction; u32 i = cpu->instruction;
u32 c = 0; u32 c = 0;
u32 oldmode; u32 oldmode = 0;
u32 start = cpu->R[REG_POS(i,16)]; u32 start = cpu->R[REG_POS(i,16)];
u32 * registres; u32 * registres;
u32 * waitState; u32 * waitState;
@ -7044,7 +7044,7 @@ TEMPLATE static u32 FASTCALL OP_LDMDA2_W()
u32 i = cpu->instruction; u32 i = cpu->instruction;
u32 c = 0; u32 c = 0;
u32 oldmode; u32 oldmode = 0;
u32 start = cpu->R[REG_POS(i,16)]; u32 start = cpu->R[REG_POS(i,16)];
u32 * registres; u32 * registres;
u32 * waitState; u32 * waitState;
@ -7104,7 +7104,7 @@ TEMPLATE static u32 FASTCALL OP_LDMDB2_W()
u32 i = cpu->instruction; u32 i = cpu->instruction;
u32 c = 0; u32 c = 0;
u32 oldmode; u32 oldmode = 0;
u32 start = cpu->R[REG_POS(i,16)]; u32 start = cpu->R[REG_POS(i,16)];
u32 * registres; u32 * registres;
u32 * waitState; u32 * waitState;

View File

@ -589,6 +589,7 @@ static void resolve_path(int dirent) {
/* Read from a file using a 512 byte buffer */ /* Read from a file using a 512 byte buffer */
static u16 fread_buffered(int dirent,u32 cluster,u32 offset) { static u16 fread_buffered(int dirent,u32 cluster,u32 offset) {
char fname[2*NAME_LEN+EXT_LEN]; char fname[2*NAME_LEN+EXT_LEN];
size_t elems_read = 0;
offset += cluster*512*SECPERCLUS; offset += cluster*512*SECPERCLUS;
@ -601,7 +602,7 @@ static u16 fread_buffered(int dirent,u32 cluster,u32 offset) {
return 0; return 0;
} }
fseek(hFile, offset, SEEK_SET); fseek(hFile, offset, SEEK_SET);
fread(&freadBuffer, 1, 512, hFile); elems_read += fread(&freadBuffer, 1, 512, hFile);
bufferStart = offset; bufferStart = offset;
} }
@ -622,7 +623,7 @@ static u16 fread_buffered(int dirent,u32 cluster,u32 offset) {
if (!hFile) return 0; if (!hFile) return 0;
bufferStart = offset; bufferStart = offset;
fseek(hFile, offset, SEEK_SET); fseek(hFile, offset, SEEK_SET);
fread(&freadBuffer, 1, 512, hFile); elems_read += fread(&freadBuffer, 1, 512, hFile);
bufferStart = offset; bufferStart = offset;
activeDirEnt = dirent; activeDirEnt = dirent;
@ -635,6 +636,7 @@ static u16 fread_buffered(int dirent,u32 cluster,u32 offset) {
unsigned int unsigned int
cflash_read(unsigned int address) { cflash_read(unsigned int address) {
unsigned int ret_value = 0; unsigned int ret_value = 0;
size_t elems_read;
#if 0 /* used by next if 0 block */ #if 0 /* used by next if 0 block */
#define BUFFERED_BLOCK_SIZE 512 #define BUFFERED_BLOCK_SIZE 512
static u8 block_buffer[BUFFERED_BLOCK_SIZE]; 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]; data[1] = block_buffer[currLBA + 1 - buffered_start_index];
#else #else
LSEEK_FN( disk_image, currLBA, SEEK_SET); LSEEK_FN( disk_image, currLBA, SEEK_SET);
READ_FN( disk_image, data, 2); elems_read += READ_FN( disk_image, data, 2);
#endif #endif
ret_value = data[1] << 8 | ret_value = data[1] << 8 |
data[0]; data[0];
@ -697,13 +699,13 @@ cflash_read(unsigned int address) {
ret_value = T1ReadWord(p, currLBA); ret_value = T1ReadWord(p, currLBA);
// Reading the FAT // 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]; p = (unsigned char*)&FAT16[0];
ret_value = T1ReadWord(p, currLBA - filesysFAT * 512); ret_value = T1ReadWord(p, currLBA - filesysFAT * 512);
// Reading directory entries // Reading directory entries
} else if ((currLBA >= filesysRootDir*512) && } else if (((u32)currLBA >= filesysRootDir*512) &&
(cluster <= lastDirEntCluster)) { (cluster <= (u32)lastDirEntCluster)) {
cluster3 = ((currLBA - (SECRESV * 512)) / (512 * SECPERCLUS)); cluster3 = ((currLBA - (SECRESV * 512)) / (512 * SECPERCLUS));
i = (currLBA-(((cluster3-(filesysRootDir/SECPERCLUS))*SECPERCLUS+filesysRootDir)*512)); //(currLBA - cluster*BYTESPERCLUS); i = (currLBA-(((cluster3-(filesysRootDir/SECPERCLUS))*SECPERCLUS+filesysRootDir)*512)); //(currLBA - cluster*BYTESPERCLUS);
if (i < (dirEntriesInCluster[cluster3]*32)) { if (i < (dirEntriesInCluster[cluster3]*32)) {
@ -723,7 +725,7 @@ cflash_read(unsigned int address) {
} }
} }
// Reading file data // 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 fileLBA = currLBA - (filesysData-32)*512; // 32 = # sectors used for the root entries
// Check if the read is from the currently opened file // 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)); ret_value = fread_buffered(activeDirEnt,cluster-dirEntries[activeDirEnt].startCluster,(fileLBA-fileStartLBA)&(BYTESPERCLUS-1));
} else { } else {
for (i=0; i<numFiles; i++) { for (i=0; i<numFiles; i++) {
if ((fileLBA>=(dirEntries[i].startCluster*512*SECPERCLUS)) && if ((fileLBA>=(u32)(dirEntries[i].startCluster*512*SECPERCLUS)) &&
(fileLBA <(dirEntries[i].startCluster*512*SECPERCLUS)+dirEntries[i].fileSize) && (fileLBA <(dirEntries[i].startCluster*512*SECPERCLUS)+dirEntries[i].fileSize) &&
((dirEntries[i].attrib & (ATTRIB_DIR|ATTRIB_LFN))==0)) { ((dirEntries[i].attrib & (ATTRIB_DIR|ATTRIB_LFN))==0)) {
cluster = (fileLBA / (512 * SECPERCLUS)); cluster = (fileLBA / (512 * SECPERCLUS));

View File

@ -47,6 +47,8 @@ typedef struct
int WriteBMP(const char *filename,u16 *bmp){ int WriteBMP(const char *filename,u16 *bmp){
BmpFileHeader fileheader; BmpFileHeader fileheader;
BmpImageHeader imageheader; BmpImageHeader imageheader;
size_t elems_written = 0;
fileheader.size = 14; fileheader.size = 14;
fileheader.type = 0x4D42; fileheader.type = 0x4D42;
fileheader.r1 = 0; fileheader.r1 = 0;
@ -68,25 +70,23 @@ int WriteBMP(const char *filename,u16 *bmp){
FILE *fichier = fopen(filename,"wb"); FILE *fichier = fopen(filename,"wb");
if (!fichier) if (!fichier)
return 0; return 0;
//fwrite(&fileheader, 1, 14, fichier);
//fwrite(&imageheader, 1, 40, fichier); elems_written += fwrite( &fileheader.type, sizeof(fileheader.type), 1, fichier);
fwrite( &fileheader.type, sizeof(fileheader.type), 1, fichier); elems_written += fwrite( &fileheader.size, sizeof(fileheader.size), 1, fichier);
fwrite( &fileheader.size, sizeof(fileheader.size), 1, fichier); elems_written += fwrite( &fileheader.r1, sizeof(fileheader.r1), 1, fichier);
fwrite( &fileheader.r1, sizeof(fileheader.r1), 1, fichier); elems_written += fwrite( &fileheader.r2, sizeof(fileheader.r2), 1, fichier);
fwrite( &fileheader.r2, sizeof(fileheader.r2), 1, fichier); elems_written += fwrite( &fileheader.data_offset, sizeof(fileheader.data_offset), 1, fichier);
fwrite( &fileheader.data_offset, sizeof(fileheader.data_offset), 1, fichier); elems_written += fwrite( &imageheader.header_size, sizeof(imageheader.header_size), 1, fichier);
fwrite( &imageheader.header_size, sizeof(imageheader.header_size), 1, fichier); elems_written += fwrite( &imageheader.width, sizeof(imageheader.width), 1, fichier);
fwrite( &imageheader.width, sizeof(imageheader.width), 1, fichier); elems_written += fwrite( &imageheader.height, sizeof(imageheader.height), 1, fichier);
fwrite( &imageheader.height, sizeof(imageheader.height), 1, fichier); elems_written += fwrite( &imageheader.r1, sizeof(imageheader.r1), 1, fichier);
fwrite( &imageheader.r1, sizeof(imageheader.r1), 1, fichier); elems_written += fwrite( &imageheader.depth, sizeof(imageheader.depth), 1, fichier);
fwrite( &imageheader.depth, sizeof(imageheader.depth), 1, fichier); elems_written += fwrite( &imageheader.r2, sizeof(imageheader.r2), 1, fichier);
fwrite( &imageheader.r2, sizeof(imageheader.r2), 1, fichier); elems_written += fwrite( &imageheader.size, sizeof(imageheader.size), 1, fichier);
fwrite( &imageheader.size, sizeof(imageheader.size), 1, fichier); elems_written += fwrite( &imageheader.r3, sizeof(imageheader.r3), 1, fichier);
fwrite( &imageheader.r3, sizeof(imageheader.r3), 1, fichier); elems_written += fwrite( &imageheader.r4, sizeof(imageheader.r4), 1, fichier);
fwrite( &imageheader.r4, sizeof(imageheader.r4), 1, fichier); elems_written += fwrite( &imageheader.r5, sizeof(imageheader.r5), 1, fichier);
fwrite( &imageheader.r5, sizeof(imageheader.r5), 1, fichier); elems_written += fwrite( &imageheader.r6, sizeof(imageheader.r6), 1, fichier);
fwrite( &imageheader.r6, sizeof(imageheader.r6), 1, fichier);
int i,j; int i,j;
for(j=0;j<192*2;j++)for(i=0;i<256;i++){ for(j=0;j<192*2;j++)for(i=0;i<256;i++){
u8 r,g,b; u8 r,g,b;
@ -99,9 +99,9 @@ int WriteBMP(const char *filename,u16 *bmp){
r*=255/31; r*=255/31;
g*=255/31; g*=255/31;
b*=255/31; b*=255/31;
fwrite(&r, 1, sizeof(char), fichier); elems_written += fwrite(&r, 1, sizeof(char), fichier);
fwrite(&g, 1, sizeof(char), fichier); elems_written += fwrite(&g, 1, sizeof(char), fichier);
fwrite(&b, 1, sizeof(char), fichier); elems_written += fwrite(&b, 1, sizeof(char), fichier);
} }
fclose(fichier); fclose(fichier);
return 1; return 1;

View File

@ -98,6 +98,8 @@ void mc_free(memory_chip_t *mc)
void mc_reset_com(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) if (mc->type == MC_TYPE_AUTODETECT && mc->com == BM_CMD_AUTODETECT)
{ {
u32 addr, size; u32 addr, size;
@ -175,14 +177,14 @@ void mc_reset_com(memory_chip_t *mc)
// Generate file // Generate file
if ((mc->fp = fopen(mc->filename, "wb+")) != NULL) 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) else if (mc->com == BM_CMD_WRITELOW)
{ {
if (mc->fp) if (mc->fp)
{ {
fseek(mc->fp, 0, SEEK_SET); 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; mc->write_enable = FALSE;
} }
@ -202,6 +204,8 @@ void mc_load_file(memory_chip_t *mc, const char* filename)
long size; long size;
int type = -1; int type = -1;
FILE* file = fopen(filename, "rb+"); FILE* file = fopen(filename, "rb+");
size_t elems_read;
if(file == NULL) if(file == NULL)
{ {
mc->filename = strdup(filename); mc->filename = strdup(filename);
@ -231,9 +235,9 @@ void mc_load_file(memory_chip_t *mc, const char* filename)
mc_realloc(mc, type, size); mc_realloc(mc, type, size);
} }
if (size > mc->size) if ((u32)size > mc->size)
size = mc->size; size = mc->size;
fread (mc->data, 1, size, file); elems_read = fread (mc->data, 1, size, file);
mc->fp = file; mc->fp = file;
} }
@ -243,6 +247,7 @@ int mc_load_duc(memory_chip_t *mc, const char* filename)
int type = -1; int type = -1;
char id[16]; char id[16];
FILE* file = fopen(filename, "rb"); FILE* file = fopen(filename, "rb");
size_t elems_read = 0;
if(file == NULL) if(file == NULL)
return 0; return 0;
@ -251,7 +256,7 @@ int mc_load_duc(memory_chip_t *mc, const char* filename)
fseek(file, 0, SEEK_SET); fseek(file, 0, SEEK_SET);
// Make sure we really have the right file // 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) 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); mc_realloc(mc, type, size);
} }
if (size > mc->size) if ((u32)size > mc->size)
size = mc->size; size = mc->size;
// Skip the rest of the header since we don't need it // Skip the rest of the header since we don't need it
fseek(file, 500, SEEK_SET); fseek(file, 500, SEEK_SET);
fread (mc->data, 1, size, file); elems_read += fread (mc->data, 1, size, file);
fclose(file); fclose(file);
return 1; return 1;

View File

@ -229,15 +229,15 @@ SFORMAT SF_MMU[]={
}; };
static void mmu_savestate(std::ostream* os) static void mmu_savestate(std::ostream* os)
{ {
//version //version
write32le(0,os); write32le(0,os);
write32le(MMU.bupmem.size,os); write32le(MMU.bupmem.size,os);
os->write((char*)MMU.bupmem.data,MMU.bupmem.size); os->write((char*)MMU.bupmem.data,MMU.bupmem.size);
} }
static bool mmu_loadstate(std::istream* is) static bool mmu_loadstate(std::istream* is)
{ {
//read version //read version
@ -257,7 +257,7 @@ static bool mmu_loadstate(std::istream* is)
static void cp15_saveone(armcp15_t *cp15, std::ostream* os) static void cp15_saveone(armcp15_t *cp15, std::ostream* os)
{ {
write32le(cp15->IDCode,os); write32le(cp15->IDCode,os);
write32le(cp15->cacheType,os); write32le(cp15->cacheType,os);
write32le(cp15->TCMSize,os); write32le(cp15->TCMSize,os);
write32le(cp15->ctrl,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->processID,os);
write32le(cp15->RAM_TAG,os); write32le(cp15->RAM_TAG,os);
write32le(cp15->testState,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_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->regionWriteMask_SYS[i],os);
for(int i=0;i<8;i++) write32le(cp15->regionReadMask_USR[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); 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 //version
write32le(0,os); write32le(0,os);
cp15_saveone((armcp15_t *)NDS_ARM9.coproc[15],os); cp15_saveone((armcp15_t *)NDS_ARM9.coproc[15],os);
cp15_saveone((armcp15_t *)NDS_ARM7.coproc[15],os); cp15_saveone((armcp15_t *)NDS_ARM7.coproc[15],os);
} }
static bool cp15_loadone(armcp15_t *cp15, std::istream* is) static bool cp15_loadone(armcp15_t *cp15, std::istream* is)
{ {
if(!read32le(&cp15->IDCode,is)) return false; if(!read32le(&cp15->IDCode,is)) return false;
if(!read32le(&cp15->cacheType,is)) return false; if(!read32le(&cp15->cacheType,is)) return false;
if(!read32le(&cp15->TCMSize,is)) return false; if(!read32le(&cp15->TCMSize,is)) return false;
if(!read32le(&cp15->ctrl,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->processID,is)) return false;
if(!read32le(&cp15->RAM_TAG,is)) return false; if(!read32le(&cp15->RAM_TAG,is)) return false;
if(!read32le(&cp15->testState,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_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->regionWriteMask_SYS[i],is)) return false;
for(int i=0;i<8;i++) if(!read32le(&cp15->regionReadMask_USR[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_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->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_USR[i],is)) return false;
for(int i=0;i<8;i++) if(!read32le(&cp15->regionExecuteSet_SYS[i],is)) return false; for(int i=0;i<8;i++) if(!read32le(&cp15->regionExecuteSet_SYS[i],is)) return false;
return true; return true;
} }
static bool cp15_loadstate(std::istream* is) static bool cp15_loadstate(std::istream* is)
{ {
//read version //read version
@ -454,12 +454,13 @@ void sram_write (u32 address, u8 value) {
int sram_load (const char *file_name) { int sram_load (const char *file_name) {
FILE *file; FILE *file;
size_t elems_read;
file = fopen ( file_name, "rb" ); file = fopen ( file_name, "rb" );
if( file == NULL ) if( file == NULL )
return 0; return 0;
fread ( MMU.CART_RAM, SRAM_SIZE, 1, file ); elems_read = fread ( MMU.CART_RAM, SRAM_SIZE, 1, file );
fclose ( file ); fclose ( file );
@ -470,12 +471,13 @@ int sram_load (const char *file_name) {
int sram_save (const char *file_name) { int sram_save (const char *file_name) {
FILE *file; FILE *file;
size_t elems_written;
file = fopen ( file_name, "wb" ); file = fopen ( file_name, "wb" );
if( file == NULL ) if( file == NULL )
return 0; return 0;
fwrite ( MMU.CART_RAM, SRAM_SIZE, 1, file ); elems_written = fwrite ( MMU.CART_RAM, SRAM_SIZE, 1, file );
fclose ( file ); fclose ( file );
@ -687,6 +689,7 @@ static bool savestate_save(std::ostream* outstream, int compressionLevel)
bool savestate_save (const char *file_name) bool savestate_save (const char *file_name)
{ {
memorystream ms; memorystream ms;
size_t elems_written;
#ifdef HAVE_LIBZ #ifdef HAVE_LIBZ
if(!savestate_save(&ms, Z_DEFAULT_COMPRESSION)) if(!savestate_save(&ms, Z_DEFAULT_COMPRESSION))
#else #else
@ -697,9 +700,9 @@ bool savestate_save (const char *file_name)
FILE* file = fopen(file_name,"wb"); FILE* file = fopen(file_name,"wb");
if(file) if(file)
{ {
fwrite(ms.buf(),1,ms.size(),file); elems_written = fwrite(ms.buf(),1,ms.size(),file);
fclose(file); fclose(file);
return true; return (elems_written == ms.size());
} else return false; } else return false;
} }