void YamlHelper::GetMapRemainder(std::string& mapName, MapYaml& mapYaml) { for (MapYaml::iterator iter = mapYaml.begin(); iter != mapYaml.end(); ++iter) { if (iter->second.subMap) { std::string subMapName(iter->first); GetMapRemainder(subMapName, *iter->second.subMap); delete iter->second.subMap; } else { const char* pKey = iter->first.c_str(); LogOutput("%s: Unknown key (%s)\n", mapName.c_str(), pKey); LogFileOutput("%s: Unknown key (%s)\n", mapName.c_str(), pKey); } } mapYaml.clear(); }
int APIENTRY WinMain(HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int) { bool bSetFullScreen = false; bool bBoot = false; LPSTR szImageName_drive1 = NULL; LPSTR szImageName_drive2 = NULL; const std::string strCmdLine(lpCmdLine); // Keep a copy for log ouput while (*lpCmdLine) { LPSTR lpNextArg = GetNextArg(lpCmdLine); if (((strcmp(lpCmdLine, "-l") == 0) || (strcmp(lpCmdLine, "-log") == 0)) && (g_fh == NULL)) { g_fh = fopen("AppleWin.log", "a+t"); // Open log file (append & text mode) setvbuf(g_fh, NULL, _IONBF, 0); // No buffering (so implicit fflush after every fprintf) CHAR aDateStr[80], aTimeStr[80]; GetDateFormat(LOCALE_SYSTEM_DEFAULT, 0, NULL, NULL, (LPTSTR)aDateStr, sizeof(aDateStr)); GetTimeFormat(LOCALE_SYSTEM_DEFAULT, 0, NULL, NULL, (LPTSTR)aTimeStr, sizeof(aTimeStr)); fprintf(g_fh, "*** Logging started: %s %s\n", aDateStr, aTimeStr); } else if (strcmp(lpCmdLine, "-noreg") == 0) { g_bRegisterFileTypes = false; } else if (strcmp(lpCmdLine, "-d1") == 0) { lpCmdLine = GetCurrArg(lpNextArg); lpNextArg = GetNextArg(lpNextArg); szImageName_drive1 = lpCmdLine; } else if (strcmp(lpCmdLine, "-d2") == 0) { lpCmdLine = GetCurrArg(lpNextArg); lpNextArg = GetNextArg(lpNextArg); szImageName_drive2 = lpCmdLine; } else if (strcmp(lpCmdLine, "-f") == 0) { bSetFullScreen = true; } else if (strcmp(lpCmdLine, "-fs8bit") == 0) { SetFullScreen32Bit(false); // Support old v1.24 fullscreen 8-bit palette mode } else if (strcmp(lpCmdLine, "-no-di") == 0) { g_bDisableDirectInput = true; } else if (strcmp(lpCmdLine, "-m") == 0) { g_bDisableDirectSound = true; } else if (strcmp(lpCmdLine, "-no-mb") == 0) { g_bDisableDirectSoundMockingboard = true; } else if (strcmp(lpCmdLine, "-memclear") == 0) { lpCmdLine = GetCurrArg(lpNextArg); lpNextArg = GetNextArg(lpNextArg); g_nMemoryClearType = atoi(lpCmdLine); if (g_nMemoryClearType < 0) g_nMemoryClearType = 0; else if (g_nMemoryClearType >= NUM_MIP) g_nMemoryClearType = NUM_MIP - 1; } #ifdef RAMWORKS else if (strcmp(lpCmdLine, "-r") == 0) // RamWorks size [1..127] { lpCmdLine = GetCurrArg(lpNextArg); lpNextArg = GetNextArg(lpNextArg); g_uMaxExPages = atoi(lpCmdLine); if (g_uMaxExPages > 127) g_uMaxExPages = 128; else if (g_uMaxExPages < 1) g_uMaxExPages = 1; } #endif else if (strcmp(lpCmdLine, "-f8rom") == 0) // Use custom 2K ROM at [$F800..$FFFF] { lpCmdLine = GetCurrArg(lpNextArg); lpNextArg = GetNextArg(lpNextArg); g_hCustomRomF8 = CreateFile(lpCmdLine, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL); if ((g_hCustomRomF8 == INVALID_HANDLE_VALUE) || (GetFileSize(g_hCustomRomF8, NULL) != 0x800)) g_bCustomRomF8Failed = true; } else if (strcmp(lpCmdLine, "-printscreen") == 0) // Turn on display of the last filename print screen was saved to { g_bDisplayPrintScreenFileName = true; } else if (strcmp(lpCmdLine, "-no-printscreen-dlg") == 0) // Turn off the PrintScreen warning message dialog (if PrintScreen key can't be grabbed) { g_bShowPrintScreenWarningDialog = false; } else if (strcmp(lpCmdLine, "-spkr-inc") == 0) { lpCmdLine = GetCurrArg(lpNextArg); lpNextArg = GetNextArg(lpNextArg); const int nErrorInc = atoi(lpCmdLine); SoundCore_SetErrorInc( nErrorInc ); } else if (strcmp(lpCmdLine, "-spkr-max") == 0) { lpCmdLine = GetCurrArg(lpNextArg); lpNextArg = GetNextArg(lpNextArg); const int nErrorMax = atoi(lpCmdLine); SoundCore_SetErrorMax( nErrorMax ); } else if (strcmp(lpCmdLine, "-use-real-printer") == 0) // Enable control in Advanced config to allow dumping to a real printer { g_bEnableDumpToRealPrinter = true; } else if (strcmp(lpCmdLine, "-speech") == 0) { g_bEnableSpeech = true; } else if (strcmp(lpCmdLine, "-multimon") == 0) { g_bMultiMon = true; } else // unsupported { LogFileOutput("Unsupported arg: %s\n", lpCmdLine); } lpCmdLine = lpNextArg; } LogFileOutput("CmdLine: %s\n", strCmdLine.c_str()); #if 0 #ifdef RIFF_SPKR RiffInitWriteFile("Spkr.wav", SPKR_SAMPLE_RATE, 1); #endif #ifdef RIFF_MB RiffInitWriteFile("Mockingboard.wav", 44100, 2); #endif #endif //----- char szPath[_MAX_PATH]; if (0 == GetModuleFileName(NULL, szPath, sizeof(szPath))) { strcpy(szPath, __argv[0]); } // Extract application version and store in a global variable DWORD dwHandle, dwVerInfoSize; dwVerInfoSize = GetFileVersionInfoSize(szPath, &dwHandle); if (dwVerInfoSize > 0) { char* pVerInfoBlock = new char[dwVerInfoSize]; if (GetFileVersionInfo(szPath, NULL, dwVerInfoSize, pVerInfoBlock)) { VS_FIXEDFILEINFO* pFixedFileInfo; UINT pFixedFileInfoLen; VerQueryValue(pVerInfoBlock, TEXT("\\"), (LPVOID*) &pFixedFileInfo, (PUINT) &pFixedFileInfoLen); // Construct version string from fixed file info block unsigned long major = pFixedFileInfo->dwFileVersionMS >> 16; unsigned long minor = pFixedFileInfo->dwFileVersionMS & 0xffff; unsigned long fix = pFixedFileInfo->dwFileVersionLS >> 16; unsigned long fix_minor = pFixedFileInfo->dwFileVersionLS & 0xffff; sprintf(VERSIONSTRING, "%d.%d.%d.%d", major, minor, fix, fix_minor); // potential buffer overflow } }