Skip to content

Commit a0b088e

Browse files
committed
Fix compiling for non-Windows platforms. (Regression from commit df8816f.)
1 parent df8816f commit a0b088e

File tree

2 files changed

+50
-23
lines changed

2 files changed

+50
-23
lines changed

desmume/src/NDSSystem.cpp

100644100755
Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2246,8 +2246,8 @@ void NDS_exec(s32 nb)
22462246
cheats->process(CHEAT_TYPE_INTERNAL);
22472247
CHEATS::ResetJitIfNeeded();
22482248
}
2249-
for(auto& cheat : CommonSettings.gamehacks.flags.cheats)
2250-
cheat->Run();
2249+
2250+
CommonSettings.gamehacks.execute();
22512251

22522252
GDBSTUB_MUTEX_UNLOCK();
22532253
}
@@ -3469,44 +3469,44 @@ namespace
34693469
{
34703470
struct rabbids_us : public GameHackCheat
34713471
{
3472-
void Run() override
3472+
virtual void Run()
34733473
{
34743474
if(0xe28dd02c == read32(0x203cf18))
34753475
write32(0x203cf18, 0xeb0f0878);
34763476
write32(0x23ff100, 0xe59d1000);
3477-
write(0x23ff104, 48, "\x01\x00\x51\xE3\x03\x00\x00\x1A\x10\x10\x8F\xE2\x1E\x00\x91\xE8\x00\x30\x81\xE5\x00\x40\x82\xE5\x2C\xD0\x8D\xE2\x1E\xFF\x2F\xE1\xC4\xD5\x18\x02\xCC\xD5\x18\x02\x21\x59\xA0\xE3\x00\x40\xA0\xE3");
3477+
write(0x23ff104, 48, (char*)"\x01\x00\x51\xE3\x03\x00\x00\x1A\x10\x10\x8F\xE2\x1E\x00\x91\xE8\x00\x30\x81\xE5\x00\x40\x82\xE5\x2C\xD0\x8D\xE2\x1E\xFF\x2F\xE1\xC4\xD5\x18\x02\xCC\xD5\x18\x02\x21\x59\xA0\xE3\x00\x40\xA0\xE3");
34783478
}
34793479
};
34803480

34813481
struct rabbids_eu : public GameHackCheat
34823482
{
3483-
void Run() override
3483+
virtual void Run()
34843484
{
34853485
if(0xe28dd02c == read32(0x203d108))
34863486
write32(0x203d108, 0xeb0efcbc);
34873487
write32(0x23ff100, 0xe59d1000);
3488-
write(0x23ff104, 48, "\x01\x00\x51\xE3\x03\x00\x00\x1A\x10\x10\x8F\xE2\x1E\x00\x91\xE8\x00\x30\x81\xE5\x00\x40\x82\xE5\x2C\xD0\x8D\xE2\x1E\xFF\x2F\xE1\x4C\xDA\x18\x02\x54\xDA\x18\x02\x21\x59\xA0\xE3\x00\x40\xA0\xE3");
3488+
write(0x23ff104, 48, (char*)"\x01\x00\x51\xE3\x03\x00\x00\x1A\x10\x10\x8F\xE2\x1E\x00\x91\xE8\x00\x30\x81\xE5\x00\x40\x82\xE5\x2C\xD0\x8D\xE2\x1E\xFF\x2F\xE1\x4C\xDA\x18\x02\x54\xDA\x18\x02\x21\x59\xA0\xE3\x00\x40\xA0\xE3");
34893489
}
34903490
};
34913491
}
34923492

3493-
void GameHackCheat::write08(uint32_t address, uint8_t value)
3493+
void GameHackCheat::write08(u32 address, u8 value)
34943494
{
34953495
_MMU_ARM9_write08(address, value);
34963496
}
34973497

3498-
void GameHackCheat::write(uint32_t address, size_t sz, void* value)
3498+
void GameHackCheat::write(u32 address, size_t sz, void* value)
34993499
{
35003500
for(size_t i = 0; i < sz; i++)
3501-
write08(address + i, ((uint8_t*)value)[i]);
3501+
write08(address + (u32)i, ((u8*)value)[i]);
35023502
}
35033503

3504-
void GameHackCheat::write32(uint32_t address, uint32_t value)
3504+
void GameHackCheat::write32(u32 address, u32 value)
35053505
{
35063506
_MMU_ARM9_write32(address, value);
35073507
}
35083508

3509-
uint32_t GameHackCheat::read32(uint32_t address)
3509+
u32 GameHackCheat::read32(u32 address)
35103510
{
35113511
return _MMU_ARM9_read32(address);
35123512
}
@@ -3520,11 +3520,36 @@ void TCommonSettings::GameHacks::apply()
35203520
flags.stylusjitter = gameInfo.IsCode("YDM"); //CSI: Dark Motives
35213521

35223522
//Rabbids Go Home
3523-
if(gameInfo.IsCode("VRGE")) flags.cheats.emplace_back(new rabbids_us());
3524-
if(gameInfo.IsCode("VRGV")) flags.cheats.emplace_back(new rabbids_eu());
3523+
if(gameInfo.IsCode("VRGE")) flags.cheats.push_back(new rabbids_us());
3524+
if(gameInfo.IsCode("VRGV")) flags.cheats.push_back(new rabbids_eu());
35253525
}
35263526

35273527
void TCommonSettings::GameHacks::clear()
35283528
{
3529-
reconstruct(&flags);
3529+
flags.reset();
3530+
}
3531+
3532+
void TCommonSettings::GameHacks::execute()
3533+
{
3534+
const size_t cheatCount = flags.cheats.size();
3535+
3536+
for (size_t i = 0; i < cheatCount; i++)
3537+
{
3538+
flags.cheats[i]->Run();
3539+
}
3540+
}
3541+
3542+
void TCommonSettings::GameHacks::GameHacksFlags::reset()
3543+
{
3544+
const size_t cheatCount = cheats.size();
3545+
3546+
overclock = false;
3547+
stylusjitter = false;
3548+
3549+
for (int i = (int)cheatCount - 1; i > 0; i--)
3550+
{
3551+
delete cheats[i];
3552+
}
3553+
3554+
cheats.clear();
35303555
}

desmume/src/NDSSystem.h

100644100755
Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#include <string.h>
2323
#include <string>
2424
#include <vector>
25-
#include <memory>
2625

2726
#include "types.h"
2827
#include "ROMReader.h"
@@ -492,10 +491,10 @@ struct GameHackCheat
492491
{
493492
virtual void Run() {}
494493

495-
void write08(uint32_t address, uint8_t value);
496-
void write(uint32_t address, size_t sz, void* value);
497-
void write32(uint32_t address, uint32_t value);
498-
uint32_t read32(uint32_t address);
494+
void write08(u32 address, u8 value);
495+
void write(u32 address, size_t sz, void* value);
496+
void write32(u32 address, u32 value);
497+
u32 read32(u32 address);
499498
};
500499

501500
struct TCommonSettings
@@ -545,16 +544,19 @@ struct TCommonSettings
545544
{
546545
bool en;
547546

548-
struct
547+
struct GameHacksFlags
549548
{
550-
bool overclock = false;
551-
bool stylusjitter = false;
552-
std::vector<std::shared_ptr<GameHackCheat>> cheats;
549+
bool overclock;
550+
bool stylusjitter;
551+
std::vector<GameHackCheat*> cheats;
552+
553+
void reset();
553554
} flags;
554555

555556

556557
void apply();
557558
void clear();
559+
void execute();
558560
} gamehacks;
559561

560562
int StylusPressure;

0 commit comments

Comments
 (0)