]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Map 128k UAE boot ROM after state restore.
authorToni Wilen <twilen@winuae.net>
Wed, 17 Apr 2019 16:04:47 +0000 (19:04 +0300)
committerToni Wilen <twilen@winuae.net>
Wed, 17 Apr 2019 16:04:47 +0000 (19:04 +0300)
expansion.cpp
memory.cpp

index b4e51e832d1e69f38f647c94edd917e292c03a1f..beeb1abeaa4d63391d2ecce4a996392c46259f68 100644 (file)
@@ -3931,7 +3931,7 @@ uae_u8 *restore_expansion (uae_u8 *src)
        gfxmem_banks[0]->start = restore_u32 ();
        rtarea_base = restore_u32 ();
        fastmem_bank[1].start = restore_u32 ();
-       if (rtarea_base != 0 && rtarea_base != RTAREA_DEFAULT && rtarea_base != RTAREA_BACKUP && rtarea_base != RTAREA_BACKUP_2)
+       if (rtarea_base != 0 && rtarea_base != RTAREA_DEFAULT && rtarea_base != RTAREA_BACKUP && rtarea_base != RTAREA_BACKUP_2 && (rtarea_base < 0xe90000 || rtarea_base >= 0xf00000))
                rtarea_base = 0;
        return src;
 }
index f87382e0d7387b74a546cf9fd172a99334adeae1..70723889f8f3570ca417d97cd6d587bc7c1ddb32 100644 (file)
@@ -2143,6 +2143,12 @@ static void init_mem_banks (void)
 #endif
 }
 
+static void map_banks_set(addrbank *bank, int start, int size, int realsize)
+{
+       bank->startmask = start << 16;
+       map_banks(bank, start, size, realsize);
+}
+
 static void allocate_memory (void)
 {
        bogomem_aliasing = 0;
@@ -2341,6 +2347,9 @@ static void allocate_memory (void)
                        protect_roms (false);
                        restore_ram (bootrom_filepos, rtarea_bank.baseaddr);
                        protect_roms (true);
+                       if (currprefs.uaeboard >= 2) {
+                               map_banks_set(&rtarea_bank, rtarea_base >> 16, 1, 0);
+                       }
                }
                restore_ram (chip_filepos, chipmem_bank.baseaddr);
                if (bogomem_bank.allocated_size > 0)
@@ -2498,12 +2507,6 @@ void map_overlay (int chip)
                m68k_setpc_normal (m68k_getpc ());
 }
 
-static void map_banks_set(addrbank *bank, int start, int size, int realsize)
-{
-       bank->startmask = start << 16;
-       map_banks(bank, start, size, realsize);
-}
-
 void memory_clear (void)
 {
        mem_hardreset = 0;