From c9340928075f9558bbb4817f6c89298ed15ad77f Mon Sep 17 00:00:00 2001 From: Paul Duncan Date: Mon, 25 Jun 2018 16:49:46 -0400 Subject: add on_rst(), minor CALL a16 speedup --- gb.h | 1 + ops.yaml | 6 +++++- test.c | 10 ++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gb.h b/gb.h index a824c4b..2aff333 100644 --- a/gb.h +++ b/gb.h @@ -39,6 +39,7 @@ typedef struct { void (*on_timer)(const gb_t *); void (*on_gpu_step)(const gb_t *); void (*on_gpu_set_mode)(const gb_t *, const uint8_t); + void (*on_rst)(const gb_t *, const uint16_t); void *cb_data; } gb_config_t; diff --git a/ops.yaml b/ops.yaml index b1d2ad3..416cff3 100644 --- a/ops.yaml +++ b/ops.yaml @@ -3306,7 +3306,7 @@ ops: h: c: code: | - cpu_ww(ctx, RW_PC, cpu_rw(ctx, RW_PC) + 3); + cpu_ww(ctx, RW_PC, old_pc + 3); call_a16(ctx, old_pc + 1); - id: ADC A, d8 hex: 0xCE @@ -10060,6 +10060,10 @@ templates: // push pc push_rw(ctx, RW_PC); + if (ctx->config && ctx->config->on_rst) { + ctx->config->on_rst(ctx, addr); + } + // jump cpu_ww(ctx, RW_PC, addr); } diff --git a/test.c b/test.c index 7a2ea70..824458d 100644 --- a/test.c +++ b/test.c @@ -126,6 +126,15 @@ on_set_cpu_state( printf("cpu state: PC = %04x, state = %d\n", ctx->cpu.rs[5], state); } +static void +on_rst( + const gb_t * const ctx, + const uint16_t addr +) { + UNUSED(ctx); + printf("rst: addr = %04x\n", addr); +} + static const gb_config_t EXECUTE_CONFIG = { .on_set_rom_bank = on_set_rom_bank, @@ -136,6 +145,7 @@ EXECUTE_CONFIG = { // .on_gpu_step = on_gpu_step, .on_gpu_set_mode = on_gpu_set_mode, .on_set_cpu_state = on_set_cpu_state, + .on_rst = on_rst, }; static void -- cgit v1.2.3