diff --git a/Assets/dll/libsnes.wbx.zst b/Assets/dll/libsnes.wbx.zst index 8ea08c0f05..41a956ebb5 100644 Binary files a/Assets/dll/libsnes.wbx.zst and b/Assets/dll/libsnes.wbx.zst differ diff --git a/waterbox/libsnes/bsnes/snes/chip/sa1/sa1.cpp b/waterbox/libsnes/bsnes/snes/chip/sa1/sa1.cpp index aeccb144a8..df242a89c0 100644 --- a/waterbox/libsnes/bsnes/snes/chip/sa1/sa1.cpp +++ b/waterbox/libsnes/bsnes/snes/chip/sa1/sa1.cpp @@ -116,6 +116,7 @@ void SA1::trigger_irq() { } void SA1::init() { + iram.init(); } void SA1::load() { diff --git a/waterbox/libsnes/bsnes/snes/memory/memory-inline.hpp b/waterbox/libsnes/bsnes/snes/memory/memory-inline.hpp index dc053000a5..4ddc9a6f64 100644 --- a/waterbox/libsnes/bsnes/snes/memory/memory-inline.hpp +++ b/waterbox/libsnes/bsnes/snes/memory/memory-inline.hpp @@ -12,12 +12,14 @@ void StaticRAM::write(unsigned addr, uint8 n) { data_[addr] = n; } uint8& StaticRAM::operator[](unsigned addr) { return data_[addr]; } const uint8& StaticRAM::operator[](unsigned addr) const { return data_[addr]; } -StaticRAM::StaticRAM(unsigned n, const char* name) : size_(n) { - if(name) data_ = (uint8*)interface()->allocSharedMemory(name, size_); +StaticRAM::StaticRAM(unsigned n, const char* name) : size_(n), name_(name) { + if(name_) data_ = nullptr; // data_ alloc must be deferred (static ctor is not in a cothread!) else data_ = new uint8[size_](); } StaticRAM::~StaticRAM() { abort(); } +void StaticRAM::init() { if(name_ && !data_) data_ = (uint8*)interface()->allocSharedMemory(name_, size_); } + //MappedRAM void MappedRAM::reset() { diff --git a/waterbox/libsnes/bsnes/snes/memory/memory.hpp b/waterbox/libsnes/bsnes/snes/memory/memory.hpp index c7facd79b1..4fa706e115 100644 --- a/waterbox/libsnes/bsnes/snes/memory/memory.hpp +++ b/waterbox/libsnes/bsnes/snes/memory/memory.hpp @@ -16,9 +16,12 @@ struct StaticRAM : Memory { inline StaticRAM(unsigned size, const char* name = NULL); inline ~StaticRAM(); + inline void init(); + private: uint8 *data_; unsigned size_; + const char* name_; }; struct MappedRAM : Memory {