Silence a whole lot of longstanding compiler warnings.
This commit is contained in:
parent
0df858f2e8
commit
7eabbb8ea6
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2008-2016 DeSmuME team
|
||||
Copyright (C) 2008-2021 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
|
||||
|
@ -13,24 +13,24 @@
|
|||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with the this software. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "types.h"
|
||||
#include "Database.h"
|
||||
#include "retro_miscellaneous.h"
|
||||
|
||||
//------------------------------------------------------------
|
||||
//large databases are first. scroll down to ENDLARGE to find the code
|
||||
|
||||
struct MAKER
|
||||
{
|
||||
u16 code;
|
||||
const char* name;
|
||||
};
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "types.h"
|
||||
#include "Database.h"
|
||||
#include "retro_miscellaneous.h"
|
||||
|
||||
//------------------------------------------------------------
|
||||
//large databases are first. scroll down to ENDLARGE to find the code
|
||||
|
||||
struct MAKER
|
||||
{
|
||||
u16 code;
|
||||
const char* name;
|
||||
};
|
||||
|
||||
|
||||
static const char regions_index[] = "JPFSEODIRKHXVWUC";
|
||||
static const char *regions[] = {
|
||||
"JPN", // J
|
||||
|
@ -49,8 +49,8 @@ static const char *regions[] = {
|
|||
"EUU", // W
|
||||
"AUS", // U
|
||||
"CHN", // C
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
static MAKER makerCodes[] = {
|
||||
{ 0x3130, "Nintendo" },
|
||||
{ 0x3230, "Rocket Games, Ajinomoto" },
|
||||
|
@ -367,26 +367,26 @@ static MAKER makerCodes[] = {
|
|||
//ENDLARGE
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace Database
|
||||
{
|
||||
const char* RegionXXXForCode(char code, bool unknownAsString)
|
||||
{
|
||||
namespace Database
|
||||
{
|
||||
const char* RegionXXXForCode(char code, bool unknownAsString)
|
||||
{
|
||||
size_t regions_num = ARRAY_SIZE(regions);
|
||||
|
||||
const char* found = strchr(regions_index,code);
|
||||
if(found) return regions[found-regions_index];
|
||||
else return unknownAsString ? "???" : NULL;
|
||||
}
|
||||
|
||||
const char *MakerNameForMakerCode(u16 id, bool unknownAsString)
|
||||
{
|
||||
//too bad these aren't sorted
|
||||
for (int i = 0; i < ARRAY_SIZE(makerCodes); i++)
|
||||
}
|
||||
|
||||
const char *MakerNameForMakerCode(u16 id, bool unknownAsString)
|
||||
{
|
||||
//too bad these aren't sorted
|
||||
for (size_t i = 0; i < ARRAY_SIZE(makerCodes); i++)
|
||||
{
|
||||
if (makerCodes[i].code == id)
|
||||
return makerCodes[i].name;
|
||||
}
|
||||
|
||||
return unknownAsString ? "Unknown" : NULL;
|
||||
}
|
||||
return unknownAsString ? "Unknown" : NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1128,7 +1128,7 @@ static void execdiv() {
|
|||
|
||||
DSI_TSC::DSI_TSC()
|
||||
{
|
||||
for(int i=0;i<ARRAY_SIZE(registers);i++)
|
||||
for (size_t i = 0; i < ARRAY_SIZE(registers); i++)
|
||||
registers[i] = 0x00;
|
||||
reset_command();
|
||||
}
|
||||
|
@ -1224,7 +1224,7 @@ bool DSI_TSC::save_state(EMUFILE &os)
|
|||
os.write_u8(read_flag);
|
||||
os.write_32LE(state);
|
||||
os.write_32LE(readcount);
|
||||
for (int i = 0; i < ARRAY_SIZE(registers); i++)
|
||||
for (size_t i = 0; i < ARRAY_SIZE(registers); i++)
|
||||
os.write_u8(registers[i]);
|
||||
|
||||
return true;
|
||||
|
@ -1239,7 +1239,7 @@ bool DSI_TSC::load_state(EMUFILE &is)
|
|||
is.read_u8(read_flag);
|
||||
is.read_32LE(state);
|
||||
is.read_32LE(readcount);
|
||||
for (int i = 0; i < ARRAY_SIZE(registers); i++)
|
||||
for (size_t i = 0; i < ARRAY_SIZE(registers); i++)
|
||||
is.read_u8(registers[i]);
|
||||
|
||||
return true;
|
||||
|
|
|
@ -96,8 +96,8 @@ GameInfo gameInfo;
|
|||
NDSSystem nds;
|
||||
CFIRMWARE *extFirmwareObj = NULL;
|
||||
|
||||
std::vector<int> memReadBreakPoints;
|
||||
std::vector<int> memWriteBreakPoints;
|
||||
std::vector<u32> memReadBreakPoints;
|
||||
std::vector<u32> memWriteBreakPoints;
|
||||
|
||||
using std::min;
|
||||
using std::max;
|
||||
|
@ -707,15 +707,17 @@ int NDS_LoadROM(const char *filename, const char *physicalName, const char *logi
|
|||
//run crc over the whole buffer (chunk at a time, to avoid coding a streaming crc
|
||||
gameInfo.reader->Seek(gameInfo.fROM, 0, SEEK_SET);
|
||||
gameInfo.crc = 0;
|
||||
|
||||
u8 fROMBuffer[4096];
|
||||
bool first = true;
|
||||
|
||||
for(;;) {
|
||||
u8 buf[4096];
|
||||
int read = gameInfo.reader->Read(gameInfo.fROM,buf,4096);
|
||||
int read = gameInfo.reader->Read(gameInfo.fROM,fROMBuffer,4096);
|
||||
if(read == 0) break;
|
||||
if(first && read >= 512)
|
||||
gameInfo.crcForCheatsDb = ~crc32(0, buf, 512);
|
||||
gameInfo.crcForCheatsDb = ~crc32(0, fROMBuffer, 512);
|
||||
first = false;
|
||||
gameInfo.crc = crc32(gameInfo.crc, buf, read);
|
||||
gameInfo.crc = crc32(gameInfo.crc, fROMBuffer, read);
|
||||
}
|
||||
|
||||
gameInfo.chipID = 0xC2; // The Manufacturer ID is defined by JEDEC (C2h = Macronix)
|
||||
|
@ -1921,7 +1923,7 @@ static /*donotinline*/ std::pair<s32,s32> armInnerLoop(
|
|||
{
|
||||
// breakpoint handling
|
||||
#if defined(HOST_WINDOWS) && !defined(TARGET_INTERFACE)
|
||||
const std::vector<int> *breakpointList9 = NDS_ARM9.breakPoints;
|
||||
const std::vector<u32> *breakpointList9 = NDS_ARM9.breakPoints;
|
||||
for (int i = 0; i < breakpointList9->size(); ++i) {
|
||||
if (NDS_ARM9.instruct_adr == (*breakpointList9)[i] && !NDS_ARM9.debugStep) {
|
||||
emu_paused = true;
|
||||
|
@ -1933,7 +1935,7 @@ static /*donotinline*/ std::pair<s32,s32> armInnerLoop(
|
|||
return std::make_pair(arm9, arm7);
|
||||
}
|
||||
}
|
||||
const std::vector<int> *breakpointList7 = NDS_ARM7.breakPoints;
|
||||
const std::vector<u32> *breakpointList7 = NDS_ARM7.breakPoints;
|
||||
for (int i = 0; i < breakpointList7->size(); ++i) {
|
||||
if (NDS_ARM7.instruct_adr == (*breakpointList7)[i] && !NDS_ARM7.debugStep) {
|
||||
emu_paused = true;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Copyright (C) 2006 yopyop
|
||||
Copyright (C) 2008-2019 DeSmuME team
|
||||
Copyright (C) 2008-2021 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
|
||||
|
@ -404,8 +404,8 @@ typedef struct TSCalInfo
|
|||
|
||||
extern GameInfo gameInfo;
|
||||
|
||||
extern std::vector<int> memReadBreakPoints;
|
||||
extern std::vector<int> memWriteBreakPoints;
|
||||
extern std::vector<u32> memReadBreakPoints;
|
||||
extern std::vector<u32> memWriteBreakPoints;
|
||||
|
||||
|
||||
struct UserButtons : buttonstruct<bool>
|
||||
|
|
|
@ -1814,7 +1814,7 @@ FragmentColor* OpenGLRenderer::GetFramebuffer()
|
|||
|
||||
GLsizei OpenGLRenderer::GetLimitedMultisampleSize() const
|
||||
{
|
||||
GLsizei deviceMultisamples = this->_deviceInfo.maxSamples;
|
||||
u32 deviceMultisamples = this->_deviceInfo.maxSamples;
|
||||
u32 workingMultisamples = (u32)this->_selectedMultisampleSize;
|
||||
|
||||
if (workingMultisamples == 1)
|
||||
|
@ -1847,7 +1847,7 @@ GLsizei OpenGLRenderer::GetLimitedMultisampleSize() const
|
|||
deviceMultisamples = workingMultisamples;
|
||||
}
|
||||
|
||||
return deviceMultisamples;
|
||||
return (GLsizei)deviceMultisamples;
|
||||
}
|
||||
|
||||
OpenGLTexture* OpenGLRenderer::GetLoadedTextureFromPolygon(const POLY &thePoly, bool enableTexturing)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
Copyright (C) 2006 yopyop
|
||||
Copyright (C) 2006 Theo Berkau
|
||||
Copyright (C) 2008-2017 DeSmuME team
|
||||
Copyright (C) 2008-2021 DeSmuME team
|
||||
|
||||
Ideas borrowed from Stephane Dallongeville's SCSP core
|
||||
|
||||
|
@ -1269,6 +1269,7 @@ template<int CHANNELS> FORCEINLINE static void SPU_Mix(SPU_struct* SPU, channel_
|
|||
case 0: MixL(SPU, chan, data); break;
|
||||
case 1: MixLR(SPU, chan, data); break;
|
||||
case 2: MixR(SPU, chan, data); break;
|
||||
default: break;
|
||||
}
|
||||
SPU->lastdata = data;
|
||||
}
|
||||
|
@ -1288,6 +1289,7 @@ template<int FORMAT, SPUInterpolationMode INTERPOLATE_MODE, int CHANNELS>
|
|||
case 1: Fetch16BitData<INTERPOLATE_MODE>(chan, &data); break;
|
||||
case 2: FetchADPCMData<INTERPOLATE_MODE>(chan, &data); break;
|
||||
case 3: FetchPSGData(chan, &data); break;
|
||||
default: break;
|
||||
}
|
||||
SPU_Mix<CHANNELS>(SPU, chan, data);
|
||||
}
|
||||
|
@ -1296,6 +1298,7 @@ template<int FORMAT, SPUInterpolationMode INTERPOLATE_MODE, int CHANNELS>
|
|||
case 0: case 1: TestForLoop<FORMAT>(SPU, chan); break;
|
||||
case 2: TestForLoop2(SPU, chan); break;
|
||||
case 3: chan->sampcnt += chan->sampinc; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1441,6 +1444,7 @@ static void SPU_MixAudio_Advanced(bool actuallyMix, SPU_struct *SPU, int length)
|
|||
case SPU_struct::REGS::LOM_CH1: sndout[0] = submix[1*2+0]; break;
|
||||
case SPU_struct::REGS::LOM_CH3: sndout[0] = submix[3*2+0]; break;
|
||||
case SPU_struct::REGS::LOM_CH1_PLUS_CH3: sndout[0] = submix[1*2+0] + submix[3*2+0]; break;
|
||||
default: break;
|
||||
}
|
||||
switch (SPU->regs.ctl_right)
|
||||
{
|
||||
|
@ -1448,6 +1452,7 @@ static void SPU_MixAudio_Advanced(bool actuallyMix, SPU_struct *SPU, int length)
|
|||
case SPU_struct::REGS::ROM_CH1: sndout[1] = submix[1*2+1]; break;
|
||||
case SPU_struct::REGS::ROM_CH3: sndout[1] = submix[3*2+1]; break;
|
||||
case SPU_struct::REGS::ROM_CH1_PLUS_CH3: sndout[1] = submix[1*2+1] + submix[3*2+1]; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2010-2017 DeSmuME team
|
||||
Copyright (C) 2010-2021 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
|
||||
|
@ -82,9 +82,9 @@ public:
|
|||
return protocol.read_GCDATAIN(PROCNUM);
|
||||
}
|
||||
|
||||
virtual void slot1client_startOperation(eSlot1Operation operation)
|
||||
virtual void slot1client_startOperation(eSlot1Operation theOperation)
|
||||
{
|
||||
if(operation != eSlot1Operation_Unknown)
|
||||
if (theOperation != eSlot1Operation_Unknown)
|
||||
return;
|
||||
|
||||
u32 address;
|
||||
|
@ -109,9 +109,9 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
virtual u32 slot1client_read_GCDATAIN(eSlot1Operation operation)
|
||||
virtual u32 slot1client_read_GCDATAIN(eSlot1Operation theOperation)
|
||||
{
|
||||
if (operation != eSlot1Operation_Unknown)
|
||||
if (theOperation != eSlot1Operation_Unknown)
|
||||
return 0;
|
||||
|
||||
u32 val = 0;
|
||||
|
@ -141,9 +141,9 @@ public:
|
|||
return val;
|
||||
}
|
||||
|
||||
void slot1client_write_GCDATAIN(eSlot1Operation operation, u32 val)
|
||||
void slot1client_write_GCDATAIN(eSlot1Operation theOperation, u32 val)
|
||||
{
|
||||
if (operation != eSlot1Operation_Unknown)
|
||||
if (theOperation != eSlot1Operation_Unknown)
|
||||
return;
|
||||
|
||||
int cmd = protocol.command.bytes[0];
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2010-2015 DeSmuME team
|
||||
Copyright (C) 2010-2021 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
|
||||
|
@ -73,9 +73,9 @@ public:
|
|||
return protocol.read_GCDATAIN(PROCNUM);
|
||||
}
|
||||
|
||||
virtual void slot1client_startOperation(eSlot1Operation operation)
|
||||
virtual void slot1client_startOperation(eSlot1Operation theOperation)
|
||||
{
|
||||
rom.start(operation,protocol.address);
|
||||
rom.start(theOperation,protocol.address);
|
||||
}
|
||||
|
||||
virtual void post_fakeboot(int PROCNUM)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2013-2017 DeSmuME team
|
||||
Copyright (C) 2013-2021 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
|
||||
|
@ -108,7 +108,7 @@ public:
|
|||
rom.loadstate(is);
|
||||
}
|
||||
|
||||
virtual void slot1client_startOperation(eSlot1Operation operation)
|
||||
virtual void slot1client_startOperation(eSlot1Operation theOperation)
|
||||
{
|
||||
if (protocol.operation == eSlot1Operation_B7_Read)
|
||||
{
|
||||
|
@ -168,7 +168,7 @@ public:
|
|||
|
||||
curr_file_id = file_id;
|
||||
}
|
||||
rom.start(operation, protocol.address);
|
||||
rom.start(theOperation, protocol.address);
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2010-2017 DeSmuME team
|
||||
Copyright (C) 2010-2021 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 @@ public:
|
|||
return protocol.read_GCDATAIN(PROCNUM);
|
||||
}
|
||||
|
||||
virtual void slot1client_startOperation(eSlot1Operation operation)
|
||||
virtual void slot1client_startOperation(eSlot1Operation theOperation)
|
||||
{
|
||||
//INFO("Start command: %02X%02X%02X%02X%02X%02X%02X%02X\t",
|
||||
// protocol.command.bytes[0], protocol.command.bytes[1], protocol.command.bytes[2], protocol.command.bytes[3],
|
||||
|
@ -98,14 +98,14 @@ public:
|
|||
u32 addressFromProtocol = (protocol.command.bytes[1] << 24) | (protocol.command.bytes[2] << 16) | (protocol.command.bytes[3] << 8) | protocol.command.bytes[4];
|
||||
|
||||
//pass the normal rom operations along to the rom component
|
||||
switch(operation)
|
||||
switch (theOperation)
|
||||
{
|
||||
case eSlot1Operation_00_ReadHeader_Unencrypted:
|
||||
rom.start(operation,addressFromProtocol);
|
||||
rom.start(theOperation, addressFromProtocol);
|
||||
return;
|
||||
|
||||
case eSlot1Operation_2x_SecureAreaLoad:
|
||||
rom.start(operation,protocol.address);
|
||||
rom.start(theOperation, protocol.address);
|
||||
return;
|
||||
|
||||
default:
|
||||
|
@ -159,7 +159,7 @@ public:
|
|||
}
|
||||
else
|
||||
{
|
||||
rom.start(operation, addressFromProtocol);
|
||||
rom.start(theOperation, addressFromProtocol);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -183,6 +183,9 @@ public:
|
|||
case eSlot1Operation_2x_SecureAreaLoad:
|
||||
//case eSlot1Operation_B7_Read:
|
||||
return rom.read();
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
//handle special commands ourselves
|
||||
|
@ -253,6 +256,9 @@ public:
|
|||
case eSlot1Operation_B7_Read:
|
||||
case eSlot1Operation_2x_SecureAreaLoad:
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
//handle special commands ourselves
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2012-2015 DeSmuME team
|
||||
Copyright (C) 2012-2021 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,9 +26,9 @@
|
|||
|
||||
static _KEY1 key1((const u8*)arm7_key);
|
||||
|
||||
void Slot1Comp_Protocol::reset(ISlot1Comp_Protocol_Client* client)
|
||||
void Slot1Comp_Protocol::reset(ISlot1Comp_Protocol_Client* theClient)
|
||||
{
|
||||
this->client = client;
|
||||
this->client = theClient;
|
||||
|
||||
//we have to initialize this to something.. lets use dummy.
|
||||
//(need to clean this up...)
|
||||
|
@ -40,9 +40,9 @@ void Slot1Comp_Protocol::reset(ISlot1Comp_Protocol_Client* client)
|
|||
mode = eCardMode_RAW;
|
||||
}
|
||||
|
||||
void Slot1Comp_Protocol::write_command_RAW(GC_Command command)
|
||||
void Slot1Comp_Protocol::write_command_RAW(GC_Command theCommand)
|
||||
{
|
||||
int cmd = command.bytes[0];
|
||||
int cmd = theCommand.bytes[0];
|
||||
if(cmd == 0x9F)
|
||||
{
|
||||
operation = eSlot1Operation_9F_Dummy;
|
||||
|
@ -74,17 +74,17 @@ void Slot1Comp_Protocol::write_command_RAW(GC_Command command)
|
|||
}
|
||||
}
|
||||
|
||||
void Slot1Comp_Protocol::write_command_KEY1(GC_Command command)
|
||||
void Slot1Comp_Protocol::write_command_KEY1(GC_Command theCommand)
|
||||
{
|
||||
//decrypt the KEY1-format command
|
||||
u32 temp[2];
|
||||
command.toCryptoBuffer(temp);
|
||||
theCommand.toCryptoBuffer(temp);
|
||||
key1.decrypt(temp);
|
||||
command.fromCryptoBuffer(temp);
|
||||
GCLOG("[GC] (key1-decrypted):"); command.print();
|
||||
theCommand.fromCryptoBuffer(temp);
|
||||
GCLOG("[GC] (key1-decrypted):"); theCommand.print();
|
||||
|
||||
//and process it:
|
||||
int cmd = command.bytes[0];
|
||||
int cmd = theCommand.bytes[0];
|
||||
switch(cmd&0xF0)
|
||||
{
|
||||
case 0x10:
|
||||
|
@ -100,9 +100,9 @@ void Slot1Comp_Protocol::write_command_KEY1(GC_Command command)
|
|||
//TODO - more endian-safe way of doing this (theres examples in R4)
|
||||
{
|
||||
#ifdef MSB_FIRST
|
||||
u64 cmd64 = *(u64*)command.bytes;
|
||||
u64 cmd64 = *(u64*)theCommand.bytes;
|
||||
#else
|
||||
u64 cmd64 = bswap64(*(u64*)command.bytes);
|
||||
u64 cmd64 = bswap64(*(u64*)theCommand.bytes);
|
||||
#endif
|
||||
//todo - parse into blocknumber
|
||||
u32 blocknumber = (cmd64>>44)&0xFFFF;
|
||||
|
@ -133,7 +133,7 @@ void Slot1Comp_Protocol::write_command_KEY1(GC_Command command)
|
|||
}
|
||||
}
|
||||
|
||||
void Slot1Comp_Protocol::write_command_NORMAL(GC_Command command)
|
||||
void Slot1Comp_Protocol::write_command_NORMAL(GC_Command theCommand)
|
||||
{
|
||||
switch(command.bytes[0])
|
||||
{
|
||||
|
@ -143,9 +143,9 @@ void Slot1Comp_Protocol::write_command_NORMAL(GC_Command command)
|
|||
|
||||
//TODO - more endian-safe way of doing this (theres examples in R4)
|
||||
#ifdef MSB_FIRST
|
||||
u64 cmd64 = *(u64*)command.bytes;
|
||||
u64 cmd64 = *(u64*)theCommand.bytes;
|
||||
#else
|
||||
u64 cmd64 = bswap64(*(u64*)command.bytes);
|
||||
u64 cmd64 = bswap64(*(u64*)theCommand.bytes);
|
||||
#endif
|
||||
address = (u32)((cmd64 >> 24));
|
||||
length = 0x200;
|
||||
|
@ -167,9 +167,9 @@ void Slot1Comp_Protocol::write_command_NORMAL(GC_Command command)
|
|||
}
|
||||
}
|
||||
|
||||
void Slot1Comp_Protocol::write_command(GC_Command command)
|
||||
void Slot1Comp_Protocol::write_command(GC_Command theCommand)
|
||||
{
|
||||
this->command = command;
|
||||
this->command = theCommand;
|
||||
|
||||
//unrecognized commands will do something depending on the current state of the card
|
||||
delay = 0;
|
||||
|
@ -178,17 +178,20 @@ void Slot1Comp_Protocol::write_command(GC_Command command)
|
|||
|
||||
switch(mode)
|
||||
{
|
||||
case eCardMode_RAW:
|
||||
write_command_RAW(command);
|
||||
break;
|
||||
case eCardMode_RAW:
|
||||
write_command_RAW(theCommand);
|
||||
break;
|
||||
|
||||
case eCardMode_KEY1:
|
||||
write_command_KEY1(command);
|
||||
break;
|
||||
case eCardMode_KEY1:
|
||||
write_command_KEY1(theCommand);
|
||||
break;
|
||||
|
||||
case eCardMode_NORMAL:
|
||||
write_command_NORMAL(command);
|
||||
break;
|
||||
case eCardMode_NORMAL:
|
||||
write_command_NORMAL(theCommand);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -199,6 +202,9 @@ void Slot1Comp_Protocol::write_GCDATAIN(u8 PROCNUM, u32 val)
|
|||
case eSlot1Operation_Unknown:
|
||||
client->slot1client_write_GCDATAIN(operation,val);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2013-2015 DeSmuME team
|
||||
Copyright (C) 2013-2021 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,9 +59,9 @@ enum eSlot1Operation
|
|||
class ISlot1Comp_Protocol_Client
|
||||
{
|
||||
public:
|
||||
virtual void slot1client_startOperation(eSlot1Operation operation) {}
|
||||
virtual u32 slot1client_read_GCDATAIN(eSlot1Operation operation) = 0;
|
||||
virtual void slot1client_write_GCDATAIN(eSlot1Operation operation, u32 val) {}
|
||||
virtual void slot1client_startOperation(eSlot1Operation theOperation) {}
|
||||
virtual u32 slot1client_read_GCDATAIN(eSlot1Operation theOperation) = 0;
|
||||
virtual void slot1client_write_GCDATAIN(eSlot1Operation theOperation, u32 val) {}
|
||||
};
|
||||
|
||||
|
||||
|
@ -73,17 +73,17 @@ public:
|
|||
void loadstate(EMUFILE &is);
|
||||
|
||||
//set some kind of protocol/hardware reset state
|
||||
void reset(ISlot1Comp_Protocol_Client* client);
|
||||
void reset(ISlot1Comp_Protocol_Client* theClient);
|
||||
|
||||
//signals from the GC bus
|
||||
void write_command(GC_Command command);
|
||||
void write_command(GC_Command theCommand);
|
||||
void write_GCDATAIN(u8 PROCNUM, u32 val);
|
||||
u32 read_GCDATAIN(u8 PROCNUM);
|
||||
|
||||
//helpers for write_command()
|
||||
void write_command_RAW(GC_Command command);
|
||||
void write_command_KEY1(GC_Command command);
|
||||
void write_command_NORMAL(GC_Command command);
|
||||
void write_command_RAW(GC_Command theCommand);
|
||||
void write_command_KEY1(GC_Command theCommand);
|
||||
void write_command_NORMAL(GC_Command theCommand);
|
||||
|
||||
//operations not related to obscurities of the protocol or otherwise unknown are passed through to the client here
|
||||
ISlot1Comp_Protocol_Client* client;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2010-2015 DeSmuME team
|
||||
Copyright (C) 2010-2021 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
|
||||
|
@ -23,18 +23,18 @@
|
|||
|
||||
void Slot1Comp_Rom::start(eSlot1Operation operation, u32 addr)
|
||||
{
|
||||
this->operation = operation;
|
||||
this->address = addr;
|
||||
this->_operation = operation;
|
||||
this->_address = addr;
|
||||
}
|
||||
|
||||
u32 Slot1Comp_Rom::read()
|
||||
{
|
||||
switch(operation)
|
||||
switch(this->_operation)
|
||||
{
|
||||
case eSlot1Operation_00_ReadHeader_Unencrypted:
|
||||
{
|
||||
u32 ret = gameInfo.readROM(address);
|
||||
address = (address + 4) & 0xFFF;
|
||||
u32 ret = gameInfo.readROM(this->_address);
|
||||
this->_address = (this->_address + 4) & 0xFFF;
|
||||
return ret;
|
||||
}
|
||||
break;
|
||||
|
@ -45,10 +45,10 @@ u32 Slot1Comp_Rom::read()
|
|||
|
||||
//zero 15-sep-2014 - this is meaningless. newer mask is actually reasonable
|
||||
//address &= gameInfo.mask; //sanity check
|
||||
u32 secureAreaAddress = (address - 0x4000);
|
||||
u32 secureAreaAddress = (this->_address - 0x4000);
|
||||
secureAreaAddress &= 0x3FFF; //memory safe sanity test
|
||||
u32 ret = LE_TO_LOCAL_32(*(u32*)(gameInfo.secureArea + secureAreaAddress));
|
||||
address = (address&~0xFFF) + ((address+4)&0xFFF);
|
||||
this->_address = (this->_address&~0xFFF) + ((this->_address+4)&0xFFF);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -59,13 +59,13 @@ u32 Slot1Comp_Rom::read()
|
|||
//it seems that etrian odyssey 3 doesnt work unless we mask this to cart size.
|
||||
//but, a thought: does the internal rom address counter register wrap around? we may be making a mistake by keeping the extra precision
|
||||
//but there is no test case yet
|
||||
address &= gameInfo.mask;
|
||||
this->_address &= gameInfo.mask;
|
||||
|
||||
//feature of retail carts:
|
||||
//B7 "Can be used only for addresses 8000h and up, smaller addresses will be silently redirected to address `8000h+(addr AND 1FFh)`"
|
||||
if(CommonSettings.RetailCardProtection8000)
|
||||
if(address < 0x8000)
|
||||
address = (0x8000 + (address & 0x1FF));
|
||||
if(this->_address < 0x8000)
|
||||
this->_address = (0x8000 + (this->_address & 0x1FF));
|
||||
|
||||
//1. as a sanity measure for funny-sized roms (homebrew and perhaps truncated retail roms) we need to protect ourselves by returning 0xFF for things still out of range.
|
||||
//2. this isnt right, unless someone documents otherwise:
|
||||
|
@ -73,16 +73,16 @@ u32 Slot1Comp_Rom::read()
|
|||
// ... the cart hardware doesnt know anything about the rom header. if it has a totally bogus endROMoffset, the cart will probably work just fine. and, the +4 is missing anyway:
|
||||
//3. this is better: it just allows us to read 0xFF anywhere we dont have rom data. forget what the header says
|
||||
//note: we allow the reading to proceed anyway, because the readROM method is built to allow jaggedy reads off the end of the rom to support trimmed roms
|
||||
if(address+4 > gameInfo.romsize)
|
||||
if(this->_address+4 > gameInfo.romsize)
|
||||
{
|
||||
DEBUG_Notify.ReadBeyondEndOfCart(address,gameInfo.romsize);
|
||||
DEBUG_Notify.ReadBeyondEndOfCart(this->_address,gameInfo.romsize);
|
||||
}
|
||||
|
||||
//actually read from the ROM provider
|
||||
u32 ret = gameInfo.readROM(address);
|
||||
u32 ret = gameInfo.readROM(this->_address);
|
||||
|
||||
//"However, the datastream wraps to the begin of the current 4K block when address+length crosses a 4K boundary (1000h bytes)"
|
||||
address = (address&~0xFFF) + ((address+4)&0xFFF);
|
||||
this->_address = (this->_address&~0xFFF) + ((this->_address+4)&0xFFF);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -96,14 +96,14 @@ u32 Slot1Comp_Rom::read()
|
|||
|
||||
u32 Slot1Comp_Rom::getAddress()
|
||||
{
|
||||
return address & gameInfo.mask;
|
||||
return this->_address & gameInfo.mask;
|
||||
} //Slot1Comp_Rom::getAddress()
|
||||
|
||||
u32 Slot1Comp_Rom::incAddress()
|
||||
{
|
||||
address &= gameInfo.mask;
|
||||
address = (address&~0xFFF) + ((address+4)&0xFFF);
|
||||
return address;
|
||||
this->_address &= gameInfo.mask;
|
||||
this->_address = (this->_address&~0xFFF) + ((this->_address+4)&0xFFF);
|
||||
return this->_address;
|
||||
}
|
||||
|
||||
|
||||
|
@ -111,13 +111,13 @@ void Slot1Comp_Rom::savestate(EMUFILE &os)
|
|||
{
|
||||
s32 version = 0;
|
||||
os.write_32LE(version);
|
||||
os.write_32LE((s32)operation);
|
||||
os.write_32LE(address);
|
||||
os.write_32LE((s32)this->_operation);
|
||||
os.write_32LE(this->_address);
|
||||
}
|
||||
|
||||
void Slot1Comp_Rom::loadstate(EMUFILE &is)
|
||||
{
|
||||
s32 version = is.read_s32LE();
|
||||
operation = (eSlot1Operation)is.read_s32LE();
|
||||
address = is.read_u32LE();
|
||||
this->_operation = (eSlot1Operation)is.read_s32LE();
|
||||
this->_address = is.read_u32LE();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2010-2015 DeSmuME team
|
||||
Copyright (C) 2010-2021 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
|
||||
|
@ -38,8 +38,8 @@ public:
|
|||
void loadstate(EMUFILE &is);
|
||||
|
||||
private:
|
||||
u32 address;
|
||||
eSlot1Operation operation;
|
||||
u32 _address;
|
||||
eSlot1Operation _operation;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Copyright (C) 2009 CrazyMax
|
||||
Copyright (C) 2009-2016 DeSmuME team
|
||||
Copyright (C) 2009-2021 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
|
||||
|
@ -106,8 +106,8 @@ private:
|
|||
int len = fROM->size();
|
||||
for(;;)
|
||||
{
|
||||
u32 tmp;
|
||||
u32 readed = fROM->fread(&tmp, 4);
|
||||
u32 romType = 0;
|
||||
u32 readed = fROM->fread(&romType, 4);
|
||||
|
||||
int pos = fROM->ftell();
|
||||
int currPct = pos*100/(size-1);
|
||||
|
@ -126,7 +126,7 @@ private:
|
|||
break;
|
||||
|
||||
|
||||
switch (tmp)
|
||||
switch (romType)
|
||||
{
|
||||
case EEPROM:
|
||||
return 1;
|
||||
|
@ -139,6 +139,9 @@ private:
|
|||
}
|
||||
case SIIRTC_V:
|
||||
return 4;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ int armcpu_new( armcpu_t *armcpu, u32 id)
|
|||
armcpu->post_ex_fn = NULL;
|
||||
armcpu->post_ex_fn_data = NULL;
|
||||
|
||||
armcpu->breakPoints = new std::vector<int>;
|
||||
armcpu->breakPoints = new std::vector<u32>;
|
||||
|
||||
armcpu_init(armcpu, 0);
|
||||
|
||||
|
|
|
@ -310,10 +310,10 @@ struct armcpu_t
|
|||
armcpu_ctrl_iface ctrl_iface;
|
||||
|
||||
// debugging stuff
|
||||
int runToRetTmp;
|
||||
u32 runToRetTmp;
|
||||
bool runToRet;
|
||||
int stepOverBreak;
|
||||
std::vector<int> *breakPoints;
|
||||
u32 stepOverBreak;
|
||||
std::vector<u32> *breakPoints;
|
||||
bool debugStep;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2009-2019 DeSmuME team
|
||||
Copyright (C) 2009-2021 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
|
||||
|
@ -121,7 +121,7 @@ static void CheatWrite(int size, int proc, u32 addr, u32 val)
|
|||
}
|
||||
|
||||
|
||||
void CHEATS::ARparser(CHEATS_LIST& list)
|
||||
void CHEATS::ARparser(CHEATS_LIST& theList)
|
||||
{
|
||||
//primary organizational source (seems to be referenced by cheaters the most) - http://doc.kodewerx.org/hacking_nds.html
|
||||
//secondary clarification and details (for programmers) - http://problemkaputt.de/gbatek.htm#dscartcheatactionreplayds
|
||||
|
@ -167,18 +167,18 @@ void CHEATS::ARparser(CHEATS_LIST& list)
|
|||
|
||||
CHEATLOG("-----------------------------------\n");
|
||||
|
||||
for (u32 i=0; i < list.num; i++)
|
||||
for (u32 i = 0; i < theList.num; i++)
|
||||
{
|
||||
const u32 hi = list.code[i][0];
|
||||
const u32 lo = list.code[i][1];
|
||||
const u32 hi = theList.code[i][0];
|
||||
const u32 lo = theList.code[i][1];
|
||||
|
||||
CHEATLOG("executing [%02d] %08X %08X (ofs=%08X)\n",i, hi,lo, st.offset);
|
||||
|
||||
//parse codes into types by kodewerx standards
|
||||
u32 type = list.code[i][0] >> 28;
|
||||
u32 type = theList.code[i][0] >> 28;
|
||||
//these two are broken down into subtypes
|
||||
if(type == 0x0C || type == 0x0D)
|
||||
type = list.code[i][0] >> 24;
|
||||
type = theList.code[i][0] >> 24;
|
||||
|
||||
//process current execution status:
|
||||
u32 statusSkip = st.status & 1;
|
||||
|
@ -568,9 +568,9 @@ void CHEATS::ARparser(CHEATS_LIST& list)
|
|||
if(y>0) i++; //skip over the current code
|
||||
while(y>=4)
|
||||
{
|
||||
if(i==list.num) break; //if we erroneously went off the end, bail
|
||||
u32 tmp = list.code[i][t];
|
||||
if(t==1) i++;
|
||||
if (i == theList.num) break; //if we erroneously went off the end, bail
|
||||
u32 tmp = theList.code[i][t];
|
||||
if (t == 1) i++;
|
||||
t ^= 1;
|
||||
CheatWrite(32,st.proc,addr,tmp);
|
||||
addr += 4;
|
||||
|
@ -578,8 +578,8 @@ void CHEATS::ARparser(CHEATS_LIST& list)
|
|||
}
|
||||
while(y>0)
|
||||
{
|
||||
if(i==list.num) break; //if we erroneously went off the end, bail
|
||||
u32 tmp = list.code[i][t]>>b;
|
||||
if (i == theList.num) break; //if we erroneously went off the end, bail
|
||||
u32 tmp = theList.code[i][t]>>b;
|
||||
CheatWrite(8,st.proc,addr,tmp);
|
||||
addr += 1;
|
||||
y -= 1;
|
||||
|
@ -604,7 +604,7 @@ void CHEATS::ARparser(CHEATS_LIST& list)
|
|||
operand = x; //mis-use of this variable to store dst
|
||||
while(y>=4)
|
||||
{
|
||||
if(i==list.num) break; //if we erroneously went off the end, bail
|
||||
if (i == theList.num) break; //if we erroneously went off the end, bail
|
||||
u32 tmp = _MMU_read32(st.proc,MMU_AT_DEBUG,addr);
|
||||
CheatWrite(32, st.proc,operand,tmp);
|
||||
addr += 4;
|
||||
|
@ -613,7 +613,7 @@ void CHEATS::ARparser(CHEATS_LIST& list)
|
|||
}
|
||||
while(y>0)
|
||||
{
|
||||
if(i==list.num) break; //if we erroneously went off the end, bail
|
||||
if (i == theList.num) break; //if we erroneously went off the end, bail
|
||||
u8 tmp = _MMU_read08(st.proc,MMU_AT_DEBUG,addr);
|
||||
CheatWrite(8,st.proc,operand,tmp);
|
||||
addr += 1;
|
||||
|
@ -821,7 +821,7 @@ BOOL CHEATS::save()
|
|||
sprintf(buf1, "%s %c ", types[list[i].type], list[i].enabled?'1':'0');
|
||||
cheatLineStr = buf1;
|
||||
|
||||
for (int t = 0; t < list[i].num; t++)
|
||||
for (u32 t = 0; t < list[i].num; t++)
|
||||
{
|
||||
char buf2[10] = { 0 };
|
||||
|
||||
|
@ -946,7 +946,7 @@ BOOL CHEATS::load()
|
|||
INFO("Cheats: Too many values for internal cheat\n", line);
|
||||
continue;
|
||||
}
|
||||
for (int i = 0; i < tmp_cht.num; i++)
|
||||
for (u32 i = 0; i < tmp_cht.num; i++)
|
||||
{
|
||||
char tmp_buf[9] = {0};
|
||||
|
||||
|
@ -1044,13 +1044,13 @@ void CHEATS::process(int targetType)
|
|||
#endif
|
||||
}
|
||||
|
||||
void CHEATS::getXXcodeString(CHEATS_LIST list, char *res_buf)
|
||||
void CHEATS::getXXcodeString(CHEATS_LIST theList, char *res_buf)
|
||||
{
|
||||
char buf[50] = { 0 };
|
||||
char buf[50] = { 0 };
|
||||
|
||||
for (int i=0; i < list.num; i++)
|
||||
for (u32 i = 0; i < theList.num; i++)
|
||||
{
|
||||
sprintf(buf, "%08X %08X\n", list.code[i][0], list.code[i][1]);
|
||||
sprintf(buf, "%08X %08X\n", theList.code[i][0], theList.code[i][1]);
|
||||
strcat(res_buf, buf);
|
||||
}
|
||||
}
|
||||
|
@ -1564,9 +1564,9 @@ bool CHEATSEXPORT::search()
|
|||
}
|
||||
if (!dataSize) return false;
|
||||
CRC = fat.CRC;
|
||||
char buf[5] = {0};
|
||||
memcpy(&buf, &fat.serial[0], 4);
|
||||
printf("Cheats: found %s CRC %08X at 0x%08llX, size %i byte(s)\n", buf, fat.CRC, fat.addr, dataSize - encOffset);
|
||||
char serialBuf[5] = {0};
|
||||
memcpy(&serialBuf, &fat.serial[0], 4);
|
||||
printf("Cheats: found %s CRC %08X at 0x%08llX, size %i byte(s)\n", serialBuf, fat.CRC, fat.addr, dataSize - encOffset);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1600,13 +1600,13 @@ bool CHEATSEXPORT::getCodes()
|
|||
if (encrypted)
|
||||
R4decrypt(data, dataSize, fat.addr >> 9);
|
||||
|
||||
intptr_t ptrMask = (~0 << 2);
|
||||
uintptr_t ptrMask = ~(uintptr_t)0 << 2;
|
||||
u8 *gameTitlePtr = (u8 *)data + encOffset;
|
||||
|
||||
memset(gametitle, 0, CHEAT_DB_GAME_TITLE_SIZE);
|
||||
memcpy(gametitle, gameTitlePtr, strlen((const char *)gameTitlePtr));
|
||||
|
||||
u32 *cmd = (u32 *)(((intptr_t)gameTitlePtr + strlen((const char *)gameTitlePtr) + 4) & ptrMask);
|
||||
u32 *cmd = (u32 *)(((uintptr_t)gameTitlePtr + strlen((const char *)gameTitlePtr) + 4) & ptrMask);
|
||||
numCheats = cmd[0] & 0x0FFFFFFF;
|
||||
cmd += 9;
|
||||
cheats = new CHEATS_LIST[numCheats];
|
||||
|
@ -1620,17 +1620,17 @@ bool CHEATSEXPORT::getCodes()
|
|||
if ((*cmd & 0xF0000000) == 0x10000000) // Folder
|
||||
{
|
||||
folderNum = (*cmd & 0x00FFFFFF);
|
||||
folderName = (u8*)((intptr_t)cmd + 4);
|
||||
folderNote = (u8*)((intptr_t)folderName + strlen((char*)folderName) + 1);
|
||||
folderName = (u8*)((uintptr_t)cmd + 4);
|
||||
folderNote = (u8*)((uintptr_t)folderName + strlen((char*)folderName) + 1);
|
||||
pos++;
|
||||
cmd = (u32 *)(((intptr_t)folderName + strlen((char*)folderName) + 1 + strlen((char*)folderNote) + 1 + 3) & ptrMask);
|
||||
cmd = (u32 *)(((uintptr_t)folderName + strlen((char*)folderName) + 1 + strlen((char*)folderNote) + 1 + 3) & ptrMask);
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < folderNum; i++) // in folder
|
||||
{
|
||||
u8 *cheatName = (u8 *)((intptr_t)cmd + 4);
|
||||
u8 *cheatNote = (u8 *)((intptr_t)cheatName + strlen((char*)cheatName) + 1);
|
||||
u32 *cheatData = (u32 *)(((intptr_t)cheatNote + strlen((char*)cheatNote) + 1 + 3) & ptrMask);
|
||||
u8 *cheatName = (u8 *)((uintptr_t)cmd + 4);
|
||||
u8 *cheatNote = (u8 *)((uintptr_t)cheatName + strlen((char*)cheatName) + 1);
|
||||
u32 *cheatData = (u32 *)(((uintptr_t)cheatNote + strlen((char*)cheatNote) + 1 + 3) & ptrMask);
|
||||
u32 cheatDataLen = *cheatData++;
|
||||
u32 numberCodes = cheatDataLen / 2;
|
||||
|
||||
|
@ -1670,7 +1670,7 @@ bool CHEATSEXPORT::getCodes()
|
|||
}
|
||||
|
||||
pos++;
|
||||
cmd = (u32 *)((intptr_t)cmd + ((*cmd + 1)*4));
|
||||
cmd = (u32 *)((uintptr_t)cmd + ((*cmd + 1)*4));
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2009-2015 DeSmuME team
|
||||
Copyright (C) 2009-2021 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
|
||||
|
@ -49,7 +49,7 @@ struct CHEATS_LIST
|
|||
// 2 - can increase
|
||||
u32 code[MAX_XX_CODE][2];
|
||||
char description[1024];
|
||||
int num;
|
||||
u32 num;
|
||||
u8 size;
|
||||
};
|
||||
|
||||
|
@ -93,7 +93,7 @@ public:
|
|||
BOOL save();
|
||||
BOOL load();
|
||||
void process(int targetType);
|
||||
void getXXcodeString(CHEATS_LIST cheat, char *res_buf);
|
||||
void getXXcodeString(CHEATS_LIST theList, char *res_buf);
|
||||
|
||||
static BOOL XXCodeFromString(CHEATS_LIST *cheatItem, const std::string codeString);
|
||||
static BOOL XXCodeFromString(CHEATS_LIST *cheatItem, const char *codeString);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
The MIT License
|
||||
|
||||
Copyright (C) 2009-2019 DeSmuME team
|
||||
Copyright (C) 2009-2021 DeSmuME team
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -90,7 +90,7 @@ size_t EMUFILE_MEMORY::_fread(const void *ptr, size_t bytes){
|
|||
u32 todo = std::min<u32>(remain,(u32)bytes);
|
||||
if(len==0)
|
||||
{
|
||||
failbit = true;
|
||||
this->_failbit = true;
|
||||
return 0;
|
||||
}
|
||||
if(todo<=4)
|
||||
|
@ -106,43 +106,43 @@ size_t EMUFILE_MEMORY::_fread(const void *ptr, size_t bytes){
|
|||
}
|
||||
pos += todo;
|
||||
if(todo<bytes)
|
||||
failbit = true;
|
||||
this->_failbit = true;
|
||||
return todo;
|
||||
}
|
||||
|
||||
void EMUFILE_FILE::truncate(s32 length)
|
||||
{
|
||||
::fflush(fp);
|
||||
::fflush(this->_fp);
|
||||
#ifdef HOST_WINDOWS
|
||||
_chsize(_fileno(fp),length);
|
||||
_chsize(_fileno(this->_fp),length);
|
||||
#else
|
||||
ftruncate(fileno(fp),length);
|
||||
ftruncate(fileno(this->_fp),length);
|
||||
#endif
|
||||
fclose(fp);
|
||||
fp = NULL;
|
||||
open(fname.c_str(),mode);
|
||||
fclose(this->_fp);
|
||||
this->_fp = NULL;
|
||||
this->__open(this->_fname.c_str(), this->_mode);
|
||||
}
|
||||
|
||||
int EMUFILE_FILE::fseek(int offset, int origin)
|
||||
{
|
||||
//if the position cache is enabled, and the seek offset matches the known current position, then early exit.
|
||||
if(mPositionCacheEnabled)
|
||||
if (this->_mPositionCacheEnabled)
|
||||
{
|
||||
if(origin == SEEK_SET)
|
||||
if (origin == SEEK_SET)
|
||||
{
|
||||
if(mFilePosition == offset)
|
||||
if (this->_mFilePosition == offset)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mCondition = eCondition_Clean;
|
||||
this->_mCondition = eCondition_Clean;
|
||||
|
||||
int ret = ::fseek(fp, offset, origin);
|
||||
int ret = ::fseek(this->_fp, offset, origin);
|
||||
|
||||
if(mPositionCacheEnabled)
|
||||
mFilePosition = ::ftell(fp);
|
||||
if (this->_mPositionCacheEnabled)
|
||||
this->_mFilePosition = ::ftell(this->_fp);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -150,53 +150,54 @@ int EMUFILE_FILE::fseek(int offset, int origin)
|
|||
|
||||
int EMUFILE_FILE::ftell()
|
||||
{
|
||||
if(mPositionCacheEnabled)
|
||||
return (int)mFilePosition;
|
||||
return (u32)::ftell(fp);
|
||||
if (this->_mPositionCacheEnabled)
|
||||
return (int)this->_mFilePosition;
|
||||
return (u32)::ftell(this->_fp);
|
||||
}
|
||||
|
||||
void EMUFILE_FILE::DemandCondition(eCondition cond)
|
||||
{
|
||||
//allows switching between reading and writing; an fseek is required, under the circumstances
|
||||
|
||||
if(mCondition == eCondition_Clean)
|
||||
if( this->_mCondition == eCondition_Clean)
|
||||
goto CONCLUDE;
|
||||
if(mCondition == eCondition_Unknown)
|
||||
if (this->_mCondition == eCondition_Unknown)
|
||||
goto RESET;
|
||||
if(mCondition != cond)
|
||||
if (this->_mCondition != cond)
|
||||
goto RESET;
|
||||
|
||||
return;
|
||||
|
||||
RESET:
|
||||
::fseek(fp,::ftell(fp),SEEK_SET);
|
||||
::fseek(this->_fp,::ftell(this->_fp),SEEK_SET);
|
||||
CONCLUDE:
|
||||
mCondition = cond;
|
||||
this->_mCondition = cond;
|
||||
}
|
||||
|
||||
size_t EMUFILE_FILE::_fread(const void *ptr, size_t bytes)
|
||||
{
|
||||
DemandCondition(eCondition_Read);
|
||||
size_t ret = ::fread((void*)ptr, 1, bytes, fp);
|
||||
mFilePosition += ret;
|
||||
if(ret < bytes)
|
||||
failbit = true;
|
||||
size_t ret = ::fread((void*)ptr, 1, bytes, this->_fp);
|
||||
this->_mFilePosition += ret;
|
||||
if (ret < bytes)
|
||||
this->_failbit = true;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void EMUFILE_FILE::EnablePositionCache()
|
||||
{
|
||||
mPositionCacheEnabled = true;
|
||||
mFilePosition = ::ftell(fp);
|
||||
this->_mPositionCacheEnabled = true;
|
||||
this->_mFilePosition = ::ftell(this->_fp);
|
||||
}
|
||||
|
||||
size_t EMUFILE_FILE::fwrite(const void *ptr, size_t bytes)
|
||||
{
|
||||
DemandCondition(eCondition_Write);
|
||||
size_t ret = ::fwrite((void*)ptr, 1, bytes, fp);
|
||||
mFilePosition += ret;
|
||||
if(ret < bytes)
|
||||
failbit = true;
|
||||
size_t ret = ::fwrite((void*)ptr, 1, bytes, this->_fp);
|
||||
this->_mFilePosition += ret;
|
||||
if (ret < bytes)
|
||||
this->_failbit = true;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -511,19 +512,22 @@ size_t EMUFILE::read_MemoryStream(EMUFILE_MEMORY &ms)
|
|||
return 1;
|
||||
}
|
||||
|
||||
void EMUFILE_FILE::open(const char* fname, const char* mode)
|
||||
void EMUFILE_FILE::__open(const char* fname, const char* mode)
|
||||
{
|
||||
mPositionCacheEnabled = false;
|
||||
mCondition = eCondition_Clean;
|
||||
mFilePosition = 0;
|
||||
this->_mPositionCacheEnabled = false;
|
||||
this->_mCondition = eCondition_Clean;
|
||||
this->_mFilePosition = 0;
|
||||
|
||||
#ifdef HOST_WINDOWS
|
||||
auto tmp = mbstowcs((std::string)fname);
|
||||
fp = _wfopen(tmp.c_str(),mbstowcs(mode).c_str());
|
||||
this->_fp = _wfopen(tmp.c_str(),mbstowcs(mode).c_str());
|
||||
#else
|
||||
fp = fopen(fname,mode);
|
||||
this->_fp = fopen(fname, mode);
|
||||
#endif
|
||||
if(!fp)
|
||||
failbit = true;
|
||||
this->fname = fname;
|
||||
strcpy(this->mode,mode);
|
||||
|
||||
if (this->_fp == NULL)
|
||||
this->_failbit = true;
|
||||
|
||||
this->_fname = fname;
|
||||
strcpy(this->_mode, mode);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
The MIT License
|
||||
|
||||
Copyright (C) 2009-2017 DeSmuME team
|
||||
Copyright (C) 2009-2021 DeSmuME team
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -47,11 +47,11 @@ class EMUFILE_MEMORY;
|
|||
|
||||
class EMUFILE {
|
||||
protected:
|
||||
bool failbit;
|
||||
bool _failbit;
|
||||
|
||||
public:
|
||||
EMUFILE()
|
||||
: failbit(false)
|
||||
: _failbit(false)
|
||||
{}
|
||||
|
||||
|
||||
|
@ -62,8 +62,8 @@ public:
|
|||
|
||||
static bool readAllBytes(std::vector<u8>* buf, const std::string& fname);
|
||||
|
||||
bool fail(bool unset=false) { bool ret = failbit; if(unset) unfail(); return ret; }
|
||||
void unfail() { failbit=false; }
|
||||
bool fail(bool unset=false) { bool ret = this->_failbit; if(unset) unfail(); return ret; }
|
||||
void unfail() { this->_failbit = false; }
|
||||
|
||||
bool eof() { return size()==ftell(); }
|
||||
|
||||
|
@ -220,7 +220,7 @@ public:
|
|||
//else return temp;
|
||||
u32 remain = len-pos;
|
||||
if(remain<1) {
|
||||
failbit = true;
|
||||
this->_failbit = true;
|
||||
return -1;
|
||||
}
|
||||
temp = buf()[pos];
|
||||
|
@ -286,11 +286,11 @@ public:
|
|||
|
||||
class EMUFILE_FILE : public EMUFILE {
|
||||
protected:
|
||||
FILE* fp;
|
||||
std::string fname;
|
||||
char mode[16];
|
||||
long mFilePosition;
|
||||
bool mPositionCacheEnabled;
|
||||
FILE* _fp;
|
||||
std::string _fname;
|
||||
char _mode[16];
|
||||
long _mFilePosition;
|
||||
bool _mPositionCacheEnabled;
|
||||
|
||||
enum eCondition
|
||||
{
|
||||
|
@ -298,30 +298,30 @@ protected:
|
|||
eCondition_Unknown,
|
||||
eCondition_Read,
|
||||
eCondition_Write
|
||||
} mCondition;
|
||||
} _mCondition;
|
||||
|
||||
private:
|
||||
void open(const char* fname, const char* mode);
|
||||
void __open(const char* fname, const char* mode);
|
||||
|
||||
public:
|
||||
|
||||
EMUFILE_FILE(const std::string& fname, const char* mode) { open(fname.c_str(),mode); }
|
||||
EMUFILE_FILE(const char* fname, const char* mode) { open(fname,mode); }
|
||||
EMUFILE_FILE(const std::string& fname, const char* mode) { __open(fname.c_str(),mode); }
|
||||
EMUFILE_FILE(const char* fname, const char* mode) { __open(fname,mode); }
|
||||
|
||||
void EnablePositionCache();
|
||||
|
||||
virtual ~EMUFILE_FILE() {
|
||||
if(NULL != fp)
|
||||
fclose(fp);
|
||||
if (NULL != this->_fp)
|
||||
fclose(this->_fp);
|
||||
}
|
||||
|
||||
virtual FILE *get_fp() {
|
||||
return fp;
|
||||
return this->_fp;
|
||||
}
|
||||
|
||||
virtual EMUFILE* memwrap();
|
||||
|
||||
bool is_open() { return fp != NULL; }
|
||||
bool is_open() { return this->_fp != NULL; }
|
||||
|
||||
void DemandCondition(eCondition cond);
|
||||
|
||||
|
@ -330,20 +330,20 @@ public:
|
|||
virtual int fprintf(const char *format, ...) {
|
||||
va_list argptr;
|
||||
va_start(argptr, format);
|
||||
int ret = ::vfprintf(fp, format, argptr);
|
||||
int ret = ::vfprintf(this->_fp, format, argptr);
|
||||
va_end(argptr);
|
||||
return ret;
|
||||
};
|
||||
|
||||
virtual int fgetc() {
|
||||
return ::fgetc(fp);
|
||||
return ::fgetc(this->_fp);
|
||||
}
|
||||
virtual int fputc(int c) {
|
||||
return ::fputc(c, fp);
|
||||
return ::fputc(c, this->_fp);
|
||||
}
|
||||
|
||||
virtual char* fgets(char* str, int num) {
|
||||
return ::fgets(str, num, fp);
|
||||
return ::fgets(str, num, this->_fp);
|
||||
}
|
||||
|
||||
virtual size_t _fread(const void *ptr, size_t bytes);
|
||||
|
@ -362,7 +362,7 @@ public:
|
|||
}
|
||||
|
||||
virtual void fflush() {
|
||||
::fflush(fp);
|
||||
::fflush(this->_fp);
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Copyright (C) 2011-2012 Roger Manuel
|
||||
Copyright (C) 2013-2019 DeSmuME team
|
||||
Copyright (C) 2013-2021 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
|
||||
|
@ -189,7 +189,7 @@ void VideoFilter::__InstanceInit(size_t srcWidth, size_t srcHeight, VideoFilterT
|
|||
|
||||
__vfThread[i].task = new Task;
|
||||
char name[16];
|
||||
snprintf(name, 16, "video filter %d", i);
|
||||
snprintf(name, 16, "video filter %d", (int)i);
|
||||
__vfThread[i].task->start(false, 0, name);
|
||||
}
|
||||
|
||||
|
|
|
@ -355,7 +355,7 @@ public:
|
|||
|
||||
const NDSDisplayInfo &dispInfo = GPU->GetDisplayInfo();
|
||||
|
||||
if (colorFormat != dispInfo.colorFormat)
|
||||
if (dispInfo.colorFormat != (NDSColorFormat)colorFormat)
|
||||
{
|
||||
#ifdef ENABLE_SHARED_FETCH_OBJECT
|
||||
const size_t maxPages = GPU->GetDisplayInfo().framebufferPageCount;
|
||||
|
@ -521,7 +521,7 @@ public:
|
|||
|
||||
CommonSettings.num_cores = numberCores;
|
||||
|
||||
if (renderingEngineID == CORE3DLIST_SWRASTERIZE)
|
||||
if (renderingEngineID == RENDERID_SOFTRASTERIZER)
|
||||
{
|
||||
GPU->Set3DRendererByID(renderingEngineID);
|
||||
}
|
||||
|
@ -558,7 +558,7 @@ public:
|
|||
{
|
||||
gpuEvent->ApplyRender3DSettingsLock();
|
||||
|
||||
const int currentMSAASize = CommonSettings.GFX3D_Renderer_MultisampleSize;
|
||||
const NSUInteger currentMSAASize = (NSUInteger)CommonSettings.GFX3D_Renderer_MultisampleSize;
|
||||
|
||||
if (currentMSAASize != msaaSize)
|
||||
{
|
||||
|
@ -644,8 +644,8 @@ public:
|
|||
msaaSize = openglDeviceMaxMultisamples;
|
||||
}
|
||||
|
||||
msaaSize = GetNearestPositivePOT(msaaSize);
|
||||
CommonSettings.GFX3D_Renderer_MultisampleSize = msaaSize;
|
||||
msaaSize = GetNearestPositivePOT((uint32_t)msaaSize);
|
||||
CommonSettings.GFX3D_Renderer_MultisampleSize = (int)msaaSize;
|
||||
}
|
||||
|
||||
gpuEvent->ApplyRender3DSettingsUnlock();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2013-2018 DeSmuME team
|
||||
Copyright (C) 2013-2021 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
|
||||
|
@ -2078,9 +2078,10 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
CocoaDSCore *cdsCore = (CocoaDSCore *)[[[windowController emuControl] cdsCoreController] content];
|
||||
CocoaDSGPU *cdsGPU = [cdsCore cdsGPU];
|
||||
MacClientSharedObject *macSharedData = [cdsGPU sharedData];
|
||||
BOOL isMetalLayer = NO;
|
||||
|
||||
#ifdef ENABLE_APPLE_METAL
|
||||
BOOL isMetalLayer = NO;
|
||||
|
||||
if ((macSharedData != nil) && [macSharedData isKindOfClass:[MetalDisplayViewSharedData class]])
|
||||
{
|
||||
if ([(MetalDisplayViewSharedData *)macSharedData device] != nil)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Copyright (C) 2011 Roger Manuel
|
||||
Copyright (C) 2012-2018 DeSmuME Team
|
||||
Copyright (C) 2012-2021 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
|
||||
|
@ -999,7 +999,7 @@
|
|||
- (void) markUnsupportedOpenGLMSAAMenuItems
|
||||
{
|
||||
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
|
||||
NSUInteger maxSamples = [[cdsCore cdsGPU] openglDeviceMaxMultisamples];
|
||||
NSInteger maxSamples = (NSInteger)[[cdsCore cdsGPU] openglDeviceMaxMultisamples];
|
||||
size_t itemCount = [openglMSAAPopUpButton numberOfItems];
|
||||
BOOL needAddUnsupportedSeparator = YES;
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Copyright (C) 2006 yopyop
|
||||
Copyright (C) 2008-2019 DeSmuME team
|
||||
Copyright (C) 2008-2021 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
|
||||
|
@ -538,7 +538,7 @@ void gfx3d_init()
|
|||
// in this case.
|
||||
if (polylists == NULL)
|
||||
{
|
||||
polylists = (POLYLIST *)malloc(sizeof(POLYLIST)*2);
|
||||
polylists = (POLYLIST *)malloc_alignedPage(sizeof(POLYLIST) * 2);
|
||||
polylist = &polylists[0];
|
||||
}
|
||||
|
||||
|
@ -565,7 +565,7 @@ void gfx3d_deinit()
|
|||
{
|
||||
Render3D_DeInit();
|
||||
|
||||
free(polylists);
|
||||
free_aligned(polylists);
|
||||
polylists = NULL;
|
||||
polylist = NULL;
|
||||
|
||||
|
@ -982,7 +982,7 @@ static void gfx3d_glLightDirection_cache(const size_t index)
|
|||
MatrixMultVec3x3(mtxCurrent[MATRIXMODE_POSITION_VECTOR], cacheLightDirection[index]);
|
||||
|
||||
//Calculate the half angle vector
|
||||
s32 lineOfSight[4] = {0, 0, (-1)<<12, 0};
|
||||
s32 lineOfSight[4] = {0, 0, 0xFFFFF000, 0};
|
||||
for (size_t i = 0; i < 4; i++)
|
||||
{
|
||||
cacheHalfVector[index][i] = ((cacheLightDirection[index][i] + lineOfSight[i]));
|
||||
|
@ -2416,7 +2416,7 @@ void gfx3d_GenerateRenderLists(const ClipperMode clippingMode)
|
|||
verty = 1.0f-(verty+vertw)/(2*vertw);
|
||||
poly.miny = poly.maxy = verty;
|
||||
|
||||
for (size_t j = 1; j < poly.type; j++)
|
||||
for (size_t j = 1; j < (size_t)poly.type; j++)
|
||||
{
|
||||
verty = gfx3d.vertList[poly.vertIndexes[j]].y;
|
||||
vertw = (gfx3d.vertList[poly.vertIndexes[j]].w != 0.0f) ? gfx3d.vertList[poly.vertIndexes[j]].w : 0.00000001f;
|
||||
|
@ -3355,7 +3355,7 @@ bool GFX3D_Clipper::ClipPoly(const u16 polyIndex, const POLY &poly, const VERT *
|
|||
CLIPLOG("==Begin poly==\n");
|
||||
|
||||
PolygonType outType;
|
||||
const PolygonType type = poly.type;
|
||||
const PolygonType polyType = poly.type;
|
||||
numScratchClipVerts = 0;
|
||||
|
||||
switch (CLIPPERMODE)
|
||||
|
@ -3363,7 +3363,7 @@ bool GFX3D_Clipper::ClipPoly(const u16 polyIndex, const POLY &poly, const VERT *
|
|||
case ClipperMode_Full:
|
||||
{
|
||||
clipper1.init(this->_clippedPolyList[this->_clippedPolyCounter].clipVerts);
|
||||
for (size_t i = 0; i < type; i++)
|
||||
for (size_t i = 0; i < (size_t)polyType; i++)
|
||||
clipper1.clipVert(verts[i]);
|
||||
|
||||
outType = (PolygonType)clipper1.finish();
|
||||
|
@ -3373,7 +3373,7 @@ bool GFX3D_Clipper::ClipPoly(const u16 polyIndex, const POLY &poly, const VERT *
|
|||
case ClipperMode_FullColorInterpolate:
|
||||
{
|
||||
clipper1i.init(this->_clippedPolyList[this->_clippedPolyCounter].clipVerts);
|
||||
for (size_t i = 0; i < type; i++)
|
||||
for (size_t i = 0; i < (size_t)polyType; i++)
|
||||
clipper1i.clipVert(verts[i]);
|
||||
|
||||
outType = (PolygonType)clipper1i.finish();
|
||||
|
@ -3383,7 +3383,7 @@ bool GFX3D_Clipper::ClipPoly(const u16 polyIndex, const POLY &poly, const VERT *
|
|||
case ClipperMode_DetermineClipOnly:
|
||||
{
|
||||
clipper1d.init(this->_clippedPolyList[this->_clippedPolyCounter].clipVerts);
|
||||
for (size_t i = 0; i < type; i++)
|
||||
for (size_t i = 0; i < (size_t)polyType; i++)
|
||||
clipper1d.clipVert(verts[i]);
|
||||
|
||||
outType = (PolygonType)clipper1d.finish();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2009-2019 DeSmuME team
|
||||
Copyright (C) 2009-2021 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
|
||||
|
@ -2261,7 +2261,7 @@ public:
|
|||
|
||||
virtual size_t fwrite(const void *ptr, size_t bytes)
|
||||
{
|
||||
if(!failbit)
|
||||
if(!this->_failbit)
|
||||
{
|
||||
u8* dst = buf()+pos;
|
||||
const u8* src = (const u8*)ptr;
|
||||
|
@ -2271,7 +2271,7 @@ public:
|
|||
if(*src != *dst)
|
||||
{
|
||||
if(differences.size() == 100)
|
||||
failbit = true;
|
||||
this->_failbit = true;
|
||||
else
|
||||
{
|
||||
const NDSDisplayInfo &dispInfo = GPU->GetDisplayInfo();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
Copyright (C) 2006 thoduv
|
||||
Copyright (C) 2006-2007 Theo Berkau
|
||||
Copyright (C) 2008-2018 DeSmuME team
|
||||
Copyright (C) 2008-2021 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
|
||||
|
@ -1554,8 +1554,8 @@ bool BackupDevice::import_duc(const char* filename, u32 force_size)
|
|||
fseek(file, 0xA4, SEEK_SET);
|
||||
|
||||
//validate size
|
||||
int specifiedSize = (id3[0]<<8)+(id3[1]<<16);
|
||||
if(specifiedSize != size)
|
||||
const u32 specifiedSize = ((u32)id3[0] << 8) + ((u32)id3[1] << 16);
|
||||
if (specifiedSize != size)
|
||||
goto INVALID_DUC;
|
||||
}
|
||||
|
||||
|
|
|
@ -249,7 +249,7 @@ static void CvtPacketToFloat( StereoOut32* srcdest )
|
|||
{
|
||||
StereoOutFloat* dest = (StereoOutFloat*)srcdest;
|
||||
const StereoOut32* src = (StereoOut32*)srcdest;
|
||||
for( uint i=0; i<SndOutPacketSize; ++i, ++dest, ++src )
|
||||
for( int i=0; i<SndOutPacketSize; ++i, ++dest, ++src )
|
||||
*dest = (StereoOutFloat)*src;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright 2009-2015 DeSmuME team
|
||||
/* Copyright 2009-2021 DeSmuME team
|
||||
|
||||
This file is part of DeSmuME
|
||||
|
||||
|
@ -492,9 +492,9 @@ public:
|
|||
//SndOutPacketSize
|
||||
StereoOut16 temp[SndOutPacketSize*2];
|
||||
SndBuffer::ReadSamples( temp );
|
||||
for(int i=0;i<SndOutPacketSize;i++) {
|
||||
readySamples.push(temp[i].Left);
|
||||
readySamples.push(temp[i].Right);
|
||||
for(int j=0;j<SndOutPacketSize;j++) {
|
||||
readySamples.push(temp[j].Left);
|
||||
readySamples.push(temp[j].Right);
|
||||
}
|
||||
}
|
||||
*buf++ = readySamples.front(); readySamples.pop();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright 2009-2015 DeSmuME team
|
||||
/* Copyright 2009-2021 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
|
||||
|
@ -43,6 +43,9 @@ static FORCEINLINE T GetClamped( T src, T min, T max )
|
|||
class ISynchronizingAudioBuffer
|
||||
{
|
||||
public:
|
||||
ISynchronizingAudioBuffer() {};
|
||||
virtual ~ISynchronizingAudioBuffer() {};
|
||||
|
||||
virtual void enqueue_samples(s16* buf, int samples_provided) = 0;
|
||||
|
||||
//returns the number of samples actually supplied, which may not match the number requested
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2008-2019 DeSmuME team
|
||||
Copyright 2008-2021 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
|
||||
|
@ -335,7 +335,7 @@ void MovieData::installSram(std::string& key, std::string& val) { BinaryDataFrom
|
|||
void MovieData::installMicSample(std::string& key, std::string& val)
|
||||
{
|
||||
//which sample?
|
||||
int which = atoi(key.c_str()+strlen("micsample"));
|
||||
size_t which = atoi(key.c_str()+strlen("micsample"));
|
||||
|
||||
//make sure we have this many
|
||||
if(micSamples.size()<which+1)
|
||||
|
@ -405,13 +405,13 @@ int MovieData::dump(EMUFILE &fp, bool binary)
|
|||
if (sram.size() != 0)
|
||||
fp.fprintf("sram %s\n", BytesToString(&sram[0],sram.size()).c_str());
|
||||
|
||||
for(int i=0;i<256;i++)
|
||||
for (size_t i = 0; i < 256; i++)
|
||||
{
|
||||
//TODO - how do these get put in here
|
||||
if(micSamples.size() > i)
|
||||
{
|
||||
char tmp[32];
|
||||
sprintf(tmp,"micsample%d",i);
|
||||
sprintf(tmp,"micsample%d", (int)i);
|
||||
fp.fprintf("%s %s\n",tmp, BytesToString(&micSamples[i][0],micSamples[i].size()).c_str());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2009-2016 DeSmuME team
|
||||
Copyright (C) 2009-2021 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
|
||||
|
@ -100,7 +100,7 @@ std::string Path::ScrubInvalid(std::string str)
|
|||
for (std::string::iterator it(str.begin()); it != str.end(); ++it)
|
||||
{
|
||||
bool ok = true;
|
||||
for(int i=0;i<ARRAY_SIZE(InvalidPathChars);i++)
|
||||
for (size_t i = 0; i < ARRAY_SIZE(InvalidPathChars); i++)
|
||||
{
|
||||
if(InvalidPathChars[i] == *it)
|
||||
{
|
||||
|
|
|
@ -1288,7 +1288,7 @@ FORCEINLINE void RasterizerUnit<RENDERER>::Render()
|
|||
|
||||
const CPoly &clippedPoly = this->_softRender->GetClippedPolyByIndex(i);
|
||||
const POLY &thePoly = *clippedPoly.poly;
|
||||
const int vertCount = clippedPoly.type;
|
||||
const size_t vertCount = (size_t)clippedPoly.type;
|
||||
const bool useLineHack = USELINEHACK && (thePoly.vtxFormat & 4);
|
||||
|
||||
polyAttr = thePoly.attribute;
|
||||
|
@ -1666,8 +1666,8 @@ void SoftRasterizerTexture::SetScalingFactor(size_t scalingFactor)
|
|||
scalingFactor = 1;
|
||||
}
|
||||
|
||||
u32 newWidth = this->_sizeS * scalingFactor;
|
||||
u32 newHeight = this->_sizeT * scalingFactor;
|
||||
s32 newWidth = (s32)(this->_sizeS * scalingFactor);
|
||||
s32 newHeight = (s32)(this->_sizeT * scalingFactor);
|
||||
|
||||
if (this->_renderWidth != newWidth || this->_renderHeight != newHeight)
|
||||
{
|
||||
|
@ -1875,7 +1875,7 @@ void SoftRasterizerRenderer::_TransformVertices()
|
|||
for (size_t i = 0; i < this->_clippedPolyCount; i++)
|
||||
{
|
||||
CPoly &poly = this->_clippedPolyList[i];
|
||||
for (size_t j = 0; j < poly.type; j++)
|
||||
for (size_t j = 0; j < (size_t)poly.type; j++)
|
||||
{
|
||||
VERT &vert = poly.clipVerts[j];
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2010-2013 DeSmuME team
|
||||
Copyright (C) 2010-2021 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
|
||||
|
@ -112,7 +112,7 @@ void slot1_Init()
|
|||
|
||||
void slot1_Shutdown()
|
||||
{
|
||||
for(int i=0;i<ARRAY_SIZE(slot1_List);i++)
|
||||
for (size_t i = 0; i < ARRAY_SIZE(slot1_List); i++)
|
||||
{
|
||||
if(slot1_List[i])
|
||||
slot1_List[i]->shutdown();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2009-2015 DeSmuME team
|
||||
Copyright 2009-2021 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
|
||||
|
@ -18,11 +18,11 @@
|
|||
//based on Arduino SdFat Library ( http://code.google.com/p/sdfatlib/ )
|
||||
//Copyright (C) 2009 by William Greiman
|
||||
|
||||
//based on mkdosfs - utility to create FAT/MS-DOS filesystems
|
||||
//Copyright (C) 1991 Linus Torvalds <torvalds@klaava.helsinki.fi>
|
||||
//Copyright (C) 1992-1993 Remy Card <card@masi.ibp.fr>
|
||||
//Copyright (C) 1993-1994 David Hudson <dave@humbug.demon.co.uk>
|
||||
//Copyright (C) 1998 H. Peter Anvin <hpa@zytor.com>
|
||||
//based on mkdosfs - utility to create FAT/MS-DOS filesystems
|
||||
//Copyright (C) 1991 Linus Torvalds <torvalds@klaava.helsinki.fi>
|
||||
//Copyright (C) 1992-1993 Remy Card <card@masi.ibp.fr>
|
||||
//Copyright (C) 1993-1994 David Hudson <dave@humbug.demon.co.uk>
|
||||
//Copyright (C) 1998 H. Peter Anvin <hpa@zytor.com>
|
||||
//Copyright (C) 1998-2005 Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>
|
||||
|
||||
#include "emufat.h"
|
||||
|
@ -557,15 +557,15 @@ bool EmuFatVolume::formatNew(u32 sectors)
|
|||
dev_->writeBlock(bs->fat32.fat32BackBootBlock,(const u8*)bs);
|
||||
}
|
||||
/* seek to start of FATS and write them all */
|
||||
int ctr=bs->reservedSectorCount;
|
||||
for (int i=0;i<bs->fatCount;i++)
|
||||
for(int j=0;j<fat_length;j++,ctr++)
|
||||
dev_->writeBlock(ctr,fat+j*sector_size);
|
||||
u32 ctr = bs->reservedSectorCount;
|
||||
for (u8 i = 0; i < bs->fatCount; i++)
|
||||
for (u32 j = 0; j < fat_length; j++, ctr++)
|
||||
dev_->writeBlock(ctr, fat+j*sector_size);
|
||||
|
||||
/* Write the root directory directly after the last FAT. This is the root
|
||||
* dir area on FAT12/16, and the first cluster on FAT32. */
|
||||
for(int i=0;i<size_root_dir_in_sectors;i++)
|
||||
dev_->writeBlock(ctr,blank_sector);
|
||||
for (u32 i = 0; i < size_root_dir_in_sectors; i++)
|
||||
dev_->writeBlock(ctr, blank_sector);
|
||||
|
||||
delete[] blank_sector;
|
||||
delete[] info_sector;
|
||||
|
@ -1260,7 +1260,7 @@ u8 EmuFatFile::open(EmuFatFile* dirFile, const char* fileName, u8 oflag) {
|
|||
* See open() by fileName for definition of flags and return values.
|
||||
*
|
||||
*/
|
||||
u8 EmuFatFile::open(EmuFatFile* dirFile, u16 index, u8 oflag) {
|
||||
u8 EmuFatFile::open(EmuFatFile* dirFile, u32 index, u8 oflag) {
|
||||
// error if already open
|
||||
if (isOpen())return false;
|
||||
|
||||
|
@ -1282,7 +1282,7 @@ u8 EmuFatFile::open(EmuFatFile* dirFile, u16 index, u8 oflag) {
|
|||
return false;
|
||||
}
|
||||
// open cached entry
|
||||
return openCachedEntry(index & 0XF, oflag);
|
||||
return openCachedEntry((u8)(index & 0x0F), oflag);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
@ -1601,7 +1601,7 @@ u8 EmuFatFile::rmRfStar(void) {
|
|||
EmuFatFile f;
|
||||
|
||||
// remember position
|
||||
u16 index = curPosition_/32;
|
||||
u32 index = curPosition_/32;
|
||||
|
||||
TDirectoryEntry* p = readDirCache();
|
||||
if (!p) return false;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2009-2015 DeSmuME team
|
||||
Copyright 2009-2021 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
|
||||
|
@ -514,7 +514,7 @@ class EmuFatFile
|
|||
u8 timestamp(u8 flag, u16 year, u8 month, u8 day, u8 hour, u8 minute, u8 second);
|
||||
u8 sync(void);
|
||||
u8 makeDir(EmuFatFile* dir, const char* dirName);
|
||||
u8 open(EmuFatFile* dirFile, u16 index, u8 oflag);
|
||||
u8 open(EmuFatFile* dirFile, u32 index, u8 oflag);
|
||||
u8 open(EmuFatFile* dirFile, const char* fileName, u8 oflag);
|
||||
u8 remove(EmuFatFile* dirFile, const char* fileName);
|
||||
u8 remove(void);
|
||||
|
|
Loading…
Reference in New Issue