From fe39be8a5becb288cb93209c3553f83110260077 Mon Sep 17 00:00:00 2001 From: tomch Date: Thu, 30 Dec 2010 20:10:48 +0000 Subject: [PATCH] 1.19.3.0 Changes: . Set 50% scan lines as the default. Fixes: . Fix OpenFileName dialogs for Win98 (use older WinVer4 struct). . Edits to the 'Printer dump filename' edit control are now recognised. --- AppleWin/docs/History.txt | 11 +++++ AppleWin/resource/Applewin.rc | 12 +++--- AppleWin/resource/resource.h | 4 +- AppleWin/source/Applewin.cpp | 2 +- AppleWin/source/Disk.cpp | 2 + AppleWin/source/Frame.cpp | 4 +- AppleWin/source/PropertySheetPage.cpp | 60 +++++++++++++++++---------- AppleWin/source/StdAfx.h | 6 ++- AppleWin/source/Video.cpp | 2 +- 9 files changed, 67 insertions(+), 36 deletions(-) diff --git a/AppleWin/docs/History.txt b/AppleWin/docs/History.txt index babc3e5b..a56b2687 100644 --- a/AppleWin/docs/History.txt +++ b/AppleWin/docs/History.txt @@ -18,6 +18,17 @@ Restrictions/bugs: - During Mockingboard playback, Speaker emulation isn't precise. - For an original Apple //e, 80-column (PR#3) and INVERSE, it still appears to be mousetext character, but it should be inverted upper-case from $40 to $5F. + +1.19.3 - 30 Dec 2010 +-------------------- +Changes: +. Set 50% scan lines as the default. + +Fixes: +. Fix OpenFileName dialogs for Win98 (use older WinVer4 struct). +. Edits to the 'Printer dump filename' edit control are now recognised. + + 1.19.2 - 20 Dec 2010 -------------------- Changes: diff --git a/AppleWin/resource/Applewin.rc b/AppleWin/resource/Applewin.rc index be4f108e..4068a052 100644 --- a/AppleWin/resource/Applewin.rc +++ b/AppleWin/resource/Applewin.rc @@ -218,8 +218,8 @@ BEGIN PUSHBUTTON "&Load State",IDC_LOADSTATE,13,76,85,15 LTEXT "(F12 during emulation)",IDC_STATIC,107,79,90,8 LTEXT "&Printer dump filename:",IDC_STATIC,5,97,74,8 - EDITTEXT IDC_DUMP_FILENAME,5,107,143,12,ES_AUTOHSCROLL - PUSHBUTTON "B&rowse...",IDC_DUMP_FILENAME_BROWSE,154,106,50,14 + EDITTEXT IDC_PRINTER_DUMP_FILENAME,5,107,143,12,ES_AUTOHSCROLL + PUSHBUTTON "B&rowse...",IDC_PRINTER_DUMP_FILENAME_BROWSE,154,106,50,14 CONTROL "&Dump to printer (use with caution)",IDC_DUMPTOPRINTER, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,124,180,10 CONTROL "&Encoding conversion for clones",IDC_PRINTER_CONVERT_ENCODING, @@ -253,8 +253,8 @@ DISK_ICON ICON "DISK.ICO" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,19,2,0 - PRODUCTVERSION 1,19,2,0 + FILEVERSION 1,19,3,0 + PRODUCTVERSION 1,19,3,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -272,12 +272,12 @@ BEGIN VALUE "Comments", "http://applewin.berlios.de" VALUE "CompanyName", "AppleWin" VALUE "FileDescription", "Apple //e Emulator for Windows" - VALUE "FileVersion", "1, 19, 2, 0" + VALUE "FileVersion", "1, 19, 3, 0" VALUE "InternalName", "APPLEWIN" VALUE "LegalCopyright", " 1994-2010 Michael O'Brien, Oliver Schmidt, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis" VALUE "OriginalFilename", "APPLEWIN.EXE" VALUE "ProductName", "Apple //e Emulator" - VALUE "ProductVersion", "1, 19, 2, 0" + VALUE "ProductVersion", "1, 19, 3, 0" END END BLOCK "VarFileInfo" diff --git a/AppleWin/resource/resource.h b/AppleWin/resource/resource.h index 2ae2add5..f80d6df9 100644 --- a/AppleWin/resource/resource.h +++ b/AppleWin/resource/resource.h @@ -89,8 +89,8 @@ #define IDC_CIDERPRESS_FILENAME 1050 #define IDC_Z80_IN_SLOT5 1051 #define IDC_DUMPTOPRINTER 1052 -#define IDC_DUMP_FILENAME 1053 -#define IDC_DUMP_FILENAME_BROWSE 1054 +#define IDC_PRINTER_DUMP_FILENAME 1053 +#define IDC_PRINTER_DUMP_FILENAME_BROWSE 1054 #define IDC_PRINTER_CONVERT_ENCODING 1055 #define IDC_PRINTER_FILTER_UNPRINTABLE 1056 #define IDC_PRINTER_APPEND 1057 diff --git a/AppleWin/source/Applewin.cpp b/AppleWin/source/Applewin.cpp index 835efcb5..a681861c 100644 --- a/AppleWin/source/Applewin.cpp +++ b/AppleWin/source/Applewin.cpp @@ -925,7 +925,7 @@ int APIENTRY WinMain (HINSTANCE passinstance, HINSTANCE, LPSTR lpCmdLine, int) // Initialize COM - so we can use CoCreateInstance // . NB. DSInit() & DIMouse::DirectInputInit are done when g_hFrameWindow is created (WM_CREATE) CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); -// CoInitialize(NULL); + bool bSysClkOK = SysClk_InitTimer(); #ifdef USE_SPEECH_API if (g_bEnableSpeech) diff --git a/AppleWin/source/Disk.cpp b/AppleWin/source/Disk.cpp index 6c2fede0..9cb13753 100644 --- a/AppleWin/source/Disk.cpp +++ b/AppleWin/source/Disk.cpp @@ -740,6 +740,8 @@ void DiskSelectImage(const int iDrive, LPSTR pszFilename) _tcscpy(title, TEXT("Select Disk Image For Drive ")); _tcscat(title, iDrive ? TEXT("2") : TEXT("1")); + _ASSERT(sizeof(OPENFILENAME) == sizeof(OPENFILENAME_NT4)); // Required for Win98/ME support (selected by _WIN32_WINNT=0x0400 in stdafx.h) + OPENFILENAME ofn; ZeroMemory(&ofn,sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); diff --git a/AppleWin/source/Frame.cpp b/AppleWin/source/Frame.cpp index f4f456af..92b4834e 100644 --- a/AppleWin/source/Frame.cpp +++ b/AppleWin/source/Frame.cpp @@ -1855,7 +1855,7 @@ void FrameCreateWindow () { int nXScreen = GetSystemMetrics(SM_CXSCREEN) - nWidth; - if (RegLoadValue(TEXT("Preferences"), TEXT("Window X-Position"), 1, (DWORD*)&nXPos)) + if (RegLoadValue(TEXT(REG_PREFS), TEXT("Window X-Position"), 1, (DWORD*)&nXPos)) { if (nXPos > nXScreen) nXPos = -1; // Not fully visible, so default to centre position @@ -1871,7 +1871,7 @@ void FrameCreateWindow () { int nYScreen = GetSystemMetrics(SM_CYSCREEN) - nHeight; - if (RegLoadValue(TEXT("Preferences"), TEXT("Window Y-Position"), 1, (DWORD*)&nYPos)) + if (RegLoadValue(TEXT(REG_PREFS), TEXT("Window Y-Position"), 1, (DWORD*)&nYPos)) { if (nYPos > nYScreen) nYPos = -1; // Not fully visible, so default to centre position diff --git a/AppleWin/source/PropertySheetPage.cpp b/AppleWin/source/PropertySheetPage.cpp index 59738206..e010a540 100644 --- a/AppleWin/source/PropertySheetPage.cpp +++ b/AppleWin/source/PropertySheetPage.cpp @@ -290,14 +290,13 @@ static void ConfigDlg_OK(HWND window, UINT afterclose) { DWORD NewCompType = (DWORD) SendDlgItemMessage(window,IDC_COMPUTER,CB_GETCURSEL,0,0); DWORD OldApple2Type = g_Apple2Type; - eApple2Type NewApple2Type = GetApple2Type(NewCompType, 0 ); + eApple2Type NewApple2Type = GetApple2Type(NewCompType, 0); DWORD newvidtype = (DWORD)SendDlgItemMessage(window,IDC_VIDEOTYPE,CB_GETCURSEL,0,0); DWORD newserialport = (DWORD)SendDlgItemMessage(window,IDC_SERIALPORT,CB_GETCURSEL,0,0); if (OldApple2Type > (APPLECLONE_MASK|APPLE2E_MASK)) OldApple2Type = (APPLECLONE_MASK|APPLE2E_MASK); - if (NewApple2Type != OldApple2Type) { @@ -1158,10 +1157,10 @@ static void SaveStateUpdate() { Snapshot_SetFilename(g_szSSNewFilename); - RegSaveString(TEXT(REG_CONFIG),REGVALUE_SAVESTATE_FILENAME,1,Snapshot_GetFilename()); + RegSaveString(TEXT(REG_CONFIG), REGVALUE_SAVESTATE_FILENAME, 1, Snapshot_GetFilename()); if(g_szSSNewDirectory[0]) - RegSaveString(TEXT("Preferences"),REGVALUE_PREF_START_DIR,1,g_szSSNewDirectory); RegSaveString(TEXT("Preferences"),REGVALUE_PREF_START_DIR,1,g_szSSNewDirectory); + RegSaveString(TEXT(REG_PREFS), REGVALUE_PREF_START_DIR, 1 ,g_szSSNewDirectory); } } @@ -1202,7 +1201,7 @@ static int SaveStateSelectImage(HWND hWindow, TCHAR* pszTitle, bool bSave) } } - RegLoadString(TEXT("Preferences"),REGVALUE_PREF_START_DIR,1,szDirectory,MAX_PATH); + RegLoadString(TEXT(REG_PREFS),REGVALUE_PREF_START_DIR,1,szDirectory,MAX_PATH); // @@ -1259,20 +1258,38 @@ static void InitFreezeDlgButton(HWND window) static void AdvancedDlg_OK(HWND window, UINT afterclose) { - char szFilename[MAX_PATH]; - memset(szFilename, 0, sizeof(szFilename)); - * (USHORT*) szFilename = sizeof(szFilename); + // Update save-state filename + { + char szFilename[MAX_PATH]; + memset(szFilename, 0, sizeof(szFilename)); + * (USHORT*) szFilename = sizeof(szFilename); - UINT nLineLength = SendDlgItemMessage(window,IDC_SAVESTATE_FILENAME,EM_LINELENGTH,0,0); + UINT nLineLength = SendDlgItemMessage(window, IDC_SAVESTATE_FILENAME, EM_LINELENGTH, 0, 0); - SendDlgItemMessage(window,IDC_SAVESTATE_FILENAME,EM_GETLINE,0,(LPARAM)szFilename); + SendDlgItemMessage(window, IDC_SAVESTATE_FILENAME, EM_GETLINE, 0, (LPARAM)szFilename); - nLineLength = nLineLength > sizeof(szFilename)-1 ? sizeof(szFilename)-1 : nLineLength; - szFilename[nLineLength] = 0x00; + nLineLength = nLineLength > sizeof(szFilename)-1 ? sizeof(szFilename)-1 : nLineLength; + szFilename[nLineLength] = 0x00; - SaveStateUpdate(); - RegSaveString(TEXT("Configuration"),REGVALUE_PRINTER_FILENAME,1,Printer_GetFilename()); -// PrinterStateUpdate(); + SaveStateUpdate(); + } + + // Update printer dump filename + { + char szFilename[MAX_PATH]; + memset(szFilename, 0, sizeof(szFilename)); + * (USHORT*) szFilename = sizeof(szFilename); + + UINT nLineLength = SendDlgItemMessage(window, IDC_PRINTER_DUMP_FILENAME, EM_LINELENGTH, 0, 0); + + SendDlgItemMessage(window, IDC_PRINTER_DUMP_FILENAME, EM_GETLINE, 0, (LPARAM)szFilename); + + nLineLength = nLineLength > sizeof(szFilename)-1 ? sizeof(szFilename)-1 : nLineLength; + szFilename[nLineLength] = 0x00; + + Printer_SetFilename(szFilename); + RegSaveString(TEXT(REG_CONFIG), REGVALUE_PRINTER_FILENAME, 1, Printer_GetFilename()); + } g_bSaveStateOnExit = IsDlgButtonChecked(window, IDC_SAVESTATE_ON_EXIT) ? true : false; REGSAVE(TEXT(REGVALUE_SAVE_STATE_ON_EXIT), g_bSaveStateOnExit ? 1 : 0); @@ -1394,15 +1411,12 @@ static BOOL CALLBACK AdvancedDlgProc (HWND window, break; case IDC_SAVESTATE_BROWSE: if(SaveStateSelectImage(window, TEXT("Select Save State file"), true)) - SendDlgItemMessage(window, IDC_SAVESTATE_FILENAME, WM_SETTEXT, 0, (LPARAM) g_szSSNewFilename); + SendDlgItemMessage(window, IDC_SAVESTATE_FILENAME, WM_SETTEXT, 0, (LPARAM)g_szSSNewFilename); break; - case IDC_DUMP_FILENAME_BROWSE: + case IDC_PRINTER_DUMP_FILENAME_BROWSE: { - char PrinterDumpLoc[MAX_PATH] = {0}; - strcpy(PrinterDumpLoc, BrowseToFile (window, TEXT("Select printer dump file"), REGVALUE_PRINTER_FILENAME, TEXT("Text files (*.txt)\0*.txt\0") TEXT("All Files\0*.*\0")).c_str()); - RegSaveString(TEXT("Configuration"),REGVALUE_PRINTER_FILENAME,1,PrinterDumpLoc); - SendDlgItemMessage(window, IDC_DUMP_FILENAME, WM_SETTEXT, 0, (LPARAM) PrinterDumpLoc); - Printer_SetFilename (PrinterDumpLoc); + string strPrinterDumpLoc = BrowseToFile(window, TEXT("Select printer dump file"), REGVALUE_PRINTER_FILENAME, TEXT("Text files (*.txt)\0*.txt\0") TEXT("All Files\0*.*\0")); + SendDlgItemMessage(window, IDC_PRINTER_DUMP_FILENAME, WM_SETTEXT, 0, (LPARAM)strPrinterDumpLoc.c_str()); } break; case IDC_SAVESTATE_ON_EXIT: @@ -1452,7 +1466,7 @@ static BOOL CALLBACK AdvancedDlgProc (HWND window, CheckDlgButton(window, IDC_PRINTER_APPEND, g_bPrinterAppend ? BST_CHECKED : BST_UNCHECKED); SendDlgItemMessage(window, IDC_SPIN_PRINTER_IDLE, UDM_SETRANGE, 0, MAKELONG(999,0)); SendDlgItemMessage(window, IDC_SPIN_PRINTER_IDLE, UDM_SETPOS, 0, MAKELONG(Printer_GetIdleLimit (),0)); - SendDlgItemMessage(window,IDC_DUMP_FILENAME,WM_SETTEXT,0,(LPARAM)Printer_GetFilename()); + SendDlgItemMessage(window, IDC_PRINTER_DUMP_FILENAME, WM_SETTEXT, 0, (LPARAM)Printer_GetFilename()); FillComboBox(window, IDC_CLONETYPE, g_CloneChoices, g_uCloneType); InitFreezeDlgButton(window); diff --git a/AppleWin/source/StdAfx.h b/AppleWin/source/StdAfx.h index 0ae2f030..756a4b97 100644 --- a/AppleWin/source/StdAfx.h +++ b/AppleWin/source/StdAfx.h @@ -1,5 +1,9 @@ //#define WIN32_LEAN_AND_MEAN -//#define _WIN32_WINNT 0x0400 // For CoInitializeEx() to get defined in objbase.h (Updated[TC]: Removed as not needed) + +// Required for Win98/ME support: +// . See: http://support.embarcadero.com/article/35754 +// . "GetOpenFileName() fails under Windows 95/98/NT/ME due to incorrect OPENFILENAME structure size" +#define _WIN32_WINNT 0x0400 // Mouse Wheel is not supported on Win95. // If we didn't care about supporting Win95 (compile/run-time errors) diff --git a/AppleWin/source/Video.cpp b/AppleWin/source/Video.cpp index 646881c7..c38aaa09 100644 --- a/AppleWin/source/Video.cpp +++ b/AppleWin/source/Video.cpp @@ -238,7 +238,7 @@ static LPBYTE vidlastmem = NULL; static DWORD vidmode = VF_TEXT; DWORD g_eVideoType = VT_COLOR_TVEMU; -DWORD g_uHalfScanLines = false; // drop 50% scan lines for a more authentic look +DWORD g_uHalfScanLines = true; // drop 50% scan lines for a more authentic look static bool g_bTextFlashState = false;