From f8012322fc758990f47a1ac469cd713d636861c3 Mon Sep 17 00:00:00 2001 From: Paul Duncan Date: Mon, 25 Jun 2018 16:59:47 -0400 Subject: simplify INC/DEC --- ops.yaml | 75 ++++++++++++++++++++++++++++------------------------------------ 1 file changed, 33 insertions(+), 42 deletions(-) (limited to 'ops.yaml') diff --git a/ops.yaml b/ops.yaml index 416cff3..eac671c 100644 --- a/ops.yaml +++ b/ops.yaml @@ -9201,55 +9201,46 @@ templates: } } - static void - inc_rb( + static uint8_t + inc( gb_t * const ctx, - const rb_t reg + const uint8_t o ) { - // get old and new value - const uint8_t o = cpu_rb(ctx, reg), - n = o + 1; - - // set new value - cpu_wb(ctx, reg, n); + const uint8_t n = o + 1; // set flags cpu_wf(ctx, F_Z | F_N | F_H, ( (n ? F_Z : 0) | (((o & 0x0F) == 0x0F) ? F_H : 0) )); + + // return new value + return n; + } + + static void + inc_rb( + gb_t * const ctx, + const rb_t reg + ) { + cpu_wb(ctx, reg, inc(ctx, cpu_rb(ctx, reg))); } static void inc_hl_ptr( gb_t * const ctx ) { - // write flags const uint16_t addr = cpu_rw(ctx, RW_HL); - const uint8_t o = mmu_rb(ctx, addr), - n = o + 1; - - // write value - mmu_wb(ctx, addr, n); - - // write flags - cpu_wf(ctx, F_Z | F_N | F_H, ( - (n ? 0 : F_Z) | - (((o & 0x0F) == 0x0F) ? F_H : 0) - )); + mmu_wb(ctx, addr, inc(ctx, mmu_rb(ctx, addr))); } - static void - dec_rb( + static uint8_t + dec( gb_t * const ctx, - const rb_t reg + const uint8_t o ) { - // get old and new value - const uint8_t o = cpu_rb(ctx, reg), - n = o - 1; - - // set new value - cpu_wb(ctx, reg, n); + // cal new value + const uint8_t n = o - 1; // set flags cpu_wf(ctx, F_Z | F_N | F_H, ( @@ -9257,6 +9248,17 @@ templates: F_N | (((o ^ n) & 0x10) ? F_H : 0) )); + + // return new value + return n; + } + + static void + dec_rb( + gb_t * const ctx, + const rb_t reg + ) { + cpu_wb(ctx, reg, dec(ctx, cpu_rb(ctx, reg))); } static void @@ -9265,18 +9267,7 @@ templates: ) { // write flags const uint16_t addr = cpu_rw(ctx, RW_HL); - const uint8_t o = mmu_rb(ctx, addr), - n = o - 1; - - // write value - mmu_wb(ctx, addr, n); - - // write flags - cpu_wf(ctx, F_Z | F_N | F_H, ( - (n ? 0 : F_Z) | - F_N | - (((o & 0x0F) == 0x00) ? F_H : 0) - )); + mmu_wb(ctx, addr, dec(ctx, mmu_rb(ctx, addr))); } static void -- cgit v1.2.3