i need to start caring about carry >.<
This commit is contained in:
+29
-2
@@ -4,9 +4,11 @@
|
||||
#include <ircolib/mem_access.hpp>
|
||||
|
||||
namespace weee::core {
|
||||
mem::mem() : vi(*this) {
|
||||
mem::mem() : vi(*this), pi(*this), mi(*this), dsp(*this), ai(*this), exi(*this) {
|
||||
mem1.resize(24_mib);
|
||||
std::fill(mem1.begin(), mem1.end(), 0);
|
||||
ipl.resize(1_mib);
|
||||
std::fill(ipl.begin(), ipl.end(), 0);
|
||||
|
||||
register_read8_handler(0x00000000, 0x017fffff, [&](ircolib::u32 addr) { return mem1[addr]; });
|
||||
|
||||
@@ -29,9 +31,34 @@ mem::mem() : vi(*this) {
|
||||
ircolib::write_access<ircolib::u32>(mem1, addr, value);
|
||||
});
|
||||
|
||||
register_write64_handler(0x00000000, 0x017fffff, [&](ircolib::u32 addr, ircolib::u32 value) {
|
||||
register_write64_handler(0x00000000, 0x0fffffff, [&](ircolib::u32 addr, ircolib::u32 value) {
|
||||
ircolib::write_access<ircolib::u64>(mem1, addr, value);
|
||||
});
|
||||
|
||||
register_read8_handler(0x0ff00000, 0x0fffffff, [&](ircolib::u32 addr) { return ipl[addr]; });
|
||||
|
||||
register_read16_handler(0x0ff00000, 0x0fffffff,
|
||||
[&](ircolib::u32 addr) { return ircolib::read_access<ircolib::u16>(ipl, addr); });
|
||||
|
||||
register_read32_handler(0x0ff00000, 0x0fffffff,
|
||||
[&](ircolib::u32 addr) { return ircolib::read_access<ircolib::u32>(ipl, addr); });
|
||||
|
||||
register_read64_handler(0x0ff00000, 0x0fffffff,
|
||||
[&](ircolib::u32 addr) { return ircolib::read_access<ircolib::u64>(ipl, addr); });
|
||||
|
||||
register_write8_handler(0x0ff00000, 0x0fffffff, [&](ircolib::u32 addr, ircolib::u8 value) { ipl[addr] = value; });
|
||||
|
||||
register_write16_handler(0x0ff00000, 0x0fffffff, [&](ircolib::u32 addr, ircolib::u16 value) {
|
||||
ircolib::write_access<ircolib::u16>(ipl, addr, value);
|
||||
});
|
||||
|
||||
register_write32_handler(0x0ff00000, 0x0fffffff, [&](ircolib::u32 addr, ircolib::u32 value) {
|
||||
ircolib::write_access<ircolib::u32>(ipl, addr, value);
|
||||
});
|
||||
|
||||
register_write64_handler(0x0ff00000, 0x0fffffff, [&](ircolib::u32 addr, ircolib::u32 value) {
|
||||
ircolib::write_access<ircolib::u64>(ipl, addr, value);
|
||||
});
|
||||
}
|
||||
|
||||
void mem::copy(std::vector<ircolib::u8> &src, const ircolib::u32 offset) {
|
||||
|
||||
Reference in New Issue
Block a user