Example #1
0
 //INC B 1  4 Z 0 H -
 public void INC_r(R8Bit A, R8BitFlag flag)
 {
     flag.HalfCarryFlag = (A.Value & 0x0F) == 0x0F;
     A++;
     flag.ZeroFlag = A.Value == 0;
     flag.SubFlag  = false;
 }
Example #2
0
        //ADC A, B 1  4 Z 0 H C
        public void AddWithCarry(R8Bit A, R8Bit B, R8BitFlag flag)
        {
            byte carry = (byte)(flag.CarryFlag ? 1 : 0);

            flag.HalfCarryFlag = ((A.Value & 0x0F) + (B.Value & 0x0F) + carry) > 0x0F;
            var result = A.Value + B.Value + carry;

            flag.CarryFlag = result > 255;
            A.Value        = (byte)result;
            flag.SubFlag   = false;
            flag.ZeroFlag  = A.Value == 0;
        }
Example #3
0
        //ADC A,d8 2  8 Z 0 H C
        public void AddImmediateWithCarry(R8Bit A, R16Bit PC, MappedMemory memory, R8BitFlag flag)
        {
            byte immediate = memory.ReadByte(PC);
            byte carry     = (byte)(flag.CarryFlag ? 1 : 0);

            flag.HalfCarryFlag = ((A.Value & 0x0F) + (B.Value & 0x0F) + carry) > 0x0F;
            var result = A.Value + B.Value + carry;

            flag.CarryFlag = result > 255;
            A.Value        = (byte)result;
            flag.SubFlag   = false;
            flag.ZeroFlag  = A.Value == 0;
        }
Example #4
0
 public CPU(MappedMemory memory)
 {
     _memory = memory;
     //Create Registers
     A  = new R8Bit("a");
     F  = new R8BitFlag("f");
     AF = new R16Bit(A, F);
     B  = new R8Bit("b");
     C  = new R8Bit("c");
     BC = new R16Bit(B, C);
     D  = new R8Bit("d");
     E  = new R8Bit("e");
     DE = new R16Bit(D, E);
     H  = new R8Bit("h");
     L  = new R8Bit("l");
     HL = new R16Bit(H, L);
     PC = new R16Bit("pc");
     SP = new R16Bit("sp");
 }
Example #5
0
 public R16Bit(string name)
 {
     this.Name = name;
     h         = new R8Bit(name.ToCharArray()[0].ToString());
     l         = new R8Bit(name.ToCharArray()[1].ToString());
 }
Example #6
0
 public R16Bit(R8Bit r1, R8Bit r2)
 {
     Name = r1.Name + r2.Name;
     h    = r1;
     l    = r2;
 }
Example #7
0
 public void SBC_r_RR(R8Bit A, R16Bit HL, R8BitFlag flag)
 {
     throw new NotImplementedException();
 }
Example #8
0
 public void SBC_r_r(R8Bit A, R8Bit B, R8BitFlag flag)
 {
     throw new NotImplementedException();
 }
Example #9
0
 public void LDH_r_a8(R8Bit A, R16Bit a8, R8BitFlag flag)
 {
     throw new NotImplementedException();
 }
Example #10
0
 public void LD_RRrec_r(R16Bit HL, R8Bit A, R8BitFlag flag)
 {
     throw new NotImplementedException();
 }
Example #11
0
 //LD (BC),A 1  8 - - - -
 public void LD_RR_r(R16Bit BC, R8Bit A)
 {
     _memory.WriteByte(BC, A);
 }
Example #12
0
 public void LD_r_a16(R8Bit A, R16Bit a16, R8BitFlag flag)
 {
     throw new NotImplementedException();
 }
Example #13
0
 public void ADD_r_d8(R8Bit A, R16Bit d8, R8BitFlag flag)
 {
     throw new NotImplementedException();
 }
Example #14
0
 //ADC A,(HL) 1  8 Z 0 H C
 public void AddWithCarryHL(R8Bit A, R16Bit HL, MappedMemory memory, R8BitFlag flag)
 {
     AddImmediateWithCarry(A, HL, memory, flag);
 }