From 89faf8e36aea517204e3de163653932d7cd4973c Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 26 Nov 2023 16:30:34 +0200 Subject: [PATCH] Reallocate kickmem during memory reset --- memory.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/memory.cpp b/memory.cpp index 89178c9d..9833d822 100644 --- a/memory.cpp +++ b/memory.cpp @@ -2919,6 +2919,17 @@ void memory_restore(void) map_banks_set(&kickmem_bank, 0xF8, 8, 0); } +static void kickmem_init(void) +{ + if (!kickmem_bank.baseaddr) { + kickmem_bank.reserved_size = ROM_SIZE_512; + mapped_malloc(&kickmem_bank); + if (kickmem_bank.baseaddr) { + memset(kickmem_bank.baseaddr, 0, ROM_SIZE_512); + } + } +} + void memory_reset (void) { int bnk, bnk_end; @@ -2936,8 +2947,10 @@ void memory_reset (void) need_hardreset = true; last_address_space_24 = changed_prefs.address_space_24; - if (mem_hardreset > 2) - memory_init (); + if (mem_hardreset > 2) { + memory_init(); + } + kickmem_init(); memset(ce_cachable, CACHE_ENABLE_INS, sizeof ce_cachable); @@ -3183,7 +3196,6 @@ void memory_reset (void) write_log (_T("memory init end\n")); } - void memory_init (void) { init_mem_banks (); @@ -3208,11 +3220,7 @@ void memory_init (void) custmem1_bank.baseaddr = NULL; custmem2_bank.baseaddr = NULL; - kickmem_bank.reserved_size = ROM_SIZE_512; - mapped_malloc (&kickmem_bank); - if (kickmem_bank.baseaddr) { - memset(kickmem_bank.baseaddr, 0, ROM_SIZE_512); - } + kickmem_init(); _tcscpy (currprefs.romfile, _T("")); currprefs.romextfile[0] = 0; cpuboard_reset(1); -- 2.47.3