diff --git a/src/emu.rs b/src/emu.rs index 27da06d..131fff9 100644 --- a/src/emu.rs +++ b/src/emu.rs @@ -353,7 +353,7 @@ impl GameBoy { self.sp += 2; println!("pop Reg({reg:#04b})"); } - Inc(dst) => { + Inc(dst) => { match dst { ValSrc::Reg(reg) => add_inplace(&mut self.reg[reg], 1), _ => todo!() diff --git a/src/op.rs b/src/op.rs index 265f1d6..cf99894 100644 --- a/src/op.rs +++ b/src/op.rs @@ -227,21 +227,16 @@ impl TryFrom for Operation { let cc = (value & 0b11_000) >> 3; (Jr(JmpCond::Flags(cc)), 3, 2) // TODO cycle can be 2 or 3! } - _ if (value & (HD_MSK | T1_MSK) == 0b10_110_000) => { - (Bit(Or, Reg(Register::try_from(value & 0b111)?)), 1, 1) - } - _ if (value & (HD_MSK | T1_MSK) == 0b10_101_000) => { - (Bit(Xor, Reg(Register::try_from(value & 0b111)?)), 1, 1) - } - _ if (value & (HD_MSK | T1_MSK) == 0b10_100_000) => { - (Bit(And, Reg(Register::try_from(value & 0b111)?)), 1, 1) - } - _ if (value & (HD_MSK | 0b1_000 | T2_MSK) == 0b00_000_011) => { - (Inc(Reg(Register::from16_rep(payload(value)))), 2, 1) - } - _ if (value & (HD_MSK | 0b1_000 | T2_MSK) == 0b00_001_011) => { - (Dec(Reg(Register::from16_rep(payload(value)))), 2, 1) - } + _ if (value & (HD_MSK | T1_MSK) == 0b10_110_000) => + (Bit(Or, Reg(Register::try_from(value & 0b111)?)), 1, 1), + _ if (value & (HD_MSK | T1_MSK) == 0b10_101_000) => + (Bit(Xor, Reg(Register::try_from(value & 0b111)?)), 1, 1), + _ if (value & (HD_MSK | T1_MSK) == 0b10_100_000) => + (Bit(And, Reg(Register::try_from(value & 0b111)?)), 1, 1), + _ if (value & (HD_MSK | 0b1_000 | T2_MSK) == 0b00_000_011) => + (Inc(Reg(Register::from16_rep(payload(value)))), 2, 1), + _ if (value & (HD_MSK | 0b1_000 | T2_MSK) == 0b00_001_011) => + (Dec(Reg(Register::from16_rep(payload(value)))), 2, 1), _ if (value & (HD_MSK | T2_MSK) == 0b00_000_100) => { if (T1_MSK & value) == 0b110_000 { (Inc(Mem(AddrLoc::Reg(HL))), 3, 1) @@ -256,12 +251,10 @@ impl TryFrom for Operation { (Dec(Reg(Register::try_from((value & T1_MSK) >> 3)?)), 1, 1) } } - _ if (value & (HD_MSK | 0b1_000 | T2_MSK) == 0b11_000_101) => { - (Psh(Register::repr_psh(payload(value))), 4, 1) - } - _ if (value & (HD_MSK | 0b1_000 | T2_MSK) == 0b11_000_001) => { - (Pop(Register::repr_psh(payload(value))), 3, 1) - } + _ if (value & (HD_MSK | 0b1_000 | T2_MSK) == 0b11_000_101) => + (Psh(Register::repr_psh(payload(value))), 4, 1), + _ if (value & (HD_MSK | 0b1_000 | T2_MSK) == 0b11_000_001) => + (Pop(Register::repr_psh(payload(value))), 3, 1), _ if (value & (HD_MSK | T2_MSK)) == 0b00_000_110 => { let reg = Register::try_from((value & T1_MSK) >> 3)?; (Ld(Reg(reg), Direct, PostOp::None), 2, 2)