Vendor Teakra, make emulator own DSP RAM and add DSP RAM to fastmem (#806)

* DSP: Own DSP RAM and add it to fastmem

* Vendor Teakra

* Add MacOS support to fastmem

* Fix MacOS fastmem paths

* Fix iOS build
This commit is contained in:
wheremyfoodat
2025-08-22 02:12:21 +03:00
committed by GitHub
parent ff100dc5ac
commit 78002be334
132 changed files with 37774 additions and 15 deletions

46
third_party/teakra/src/core_timing.h vendored Normal file
View File

@@ -0,0 +1,46 @@
#pragma once
#include <algorithm>
#include <functional>
#include <limits>
#include <vector>
#include "common_types.h"
namespace Teakra {
class CoreTiming {
public:
class Callbacks {
public:
virtual ~Callbacks() = default;
virtual void Tick() = 0;
virtual u64 GetMaxSkip() const = 0;
virtual void Skip(u64) = 0;
static constexpr u64 Infinity = std::numeric_limits<u64>::max();
};
void Tick() {
for (const auto& callbacks : registered_callbacks) {
callbacks->Tick();
}
}
u64 Skip(u64 maximum) {
u64 ticks = maximum;
for (const auto& callbacks : registered_callbacks) {
ticks = std::min(ticks, callbacks->GetMaxSkip());
}
for (const auto& callbacks : registered_callbacks) {
callbacks->Skip(ticks);
}
return ticks;
}
void RegisterCallbacks(Callbacks* callbacks) {
registered_callbacks.push_back(std::move(callbacks));
}
private:
std::vector<Callbacks*> registered_callbacks;
};
} // namespace Teakra