diff --git a/src/DiskCaddy.cpp b/src/DiskCaddy.cpp index 0a4af94..cd8bbcc 100644 --- a/src/DiskCaddy.cpp +++ b/src/DiskCaddy.cpp @@ -276,11 +276,11 @@ void DiskCaddy::Display() } } - if (screenLCD) - { - RGBA BkColour = RGBA(0, 0, 0, 0xFF); - screenLCD->Clear(BkColour); - } + //if (screenLCD) + //{ + // RGBA BkColour = RGBA(0, 0, 0, 0xFF); + // screenLCD->Clear(BkColour); + //} ShowSelectedImage(0); } diff --git a/src/main.cpp b/src/main.cpp index 7585397..018d963 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -703,7 +703,9 @@ EXIT_TYPE Emulate1541(FileBrowser* fileBrowser) if (numberOfImagesMax > 10) numberOfImagesMax = 10; + core0RefreshingScreen.Acquire(); diskCaddy.Display(); + core0RefreshingScreen.Release(); inputMappings->directDiskSwapRequest = 0; // Force an update on all the buttons now before we start emulation mode. @@ -728,7 +730,8 @@ EXIT_TYPE Emulate1541(FileBrowser* fileBrowser) u32 hash = pi1541.drive.GetDiskImage()->GetHash(); // 0x42c02586 = maniac_mansion_s1[lucasfilm_1989](ntsc).g64 // 0x18651422 = aliens[electric_dreams_1987].g64 - if (hash == 0x42c02586 || hash == 0x18651422) + // 0x2a7f4b77 = zak_mckracken_boot[activision_1988](manual)(!).g64 + if (hash == 0x42c02586 || hash == 0x18651422 || hash == 0x2a7f4b77) { refreshOutsAfterCPUStep = false; } @@ -744,13 +747,10 @@ EXIT_TYPE Emulate1541(FileBrowser* fileBrowser) if (pc == snoopPC) { - if (pc == snoopPC) + if (Snoop(pi1541.m6502.GetA())) { - if (Snoop(pi1541.m6502.GetA())) - { - emulating = IEC_COMMANDS; - exitReason = EXIT_CD; - } + emulating = IEC_COMMANDS; + exitReason = EXIT_CD; } } } @@ -910,7 +910,9 @@ EXIT_TYPE Emulate1581(FileBrowser* fileBrowser) if (numberOfImagesMax > 10) numberOfImagesMax = 10; + core0RefreshingScreen.Acquire(); diskCaddy.Display(); + core0RefreshingScreen.Release(); inputMappings->directDiskSwapRequest = 0; // Force an update on all the buttons now before we start emulation mode. @@ -1089,6 +1091,7 @@ void emulator() m_IEC_Commands.SetAutoBootFB128(options.AutoBootFB128()); m_IEC_Commands.Set128BootSectorName(options.Get128BootSectorName()); m_IEC_Commands.SetLowercaseBrowseModeFilenames(options.LowercaseBrowseModeFilenames()); + m_IEC_Commands.SetNewDiskType(options.GetNewDiskType()); emulating = IEC_COMMANDS; @@ -1107,25 +1110,16 @@ void emulator() core0RefreshingScreen.Acquire(); IEC_Bus::WaitMicroSeconds(100); -// workaround for occasional oled curruption - if (screenLCD) - screenLCD->ClearInit(0); - roms.ResetCurrentROMIndex(); fileBrowser->ClearScreen(); fileBrowserSelectedName = 0; fileBrowser->ClearSelections(); - // Go back to the root folder so you can load fb* again? -// if ((resetWhileEmulating && options.GetOnResetChangeToStartingFolder()) || selectedViaIECCommands) -// fileBrowser->DisplayRoot(); // Go back to the root folder and display it. -// else - fileBrowser->RefeshDisplay(); // Just redisplay the current folder. + fileBrowser->RefeshDisplay(); // Just redisplay the current folder. core0RefreshingScreen.Release(); -// resetWhileEmulating = false; selectedViaIECCommands = false; inputMappings->Reset(); @@ -1251,11 +1245,6 @@ void emulator() if (diskCaddy.Empty()) IEC_Bus::WaitMicroSeconds(2 * 1000000); - // workaround for occasional oled curruption - // if (screenLCD) - // screenLCD->ClearInit(0); - - IEC_Bus::WaitUntilReset(); //DEBUG_LOG("6502 resetting\r\n"); emulating = IEC_COMMANDS; @@ -1682,9 +1671,15 @@ void DisplayMessage(int x, int y, bool LCD, const char* message, u32 textColour, else if (screenLCD) { RGBA BkColour = RGBA(0, 0, 0, 0xFF); + + core0RefreshingScreen.Acquire(); + screenLCD->Clear(BkColour); screenLCD->PrintText(false, x, y, (char*)message, textColour, backgroundColour); screenLCD->SwapBuffers(); + + core0RefreshingScreen.Release(); + } } @@ -1729,8 +1724,8 @@ extern "C" if (options.ShowOptions()) DisplayOptions(y_pos+=32); - if (!options.QuickBoot()) - IEC_Bus::WaitMicroSeconds(3 * 1000000); + //if (!options.QuickBoot()) + // IEC_Bus::WaitMicroSeconds(3 * 1000000); InterruptSystemInitialize(); TimerSystemInitialize(); diff --git a/src/options.cpp b/src/options.cpp index ccb2f51..27f4fce 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -173,6 +173,7 @@ Options::Options(void) ROMNameSlot7[0] = 0; ROMNameSlot8[0] = 0; ROMName1581[0] = 0; + newDiskType[0] = 0; } #define ELSE_CHECK_DECIMAL_OPTION(Name) \ @@ -306,6 +307,10 @@ void Options::Process(char* buffer) { strncpy(ROMNameSlot8, pValue, 255); } + else if ((strcasecmp(pOption, "NewDiskType") == 0)) + { + strncpy(newDiskType, pValue, 31); + } } if (!SplitIECLines()) @@ -359,3 +364,11 @@ const char* Options::GetRomName1581() const return ROMName1581; } +DiskImage::DiskType Options::GetNewDiskType() const +{ + if (strcasecmp(newDiskType, "g64") == 0) + return DiskImage::G64; + + return DiskImage::D64; +} + diff --git a/src/options.h b/src/options.h index 5001dc2..0aa41fb 100644 --- a/src/options.h +++ b/src/options.h @@ -20,6 +20,7 @@ #define OPTIONS_H #include "types.h" +#include "DiskImage.h" class TextParser { @@ -74,7 +75,8 @@ public: inline const char* Get128BootSectorName() const { return C128BootSectorName; } inline unsigned int LowercaseBrowseModeFilenames() const { return lowercaseBrowseModeFilenames; } - + DiskImage::DiskType GetNewDiskType() const; + inline unsigned int ScreenWidth() const { return screenWidth; } inline unsigned int ScreenHeight() const { return screenHeight; } @@ -171,5 +173,7 @@ private: char ROMNameSlot7[256]; char ROMNameSlot8[256]; char ROMName1581[256]; + + char newDiskType[32]; }; #endif