]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Fix extended CD32 ROM patch, after init change, it was called before roms were loaded.
authorToni Wilen <twilen@winuae.net>
Sun, 19 Jan 2020 11:41:04 +0000 (13:41 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 19 Jan 2020 11:41:04 +0000 (13:41 +0200)
akiko.cpp

index cbcd207ca7f07a239e8c1e8274a5f3c56c938527..b0d225a47273a31500de0625019732cbdf7d76bd 100644 (file)
--- a/akiko.cpp
+++ b/akiko.cpp
@@ -2002,26 +2002,29 @@ addrbank akiko_bank = {
        ABFLAG_IO | ABFLAG_SAFE, S_READ, S_WRITE
 };
 
-static const uae_u8 patchdata[]={0x0c,0x82,0x00,0x00,0x03,0xe8,0x64,0x00,0x00,0x46};
-static void patchrom (void)
+static const uae_u8 patchdata[] = { 0x0c, 0x82, 0x00, 0x00, 0x03, 0xe8, 0x64, 0x00, 0x00, 0x46 };
+static const uae_u8 patchdata2[] = { 0x0c, 0x82, 0x00, 0x00, 0x03, 0xe8, 0x4e, 0x71, 0x4e, 0x71 };
+static void patchrom(void)
 {
     int i;
        if (currprefs.cpu_model > 68020 || currprefs.cachesize || currprefs.m68k_speed != 0) {
                uae_u8 *p = extendedkickmem_bank.baseaddr;
                if (p) {
-                       for (i = 0; i < 524288 - sizeof (patchdata); i++) {
-                               if (!memcmp (p + i, patchdata, sizeof(patchdata))) {
-                                       protect_roms (false);
+                       for (i = 0; i < 524288 - sizeof(patchdata); i++) {
+                               if (!memcmp(p + i, patchdata2, sizeof(patchdata2)))
+                                       return;                         
+                               if (!memcmp(p + i, patchdata, sizeof(patchdata))) {
+                                       protect_roms(false);
                                        p[i + 6] = 0x4e;
                                        p[i + 7] = 0x71;
                                        p[i + 8] = 0x4e;
                                        p[i + 9] = 0x71;
-                                       protect_roms (true);
-                                       write_log (_T("CD32: extended rom delay loop patched at 0x%08x\n"), i + 6 + 0xe00000);
+                                       protect_roms(true);
+                                       write_log(_T("CD32: extended rom delay loop patched at 0x%08x\n"), i + 6 + 0xe00000);
                                        return;
                                }
                        }
-                       write_log (_T("CD32: couldn't patch extended rom\n"));
+                       write_log(_T("CD32: couldn't patch extended rom\n"));
                }
        }
 }
@@ -2064,6 +2067,7 @@ static int akiko_thread_do(int start)
 
 static void akiko_reset(int hardreset)
 {
+       patchrom();
        cdaudiostop_do ();
        nvram_read ();
        eeprom_reset(cd32_eeprom);
@@ -2118,7 +2122,6 @@ int akiko_init (void)
                cdrom_playing = cdrom_paused = 0;
                cdrom_data_offset = -1;
        }
-       patchrom ();
        akiko_thread_do(1);
        gui_flicker_led (LED_HD, 0, -1);
        akiko_inited = true;