mirror of
https://github.com/FranLMSP/rmg-001.git
synced 2024-11-23 10:12:11 +00:00
Mapping CB prefix instructions
This commit is contained in:
parent
3897c3561e
commit
ec34a71fcf
316
src/cpu.rs
316
src/cpu.rs
@ -235,7 +235,6 @@ pub enum Opcode {
|
|||||||
CP(OpcodeParameter),
|
CP(OpcodeParameter),
|
||||||
INC(bool, Register),
|
INC(bool, Register),
|
||||||
DEC(bool, Register),
|
DEC(bool, Register),
|
||||||
SWAP,
|
|
||||||
DAA,
|
DAA,
|
||||||
CPL,
|
CPL,
|
||||||
CCF,
|
CCF,
|
||||||
@ -249,23 +248,24 @@ pub enum Opcode {
|
|||||||
RLA,
|
RLA,
|
||||||
RRCA,
|
RRCA,
|
||||||
RRA,
|
RRA,
|
||||||
RLC,
|
SWAP(Register),
|
||||||
RL,
|
RLC(Register),
|
||||||
RRC,
|
RL(Register),
|
||||||
RR,
|
RRC(Register),
|
||||||
SLA,
|
RR(Register),
|
||||||
SRA,
|
SLA(Register),
|
||||||
SRL,
|
SRA(Register),
|
||||||
BIT,
|
SRL(Register),
|
||||||
SET,
|
BIT(BitIndex, Register),
|
||||||
RES,
|
SET(BitIndex, Register),
|
||||||
|
RES(BitIndex, Register),
|
||||||
JP(OpcodeParameter),
|
JP(OpcodeParameter),
|
||||||
JR(OpcodeParameter),
|
JR(OpcodeParameter),
|
||||||
CALL(OpcodeParameter),
|
CALL(OpcodeParameter),
|
||||||
RST(u8),
|
RST(u8),
|
||||||
RET(OpcodeParameter),
|
RET(OpcodeParameter),
|
||||||
RETI,
|
RETI,
|
||||||
PrefixCB,
|
PrefixCB(Box<Opcode>),
|
||||||
IllegalInstruction,
|
IllegalInstruction,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -962,7 +962,297 @@ impl CPU {
|
|||||||
0x07 => Opcode::RLCA,
|
0x07 => Opcode::RLCA,
|
||||||
0x0F => Opcode::RRCA,
|
0x0F => Opcode::RRCA,
|
||||||
0x1F => Opcode::RRA,
|
0x1F => Opcode::RRA,
|
||||||
0xCB => Opcode::PrefixCB,
|
0xCB => match params.1 {
|
||||||
|
0x00 => Opcode::PrefixCB(Box::new(Opcode::RLC(Register::B))),
|
||||||
|
0x01 => Opcode::PrefixCB(Box::new(Opcode::RLC(Register::C))),
|
||||||
|
0x02 => Opcode::PrefixCB(Box::new(Opcode::RLC(Register::D))),
|
||||||
|
0x03 => Opcode::PrefixCB(Box::new(Opcode::RLC(Register::E))),
|
||||||
|
0x04 => Opcode::PrefixCB(Box::new(Opcode::RLC(Register::H))),
|
||||||
|
0x05 => Opcode::PrefixCB(Box::new(Opcode::RLC(Register::L))),
|
||||||
|
0x06 => Opcode::PrefixCB(Box::new(Opcode::RLC(Register::HL))),
|
||||||
|
0x07 => Opcode::PrefixCB(Box::new(Opcode::RLC(Register::A))),
|
||||||
|
|
||||||
|
0x08 => Opcode::PrefixCB(Box::new(Opcode::RRC(Register::B))),
|
||||||
|
0x09 => Opcode::PrefixCB(Box::new(Opcode::RRC(Register::C))),
|
||||||
|
0x0A => Opcode::PrefixCB(Box::new(Opcode::RRC(Register::D))),
|
||||||
|
0x0B => Opcode::PrefixCB(Box::new(Opcode::RRC(Register::E))),
|
||||||
|
0x0C => Opcode::PrefixCB(Box::new(Opcode::RRC(Register::H))),
|
||||||
|
0x0D => Opcode::PrefixCB(Box::new(Opcode::RRC(Register::L))),
|
||||||
|
0x0E => Opcode::PrefixCB(Box::new(Opcode::RRC(Register::HL))),
|
||||||
|
0x0F => Opcode::PrefixCB(Box::new(Opcode::RRC(Register::A))),
|
||||||
|
|
||||||
|
0x10 => Opcode::PrefixCB(Box::new(Opcode::RL(Register::B))),
|
||||||
|
0x11 => Opcode::PrefixCB(Box::new(Opcode::RL(Register::C))),
|
||||||
|
0x12 => Opcode::PrefixCB(Box::new(Opcode::RL(Register::D))),
|
||||||
|
0x13 => Opcode::PrefixCB(Box::new(Opcode::RL(Register::E))),
|
||||||
|
0x14 => Opcode::PrefixCB(Box::new(Opcode::RL(Register::H))),
|
||||||
|
0x15 => Opcode::PrefixCB(Box::new(Opcode::RL(Register::L))),
|
||||||
|
0x16 => Opcode::PrefixCB(Box::new(Opcode::RL(Register::HL))),
|
||||||
|
0x17 => Opcode::PrefixCB(Box::new(Opcode::RL(Register::A))),
|
||||||
|
|
||||||
|
0x18 => Opcode::PrefixCB(Box::new(Opcode::RR(Register::B))),
|
||||||
|
0x19 => Opcode::PrefixCB(Box::new(Opcode::RR(Register::C))),
|
||||||
|
0x1A => Opcode::PrefixCB(Box::new(Opcode::RR(Register::D))),
|
||||||
|
0x1B => Opcode::PrefixCB(Box::new(Opcode::RR(Register::E))),
|
||||||
|
0x1C => Opcode::PrefixCB(Box::new(Opcode::RR(Register::H))),
|
||||||
|
0x1D => Opcode::PrefixCB(Box::new(Opcode::RR(Register::L))),
|
||||||
|
0x1E => Opcode::PrefixCB(Box::new(Opcode::RR(Register::HL))),
|
||||||
|
0x1F => Opcode::PrefixCB(Box::new(Opcode::RR(Register::A))),
|
||||||
|
|
||||||
|
0x20 => Opcode::PrefixCB(Box::new(Opcode::SLA(Register::B))),
|
||||||
|
0x21 => Opcode::PrefixCB(Box::new(Opcode::SLA(Register::C))),
|
||||||
|
0x22 => Opcode::PrefixCB(Box::new(Opcode::SLA(Register::D))),
|
||||||
|
0x23 => Opcode::PrefixCB(Box::new(Opcode::SLA(Register::E))),
|
||||||
|
0x24 => Opcode::PrefixCB(Box::new(Opcode::SLA(Register::H))),
|
||||||
|
0x25 => Opcode::PrefixCB(Box::new(Opcode::SLA(Register::L))),
|
||||||
|
0x26 => Opcode::PrefixCB(Box::new(Opcode::SLA(Register::HL))),
|
||||||
|
0x27 => Opcode::PrefixCB(Box::new(Opcode::SLA(Register::A))),
|
||||||
|
|
||||||
|
0x28 => Opcode::PrefixCB(Box::new(Opcode::SRA(Register::B))),
|
||||||
|
0x29 => Opcode::PrefixCB(Box::new(Opcode::SRA(Register::C))),
|
||||||
|
0x2A => Opcode::PrefixCB(Box::new(Opcode::SRA(Register::D))),
|
||||||
|
0x2B => Opcode::PrefixCB(Box::new(Opcode::SRA(Register::E))),
|
||||||
|
0x2C => Opcode::PrefixCB(Box::new(Opcode::SRA(Register::H))),
|
||||||
|
0x2D => Opcode::PrefixCB(Box::new(Opcode::SRA(Register::L))),
|
||||||
|
0x2E => Opcode::PrefixCB(Box::new(Opcode::SRA(Register::HL))),
|
||||||
|
0x2F => Opcode::PrefixCB(Box::new(Opcode::SRA(Register::A))),
|
||||||
|
|
||||||
|
0x30 => Opcode::PrefixCB(Box::new(Opcode::SWAP(Register::B))),
|
||||||
|
0x31 => Opcode::PrefixCB(Box::new(Opcode::SWAP(Register::C))),
|
||||||
|
0x32 => Opcode::PrefixCB(Box::new(Opcode::SWAP(Register::D))),
|
||||||
|
0x33 => Opcode::PrefixCB(Box::new(Opcode::SWAP(Register::E))),
|
||||||
|
0x34 => Opcode::PrefixCB(Box::new(Opcode::SWAP(Register::H))),
|
||||||
|
0x35 => Opcode::PrefixCB(Box::new(Opcode::SWAP(Register::L))),
|
||||||
|
0x36 => Opcode::PrefixCB(Box::new(Opcode::SWAP(Register::HL))),
|
||||||
|
0x37 => Opcode::PrefixCB(Box::new(Opcode::SWAP(Register::A))),
|
||||||
|
|
||||||
|
0x38 => Opcode::PrefixCB(Box::new(Opcode::SRL(Register::B))),
|
||||||
|
0x39 => Opcode::PrefixCB(Box::new(Opcode::SRL(Register::C))),
|
||||||
|
0x3A => Opcode::PrefixCB(Box::new(Opcode::SRL(Register::D))),
|
||||||
|
0x3B => Opcode::PrefixCB(Box::new(Opcode::SRL(Register::E))),
|
||||||
|
0x3C => Opcode::PrefixCB(Box::new(Opcode::SRL(Register::H))),
|
||||||
|
0x3D => Opcode::PrefixCB(Box::new(Opcode::SRL(Register::L))),
|
||||||
|
0x3E => Opcode::PrefixCB(Box::new(Opcode::SRL(Register::HL))),
|
||||||
|
0x3F => Opcode::PrefixCB(Box::new(Opcode::SRL(Register::A))),
|
||||||
|
|
||||||
|
0x40 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I0, Register::B))),
|
||||||
|
0x41 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I0, Register::C))),
|
||||||
|
0x42 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I0, Register::D))),
|
||||||
|
0x43 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I0, Register::E))),
|
||||||
|
0x44 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I0, Register::H))),
|
||||||
|
0x45 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I0, Register::L))),
|
||||||
|
0x46 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I0, Register::HL))),
|
||||||
|
0x47 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I0, Register::A))),
|
||||||
|
|
||||||
|
0x48 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I1, Register::B))),
|
||||||
|
0x49 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I1, Register::C))),
|
||||||
|
0x4A => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I1, Register::D))),
|
||||||
|
0x4B => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I1, Register::E))),
|
||||||
|
0x4C => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I1, Register::H))),
|
||||||
|
0x4D => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I1, Register::L))),
|
||||||
|
0x4E => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I1, Register::HL))),
|
||||||
|
0x4F => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I1, Register::A))),
|
||||||
|
|
||||||
|
0x50 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I2, Register::B))),
|
||||||
|
0x51 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I2, Register::C))),
|
||||||
|
0x52 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I2, Register::D))),
|
||||||
|
0x53 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I2, Register::E))),
|
||||||
|
0x54 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I2, Register::H))),
|
||||||
|
0x55 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I2, Register::L))),
|
||||||
|
0x56 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I2, Register::HL))),
|
||||||
|
0x57 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I2, Register::A))),
|
||||||
|
|
||||||
|
0x58 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I3, Register::B))),
|
||||||
|
0x59 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I3, Register::C))),
|
||||||
|
0x5A => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I3, Register::D))),
|
||||||
|
0x5B => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I3, Register::E))),
|
||||||
|
0x5C => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I3, Register::H))),
|
||||||
|
0x5D => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I3, Register::L))),
|
||||||
|
0x5E => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I3, Register::HL))),
|
||||||
|
0x5F => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I3, Register::A))),
|
||||||
|
|
||||||
|
0x60 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I4, Register::B))),
|
||||||
|
0x61 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I4, Register::C))),
|
||||||
|
0x62 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I4, Register::D))),
|
||||||
|
0x63 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I4, Register::E))),
|
||||||
|
0x64 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I4, Register::H))),
|
||||||
|
0x65 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I4, Register::L))),
|
||||||
|
0x66 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I4, Register::HL))),
|
||||||
|
0x67 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I4, Register::A))),
|
||||||
|
|
||||||
|
0x68 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I5, Register::B))),
|
||||||
|
0x69 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I5, Register::C))),
|
||||||
|
0x6A => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I5, Register::D))),
|
||||||
|
0x6B => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I5, Register::E))),
|
||||||
|
0x6C => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I5, Register::H))),
|
||||||
|
0x6D => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I5, Register::L))),
|
||||||
|
0x6E => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I5, Register::HL))),
|
||||||
|
0x6F => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I5, Register::A))),
|
||||||
|
|
||||||
|
0x70 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I6, Register::B))),
|
||||||
|
0x71 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I6, Register::C))),
|
||||||
|
0x72 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I6, Register::D))),
|
||||||
|
0x73 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I6, Register::E))),
|
||||||
|
0x74 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I6, Register::H))),
|
||||||
|
0x75 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I6, Register::L))),
|
||||||
|
0x76 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I6, Register::HL))),
|
||||||
|
0x77 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I6, Register::A))),
|
||||||
|
|
||||||
|
0x78 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I7, Register::B))),
|
||||||
|
0x79 => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I7, Register::C))),
|
||||||
|
0x7A => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I7, Register::D))),
|
||||||
|
0x7B => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I7, Register::E))),
|
||||||
|
0x7C => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I7, Register::H))),
|
||||||
|
0x7D => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I7, Register::L))),
|
||||||
|
0x7E => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I7, Register::HL))),
|
||||||
|
0x7F => Opcode::PrefixCB(Box::new(Opcode::BIT(BitIndex::I7, Register::A))),
|
||||||
|
|
||||||
|
0x80 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I0, Register::B))),
|
||||||
|
0x81 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I0, Register::C))),
|
||||||
|
0x82 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I0, Register::D))),
|
||||||
|
0x83 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I0, Register::E))),
|
||||||
|
0x84 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I0, Register::H))),
|
||||||
|
0x85 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I0, Register::L))),
|
||||||
|
0x86 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I0, Register::HL))),
|
||||||
|
0x87 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I0, Register::A))),
|
||||||
|
|
||||||
|
0x88 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I1, Register::B))),
|
||||||
|
0x89 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I1, Register::C))),
|
||||||
|
0x8A => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I1, Register::D))),
|
||||||
|
0x8B => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I1, Register::E))),
|
||||||
|
0x8C => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I1, Register::H))),
|
||||||
|
0x8D => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I1, Register::L))),
|
||||||
|
0x8E => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I1, Register::HL))),
|
||||||
|
0x8F => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I1, Register::A))),
|
||||||
|
|
||||||
|
0x90 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I2, Register::B))),
|
||||||
|
0x91 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I2, Register::C))),
|
||||||
|
0x92 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I2, Register::D))),
|
||||||
|
0x93 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I2, Register::E))),
|
||||||
|
0x94 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I2, Register::H))),
|
||||||
|
0x95 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I2, Register::L))),
|
||||||
|
0x96 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I2, Register::HL))),
|
||||||
|
0x97 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I2, Register::A))),
|
||||||
|
|
||||||
|
0x98 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I3, Register::B))),
|
||||||
|
0x99 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I3, Register::C))),
|
||||||
|
0x9A => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I3, Register::D))),
|
||||||
|
0x9B => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I3, Register::E))),
|
||||||
|
0x9C => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I3, Register::H))),
|
||||||
|
0x9D => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I3, Register::L))),
|
||||||
|
0x9E => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I3, Register::HL))),
|
||||||
|
0x9F => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I3, Register::A))),
|
||||||
|
|
||||||
|
0xA0 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I4, Register::B))),
|
||||||
|
0xA1 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I4, Register::C))),
|
||||||
|
0xA2 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I4, Register::D))),
|
||||||
|
0xA3 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I4, Register::E))),
|
||||||
|
0xA4 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I4, Register::H))),
|
||||||
|
0xA5 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I4, Register::L))),
|
||||||
|
0xA6 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I4, Register::HL))),
|
||||||
|
0xA7 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I4, Register::A))),
|
||||||
|
|
||||||
|
0xA8 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I5, Register::B))),
|
||||||
|
0xA9 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I5, Register::C))),
|
||||||
|
0xAA => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I5, Register::D))),
|
||||||
|
0xAB => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I5, Register::E))),
|
||||||
|
0xAC => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I5, Register::H))),
|
||||||
|
0xAD => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I5, Register::L))),
|
||||||
|
0xAE => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I5, Register::HL))),
|
||||||
|
0xAF => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I5, Register::A))),
|
||||||
|
|
||||||
|
0xB0 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I6, Register::B))),
|
||||||
|
0xB1 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I6, Register::C))),
|
||||||
|
0xB2 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I6, Register::D))),
|
||||||
|
0xB3 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I6, Register::E))),
|
||||||
|
0xB4 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I6, Register::H))),
|
||||||
|
0xB5 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I6, Register::L))),
|
||||||
|
0xB6 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I6, Register::HL))),
|
||||||
|
0xB7 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I6, Register::A))),
|
||||||
|
|
||||||
|
0xB8 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I7, Register::B))),
|
||||||
|
0xB9 => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I7, Register::C))),
|
||||||
|
0xBA => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I7, Register::D))),
|
||||||
|
0xBB => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I7, Register::E))),
|
||||||
|
0xBC => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I7, Register::H))),
|
||||||
|
0xBD => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I7, Register::L))),
|
||||||
|
0xBE => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I7, Register::HL))),
|
||||||
|
0xBF => Opcode::PrefixCB(Box::new(Opcode::RES(BitIndex::I7, Register::A))),
|
||||||
|
|
||||||
|
0xC0 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I0, Register::B))),
|
||||||
|
0xC1 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I0, Register::C))),
|
||||||
|
0xC2 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I0, Register::D))),
|
||||||
|
0xC3 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I0, Register::E))),
|
||||||
|
0xC4 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I0, Register::H))),
|
||||||
|
0xC5 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I0, Register::L))),
|
||||||
|
0xC6 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I0, Register::HL))),
|
||||||
|
0xC7 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I0, Register::A))),
|
||||||
|
|
||||||
|
0xC8 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I1, Register::B))),
|
||||||
|
0xC9 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I1, Register::C))),
|
||||||
|
0xCA => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I1, Register::D))),
|
||||||
|
0xCB => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I1, Register::E))),
|
||||||
|
0xCC => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I1, Register::H))),
|
||||||
|
0xCD => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I1, Register::L))),
|
||||||
|
0xCE => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I1, Register::HL))),
|
||||||
|
0xCF => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I1, Register::A))),
|
||||||
|
|
||||||
|
0xD0 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I2, Register::B))),
|
||||||
|
0xD1 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I2, Register::C))),
|
||||||
|
0xD2 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I2, Register::D))),
|
||||||
|
0xD3 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I2, Register::E))),
|
||||||
|
0xD4 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I2, Register::H))),
|
||||||
|
0xD5 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I2, Register::L))),
|
||||||
|
0xD6 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I2, Register::HL))),
|
||||||
|
0xD7 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I2, Register::A))),
|
||||||
|
|
||||||
|
0xD8 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I3, Register::B))),
|
||||||
|
0xD9 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I3, Register::C))),
|
||||||
|
0xDA => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I3, Register::D))),
|
||||||
|
0xDB => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I3, Register::E))),
|
||||||
|
0xDC => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I3, Register::H))),
|
||||||
|
0xDD => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I3, Register::L))),
|
||||||
|
0xDE => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I3, Register::HL))),
|
||||||
|
0xDF => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I3, Register::A))),
|
||||||
|
|
||||||
|
0xE0 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I4, Register::B))),
|
||||||
|
0xE1 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I4, Register::C))),
|
||||||
|
0xE2 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I4, Register::D))),
|
||||||
|
0xE3 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I4, Register::E))),
|
||||||
|
0xE4 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I4, Register::H))),
|
||||||
|
0xE5 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I4, Register::L))),
|
||||||
|
0xE6 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I4, Register::HL))),
|
||||||
|
0xE7 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I4, Register::A))),
|
||||||
|
|
||||||
|
0xE8 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I5, Register::B))),
|
||||||
|
0xE9 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I5, Register::C))),
|
||||||
|
0xEA => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I5, Register::D))),
|
||||||
|
0xEB => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I5, Register::E))),
|
||||||
|
0xEC => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I5, Register::H))),
|
||||||
|
0xED => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I5, Register::L))),
|
||||||
|
0xEE => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I5, Register::HL))),
|
||||||
|
0xEF => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I5, Register::A))),
|
||||||
|
|
||||||
|
0xF0 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I6, Register::B))),
|
||||||
|
0xF1 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I6, Register::C))),
|
||||||
|
0xF2 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I6, Register::D))),
|
||||||
|
0xF3 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I6, Register::E))),
|
||||||
|
0xF4 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I6, Register::H))),
|
||||||
|
0xF5 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I6, Register::L))),
|
||||||
|
0xF6 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I6, Register::HL))),
|
||||||
|
0xF7 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I6, Register::A))),
|
||||||
|
|
||||||
|
0xF8 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I7, Register::B))),
|
||||||
|
0xF9 => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I7, Register::C))),
|
||||||
|
0xFA => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I7, Register::D))),
|
||||||
|
0xFB => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I7, Register::E))),
|
||||||
|
0xFC => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I7, Register::H))),
|
||||||
|
0xFD => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I7, Register::L))),
|
||||||
|
0xFE => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I7, Register::HL))),
|
||||||
|
0xFF => Opcode::PrefixCB(Box::new(Opcode::SET(BitIndex::I7, Register::A))),
|
||||||
|
|
||||||
|
_ => Opcode::IllegalInstruction,
|
||||||
|
},
|
||||||
//0xCB => Opcode::SWAP,
|
//0xCB => Opcode::SWAP,
|
||||||
//0xCB => Opcode::RLC,
|
//0xCB => Opcode::RLC,
|
||||||
//0xCB => Opcode::RL,
|
//0xCB => Opcode::RL,
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#[derive(Debug)]
|
||||||
pub enum BitIndex {
|
pub enum BitIndex {
|
||||||
I0,
|
I0,
|
||||||
I1,
|
I1,
|
||||||
|
Loading…
Reference in New Issue
Block a user