ok imma stop using size_t at this point
This commit is contained in:
@@ -70,7 +70,7 @@ void broadway::bcx(ircolib::u32 instr) {
|
||||
}
|
||||
|
||||
void broadway::mftspr(bool dir, ircolib::u32 instr) {
|
||||
const size_t spr_field = (instr >> 11) & 0x3FF;
|
||||
const ircolib::u32 spr_field = (instr >> 11) & 0x3FF;
|
||||
|
||||
auto move_to_or_from_spr = [&](ircolib::u32 &spr) {
|
||||
if (dir) { // mtspr
|
||||
@@ -219,6 +219,22 @@ void broadway::lwz(ircolib::u32 instr, mem &mem) {
|
||||
.value();
|
||||
}
|
||||
|
||||
void broadway::lbz(ircolib::u32 instr, mem &mem) {
|
||||
ircolib::u32 b = gpr[utils::RA(instr)];
|
||||
if (utils::RA(instr) == 0)
|
||||
b = 0;
|
||||
|
||||
ircolib::u32 ea = ircolib::s32(b) + utils::SIMM(instr);
|
||||
|
||||
gpr[utils::RD(instr)] = mem.read8(ea)
|
||||
.and_then([&](ircolib::u32 val) { return std::expected<ircolib::u32, std::string>(val); })
|
||||
.or_else([&](std::string e) {
|
||||
ircolib::panic("broadway read failed. Reason {} (pc: 0x{:08X})", e, pc - 4);
|
||||
return std::expected<ircolib::u32, std::string>();
|
||||
})
|
||||
.value();
|
||||
}
|
||||
|
||||
void broadway::lfd(ircolib::u32 instr, mem &mem) {
|
||||
ircolib::u32 b = gpr[utils::RA(instr)];
|
||||
if (utils::RA(instr) == 0)
|
||||
|
||||
Reference in New Issue
Block a user