Files
weee/core/broadway/mmio/vi.cpp
T

54 lines
1.4 KiB
C++

#include <broadway/mmio/vi.hpp>
#include <ircolib/log.hpp>
#include <mem.hpp>
namespace weee::core {
video_interface::video_interface(mem &mem) {
mem.register_write16_handler(0x0c002000, 0x0c0020ff,
[&](ircolib::u32 addr, ircolib::u16 value) { write16(addr, value); });
mem.register_write32_handler(0x0c002000, 0x0c0020ff,
[&](ircolib::u32 addr, ircolib::u32 value) { write32(addr, value); });
}
void video_interface::write16(ircolib::u32 addr, ircolib::u16 value) {
switch (addr) {
case 0x00:
vtr.raw = value;
break;
case 0x02:
dcr.raw = value;
break;
default:
ircolib::panic("video_interface::write16 to unimplemented addr 0x{:04X} with value 0x{:04X}", addr, value);
}
}
void video_interface::write32(ircolib::u32 addr, ircolib::u32 value) {
switch (addr) {
case 0x02:
dcr.raw = value;
break;
case 0x04:
htr0.raw = value;
break;
case 0x08:
htr1.raw = value;
break;
case 0x0c:
vto.raw = value;
break;
case 0x10:
vte.raw = value;
break;
case 0x14:
bbei.raw = value;
break;
case 0x18:
bboi.raw = value;
break;
default:
ircolib::panic("video_interface::write32 to unimplemented addr 0x{:04X} with value 0x{:08X}", addr, value);
}
}
} // namespace weee::core