Take another pass at silencing a bunch of compiler warnings where appropriate.

Most warnings are related to the following:
- Integer precision loss from implicit conversion
- Non-virtual destructors for classes with virtual methods
- Replace the unsafe sprintf() function with the safer snprintf()
- Local variables shadowing
- Extraneous commas and semicolons

Not all of these warnings have been fixed yet,, since fixing the remaining warnings requires a deeper review of the code for a proper fix.
This commit is contained in:
rogerman 2025-06-24 19:33:17 -07:00
parent a98c319cdf
commit 2b40a2f12c
27 changed files with 228 additions and 197 deletions

View File

@ -1,7 +1,7 @@
/*
Copyright (C) 2006 yopyop
Copyright (C) 2007 shash
Copyright (C) 2007-2023 DeSmuME team
Copyright (C) 2007-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -1457,11 +1457,11 @@ void DESMUME_FASTCALL MMU_writeToSPIData(u16 val)
enum PM_Bits //from libnds
{
PM_SOUND_AMP = BIT(0) , /*!< \brief Power the sound hardware (needed to hear stuff in GBA mode too) */
PM_SOUND_MUTE = BIT(1), /*!< \brief Mute the main speakers, headphone output will still work. */
PM_BACKLIGHT_BOTTOM = BIT(2), /*!< \brief Enable the top backlight if set */
PM_BACKLIGHT_TOP = BIT(3) , /*!< \brief Enable the bottom backlight if set */
PM_SYSTEM_PWR = BIT(6) , /*!< \brief Turn the power *off* if set */
PM_SOUND_AMP = BIT(0), /*!< \brief Power the sound hardware (needed to hear stuff in GBA mode too) */
PM_SOUND_MUTE = BIT(1), /*!< \brief Mute the main speakers, headphone output will still work. */
PM_BACKLIGHT_BOTTOM = BIT(2), /*!< \brief Enable the top backlight if set */
PM_BACKLIGHT_TOP = BIT(3), /*!< \brief Enable the bottom backlight if set */
PM_SYSTEM_PWR = BIT(6) /*!< \brief Turn the power *off* if set */
};
if (val !=0)

View File

@ -1,7 +1,7 @@
/*
Copyright (C) 2006 yopyop
Copyright (C) 2007 shash
Copyright (C) 2007-2023 DeSmuME team
Copyright (C) 2007-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -88,6 +88,8 @@ enum EDMADestinationUpdate
class TRegister_32
{
public:
virtual ~TRegister_32() {}
virtual u32 read32() = 0;
virtual void write32(const u32 val) = 0;
void write(const int size, const u32 adr, const u32 val) {
@ -124,6 +126,9 @@ struct TGXSTAT : public TRegister_32
fifo_empty = true;
fifo_low = false;
}
virtual ~TGXSTAT() {}
u8 tb; //test busy
u8 tr; //test result
u8 se; //stack error
@ -246,7 +251,10 @@ public:
AddressRegister(u32* _ptr)
: ptr(_ptr)
{}
virtual u32 read32() {
virtual ~AddressRegister() {}
virtual u32 read32() {
return *ptr;
}
virtual void write32(const u32 val) {
@ -259,7 +267,9 @@ public:
//we pass in a pointer to the controller here so we can alert it if anything changes
DmaController* controller;
ControlRegister() {}
virtual u32 read32() {
virtual ~ControlRegister() {}
virtual u32 read32() {
return controller->read32();
}
virtual void write32(const u32 val) {

View File

@ -748,9 +748,9 @@ int NDS_LoadROM(const char *filename, const char *physicalName, const char *logi
int read = gameInfo.reader->Read(gameInfo.fROM,fROMBuffer,4096);
if(read == 0) break;
if(first && read >= 512)
gameInfo.crcForCheatsDb = ~crc32(0, fROMBuffer, 512);
gameInfo.crcForCheatsDb = (u32)~crc32(0, fROMBuffer, 512);
first = false;
gameInfo.crc = crc32(gameInfo.crc, fROMBuffer, read);
gameInfo.crc = (u32)crc32(gameInfo.crc, fROMBuffer, read);
}
gameInfo.chipID = 0xC2; // The Manufacturer ID is defined by JEDEC (C2h = Macronix)
@ -2642,12 +2642,12 @@ bool NDS_FakeBoot()
//perhaps we could automatically boot homebrew to an R4-like device.
_MMU_write32<ARMCPU_ARM9>(0x02FFFE70, 0x5f617267);
_MMU_write32<ARMCPU_ARM9>(0x02FFFE74, kCommandline); //(commandline starts here)
_MMU_write32<ARMCPU_ARM9>(0x02FFFE78, rompath.size()+1);
_MMU_write32<ARMCPU_ARM9>(0x02FFFE78, (u32)(rompath.size()+1));
//0x027FFF7C (argc)
//0x027FFF80 (argv)
for(size_t i=0;i<rompath.size();i++)
_MMU_write08<ARMCPU_ARM9>(kCommandline+i, rompath[i]);
_MMU_write08<ARMCPU_ARM9>(kCommandline+rompath.size(), 0);
for (size_t i = 0; i < rompath.size(); i++)
_MMU_write08<ARMCPU_ARM9>((u32)(kCommandline+i), rompath[i]);
_MMU_write08<ARMCPU_ARM9>((u32)(kCommandline+rompath.size()), 0);
//--------------------------------
//Call the card post_fakeboot hook to perform additional initialization

View File

@ -1,7 +1,7 @@
/*
Copyright (C) 2006 yopyop
Copyright (C) 2006 Theo Berkau
Copyright (C) 2008-2021 DeSmuME team
Copyright (C) 2008-2025 DeSmuME team
Ideas borrowed from Stephane Dallongeville's SCSP core
@ -176,7 +176,7 @@ int SPU_ChangeSoundCore(int coreid, int newBufferSizeBytes)
return -1;
// Since it failed, instead of it being fatal, disable the user spu
if (_currentSNDCore->Init(_currentBufferSize * 2) == -1)
if (_currentSNDCore->Init((int)(_currentBufferSize * 2)) == -1)
{
_currentSNDCore = 0;
return -1;
@ -196,7 +196,7 @@ SoundInterface_struct *SPU_SoundCore()
void SPU_ReInit(bool fakeBoot)
{
SPU_Init(_currentSNDCoreId, _currentBufferSize);
SPU_Init(_currentSNDCoreId, (int)_currentBufferSize);
// Firmware set BIAS to 0x200
if (fakeBoot)
@ -285,7 +285,7 @@ void SPU_SetSynchMode(int mode, int method)
if (_currentSynchMode == ESynchMode_DualSynchAsynch)
{
SPU_user = new SPU_struct(_currentBufferSize);
SPU_user = new SPU_struct((int)_currentBufferSize);
SPU_CloneUser();
}
}
@ -1702,15 +1702,15 @@ void SPU_Emulate_user(bool mix)
processedSampleCount = SPU_DefaultPostProcessSamples(postProcessBuffer, freeSampleCount, _currentSynchMode, _currentSynchronizer);
}
soundProcessor->UpdateAudio(postProcessBuffer, processedSampleCount);
WAV_WavSoundUpdate(postProcessBuffer, processedSampleCount, WAVMODE_USER);
soundProcessor->UpdateAudio(postProcessBuffer, (u32)processedSampleCount);
WAV_WavSoundUpdate(postProcessBuffer, (int)processedSampleCount, WAVMODE_USER);
}
void SPU_DefaultFetchSamples(s16 *sampleBuffer, size_t sampleCount, ESynchMode synchMode, ISynchronizingAudioBuffer *theSynchronizer)
{
if (synchMode == ESynchMode_Synchronous)
{
theSynchronizer->enqueue_samples(sampleBuffer, sampleCount);
theSynchronizer->enqueue_samples(sampleBuffer, (int)sampleCount);
}
}
@ -1723,14 +1723,14 @@ size_t SPU_DefaultPostProcessSamples(s16 *postProcessBuffer, size_t requestedSam
case ESynchMode_DualSynchAsynch:
if(SPU_user != NULL)
{
SPU_MixAudio(true, SPU_user, requestedSampleCount);
SPU_MixAudio(true, SPU_user, (int)requestedSampleCount);
memcpy(postProcessBuffer, SPU_user->outbuf, requestedSampleCount * 2 * sizeof(s16));
processedSampleCount = requestedSampleCount;
}
break;
case ESynchMode_Synchronous:
processedSampleCount = theSynchronizer->output_samples(postProcessBuffer, requestedSampleCount);
processedSampleCount = theSynchronizer->output_samples(postProcessBuffer, (int)requestedSampleCount);
break;
default:
@ -1864,7 +1864,7 @@ void WavWriter::update(void* soundData, int numSamples)
{
if(!spufp) return;
//TODO - big endian for the s16 samples??
size_t elems_written = fwrite(soundData, numSamples*2, 2, spufp);
fwrite(soundData, (size_t)(numSamples*2), 2, spufp);
}
bool WavWriter::isRecording() const
@ -1872,7 +1872,6 @@ bool WavWriter::isRecording() const
return spufp != NULL;
}
static WavWriter wavWriter;
void WAV_End()

View File

@ -1,5 +1,5 @@
/*
Copyright (C) 2013-2021 DeSmuME team
Copyright (C) 2013-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -193,7 +193,7 @@ private:
if (fpROM)
{
u32 data = 0;
u32 readed = fread(&data, 1, 4, fpROM);
u32 readed = (u32)fread(&data, 1, 4, fpROM);
if (readed)
{
rom.incAddress();

View File

@ -1,5 +1,5 @@
/*
Copyright (C) 2013-2021 DeSmuME team
Copyright (C) 2013-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -59,6 +59,8 @@ enum eSlot1Operation
class ISlot1Comp_Protocol_Client
{
public:
virtual ~ISlot1Comp_Protocol_Client() {}
virtual void slot1client_startOperation(eSlot1Operation theOperation) {}
virtual u32 slot1client_read_GCDATAIN(eSlot1Operation theOperation) = 0;
virtual void slot1client_write_GCDATAIN(eSlot1Operation theOperation, u32 val) {}

View File

@ -1,6 +1,6 @@
/*
Copyright (C) 2009 CrazyMax
Copyright (C) 2009-2021 DeSmuME team
Copyright (C) 2009-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -65,7 +65,7 @@ private:
fROM->fseek(pos, SEEK_SET);
u32 data = 0xFFFFFFFF;
u32 readed = fROM->fread(&data, size);
u32 readed = (u32)fROM->fread(&data, size);
return data;
}
@ -77,7 +77,7 @@ private:
fSRAM->fseek(pos, SEEK_SET);
u32 data = 0xFFFFFFFF;
u32 readed = fSRAM->fread(&data, size);
u32 readed = (u32)fSRAM->fread(&data, size);
return data;
}
@ -107,7 +107,7 @@ private:
for(;;)
{
u32 romType = 0;
u32 readed = fROM->fread(&romType, 4);
u32 readed = (u32)fROM->fread(&romType, 4);
int pos = fROM->ftell();
int currPct = pos*100/(size-1);

View File

@ -1,6 +1,6 @@
/*
Copyright (C) 2006 yopyop
Copyright (C) 2006-2021 DeSmuME team
Copyright (C) 2006-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -175,7 +175,7 @@ void armcp15_setSingleRegionAccess(armcp15_t *armcp15, u8 num, u32 mask, u32 set
armcp15->regionExecuteSet_SYS[num] = set ;
break ;
}
} ;
}
/* precalculate region masks/sets from cp15 register */
void armcp15_maskPrecalc(armcp15_t *armcp15)

View File

@ -1,6 +1,6 @@
/*
Copyright (C) 2006 Guillaume Duhamel
Copyright (C) 2006-2021 DeSmuME team
Copyright (C) 2006-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -416,28 +416,28 @@ void NocashMessage(armcpu_t* cpu, int offset)
//this is very inefficiently coded!
char tmp[100];
todo = mass_replace(todo,"%sp%","%r13%");
todo = mass_replace(todo,"%lr%","%r14%");
todo = mass_replace(todo,"%pc%","%r15%");
sprintf(tmp,"%08X",cpu->R[0]); todo = mass_replace(todo,"%r0%",tmp);
sprintf(tmp,"%08X",cpu->R[1]); todo = mass_replace(todo,"%r1%",tmp);
sprintf(tmp,"%08X",cpu->R[2]); todo = mass_replace(todo,"%r2%",tmp);
sprintf(tmp,"%08X",cpu->R[3]); todo = mass_replace(todo,"%r3%",tmp);
sprintf(tmp,"%08X",cpu->R[4]); todo = mass_replace(todo,"%r4%",tmp);
sprintf(tmp,"%08X",cpu->R[5]); todo = mass_replace(todo,"%r5%",tmp);
sprintf(tmp,"%08X",cpu->R[6]); todo = mass_replace(todo,"%r6%",tmp);
sprintf(tmp,"%08X",cpu->R[7]); todo = mass_replace(todo,"%r7%",tmp);
sprintf(tmp,"%08X",cpu->R[8]); todo = mass_replace(todo,"%r8%",tmp);
sprintf(tmp,"%08X",cpu->R[9]); todo = mass_replace(todo,"%r9%",tmp);
sprintf(tmp,"%08X",cpu->R[10]); todo = mass_replace(todo,"%r10%",tmp);
sprintf(tmp,"%08X",cpu->R[11]); todo = mass_replace(todo,"%r11%",tmp);
sprintf(tmp,"%08X",cpu->R[12]); todo = mass_replace(todo,"%r12%",tmp);
sprintf(tmp,"%08X",cpu->R[13]); todo = mass_replace(todo,"%r13%",tmp);
sprintf(tmp,"%08X",cpu->R[14]); todo = mass_replace(todo,"%r14%",tmp);
sprintf(tmp,"%08X",cpu->R[15]); todo = mass_replace(todo,"%r15%",tmp);
sprintf(tmp,"%d",nds.VCount); todo = mass_replace(todo,"%scanline%",tmp);
sprintf(tmp,"%d",currFrameCounter); todo = mass_replace(todo,"%frame%",tmp);
sprintf(tmp,"%lld",nds_timer); todo = mass_replace(todo,"%totalclks%",tmp);
todo = mass_replace(todo, "%sp%", "%r13%");
todo = mass_replace(todo, "%lr%", "%r14%");
todo = mass_replace(todo, "%pc%", "%r15%");
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[ 0]); todo = mass_replace(todo, "%r0%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[ 1]); todo = mass_replace(todo, "%r1%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[ 2]); todo = mass_replace(todo, "%r2%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[ 3]); todo = mass_replace(todo, "%r3%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[ 4]); todo = mass_replace(todo, "%r4%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[ 5]); todo = mass_replace(todo, "%r5%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[ 6]); todo = mass_replace(todo, "%r6%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[ 7]); todo = mass_replace(todo, "%r7%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[ 8]); todo = mass_replace(todo, "%r8%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[ 9]); todo = mass_replace(todo, "%r9%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[10]); todo = mass_replace(todo, "%r10%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[11]); todo = mass_replace(todo, "%r11%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[12]); todo = mass_replace(todo, "%r12%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[13]); todo = mass_replace(todo, "%r13%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[14]); todo = mass_replace(todo, "%r14%", tmp);
snprintf(tmp, sizeof(tmp), "%08X", cpu->R[15]); todo = mass_replace(todo, "%r15%", tmp);
snprintf(tmp, sizeof(tmp), "%d", nds.VCount); todo = mass_replace(todo, "%scanline%", tmp);
snprintf(tmp, sizeof(tmp), "%d", currFrameCounter); todo = mass_replace(todo, "%frame%", tmp);
snprintf(tmp, sizeof(tmp), "%lld", nds_timer); todo = mass_replace(todo, "%totalclks%", tmp);
printf("%s",todo.c_str());
fflush(stdout);

View File

@ -1,6 +1,6 @@
/*
Copyright (C) 2006 Guillaume Duhamel
Copyright (C) 2006-2015 DeSmuME team
Copyright (C) 2006-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -149,7 +149,7 @@ enum EDEBUG_EVENT
DEBUG_EVENT_WRITE=2, //write on arm9 or arm7 bus
DEBUG_EVENT_EXECUTE=3, //prefetch on arm9 or arm7, triggered after the read event
DEBUG_EVENT_ACL_EXCEPTION=4, //acl exception on arm9
DEBUG_EVENT_CACHE_MISS=5, //cache miss on arm9
DEBUG_EVENT_CACHE_MISS=5 //cache miss on arm9
};
enum EDEBUG_NOTIFY

View File

@ -1,5 +1,5 @@
/*
Copyright (C) 2009-2018 DeSmuME team
Copyright (C) 2009-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -26,6 +26,8 @@
class VIEW3D_Driver
{
public:
virtual ~VIEW3D_Driver() {}
virtual void Launch() {}
virtual void NewFrame() {}
virtual bool IsRunning() { return false; }
@ -35,7 +37,7 @@ public:
class BaseDriver {
public:
BaseDriver();
~BaseDriver();
virtual ~BaseDriver();
virtual void AVI_SoundUpdate(void* soundData, int soundLen) {}
virtual bool AVI_IsRecording() { return FALSE; }

View File

@ -1,5 +1,5 @@
/*
Copyright (C) 2009-2016 DeSmuME team
Copyright (C) 2009-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -20,15 +20,18 @@
#define FILTER_MAX_WORKING_SURFACE_COUNT 8
typedef struct {
struct SSurface
{
unsigned char *Surface;
unsigned int Pitch;
unsigned int Width, Height;
int Pitch;
int Width;
int Height;
unsigned char *workingSurface[FILTER_MAX_WORKING_SURFACE_COUNT];
void *userData;
} SSurface;
};
typedef struct SSurface SSurface;
void RenderDeposterize(SSurface Src, SSurface Dst);

View File

@ -1,6 +1,6 @@
/*
Copyright (C) 2011-2012 Roger Manuel
Copyright (C) 2013-2022 DeSmuME team
Copyright (C) 2013-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -144,10 +144,10 @@ VideoFilter::~VideoFilter()
void VideoFilter::__InstanceInit(size_t srcWidth, size_t srcHeight, VideoFilterTypeID typeID, size_t threadCount)
{
SSurface newSurface;
newSurface.Surface = NULL;
newSurface.Pitch = srcWidth*2;
newSurface.Width = srcWidth;
newSurface.Height = srcHeight;
newSurface.Surface = NULL;
newSurface.Pitch = (int)(srcWidth * 2);
newSurface.Width = (int)srcWidth;
newSurface.Height = (int)srcHeight;
newSurface.userData = NULL;
for (size_t i = 0; i < FILTER_MAX_WORKING_SURFACE_COUNT; i++)
@ -228,9 +228,9 @@ bool VideoFilter::__AllocateDstBuffer(const size_t dstWidth, const size_t dstHei
}
// Set up SSurface structure.
this->__vfDstSurface.Width = dstWidth;
this->__vfDstSurface.Height = dstHeight;
this->__vfDstSurface.Pitch = dstWidth * 2;
this->__vfDstSurface.Width = (int)dstWidth;
this->__vfDstSurface.Height = (int)dstHeight;
this->__vfDstSurface.Pitch = (int)(dstWidth * 2);
if (_useInternalDstBuffer)
{
@ -241,8 +241,8 @@ bool VideoFilter::__AllocateDstBuffer(const size_t dstWidth, const size_t dstHei
// Update the surfaces on threads.
const size_t threadCount = this->__vfThread.size();
const unsigned int linesPerThread = (threadCount > 1) ? dstHeight/threadCount : dstHeight;
unsigned int remainingLines = dstHeight;
const int linesPerThread = (threadCount > 1) ? (int)(dstHeight/threadCount) : (int)dstHeight;
int remainingLines = (int)dstHeight;
for (size_t i = 0; i < threadCount; i++)
{
@ -311,9 +311,9 @@ bool VideoFilter::SetSourceSize(const size_t width, const size_t height)
sizeChanged = true;
}
this->__vfSrcSurface.Width = width;
this->__vfSrcSurface.Height = height;
this->__vfSrcSurface.Pitch = width * 2;
this->__vfSrcSurface.Width = (int)width;
this->__vfSrcSurface.Height = (int)height;
this->__vfSrcSurface.Pitch = (int)(width * 2);
// Set the working source buffer pointer so that the working memory block is padded
// with 4 pixel rows worth of memory on both sides.
this->__vfSrcSurface.Surface = (unsigned char *)(newPixBuffer + (width * 4));
@ -323,8 +323,8 @@ bool VideoFilter::SetSourceSize(const size_t width, const size_t height)
// Update the surfaces on threads.
size_t threadCount = this->__vfThread.size();
const unsigned int linesPerThread = (threadCount > 1) ? this->__vfSrcSurface.Height/threadCount : this->__vfSrcSurface.Height;
unsigned int remainingLines = this->__vfSrcSurface.Height;
const int linesPerThread = (threadCount > 1) ? this->__vfSrcSurface.Height/(int)threadCount : this->__vfSrcSurface.Height;
int remainingLines = this->__vfSrcSurface.Height;
for (size_t i = 0; i < threadCount; i++)
{
@ -351,7 +351,7 @@ bool VideoFilter::SetSourceSize(const size_t width, const size_t height)
if (sizeChanged)
{
const VideoFilterAttributes vfAttr = this->GetAttributes();
const size_t dstWidth = width * vfAttr.scaleMultiply / vfAttr.scaleDivide;
const size_t dstWidth = width * vfAttr.scaleMultiply / vfAttr.scaleDivide;
const size_t dstHeight = height * vfAttr.scaleMultiply / vfAttr.scaleDivide;
this->_pixelScale = (float)vfAttr.scaleMultiply / (float)vfAttr.scaleDivide;
@ -625,16 +625,16 @@ void VideoFilter::RunFilterCustomByAttributes(const uint32_t *__restrict srcBuff
SSurface srcSurface;
memset(&srcSurface, 0, sizeof(srcSurface));
srcSurface.Surface = (unsigned char *)srcBuffer;
srcSurface.Pitch = srcWidth*2;
srcSurface.Width = srcWidth;
srcSurface.Height = srcHeight;
srcSurface.Pitch = (int)(srcWidth * 2);
srcSurface.Width = (int)srcWidth;
srcSurface.Height = (int)srcHeight;
SSurface dstSurface;
memset(&dstSurface, 0, sizeof(dstSurface));
dstSurface.Surface = (unsigned char *)dstBuffer;
dstSurface.Pitch = dstWidth*2;
dstSurface.Width = dstWidth;
dstSurface.Height = dstHeight;
dstSurface.Pitch = (int)(dstWidth * 2);
dstSurface.Width = (int)dstWidth;
dstSurface.Height = (int)dstHeight;
if (filterFunction == NULL)
{

View File

@ -501,8 +501,8 @@ unsigned cpu_features_get_core_amount(void)
/* Linux, most UNIX-likes. */
long ret = sysconf(_SC_NPROCESSORS_ONLN);
if (ret <= 0)
return (unsigned)1;
return ret;
ret = 1;
return (unsigned)ret;
#elif defined(BSD) || defined(__APPLE__)
/* BSD */
/* Copypasta from stackoverflow, dunno if it works. */

View File

@ -192,12 +192,12 @@ bool BackupDevice::load_state(EMUFILE &is)
is.read_u8(this->_write_protect);
}
this->_fsize = data.size();
this->_fsize = (u32)data.size();
#ifndef _DONT_SAVE_BACKUP
this->_fpMC->fseek(0, SEEK_SET);
if (data.size() != 0)
this->_fpMC->fwrite((char *)&data[0], this->_fsize);
ensure(data.size(), this->_fpMC);
ensure((u32)data.size(), this->_fpMC);
#endif
if (version >= 5)
@ -657,9 +657,9 @@ void BackupDevice::detect()
if ( (this->_state == DETECTING) && (this->_data_autodetect.size() > 0) )
{
//we can now safely detect the save address size
u32 autodetect_size = this->_data_autodetect.size();
u32 autodetect_size = (u32)this->_data_autodetect.size();
printf("Autodetecting with autodetect_size=%d\n",autodetect_size);
printf("Autodetecting with autodetect_size=%u\n", autodetect_size);
//detect based on rules
switch(autodetect_size)
@ -1132,7 +1132,7 @@ u32 BackupDevice::get_save_nogba_size(const char* fname)
if (fsrc)
{
char src[0x50] = {0};
u32 fsize = 0;
size_t fsize = 0;
fseek(fsrc, 0, SEEK_END);
fsize = ftell(fsrc);
fseek(fsrc, 0, SEEK_SET);
@ -1174,7 +1174,7 @@ u32 BackupDevice::get_save_nogba_size(u8 *data)
return 0xFFFFFFFF;
}
static int no_gba_unpackSAV(void *in_buf, u32 fsize, void *out_buf, u32 &size)
static int no_gba_unpackSAV(void *in_buf, size_t fsize, void *out_buf, u32 &size)
{
u8 *src = (u8 *)in_buf;
u8 *dst = (u8 *)out_buf;
@ -1295,7 +1295,7 @@ bool BackupDevice::import_no_gba(const char *fname, u32 force_size)
if (fsrc)
{
u32 fsize = 0;
size_t fsize = 0;
fseek(fsrc, 0, SEEK_END);
fsize = ftell(fsrc);
fseek(fsrc, 0, SEEK_SET);
@ -1366,19 +1366,19 @@ bool BackupDevice::export_no_gba(const char* fname)
this->_fpMC->fread((char *)&data[0], this->_fsize);
this->_fpMC->fseek(pos, SEEK_SET);
FILE* outf = fopen(fname,"wb");
if(!outf) return false;
u32 size = data.size();
u32 padSize = pad_up_size(size);
if(data.size()>0)
fwrite(&data[0],1,size,outf);
for(u32 i=size;i<padSize;i++)
fputc(0xFF,outf);
FILE *outf = fopen(fname, "wb");
if (!outf) return false;
size_t size = data.size();
size_t padSize = pad_up_size((u32)size);
if (data.size() > 0)
fwrite(&data[0], 1, size, outf);
for (size_t i = size; i < padSize; i++)
fputc(0xFF, outf);
if (padSize < 512 * 1024)
if (padSize < (512 * 1024))
{
for(u32 i=padSize; i<512 * 1024; i++)
fputc(0xFF,outf);
for (size_t i = padSize; i < (512 * 1024); i++)
fputc(0xFF, outf);
}
fclose(outf);
@ -1395,14 +1395,14 @@ bool BackupDevice::export_raw(const char* filename)
this->_fpMC->fread((char *)&data[0], this->_fsize);
this->_fpMC->fseek(pos, SEEK_SET);
FILE* outf = fopen(filename,"wb");
if(!outf) return false;
u32 size = data.size();
u32 padSize = pad_up_size(size);
if(data.size()>0)
fwrite(&data[0],1,size,outf);
for(u32 i=size;i<padSize;i++)
fputc(uninitializedValue,outf);
FILE *outf = fopen(filename, "wb");
if (!outf) return false;
size_t size = data.size();
size_t padSize = pad_up_size((u32)size);
if (data.size() > 0)
fwrite(&data[0], 1, size, outf);
for (size_t i = size; i < padSize; i++)
fputc(uninitializedValue, outf);
fclose(outf);
return true;
@ -1649,8 +1649,8 @@ bool BackupDevice::import_dsv(const char *filename)
// Truncate the file if necessary.
// * Also see TODO note above, since that applies to this step as well.
const size_t newFileSize = this->_info.padSize + BackupDevice::GetDSVFooterSize();
this->_fpMC->truncate(newFileSize);
const size_t newFileSize = (size_t)this->_info.padSize + BackupDevice::GetDSVFooterSize();
this->_fpMC->truncate((s32)newFileSize);
result = true;

View File

@ -1,5 +1,5 @@
/*
Copyright 2008-2021 DeSmuME team
Copyright 2008-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -88,7 +88,7 @@ void MovieData::insertEmpty(int at, int frames)
{
if(at == -1)
{
int currcount = records.size();
int currcount = (int)records.size();
records.resize(records.size()+frames);
clearRecordRange(currcount,frames);
}
@ -258,7 +258,7 @@ MovieData::MovieData(bool fromCurrentSettings)
for(int i=0;i<256;i++)
{
char tmp[256];
sprintf(tmp,"micsample%d",i);
snprintf(tmp, sizeof(tmp), "micsample%d", i);
installValueMap[tmp] = &MovieData::installMicSample;
}
@ -403,7 +403,7 @@ int MovieData::dump(EMUFILE &fp, bool binary)
fp.fprintf("savestate %d\n", savestate?1:0);
if (sram.size() != 0)
fp.fprintf("sram %s\n", BytesToString(&sram[0],sram.size()).c_str());
fp.fprintf( "sram %s\n", BytesToString(&sram[0], (int)sram.size()).c_str() );
for (size_t i = 0; i < 256; i++)
{
@ -411,8 +411,8 @@ int MovieData::dump(EMUFILE &fp, bool binary)
if(micSamples.size() > i)
{
char tmp[32];
sprintf(tmp,"micsample%d", (int)i);
fp.fprintf("%s %s\n",tmp, BytesToString(&micSamples[i][0],micSamples[i].size()).c_str());
snprintf(tmp, sizeof(tmp), "micsample%d", (int)i);
fp.fprintf( "%s %s\n", tmp, BytesToString(&micSamples[i][0], (int)micSamples[i].size()).c_str() );
}
}
@ -527,7 +527,7 @@ bool LoadFM2(MovieData &movieData, EMUFILE &fp, int size, bool stopAfterHeader)
}
else
{
int currcount = movieData.records.size();
size_t currcount = movieData.records.size();
movieData.records.resize(currcount + 1);
movieData.records[currcount].parse(fp);
}
@ -1310,16 +1310,17 @@ void FCEUI_MakeBackupMovie(bool dispMessage)
string backupFn; //Target backup filename
string tempFn; //temp used in back filename creation
stringstream stream;
int x; //Temp variable for string manip
size_t x; //Temp variable for string manip
bool exist = false; //Used to test if filename exists
bool overflow = false; //Used for special situation when backup numbering exceeds limit
currentFn = curMovieFilename; //Get current moviefilename
backupFn = curMovieFilename; //Make backup filename the same as current moviefilename
x = backupFn.find_last_of("."); //Find file extension
x = backupFn.find_last_of("."); //Find file extension
backupFn = backupFn.substr(0,x); //Remove extension
tempFn = backupFn; //Store the filename at this point
for (unsigned int backNum=0;backNum<999;backNum++) //999 = arbituary limit to backup files
for (size_t backNum = 0; backNum < 999; backNum++) //999 = arbituary limit to backup files
{
stream.str(""); //Clear stream
if (backNum > 99)

View File

@ -2,7 +2,7 @@
Copyright (C) 2006 Normmatt
Copyright (C) 2006 Theo Berkau
Copyright (C) 2007 Pascal Giard
Copyright (C) 2008-2021 DeSmuME team
Copyright (C) 2008-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -68,7 +68,7 @@ int lastSaveState = 0; //Keeps track of last savestate used for quick save/load
u32 _DESMUME_version = EMU_DESMUME_VERSION_NUMERIC();
u32 svn_rev = 0; //EMU_DESMUME_VERSION_NUMERIC(); //sorry, not using this now
s64 save_time = 0;
s64 save_time_data = 0;
NDS_SLOT1_TYPE slot1Type = NDS_SLOT1_RETAIL_AUTO;
NDS_SLOT2_TYPE slot2Type = NDS_SLOT2_AUTO;
@ -87,7 +87,7 @@ SFORMAT SF_NDS_INFO[]={
{ "DVMI", 1, 1, (void*)&DESMUME_VERSION_MINOR},
{ "DSBD", 1, 1, (void*)&DESMUME_VERSION_BUILD},
{ "GREV", 1, 4, &svn_rev},
{ "GTIM", 1, 8, &save_time},
{ "GTIM", 1, 8, &save_time_data},
{ 0 }
};
@ -670,7 +670,7 @@ void scan_savestates()
path.getpathnoext(path.STATE_SLOTS, filename);
if (strlen(filename) + strlen(".dst") + strlen("-2147483648") /* = biggest string for i */ > MAX_PATH) return;
sprintf(filename + strlen(filename), ".ds%d", i);
snprintf(filename + strlen(filename), sizeof(filename), ".ds%d", i);
#ifdef _MSC_VER
wchar_t wgarbage[1024] = {0};
@ -697,7 +697,7 @@ void savestate_slot(int num)
path.getpathnoext(path.STATE_SLOTS, filename);
if (strlen(filename) + strlen(".dsx") + strlen("-2147483648") /* = biggest string for num */ > MAX_PATH) return;
sprintf(filename + strlen(filename), ".ds%d", num);
snprintf(filename + strlen(filename), sizeof(filename), ".ds%d", num);
if (savestate_save(filename))
{
@ -775,7 +775,7 @@ void loadstate_slot(int num)
std::string fname = dirname + PSS;
char mini[100];
sprintf(mini, "%u", cur_index);
snprintf(mini, sizeof(mini), "%u", cur_index);
fname += mini + (std::string)".dst";
savestate_save(fname.c_str());
@ -789,7 +789,7 @@ void loadstate_slot(int num)
}
if (strlen(filename) + strlen(".dsx") + strlen("-2147483648") /* = biggest string for num */ > MAX_PATH) return;
sprintf(filename + strlen(filename), ".ds%d", num);
snprintf(filename + strlen(filename), sizeof(filename), ".ds%d", num);
if (savestate_load(filename))
{
@ -1125,7 +1125,7 @@ static void writechunks(EMUFILE &os)
DateTime tm = DateTime::get_Now();
svn_rev = 0;
save_time = tm.get_Ticks();
save_time_data = tm.get_Ticks();
gfx3d_PrepareSaveStateBufferWrite();
@ -1253,7 +1253,7 @@ static bool ReadStateChunks(EMUFILE &is, s32 totalsize)
{
char buf[32] = {0};
if (svn_rev != 0xFFFFFFFF)
sprintf(buf, " svn %u", svn_rev);
snprintf(buf, sizeof(buf), " svn %u", svn_rev);
printf("\tDeSmuME version: %u.%u.%u%s\n", version_major, version_minor, version_build, buf);
}

View File

@ -1,5 +1,5 @@
/*
Copyright (C) 2010-2015 DeSmuME team
Copyright (C) 2010-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -28,6 +28,8 @@ class EMUFILE;
class Slot1Info
{
public:
virtual ~Slot1Info() {}
virtual const char* name() const = 0;
virtual const char* descr()const = 0;
virtual const u8 id() const = 0;
@ -42,6 +44,9 @@ public:
, mID(_id)
{
}
virtual ~Slot1InfoSimple() {}
virtual const char* name() const { return mName; }
virtual const char* descr() const { return mDescr; }
virtual const u8 id() const { return mID; }

View File

@ -1,5 +1,5 @@
/*
Copyright (C) 2009-2023 DeSmuME team
Copyright (C) 2009-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -29,6 +29,8 @@ class EMUFILE;
class Slot2Info
{
public:
virtual ~Slot2Info() {}
virtual const char* name() const = 0;
virtual const char* descr() const = 0;
virtual u8 id() const = 0;
@ -43,6 +45,9 @@ public:
, mID(_id)
{
}
virtual ~Slot2InfoSimple() {}
virtual const char* name() const { return mName; }
virtual const char* descr() const { return mDescr; }
virtual u8 id() const { return mID; }

View File

@ -1,5 +1,5 @@
/*
Copyright 2009-2021 DeSmuME team
Copyright 2009-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -234,8 +234,8 @@ do {
/* The factor 2 below avoids cut-off errors for nr_fats == 1.
* The "nr_fats*3" is for the reserved first two FAT entries */
clust12 = 2*((u64) fatdata *sector_size + bs.fatCount*3) /
(2*(int) bs.sectorsPerCluster * sector_size + bs.fatCount*3);
clust12 = (u32)( ( (2ULL * (u64)fatdata * (u64)sector_size) + ((u64)bs.fatCount * 3ULL) ) /
( (2ULL * (u64)bs.sectorsPerCluster * (u64)sector_size) + ((u64)bs.fatCount * 3ULL) ) );
fatlength12 = cdiv (((clust12+2) * 3 + 1) >> 1, sector_size);
/* Need to recalculate number of clusters, since the unused parts of the
* FATS and data area together could make up space for an additional,
@ -251,8 +251,8 @@ do {
printf( "FAT12: too much clusters\n" );
}
clust16 = ((u64) fatdata *sector_size + bs.fatCount*4) /
((int) bs.sectorsPerCluster * sector_size + bs.fatCount*2);
clust16 = (u32)( ( ((u64)fatdata * (u64)sector_size) + ((u64)bs.fatCount * 4ULL) ) /
( ((u64)bs.sectorsPerCluster * (u64)sector_size) + ((u64)bs.fatCount * 2ULL) ) );
fatlength16 = cdiv ((clust16+2) * 2, sector_size);
/* Need to recalculate number of clusters, since the unused parts of the
* FATS and data area together could make up space for an additional,
@ -276,8 +276,8 @@ do {
clust16 = 0;
}
clust32 = ((u64) fatdata *sector_size + bs.fatCount*8) /
((int) bs.sectorsPerCluster * sector_size + bs.fatCount*4);
clust32 = (u32)( ( ((u64)fatdata * (u64)sector_size) + ((u64)bs.fatCount * 8ULL) ) /
( ((u64)bs.sectorsPerCluster * (u64)sector_size) + ((u64)bs.fatCount * 4ULL) ) );
fatlength32 = cdiv ((clust32+2) * 4, sector_size);
/* Need to recalculate number of clusters, since the unused parts of the
* FATS and data area together could make up space for an additional,
@ -397,7 +397,6 @@ case 32:
//but we onnly targeted fat32 our first time through
bool EmuFatVolume::formatNew(u32 sectors)
{
u32 volumeStartBlock = 0;
TFat32BootSector bsrec;
memset(&bsrec,0,sizeof(TFat32BootSector));
TFat32BootSector *bs = &bsrec;

View File

@ -1,5 +1,5 @@
/*
Copyright (C) 2013-2017 DeSmuME team
Copyright (C) 2013-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -165,9 +165,8 @@ bool FS_NITRO::loadFileTables()
for (u32 i = 0 ; i < numOverlay9; i++)
{
char buf[129] = {0};
memset(&buf[0], 0, sizeof(buf));
fat[ovr9[i].fileID].isOverlay = true;
sprintf(buf, "overlay_%04u.bin", ovr9[i].id);
snprintf(buf, sizeof(buf), "overlay_%04u.bin", ovr9[i].id);
fat[ovr9[i].fileID].filename = buf;
}
}
@ -181,9 +180,8 @@ bool FS_NITRO::loadFileTables()
for (u32 i = 0 ; i < numOverlay7; i++)
{
char buf[129] = {0};
memset(&buf[0], 0, sizeof(buf));
fat[ovr7[i].fileID].isOverlay = true;
sprintf(buf, "overlay_%04u.bin", ovr7[i].id);
snprintf(buf, sizeof(buf), "overlay_%04u.bin", ovr7[i].id);
fat[ovr7[i].fileID].filename = buf;
}
}
@ -300,15 +298,15 @@ bool FS_NITRO::rebuildFAT(u32 addr, u32 size, std::string pathData)
FILE *fp = fopen(path.c_str(), "rb");
if (!fp) continue;
fseek(fp, 0, SEEK_END);
u32 size = ftell(fp);
u32 fileSize = (u32)ftell(fp);
fclose(fp);
fat[i].file = true;
if (fat[i].size != size)
if (fat[i].size != fileSize)
{
//printf("Different size: %s (ROM: %d, file %d)\n", path.c_str(), fat[i].size, size);
fat[i].sizeFile = size;
//printf("Different size: %s (ROM: %d, file %d)\n", path.c_str(), fat[i].size, fileSize);
fat[i].sizeFile = fileSize;
}
else
fat[i].sizeFile = fat[i].size;

View File

@ -1,5 +1,5 @@
/*
Copyright (C) 2013-2017 DeSmuME team
Copyright (C) 2013-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -26,7 +26,7 @@ enum FNT_TYPES
FS_FILE_ENTRY = 0,
FS_SUBDIR_ENTRY = 1,
FS_END_SUBTABLE = 2,
FS_RESERVED = 3,
FS_RESERVED = 3
};
#include "../PACKED.h"

View File

@ -1,5 +1,5 @@
/*
Copyright (C) 2008-2009 DeSmuME team
Copyright (C) 2008-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -56,7 +56,7 @@ void Desmume_Guid::newGuid()
std::string Desmume_Guid::toString()
{
char buf[37];
sprintf(buf,"%08X-%04X-%04X-%04X-%02X%02X%02X%02X%02X%02X",
snprintf(buf, sizeof(buf), "%08X-%04X-%04X-%04X-%02X%02X%02X%02X%02X%02X",
de32lsb(data),de16lsb(data+4),de16lsb(data+6),de16lsb(data+8),data[10],data[11],data[12],data[13],data[14],data[15]);
return std::string(buf);
}
@ -84,7 +84,7 @@ u8 Desmume_Guid::hexToByte(char** ptrptr)
void Desmume_Guid::scan(std::string& str)
{
char* endptr = (char*)str.c_str();
en32lsb(data,strtoul(endptr,&endptr,16));
en32lsb(data+0,(u32)strtoul(endptr+0,&endptr,16));
en16lsb(data+4,(u16)strtoul(endptr+1,&endptr,16));
en16lsb(data+6,(u16)strtoul(endptr+1,&endptr,16));
en16lsb(data+8,(u16)strtoul(endptr+1,&endptr,16));

View File

@ -1,7 +1,7 @@
/*
Copyright (C) 2006 yopyop
Copyright (C) 2006 Mic
Copyright (C) 2010-2016 DeSmuME team
Copyright (C) 2010-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -65,13 +65,13 @@ static void list_files(const char *filepath, ListCallback list_callback)
if(!retro_readdir(rdir))
break;
const char* fname = retro_dirent_get_name(rdir);
const char* fname2 = retro_dirent_get_name(rdir);
list_callback(rdir,EListCallbackArg_Item);
printf("cflash added %s\n",fname);
printf("cflash added %s\n", fname2);
if (retro_dirent_is_dir(rdir, fname) && (strcmp(fname, ".")) && strcmp(fname, ".."))
if (retro_dirent_is_dir(rdir, fname2) && (strcmp(fname2, ".")) && strcmp(fname2, ".."))
{
std::string subdir = (std::string)filepath + path_default_slash() + fname;
std::string subdir = (std::string)filepath + path_default_slash() + fname2;
list_files(subdir.c_str(), list_callback);
list_callback(rdir, EListCallbackArg_Pop);
}
@ -145,16 +145,16 @@ static void DirectoryListCallback(RDIR* rdir, EListCallbackArg arg)
if(inf)
{
fseek(inf,0,SEEK_END);
long len = ftell(inf);
size_t len = ftell(inf);
fseek(inf,0,SEEK_SET);
u8 *buf = new u8[len];
fread(buf,1,len,inf);
fclose(inf);
std::string path = currVirtPath + "/" + fname;
printf("FAT + (%10.2f KB) %s \n",len/1024.f,path.c_str());
bool ok = LIBFAT::WriteFile(path.c_str(),buf,len);
if(!ok)
std::string path2 = currVirtPath + "/" + fname;
printf( "FAT + (%10.2f KB) %s \n", (float)len/1024.f, path2.c_str() );
bool ok = LIBFAT::WriteFile(path2. c_str(), buf, (int)len);
if (!ok)
printf("ERROR adding file to fat\n");
delete[] buf;
} else printf("ERROR opening file for fat\n");
@ -206,7 +206,7 @@ bool VFAT::build(const char* path, int extra_MB)
delete file;
try
{
file = new EMUFILE_MEMORY(dataSectors*512);
file = new EMUFILE_MEMORY((u32)dataSectors*512);
}
catch(std::bad_alloc)
{
@ -223,7 +223,7 @@ bool VFAT::build(const char* path, int extra_MB)
EmuFat fat(file);
EmuFatVolume vol;
u8 ok = vol.init(&fat);
vol.formatNew(dataSectors);
vol.formatNew((u32)dataSectors);
//ensure we are working in memory, just in case we were testing with a disk file.
//libfat will need to go straight to memory (for now; we could easily change it to work with the disk)

View File

@ -2,7 +2,7 @@
//subsequently modified for desmume
/*
Copyright (C) 2008-2009 DeSmuME team
Copyright (C) 2008-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -24,7 +24,7 @@
//a vc-style substring operation (very kind and lenient)
std::string strsub(const std::string& str, int pos, int len) {
int strlen = str.size();
int strlen = (int)str.size();
if(strlen==0) return str; //empty strings always return empty strings
if(pos>=strlen) return str; //if you start past the end of the string, return the entire string. this is unusual, but there you have it
@ -44,7 +44,7 @@ std::string strsub(const std::string& str, int pos, int len) {
std::string strmid(const std::string& str, int pos, int len) { return strsub(str,pos,len); }
std::string strleft(const std::string& str, int len) { return strsub(str,0,len); }
std::string strright(const std::string& str, int len) { return len ? strsub(str,str.size()-len,len) : ""; }
std::string strright(const std::string& str, int len) { return len ? strsub(str,(int)str.size()-len,len) : ""; }
std::string toupper(const std::string& str)
{
std::string ret = str;
@ -80,7 +80,7 @@ private:
std::string u32ToHexString(u32 val)
{
char temp[16];
sprintf(temp,"%08X",val);
snprintf(temp, sizeof(temp), "%08X", val);
return temp;
}
@ -89,14 +89,14 @@ std::string BytesToString(const void* data, int len)
{
char temp[16];
if(len==1) {
sprintf(temp,"%d",*(const unsigned char*)data);
snprintf(temp, sizeof(temp), "%d",*(const unsigned char*)data);
return temp;
} else if(len==2) {
sprintf(temp,"%d",*(const unsigned short*)data);
snprintf(temp, sizeof(temp), "%d",*(const unsigned short*)data);
return temp;
} else if(len==4) {
sprintf(temp,"%d",*(const unsigned int*)data);
return temp;
snprintf(temp, sizeof(temp), "%d",*(const unsigned int*)data);
return temp;
}
std::string ret;
@ -143,7 +143,7 @@ std::string BytesToString(const void* data, int len)
int HexStringToBytesLength(const std::string& str)
{
if(str.size()>2 && str[0] == '0' && toupper(str[1]) == 'X')
return str.size()/2-1;
return (int)(str.size() / 2) - 1;
else return -1;
}
@ -154,7 +154,7 @@ int Base64StringToBytesLength(const std::string& str)
size_t c = ((str.size() - 7) / 4) * 3;
if(str[str.size()-1] == '=') { --c;
if(str[str.size()-2] == '=') --c; }
return c;
return (int)c;
}
///parses a string in the same format as BytesToString
@ -194,7 +194,7 @@ bool StringToBytes(const std::string& str, void* data, int len)
{
// hex
int amt = len;
int bytesAvailable = str.size()/2;
int bytesAvailable = (int)(str.size() / 2);
if(bytesAvailable < amt)
amt = bytesAvailable;
const char* cstr = str.c_str()+2;
@ -266,7 +266,7 @@ std::vector<std::string> tokenize_str(const std::string & str,
std::string stditoa(int n)
{
char tempbuf[16];
sprintf(tempbuf, "%d", n);
snprintf(tempbuf, sizeof(tempbuf), "%d", n);
return tempbuf;
}

View File

@ -1,6 +1,6 @@
/*
Copyright (C) 2007 Tim Seidel
Copyright (C) 2008-2022 DeSmuME team
Copyright (C) 2008-2025 DeSmuME team
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -3475,7 +3475,7 @@ int AdhocCommInterface::_RXPacketGetFromSocket(RXRawPacketData& rawPacket)
u8* targetPacket = &rawPacket.buffer[rawPacket.writeLocation];
rxPacketSizeInt = recvfrom(thisSocket, (char*)targetPacket, WIFI_WORKING_PACKET_BUFFER_SIZE, 0, &fromAddr, &fromLen);
rxPacketSizeInt = (int)recvfrom(thisSocket, (char*)targetPacket, WIFI_WORKING_PACKET_BUFFER_SIZE, 0, &fromAddr, &fromLen);
if(rxPacketSizeInt <= 0)
{
return rxPacketSizeInt; // No packet data was received.
@ -3720,7 +3720,7 @@ size_t SoftAPCommInterface::TXPacketSend(u8* txTargetBuffer, size_t txLength)
return txPacketSize;
}
int result = this->_pcap->sendpacket(this->_bridgeDevice, txTargetBuffer, txLength);
int result = this->_pcap->sendpacket(this->_bridgeDevice, txTargetBuffer, (int)txLength);
if(result == 0)
{
txPacketSize = txLength;
@ -4025,9 +4025,10 @@ void WifiHandler::_PacketCaptureFileOpen()
tm* t = localtime(&ti);
char* gamecd = gameInfo.header.gameCode;
char file_name[50];
sprintf(
char file_name[64];
snprintf(
file_name,
sizeof(file_name),
"%c%c%c%c [%02d-%02d-%02d-%02d].pcap",
gamecd[0], gamecd[1], gamecd[2], gamecd[3],
t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec
@ -4081,8 +4082,8 @@ void WifiHandler::_PacketCaptureFileWrite(const u8* packet, u32 len, bool isRece
return;
}
const u32 seconds = timeStamp / 1000000;
const u32 millis = timeStamp % 1000000;
const u32 seconds = (u32)(timeStamp / 1000000ULL);
const u32 millis = (u32)(timeStamp % 1000000ULL);
// Add the packet
// more info: http://www.kroosec.com/2012/10/a-look-at-pcap-file-format.html
@ -4503,7 +4504,7 @@ int WifiHandler::GetBridgeDeviceList(std::vector<std::string>* deviceStringList)
}
}
return deviceStringList->size();
return (int)deviceStringList->size();
}
int WifiHandler::GetSelectedBridgeDeviceIndex()

View File

@ -1,7 +1,7 @@
/*
Copyright (C) 2007 Tim Seidel
Copyright (C) 2014 pleonex
Copyright (C) 2008-2022 DeSmuME team
Copyright (C) 2008-2025 DeSmuME team
This file is part of DeSmuME
@ -3230,6 +3230,8 @@ typedef struct _FW_WFCProfile
class ClientPCapInterface
{
public:
virtual ~ClientPCapInterface() {}
virtual int findalldevs(void **alldevs, char *errbuf) = 0;
virtual void freealldevs(void *alldevs) = 0;
virtual void* open(const char *source, int snaplen, int flags, int readtimeout, char *errbuf) = 0;
@ -3246,6 +3248,8 @@ private:
void __CopyErrorString(char *errbuf);
public:
virtual ~DummyPCapInterface() {}
virtual int findalldevs(void **alldevs, char *errbuf);
virtual void freealldevs(void *alldevs);
virtual void* open(const char *source, int snaplen, int flags, int readtimeout, char *errbuf);
@ -3261,6 +3265,8 @@ public:
class POSIXPCapInterface : public ClientPCapInterface
{
public:
virtual ~POSIXPCapInterface() {}
virtual int findalldevs(void **alldevs, char *errbuf);
virtual void freealldevs(void *alldevs);
virtual void* open(const char *source, int snaplen, int flags, int readtimeout, char *errbuf);
@ -3286,7 +3292,7 @@ protected:
public:
WifiCommInterface();
~WifiCommInterface();
virtual ~WifiCommInterface();
virtual bool Start(WifiHandler *currentWifiHandler) = 0;
virtual void Stop() = 0;
@ -3302,7 +3308,7 @@ protected:
public:
AdhocCommInterface();
~AdhocCommInterface();
virtual ~AdhocCommInterface();
int _RXPacketGetFromSocket(RXRawPacketData &rawPacket);