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()
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+ }
6268int 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+ }
6496int CPU::LD_B_u8 () { return 0 ; }
6597int CPU::RLCA () { return 0 ; }
6698int CPU::LD_u16_SP () { return 0 ; }
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments