From ee183525a9c29d5aa0331600f4dddad3244bbade Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Fri, 26 Oct 2018 20:15:57 +0300 Subject: [PATCH] Manual BPLxDAT writes are now accurate when FMODE>0. --- custom.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/custom.cpp b/custom.cpp index 82fe8ccb..5ae7ccaf 100644 --- a/custom.cpp +++ b/custom.cpp @@ -6161,7 +6161,15 @@ static void BPLxDAT (int hpos, int num, uae_u16 v) } flush_display (fetchmode); fetched[num] = v; - fetched_aga[num] = v; + if ((fmode & 3) == 3) { + fetched_aga[num] = ((uae_u64)last_custom_value2 << 48) | ((uae_u64)v << 32) | (v << 16) | v; + } else if ((fmode & 3) == 2) { + fetched_aga[num] = (last_custom_value2 << 16) | v; + } else if ((fmode & 3) == 1) { + fetched_aga[num] = (v << 16) | v; + } else { + fetched_aga[num] = v; + } if (num == 0 && hpos >= 8) { bpl1dat_written = true; bpl1dat_written_at_least_once = true; -- 2.47.3