getting conditional branch now

This commit is contained in:
2026-05-12 17:55:05 +02:00
parent 2be9570aa9
commit df68e42d61
8 changed files with 176 additions and 4 deletions
+23
View File
@@ -35,6 +35,7 @@ void mem::set(const ircolib::u8 val, const ircolib::u32 size, const ircolib::u32
memset(&mem1[offset], val, size);
}
template <>
ircolib::u32 mem::read(ircolib::u32 addr) {
addr &= 0x0FFFFFFF;
if (addr > 0x017FFFFF)
@@ -43,6 +44,15 @@ ircolib::u32 mem::read(ircolib::u32 addr) {
return ircolib::read_access<ircolib::u32>(mem1, addr);
}
template <>
ircolib::u16 mem::read(ircolib::u32 addr) {
addr &= 0x0FFFFFFF;
if (addr > 0x017FFFFF)
ircolib::panic("mem::read unimplemented outside mem1 (0x{:08X})", addr);
return ircolib::read_access<ircolib::u16>(mem1, addr);
}
void mem::write(ircolib::u32 addr, ircolib::u32 value) {
addr &= 0x0FFFFFFF;
if (addr > 0x017FFFFF)
@@ -50,4 +60,17 @@ void mem::write(ircolib::u32 addr, ircolib::u32 value) {
ircolib::write_access<ircolib::u32>(mem1, addr, value);
}
void mem::write(ircolib::u32 addr, ircolib::u16 value) {
addr &= 0x0FFFFFFF;
if (addr > 0x017FFFFF && !ircolib::is_inside_range(addr, 0x0C002000, 0x0C0020FF))
ircolib::panic("mem::write unimplemented outside mem1 and vi (0x{:08X} = 0x{:08X})", addr, value);
if (addr <= 0x017FFFFF) {
ircolib::write_access<ircolib::u16>(mem1, addr, value);
return;
}
vi.write(addr, value);
}
} // namespace weee::core