From d8e89f5114cb58b754baee4e1941bef21d42b861 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Wed, 8 Apr 2020 19:17:45 +0300 Subject: [PATCH] Fix banked 16-bit assignments; fixes #245 --- Core/debugger.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Core/debugger.c b/Core/debugger.c index 8e7151b..65d9885 100644 --- a/Core/debugger.c +++ b/Core/debugger.c @@ -220,7 +220,8 @@ static value_t read_lvalue(GB_gameboy_t *gb, lvalue_t lvalue) banking_state_t state; save_banking_state(gb, &state); switch_banking_state(gb, lvalue.memory_address.bank); - value_t r = VALUE_16(GB_read_memory(gb, lvalue.memory_address.value)); + value_t r = VALUE_16(GB_read_memory(gb, lvalue.memory_address.value) | + (GB_read_memory(gb, lvalue.memory_address.value + 1) * 0x100)); restore_banking_state(gb, &state); return r; } @@ -261,6 +262,7 @@ static void write_lvalue(GB_gameboy_t *gb, lvalue_t lvalue, uint16_t value) save_banking_state(gb, &state); switch_banking_state(gb, lvalue.memory_address.bank); GB_write_memory(gb, lvalue.memory_address.value, value); + GB_write_memory(gb, lvalue.memory_address.value + 1, value >> 8); restore_banking_state(gb, &state); return; }