File tree Expand file tree Collapse file tree 2 files changed +38
-6
lines changed Expand file tree Collapse file tree 2 files changed +38
-6
lines changed Original file line number Diff line number Diff line change @@ -58,9 +58,41 @@ int CPU::LD_BC_A()
58
58
return 8 ;
59
59
}
60
60
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
+ }
62
68
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
+ }
64
96
int CPU::LD_B_u8 () { return 0 ; }
65
97
int CPU::RLCA () { return 0 ; }
66
98
int CPU::LD_u16_SP () { return 0 ; }
Original file line number Diff line number Diff line change @@ -44,10 +44,10 @@ class CPU
44
44
// Bit 0-3 are not used
45
45
enum Flags
46
46
{
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
51
51
};
52
52
53
53
// Memory Map
You can’t perform that action at this time.
0 commit comments