mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-20 04:51:21 +01:00
50 lines
940 B
C++
50 lines
940 B
C++
// Copyright 2009 Dolphin Emulator Project
|
|
// Licensed under GPLv2+
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <cstring>
|
|
#include "Common/CommonTypes.h"
|
|
|
|
namespace DSP
|
|
{
|
|
// super fast breakpoints for a limited range.
|
|
// To be used interchangeably with the BreakPoints class.
|
|
class DSPBreakpoints
|
|
{
|
|
public:
|
|
DSPBreakpoints() { Clear(); }
|
|
// is address breakpoint
|
|
bool IsAddressBreakPoint(u32 addr) { return b[addr] != 0; }
|
|
// AddBreakPoint
|
|
bool Add(u32 addr, bool temp = false)
|
|
{
|
|
bool was_one = b[addr] != 0;
|
|
|
|
if (!was_one)
|
|
{
|
|
b[addr] = temp ? 2 : 1;
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Remove Breakpoint
|
|
bool Remove(u32 addr)
|
|
{
|
|
bool was_one = b[addr] != 0;
|
|
b[addr] = 0;
|
|
return was_one;
|
|
}
|
|
|
|
void Clear() { memset(b, 0, sizeof(b)); }
|
|
void DeleteByAddress(u32 addr) { b[addr] = 0; }
|
|
private:
|
|
u8 b[65536];
|
|
};
|
|
} // namespace DSP
|