From 67f99b6c4aa014431be80f5e54dc25b0f69d7216 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 9 Jul 2023 20:23:29 +0300 Subject: [PATCH] Adjustable OCS Agnus max chip ram size. --- memory.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/memory.cpp b/memory.cpp index a266f4c2..678bd0ac 100644 --- a/memory.cpp +++ b/memory.cpp @@ -2432,10 +2432,21 @@ static void allocate_memory (void) } if (currprefs.cs_agnussize > AGNUSSIZE_AUTO) { - if (currprefs.cs_agnussize <= AGNUSSIZE_512) { - chipmem_full_mask = 0x80000 - 1; - } else if (currprefs.cs_agnussize == AGNUSSIZE_1M && chipmem_full_mask > 0x100000) { - chipmem_full_mask = 0x100000 - 1; + if (currprefs.chipset_mask & CSMASK_ECS_AGNUS) { + // if ECS: allow smaller than select chip RAM size DMA range + if (currprefs.cs_agnussize <= AGNUSSIZE_512) { + chipmem_full_mask = 0x80000 - 1; + } else if (currprefs.cs_agnussize == AGNUSSIZE_1M && chipmem_full_mask > 0x100000) { + chipmem_full_mask = 0x100000 - 1; + } + } else { + // if OCS: allow larger than 512k DMA range + if (currprefs.cs_agnussize == AGNUSSIZE_1M && chipmem_bank.allocated_size >= 0x100000) { + chipmem_full_mask = 0x100000 - 1; + } + if (currprefs.cs_agnussize == AGNUSSIZE_2M && chipmem_bank.allocated_size >= 0x180000) { + chipmem_full_mask = 0x200000 - 1; + } } } -- 2.47.3