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),
|
||||
INC(bool, Register),
|
||||
DEC(bool, Register),
|
||||
SWAP,
|
||||
DAA,
|
||||
CPL,
|
||||
CCF,
|
||||
@ -249,23 +248,24 @@ pub enum Opcode {
|
||||
RLA,
|
||||
RRCA,
|
||||
RRA,
|
||||
RLC,
|
||||
RL,
|
||||
RRC,
|
||||
RR,
|
||||
SLA,
|
||||
SRA,
|
||||
SRL,
|
||||
BIT,
|
||||
SET,
|
||||
RES,
|
||||
SWAP(Register),
|
||||
RLC(Register),
|
||||
RL(Register),
|
||||
RRC(Register),
|
||||
RR(Register),
|
||||
SLA(Register),
|
||||
SRA(Register),
|
||||
SRL(Register),
|
||||
BIT(BitIndex, Register),
|
||||
SET(BitIndex, Register),
|
||||
RES(BitIndex, Register),
|
||||
JP(OpcodeParameter),
|
||||
JR(OpcodeParameter),
|
||||
CALL(OpcodeParameter),
|
||||
RST(u8),
|
||||
RET(OpcodeParameter),
|
||||
RETI,
|
||||
PrefixCB,
|
||||
PrefixCB(Box<Opcode>),
|
||||
IllegalInstruction,
|
||||
}
|
||||
|
||||
@ -962,7 +962,297 @@ impl CPU {
|
||||
0x07 => Opcode::RLCA,
|
||||
0x0F => Opcode::RRCA,
|
||||
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::RLC,
|
||||
//0xCB => Opcode::RL,
|
||||
|
@ -1,3 +1,4 @@
|
||||
#[derive(Debug)]
|
||||
pub enum BitIndex {
|
||||
I0,
|
||||
I1,
|
||||
|
Loading…
Reference in New Issue
Block a user