Skip to content

Commit c4dab4b

Browse files
Aviii06r41k0u
authored andcommitted
Write dec B and update flags
1 parent 3042c51 commit c4dab4b

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

src/cpu.cpp

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,41 @@ int CPU::LD_BC_A()
5858
return 8;
5959
}
6060

61-
int CPU::INC_BC() { return 0; }
61+
int CPU::INC_BC()
62+
{
63+
reg_BC.dat += 1;
64+
reg_PC.dat += 1;
65+
printf("INC BC\n");
66+
return 8;
67+
}
6268
int CPU::INC_B() { return 0; }
63-
int CPU::DEC_B() { return 0; }
69+
int CPU::DEC_B()
70+
{
71+
reg_BC.hi -= 1;
72+
if (reg_BC.hi == 0)
73+
{
74+
reg_AF.lo |= FLAG_ZERO_z;
75+
}
76+
else
77+
{
78+
reg_AF.lo &= ~FLAG_ZERO_z;
79+
}
80+
81+
reg_AF.lo |= FLAG_SUBTRACT_n;
82+
83+
if (reg_BC.hi == 0xFF)
84+
{
85+
reg_AF.lo |= FLAG_HALF_CARRY_h;
86+
}
87+
else
88+
{
89+
reg_AF.lo &= ~FLAG_HALF_CARRY_h;
90+
}
91+
92+
reg_PC.dat += 1;
93+
printf("DEC B\n");
94+
return 4;
95+
}
6496
int CPU::LD_B_u8() { return 0; }
6597
int CPU::RLCA() { return 0; }
6698
int CPU::LD_u16_SP() { return 0; }

src/cpu.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ class CPU
4444
// Bit 0-3 are not used
4545
enum Flags
4646
{
47-
FLAG_CARRY_c = 4,
48-
FLAG_HALF_CARRY_h = 5,
49-
FLAG_SUBTRACT_n = 6,
50-
FLAG_ZERO_z = 7
47+
FLAG_CARRY_c = 0x10,
48+
FLAG_HALF_CARRY_h = 0x20,
49+
FLAG_SUBTRACT_n = 0x40,
50+
FLAG_ZERO_z = 0x80
5151
};
5252

5353
// Memory Map

0 commit comments

Comments
 (0)