--- previous/src/change.c 2018/04/24 19:31:27 1.1.1.5 +++ previous/src/change.c 2018/04/24 19:33:22 1.1.1.6 @@ -19,7 +19,6 @@ const char Change_fileid[] = "Hatari cha #include "dialog.h" #include "ioMem.h" #include "m68000.h" -#include "options.h" #include "reset.h" #include "screen.h" #include "statusbar.h" @@ -45,7 +44,7 @@ const char Change_fileid[] = "Hatari cha */ bool Change_DoNeedReset(CNF_PARAMS *current, CNF_PARAMS *changed) { - int i; + int i, j; /* Did we change ROM file? */ if (current->System.nMachineType == NEXT_CUBE030 && strcmp(current->Rom.szRom030FileName, changed->Rom.szRom030FileName)) { @@ -201,18 +200,24 @@ bool Change_DoNeedReset(CNF_PARAMS *curr } /* Did we change NeXTdimension? */ - if (current->Dimension.bEnabled != changed->Dimension.bEnabled || - current->Dimension.bI860Thread != changed->Dimension.bI860Thread || - current->Dimension.bMainDisplay != changed->Dimension.bMainDisplay || - strcmp(current->Dimension.szRomFileName, changed->Dimension.szRomFileName)) { - printf("dimension reset\n"); - return true; - } - for (i = 0; i < 4; i++) { - if (current->Dimension.nMemoryBankSize[i] != changed->Dimension.nMemoryBankSize[i]) { - printf("dimension memory size reset\n"); + for (i = 0; i < ND_MAX_BOARDS; i++) { + if (current->Dimension.board[i].bEnabled != changed->Dimension.board[i].bEnabled || + strcmp(current->Dimension.board[i].szRomFileName, changed->Dimension.board[i].szRomFileName)) { + printf("dimension reset\n"); return true; } + for (j = 0; j < 4; j++) { + if (current->Dimension.board[i].nMemoryBankSize[j] != changed->Dimension.board[i].nMemoryBankSize[j]) { + printf("dimension memory size reset\n"); + return true; + } + } + } + if (current->Dimension.bI860Thread != changed->Dimension.bI860Thread || + current->Dimension.bMainDisplay != changed->Dimension.bMainDisplay || + current->Dimension.nMainDisplay != changed->Dimension.nMainDisplay) { + printf("dimension display reset\n"); + return true; } /* Did we change monitor count? */ @@ -250,7 +255,10 @@ bool Change_CopyChangedParamsToConfigura /* Note: SCSI, MO and floppy disk insert/eject called from GUI */ /* Do we need to change Ethernet connection? */ - if (!NeedReset && current->Ethernet.bEthernetConnected != changed->Ethernet.bEthernetConnected) { + if (!NeedReset && + (current->Ethernet.bEthernetConnected != changed->Ethernet.bEthernetConnected || + current->Ethernet.nHostInterface != changed->Ethernet.nHostInterface || + strcmp(current->Ethernet.szInterfaceName, changed->Ethernet.szInterfaceName))) { bReInitEnetEmu = true; } @@ -331,7 +339,7 @@ bool Change_CopyChangedParamsToConfigura */ static bool Change_Options(int argc, const char *argv[]) { - bool bOK; + bool bOK = false; CNF_PARAMS current; Main_PauseEmulation(false); @@ -339,10 +347,9 @@ static bool Change_Options(int argc, con /* get configuration changes */ current = ConfigureParams; ConfigureParams.Screen.bFullScreen = bInFullScreen; - bOK = Opt_ParseParameters(argc, argv); /* Check if reset is required and ask user if he really wants to continue */ - if (bOK && Change_DoNeedReset(¤t, &ConfigureParams) + if (Change_DoNeedReset(¤t, &ConfigureParams) && current.Log.nAlertDlgLogLevel > LOG_FATAL) { bOK = DlgAlert_Query("The emulated system must be " "reset to apply these changes. "