From ed59d66683fe8f87387260f5c6b376aa5e7ae434 Mon Sep 17 00:00:00 2001 From: Gwenhael Le Moine Date: Tue, 19 Mar 2024 23:35:30 +0100 Subject: [PATCH] 2016-09-11: Updated to version 1.58 Signed-off-by: Gwenhael Le Moine --- COPYING.TXT | 43 +++--- Emu48.exe | Bin 290816 -> 290816 bytes PROBLEMS.TXT | 4 +- Sources/Emu48/CHANGES.TXT | 77 +++++++++++ Sources/Emu48/DDESERV.C | 41 ++++-- Sources/Emu48/DEBUGGER.C | 31 ++--- Sources/Emu48/DISPLAY.C | 27 ++-- Sources/Emu48/EMU48.C | 63 +++------ Sources/Emu48/EMU48.DSP | 54 ++++---- Sources/Emu48/EMU48.H | 8 +- Sources/Emu48/EMU48.RC | 17 ++- Sources/Emu48/KML.C | 34 +++-- Sources/Emu48/SNDDEF.H | 102 ++++++++++++++ Sources/Emu48/SNDENUM.C | 256 +++++++++++++++++++++++++++++++++++ Sources/Emu48/STACK.C | 1 - Sources/GCCPatch/EMU48GCC.RC | 17 ++- Sources/GCCPatch/Makefile | 10 +- Sources/GCCPatch/README.TXT | 2 +- uninst.exe | Bin 68747 -> 67024 bytes 19 files changed, 615 insertions(+), 172 deletions(-) create mode 100644 Sources/Emu48/SNDDEF.H create mode 100644 Sources/Emu48/SNDENUM.C diff --git a/COPYING.TXT b/COPYING.TXT index 60549be..d159169 100644 --- a/COPYING.TXT +++ b/COPYING.TXT @@ -1,12 +1,12 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public @@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to +the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not @@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. - - GNU GENERAL PUBLIC LICENSE + + GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains @@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions: License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) - + These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in @@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. - + 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is @@ -225,7 +225,7 @@ impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - + 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License @@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN @@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it @@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - Copyright (C) 19yy + Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -303,17 +303,16 @@ the "copyright" line and a pointer to where the full notice is found. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. @@ -336,5 +335,5 @@ necessary. Here is a sample; alter the names: This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General +library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. diff --git a/Emu48.exe b/Emu48.exe index d0c3df5ad39b64f5768ea343e39036d5058fb891..ae817d3aa44c27220cf610aa457cfcd3f83c1000 100755 GIT binary patch delta 56788 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 Kb%&I{naA92$!;OFZ28e&$*BbvdB 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 diff --git a/PROBLEMS.TXT b/PROBLEMS.TXT index ad3178d..edfff3e 100644 --- a/PROBLEMS.TXT +++ b/PROBLEMS.TXT @@ -1,4 +1,4 @@ -Known bugs and restrictions of Emu48 V1.57 +Known bugs and restrictions of Emu48 V1.58 ------------------------------------------ - the following I/O bits aren't emulated (incomplete) @@ -47,4 +47,4 @@ Known bugs and restrictions of Emu48 V1.57 - quitting the emulator while programming the flash isn't allowed, because the content of flash state machine isn't saved so far -07/14/15 (c) by Christoph Gießelink, c dot giesselink at gmx dot de +08/16/16 (c) by Christoph Gießelink, c dot giesselink at gmx dot de diff --git a/Sources/Emu48/CHANGES.TXT b/Sources/Emu48/CHANGES.TXT index 6bf9f48..0b0948e 100644 --- a/Sources/Emu48/CHANGES.TXT +++ b/Sources/Emu48/CHANGES.TXT @@ -1,3 +1,80 @@ +Service Pack 58 for Emu48 Version 1.0 + +DDESERV.C +- bugfix in function DdeCallback(), improved input data checking and + avoided multiple DDE data fetch in XTYP_POKE case + +DEBUGGER.C +- changed function UpdateStackWnd(), OnStackPush() and OnStackPop(), + fixed signed/unsigned mismatch +- bugfix in function OnLButtonUp(), fixed a buffer overflow when + converting a 3 byte hexadecimal string to variable Chipset.out + which overwrite the content of variable Chipset.in, fixed a buffer + overflow when converting a 4 byte hexadecimal string to variable + Chipset.in which overwrite the following two padding bytes and + changed method converting a 2 byte hexadecimal string to variable + Chipset.Bank_FF +- changed function UpdateProfileWnd(), fixed signed/unsigned + mismatch and optimized ENG unit search break +- changed function InfoWoRegister(), changed function prototype to + DLGPROC + +DISPLAY.C +- added variable for additional GDI zoom +- changed function UpdateMainDisplay(), UpdateMenuDisplay(), + WriteToMainDisplay() and WriteToMenuDisplay(), replaced BitBlt by + StretchBlt operation to implement an additional GDI zoom factor + (there is no noticeable speed difference between BitBlt and + StretchBlt with a stretching factor of 1) +- bugfix in function ResizeWindow(), the WM_PAINT message wasn't + generated by the InvalidateRect() call when the title and menu bar + was disabled and the client area was empty, so we got a main + window with zero size which could not be activated any more -> + issue solved by forcing a menu bar when client area is empty + +EMU48.C +- changed szLicence string, updated to the latest revision of the + GPLv2 +- moved function SetSoundDeviceList() to SNDENUM.C +- bugfix in function SettingsGeneralProc(), SettingsMemoryProc() and + SettingsPeripheralProc(), changed function prototype to DLGPROC + for getting a 64 bit lParam pointer when compiling for x64 + architecture +- changed function OnPaint(), replaced BitBlt by StretchBlt + operation at display handling to implement an additional GDI zoom + factor +- changed function OnViewSettings(), removed DLGPROC typecasts + +EMU48.DSP +- added snddef.h and sndenum.c sources + +EMU48.H +- extern declaration of global variable and function + +EMU48.RC +- changed IDD_SET_PERIPHERAL, enlarged width of slider + IDC_SOUND_SLIDER and combo box IDC_SOUND_DEVICE +- changed version and copyright + +KML.C +- changed function InitLcd(), removed Zoom factor 4 limitation +- changed function KillKML(), added reset of variable nGdiZoom +- changed function iSqrt(), changed implementation to Heron's method + for speed optimization + +SNDDEF.H +- include files and interface definitions for SNDENUM.C for + compilers without installed DirectX SDK + +SNDENUM.C +- new module with implementation of function SetSoundDeviceList() + prior located in EMU48.C for sound device enumeration showing the + full device name used since Windows Vista + +STACK.C +- removed include resource.h + + Service Pack 57 for Emu48 Version 1.0 DEBUGGER.C diff --git a/Sources/Emu48/DDESERV.C b/Sources/Emu48/DDESERV.C index 5ebb39b..f8a5c47 100644 --- a/Sources/Emu48/DDESERV.C +++ b/Sources/Emu48/DDESERV.C @@ -46,13 +46,6 @@ HDDEDATA CALLBACK DdeCallback(UINT iType,UINT iFmt,HCONV hConv, if (*psz != 0 || nStkLvl < 1) // invalid number format return (HDDEDATA) DDE_FNOTPROCESSED; - DdeAccessData(hData,&dwSize); // fetch data size - DdeUnaccessData(hData); - - // reserve memory - if ((lpData = (LPBYTE) malloc(dwSize * 2)) == NULL) - return (HDDEDATA) DDE_FNOTPROCESSED; - SuspendDebugger(); // suspend debugger bDbgAutoStateCtrl = FALSE; // disable automatic debugger state control @@ -66,7 +59,6 @@ HDDEDATA CALLBACK DdeCallback(UINT iType,UINT iFmt,HCONV hConv, if (WaitForSleepState()) // wait for cpu SHUTDN then sleep state { - free(lpData); // free memory hReturn = DDE_FNOTPROCESSED; goto cancel; } @@ -74,13 +66,32 @@ HDDEDATA CALLBACK DdeCallback(UINT iType,UINT iFmt,HCONV hConv, while (nState!=nNextState) Sleep(0); _ASSERT(nState==SM_SLEEP); - // fetch data and write to stack - DdeGetData(hData,(LPBYTE) &dwIndex,sizeof(DWORD),0L); - if (dwIndex <= dwSize - sizeof(DWORD)) - dwSize = dwIndex; - dwSize = DdeGetData(hData,lpData+dwSize,dwSize,sizeof(DWORD)); - bSuccess = (WriteStack(nStkLvl,lpData,dwSize) == S_ERR_NO); - free(lpData); // free memory + bSuccess = FALSE; + + // get data and size + lpData = DdeAccessData(hData,&dwSize); + + // has object length header + if (lpData && dwSize >= sizeof(DWORD)) + { + dwIndex = *(LPDWORD) lpData; // object length + + if (dwIndex <= dwSize - sizeof(DWORD)) + { + // reserve unpacked object length memory + LPBYTE pbyMem = (LPBYTE) malloc(dwIndex * 2); + + if (pbyMem != NULL) + { + // copy data and write to stack + CopyMemory(pbyMem+dwIndex,lpData+sizeof(DWORD),dwIndex); + bSuccess = (WriteStack(nStkLvl,pbyMem,dwIndex) == S_ERR_NO); + free(pbyMem); // free memory + } + } + } + + DdeUnaccessData(hData); SwitchToState(SM_RUN); // run state while (nState!=nNextState) Sleep(0); diff --git a/Sources/Emu48/DEBUGGER.C b/Sources/Emu48/DEBUGGER.C index d51a82a..0cab4aa 100644 --- a/Sources/Emu48/DEBUGGER.C +++ b/Sources/Emu48/DEBUGGER.C @@ -713,7 +713,7 @@ static VOID UpdateMemoryWnd(HWND hDlg) // static VOID UpdateStackWnd(HWND hDlg) { - INT i; + UINT i; LONG nPos; TCHAR szBuffer[64]; @@ -1168,15 +1168,15 @@ static BOOL OnStackPush(HWND hDlg) TCHAR szBuffer[] = _T("00000"); DWORD dwAddr; HWND hWnd; - INT i,j; + UINT i,j; if (nDbgState != DBG_STEPINTO) // not in single step mode return TRUE; hWnd = GetDlgItem(hDlg,IDC_DEBUG_STACK); - i = (INT) SendMessage(hWnd,LB_GETCURSEL,0,0); - if (LB_ERR == i) return TRUE; // no selection + i = (UINT) SendMessage(hWnd,LB_GETCURSEL,0,0); + if (LB_ERR == (INT) i) return TRUE; // no selection if (IDOK != OnNewValue(szBuffer)) // canceled function return TRUE; @@ -1200,15 +1200,15 @@ static BOOL OnStackPush(HWND hDlg) static BOOL OnStackPop(HWND hDlg) { HWND hWnd; - INT i,j; + UINT i,j; if (nDbgState != DBG_STEPINTO) // not in single step mode return TRUE; hWnd = GetDlgItem(hDlg,IDC_DEBUG_STACK); - i = (INT) SendMessage(hWnd,LB_GETCURSEL,0,0); - if (LB_ERR == i) return TRUE; // no selection + i = (UINT) SendMessage(hWnd,LB_GETCURSEL,0,0); + if (LB_ERR == (INT) i) return TRUE; // no selection // pop stack element for (j = i + 1; j < ARRAYSIZEOF(Chipset.rstk); ++j) @@ -1324,11 +1324,11 @@ static BOOL OnLButtonUp(HWND hDlg, LPARAM lParam) break; case IDC_REG_OUT: // OUT OnNewValue(&szBuffer[4]); - _stscanf(&szBuffer[4],_T("%3X"),&Chipset.out); + Chipset.out = (WORD) _tcstoul(&szBuffer[4],NULL,16); break; case IDC_REG_IN: // IN OnNewValue(&szBuffer[3]); - _stscanf(&szBuffer[3],_T("%4X"),&Chipset.in); + Chipset.in = (WORD) _tcstoul(&szBuffer[3],NULL,16); break; case IDC_REG_ST: // ST OnNewValue(&szBuffer[3]); @@ -1362,7 +1362,7 @@ static BOOL OnLButtonUp(HWND hDlg, LPARAM lParam) break; case IDC_MISC_BS: // Bank switcher setting OnNewValue(szBuffer); - _stscanf(szBuffer,_T("%2X"),&Chipset.Bank_FF); + Chipset.Bank_FF = _tcstoul(szBuffer,NULL,16); Chipset.Bank_FF &= 0x7F; RomSwitch(Chipset.Bank_FF); // update memory mapping @@ -2355,7 +2355,7 @@ static VOID UpdateProfileWnd(HWND hDlg) QWORD lVar; TCHAR szBuffer[64]; - INT i; + UINT i; DWORD dwFreq, dwEndFreq; if (hDlg == NULL) return; // dialog not open @@ -2373,10 +2373,9 @@ static VOID UpdateProfileWnd(HWND hDlg) : ((GX_RATE + 1) * CPU_FREQ / 4); dwEndFreq = ((999 * 2 - 1) * dwFreq) / (2 * 1000); - // search for unit - for (i = 0; i < ARRAYSIZEOF(pcUnit) - 1; ++i) + // search for ENG unit + for (i = 0; i < ARRAYSIZEOF(pcUnit) - 1 && lVar <= dwEndFreq; ++i) { - if (lVar > dwEndFreq) break; // found ENG unit lVar *= 1000; // next ENG unit } @@ -2850,7 +2849,7 @@ static VOID OnEnterAddress(HWND hDlg, DWORD *dwValue) static INT_PTR CALLBACK EnterBreakpoint(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static BP_T *sBp; - + DWORD dwAddr; switch (message) @@ -3269,7 +3268,7 @@ static BOOL OnInfoIntr(HWND hDlg) // // view write only I/O registers // -static BOOL CALLBACK InfoWoRegister(HWND hDlg, UINT message, DWORD wParam, LONG lParam) +static INT_PTR CALLBACK InfoWoRegister(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { TCHAR szBuffer[8]; diff --git a/Sources/Emu48/DISPLAY.C b/Sources/Emu48/DISPLAY.C index 9b4b600..764d8f0 100644 --- a/Sources/Emu48/DISPLAY.C +++ b/Sources/Emu48/DISPLAY.C @@ -48,7 +48,8 @@ UINT nBackgroundW = 0; UINT nBackgroundH = 0; UINT nLcdX = 0; UINT nLcdY = 0; -UINT nLcdZoom = 1; +UINT nLcdZoom = 1; // memory DC zoom +UINT nGdiZoom = 1; // GDI zoom HDC hLcdDC = NULL; HDC hMainDC = NULL; @@ -401,8 +402,8 @@ VOID UpdateMainDisplay(VOID) } EnterCriticalSection(&csGDILock); // solving NT GDI problems { - BitBlt(hWindowDC, nLcdX, nLcdY, 131*nLcdZoom, nLines*nLcdZoom, - hLcdDC, Chipset.boffset*nLcdZoom, 0, SRCCOPY); + StretchBlt(hWindowDC, nLcdX, nLcdY, 131*nLcdZoom*nGdiZoom, nLines*nLcdZoom*nGdiZoom, + hLcdDC, Chipset.boffset*nLcdZoom, 0, 131*nLcdZoom, nLines*nLcdZoom,SRCCOPY); GdiFlush(); } LeaveCriticalSection(&csGDILock); @@ -507,9 +508,9 @@ VOID UpdateMenuDisplay(VOID) } EnterCriticalSection(&csGDILock); // solving NT GDI problems { - BitBlt(hWindowDC, nLcdX, nLcdY+nLines*nLcdZoom, - 131*nLcdZoom, (64-nLines)*nLcdZoom, - hLcdDC, 0, nLines*nLcdZoom, SRCCOPY); + StretchBlt(hWindowDC, nLcdX, nLcdY+nLines*nLcdZoom*nGdiZoom, + 131*nLcdZoom*nGdiZoom, (64-nLines)*nLcdZoom*nGdiZoom, + hLcdDC, 0, nLines*nLcdZoom, 131*nLcdZoom, (64-nLines)*nLcdZoom, SRCCOPY); GdiFlush(); } LeaveCriticalSection(&csGDILock); @@ -554,7 +555,7 @@ VOID WriteToMainDisplay(LPBYTE a, DWORD d, UINT s) // calculate memory position in LCD bitmap p = (DWORD*) (pbyLcd + y0*LCD_ROW*nLcdZoom*nLcdZoom - + x0*sizeof(*p)*nLcdZoom); + + x0*sizeof(*p)*nLcdZoom); while (s--) // loop for nibbles to write { @@ -639,7 +640,9 @@ VOID WriteToMainDisplay(LPBYTE a, DWORD d, UINT s) EnterCriticalSection(&csGDILock); { - BitBlt(hWindowDC, nLcdX+x0, nLcdY+y0, x, y-y0, hLcdDC, x0+Chipset.boffset*nLcdZoom, y0, SRCCOPY); + StretchBlt(hWindowDC, nLcdX+x0*nGdiZoom, nLcdY+y0*nGdiZoom, + x*nGdiZoom, (y-y0)*nGdiZoom, + hLcdDC, x0+Chipset.boffset*nLcdZoom, y0, x, y-y0, SRCCOPY); GdiFlush(); } LeaveCriticalSection(&csGDILock); @@ -676,7 +679,7 @@ VOID WriteToMenuDisplay(LPBYTE a, DWORD d, UINT s) // calculate memory position in LCD bitmap p = (DWORD*) (pbyLcd + y0*LCD_ROW*nLcdZoom*nLcdZoom - + x0*sizeof(*p)*nLcdZoom); + + x0*sizeof(*p)*nLcdZoom); if (nLcdZoom == 4) { @@ -801,7 +804,9 @@ VOID WriteToMenuDisplay(LPBYTE a, DWORD d, UINT s) EnterCriticalSection(&csGDILock); // solving NT GDI problems { - BitBlt(hWindowDC, nLcdX+x0, nLcdY+y0, x-x0, y-y0+nLcdZoom, hLcdDC, x0, y0, SRCCOPY); + StretchBlt(hWindowDC, nLcdX+x0*nGdiZoom, nLcdY+y0*nGdiZoom, + (x-x0)*nGdiZoom, (y-y0+nLcdZoom)*nGdiZoom, + hLcdDC, x0, y0, x-x0, y-y0+nLcdZoom, SRCCOPY); GdiFlush(); } LeaveCriticalSection(&csGDILock); @@ -840,7 +845,7 @@ VOID ResizeWindow(VOID) AdjustWindowRect(&rectWindow, (DWORD) GetWindowLongPtr(hWnd,GWL_STYLE), - GetMenu(hWnd) != NULL); + GetMenu(hWnd) != NULL || IsRectEmpty(&rectWindow)); SetWindowPos(hWnd, bAlwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, rectWindow.right - rectWindow.left, rectWindow.bottom - rectWindow.top, diff --git a/Sources/Emu48/EMU48.C b/Sources/Emu48/EMU48.C index ba52fcc..0fe546f 100644 --- a/Sources/Emu48/EMU48.C +++ b/Sources/Emu48/EMU48.C @@ -13,7 +13,7 @@ #include "kml.h" #include "debugger.h" -#define VERSION "1.57" +#define VERSION "1.58" #ifdef _DEBUG LPCTSTR szNoTitle = _T("Emu48 ")_T(VERSION)_T(" Debug"); @@ -35,9 +35,9 @@ static const LPCTSTR szLicence = _T("MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r\n") _T("See the GNU General Public License for more details.\r\n") _T("\r\n") - _T("You should have received a copy of the GNU General Public License\r\n") - _T("along with this program; if not, write to the Free Software Foundation,\r\n") - _T("Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"); + _T("You should have received a copy of the GNU General Public License along\r\n") + _T("with this program; if not, write to the Free Software Foundation, Inc.,\r\n") + _T("51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."); static BOOL bOwnCursor = FALSE; static BOOL bTitleBar = TRUE; @@ -318,35 +318,6 @@ static BOOL IsFileWriteable(LPCTSTR szFilename) return bWriteable; } -// set listfield for sound device combo box -static VOID SetSoundDeviceList(HWND hWnd,UINT uDeviceID) -{ - WAVEOUTCAPS woc; - UINT uSelectDevice,uDevID,uDevNo; - - SendMessage(hWnd,CB_RESETCONTENT,0,0); - - // preset selector - uSelectDevice = (UINT) SendMessage(hWnd,CB_ADDSTRING,0,(LPARAM) _T("Standard Audio")); - SendMessage(hWnd,CB_SETITEMDATA,uSelectDevice,WAVE_MAPPER); - - uDevNo = waveOutGetNumDevs(); - for (uDevID = 0; uDevID < uDevNo; ++uDevID) - { - if ( waveOutGetDevCaps(uDevID,&woc,sizeof(woc)) == MMSYSERR_NOERROR - && (woc.dwFormats & WAVE_FORMAT_4M08) != 0) - { - // copy product name to combo box - LONG i = (LONG) SendMessage(hWnd,CB_ADDSTRING,0,(LPARAM) woc.szPname); - SendMessage(hWnd,CB_SETITEMDATA,i,uDevID); - - if (uDevID == uDeviceID) uSelectDevice = i; - } - } - SendMessage(hWnd,CB_SETCURSEL,uSelectDevice,0L); - return; -} - // set listfield for serial combo boxes static VOID SetCommList(HWND hDlg,LPCTSTR szWireSetting,LPCTSTR szIrSetting) { @@ -423,7 +394,7 @@ static VOID SetCommList(HWND hDlg,LPCTSTR szWireSetting,LPCTSTR szIrSetting) return; } -static BOOL CALLBACK SettingsGeneralProc(HWND hDlg, UINT uMsg, DWORD wParam, LONG lParam) +static INT_PTR CALLBACK SettingsGeneralProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { HWND hWndInsertAfter; @@ -495,7 +466,7 @@ static BOOL CALLBACK SettingsGeneralProc(HWND hDlg, UINT uMsg, DWORD wParam, LON UNREFERENCED_PARAMETER(wParam); } -static BOOL CALLBACK SettingsMemoryProc(HWND hDlg, UINT uMsg, DWORD wParam, LONG lParam) +static INT_PTR CALLBACK SettingsMemoryProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { LPCTSTR szActPort2Filename = _T(""); @@ -685,7 +656,7 @@ static BOOL CALLBACK SettingsMemoryProc(HWND hDlg, UINT uMsg, DWORD wParam, LONG return FALSE; } -static BOOL CALLBACK SettingsPeripheralProc(HWND hDlg, UINT uMsg, DWORD wParam, LONG lParam) +static INT_PTR CALLBACK SettingsPeripheralProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { TCHAR cPort[8]; LONG i; @@ -914,13 +885,15 @@ static LRESULT OnPaint(HWND hWindow) SetWindowOrgEx(hPaintDC, nBackgroundX, nBackgroundY, NULL); // redraw main display area - BitBlt(hPaintDC, nLcdX, nLcdY, - 131*nLcdZoom, nLines*nLcdZoom, - hLcdDC, Chipset.boffset*nLcdZoom, 0, SRCCOPY); + StretchBlt(hPaintDC, nLcdX, nLcdY, + 131*nLcdZoom*nGdiZoom, nLines*nLcdZoom*nGdiZoom, + hLcdDC, Chipset.boffset*nLcdZoom, 0, + 131*nLcdZoom, nLines*nLcdZoom, SRCCOPY); // redraw menu display area - BitBlt(hPaintDC, nLcdX, nLcdY+nLines*nLcdZoom, - 131*nLcdZoom, (64-nLines)*nLcdZoom, - hLcdDC, 0, nLines*nLcdZoom, SRCCOPY); + StretchBlt(hPaintDC, nLcdX, nLcdY+nLines*nLcdZoom*nGdiZoom, + 131*nLcdZoom*nGdiZoom, (64-nLines)*nLcdZoom*nGdiZoom, + hLcdDC, 0, nLines*nLcdZoom, + 131*nLcdZoom, (64-nLines)*nLcdZoom, SRCCOPY); GdiFlush(); } LeaveCriticalSection(&csGDILock); @@ -1324,7 +1297,7 @@ static LRESULT OnViewSettings(VOID) psp[0].pszTemplate = MAKEINTRESOURCE(IDD_SET_GENERAL); psp[0].hIcon = NULL; psp[0].pszTitle = NULL; - psp[0].pfnDlgProc = (DLGPROC) SettingsGeneralProc; + psp[0].pfnDlgProc = SettingsGeneralProc; psp[0].lParam = 0; psp[0].pfnCallback = NULL; @@ -1334,7 +1307,7 @@ static LRESULT OnViewSettings(VOID) psp[1].pszTemplate = MAKEINTRESOURCE(IDD_SET_MEMORY); psp[1].hIcon = NULL; psp[1].pszTitle = NULL; - psp[1].pfnDlgProc = (DLGPROC) SettingsMemoryProc; + psp[1].pfnDlgProc = SettingsMemoryProc; psp[1].lParam = 0; psp[1].pfnCallback = NULL; @@ -1344,7 +1317,7 @@ static LRESULT OnViewSettings(VOID) psp[2].pszTemplate = MAKEINTRESOURCE(IDD_SET_PERIPHERAL); psp[2].hIcon = NULL; psp[2].pszTitle = NULL; - psp[2].pfnDlgProc = (DLGPROC) SettingsPeripheralProc; + psp[2].pfnDlgProc = SettingsPeripheralProc; psp[2].lParam = 0; psp[2].pfnCallback = NULL; diff --git a/Sources/Emu48/EMU48.DSP b/Sources/Emu48/EMU48.DSP index 9448d6f..a68cc5a 100644 --- a/Sources/Emu48/EMU48.DSP +++ b/Sources/Emu48/EMU48.DSP @@ -7,21 +7,21 @@ CFG=Emu48 - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run -!MESSAGE +!MESSAGE !MESSAGE NMAKE /f "Emu48.mak". -!MESSAGE +!MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE +!MESSAGE !MESSAGE NMAKE /f "Emu48.mak" CFG="Emu48 - Win32 Release" -!MESSAGE +!MESSAGE !MESSAGE Possible choices for configuration are: -!MESSAGE +!MESSAGE !MESSAGE "Emu48 - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "Emu48 - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE "Emu48 - Win32 Release Unicode" (based on "Win32 (x86) Application") !MESSAGE "Emu48 - Win32 Debug Unicode" (based on "Win32 (x86) Application") -!MESSAGE +!MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 @@ -35,13 +35,13 @@ RSC=rc.exe # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\Release" -# PROP BASE Intermediate_Dir ".\Release" +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\Release" -# PROP Intermediate_Dir ".\Release" +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c @@ -61,13 +61,13 @@ LINK32=link.exe # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir ".\Debug" -# PROP BASE Intermediate_Dir ".\Debug" +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".\Debug" -# PROP Intermediate_Dir ".\Debug" +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c @@ -87,14 +87,14 @@ LINK32=link.exe # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Emu48___" -# PROP BASE Intermediate_Dir "Emu48___" +# PROP BASE Output_Dir "ReleaseUnicode" +# PROP BASE Intermediate_Dir "ReleaseUnicode" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\ReleaseUnicode" -# PROP Intermediate_Dir ".\ReleaseUnicode" +# PROP Output_Dir "ReleaseUnicode" +# PROP Intermediate_Dir "ReleaseUnicode" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /Gr /MT /W3 /GX /O2 /Ob2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "STRICT" /Yu"pch.h" /FD /c @@ -114,14 +114,14 @@ LINK32=link.exe # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Emu48__0" -# PROP BASE Intermediate_Dir "Emu48__0" +# PROP BASE Output_Dir "DebugUnicode" +# PROP BASE Intermediate_Dir "DebugUnicode" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".\DebugUnicode" -# PROP Intermediate_Dir ".\DebugUnicode" +# PROP Output_Dir "DebugUnicode" +# PROP Intermediate_Dir "DebugUnicode" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "STRICT" /FR /Yu"pch.h" /FD /c @@ -138,7 +138,7 @@ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib shell32.lib winmm.lib comctl32.lib advapi32.lib /nologo /subsystem:windows /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib shell32.lib winmm.lib comctl32.lib advapi32.lib ws2_32.lib /nologo /subsystem:windows /debug /machine:I386 -!ENDIF +!ENDIF # Begin Target @@ -256,6 +256,10 @@ SOURCE=.\settings.c # End Source File # Begin Source File +SOURCE=.\sndenum.c +# End Source File +# Begin Source File + SOURCE=.\sound.c # End Source File # Begin Source File @@ -320,6 +324,10 @@ SOURCE=.\pch.h # End Source File # Begin Source File +SOURCE=.\snddef.h +# End Source File +# Begin Source File + SOURCE=.\types.h # End Source File # End Group diff --git a/Sources/Emu48/EMU48.H b/Sources/Emu48/EMU48.H index ae0209d..4a270a7 100644 --- a/Sources/Emu48/EMU48.H +++ b/Sources/Emu48/EMU48.H @@ -160,6 +160,7 @@ extern UINT nBackgroundH; extern UINT nLcdX; extern UINT nLcdY; extern UINT nLcdZoom; +extern UINT nGdiZoom; extern HDC hLcdDC; extern HDC hMainDC; extern BYTE (*GetLineCounter)(VOID); @@ -361,8 +362,11 @@ extern VOID RPL_Replace(DWORD n); extern VOID RPL_Push(UINT l,DWORD n); // External.c -extern VOID External(CHIPSET* w); -extern VOID RCKBp(CHIPSET* w); +extern VOID External(CHIPSET* w); +extern VOID RCKBp(CHIPSET* w); + +// SndEnum.c +extern VOID SetSoundDeviceList(HWND hWnd,UINT uDeviceID); // Sound.c extern DWORD dwWaveVol; diff --git a/Sources/Emu48/EMU48.RC b/Sources/Emu48/EMU48.RC index ee022ba..54eaf48 100644 --- a/Sources/Emu48/EMU48.RC +++ b/Sources/Emu48/EMU48.RC @@ -106,7 +106,6 @@ BEGIN VERTGUIDE, 14 VERTGUIDE, 147 VERTGUIDE, 154 - VERTGUIDE, 161 VERTGUIDE, 237 TOPMARGIN, 7 BOTTOMMARGIN, 127 @@ -296,7 +295,7 @@ FONT 8, "MS Sans Serif" BEGIN ICON IDI_EMU48,IDC_STATIC,7,6,20,20,SS_REALSIZEIMAGE LTEXT "",IDC_VERSION,29,6,151,8,NOT WS_GROUP - LTEXT "Copyright © 2015 Christoph Gießelink && Sébastien Carlier", + LTEXT "Copyright © 2016 Christoph Gießelink && Sébastien Carlier", IDC_STATIC,29,18,181,8 DEFPUSHBUTTON "OK",IDOK,215,12,39,14 EDITTEXT IDC_LICENSE,7,33,247,112,ES_MULTILINE | ES_AUTOHSCROLL | @@ -365,9 +364,9 @@ FONT 8, "MS Sans Serif" BEGIN LTEXT "Volume",IDC_STATIC,14,21,24,8 CONTROL "Slider1",IDC_SOUND_SLIDER,"msctls_trackbar32", - TBS_AUTOTICKS | WS_TABSTOP,44,16,118,18 + TBS_AUTOTICKS | WS_TABSTOP,44,16,193,18 LTEXT "Device",IDC_STATIC,13,42,24,8 - COMBOBOX IDC_SOUND_DEVICE,44,40,118,87,CBS_DROPDOWNLIST | + COMBOBOX IDC_SOUND_DEVICE,44,40,193,87,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP GROUPBOX "Sound",IDC_STATIC,7,7,237,54 LTEXT "IP Address:",IDC_STATIC,14,81,37,8 @@ -692,8 +691,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,5,7,0 - PRODUCTVERSION 1,5,7,0 + FILEVERSION 1,5,8,0 + PRODUCTVERSION 1,5,8,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -710,12 +709,12 @@ BEGIN BEGIN VALUE "CompanyName", "Christoph Gießelink & Sebastien Carlier\0" VALUE "FileDescription", "HP38/39/40/48/49 Emulator\0" - VALUE "FileVersion", "1, 5, 7, 0\0" + VALUE "FileVersion", "1, 5, 8, 0\0" VALUE "InternalName", "Emu48\0" - VALUE "LegalCopyright", "Copyright © 2015\0" + VALUE "LegalCopyright", "Copyright © 2016\0" VALUE "OriginalFilename", "Emu48.exe\0" VALUE "ProductName", "Emu48\0" - VALUE "ProductVersion", "1, 5, 7, 0\0" + VALUE "ProductVersion", "1, 5, 8, 0\0" END END BLOCK "VarFileInfo" diff --git a/Sources/Emu48/KML.C b/Sources/Emu48/KML.C index d129278..e05d10a 100644 --- a/Sources/Emu48/KML.C +++ b/Sources/Emu48/KML.C @@ -1335,9 +1335,15 @@ static KmlLine* InitLcd(KmlBlock* pBlock) nLcdY = (UINT) pLine->nParam[1]; break; case TOK_ZOOM: - nLcdZoom = (UINT) pLine->nParam[0]; - if (!(nLcdZoom >= 1 && nLcdZoom <= 4)) - nLcdZoom = 1; + if ((nGdiZoom = (UINT) pLine->nParam[0]) == 0) + { + nGdiZoom = 1; // default zoom + } + + // search for memory DC zoom (1-4) + for (nLcdZoom = 4; (nGdiZoom % nLcdZoom) != 0; --nLcdZoom) { }; + _ASSERT(nLcdZoom > 0); // because (nGdiZoom % 1) == 0 + nGdiZoom /= nLcdZoom; // remainder is GDI zoom break; case TOK_COLOR: SetLcdColor((UINT) pLine->nParam[0],(UINT) pLine->nParam[1], @@ -1674,6 +1680,7 @@ VOID KillKML(VOID) nBackgroundW = 256; nBackgroundH = 0; nLcdZoom = 1; + nGdiZoom = 1; dwTColor = (DWORD) -1; dwTColorTol = 0; cCurrentRomType = 0; @@ -1740,20 +1747,21 @@ static DWORD GetIntegerParam(KmlBlock* pBlock, TokenId eBlock, TokenId eCommand, //# //################ -static INT iSqrt(INT nNumber) // integer y=sqrt(x) function +static UINT iSqrt(UINT nNumber) // integer y=sqrt(x) function { - INT m, b = 0, t = nNumber; + UINT b, t; - do + b = t = nNumber; + + if (nNumber > 0) { - m = (b + t + 1) / 2; // median number - if (m * m - nNumber > 0) // calculate x^2-y - t = m; // adjust upper border - else - b = m; // adjust lower border + do + { + b = t; + t = (t + nNumber / t) / 2; // Heron's method + } + while (t < b); } - while (t - b > 1); - return b; } diff --git a/Sources/Emu48/SNDDEF.H b/Sources/Emu48/SNDDEF.H new file mode 100644 index 0000000..500232d --- /dev/null +++ b/Sources/Emu48/SNDDEF.H @@ -0,0 +1,102 @@ +/* + * snddef.h + * + * This file is part of Emu48 + * + * Copyright (C) 2015 Christoph Gießelink + * + */ + +#include + +#if _MSC_VER >= 1600 // valid for VS2010 and later + +#include +#include + +#else // create the necessary definitions manually + +// +// IKsPropertySet +// + +#ifndef _IKsPropertySet_ +#define _IKsPropertySet_ + +#ifdef __cplusplus +struct IKsPropertySet; +#endif // __cplusplus + +typedef struct IKsPropertySet *LPKSPROPERTYSET; + +DEFINE_GUID(IID_IKsPropertySet, 0x31efac30, 0x515c, 0x11d0, 0xa9, 0xaa, 0x00, 0xaa, 0x00, 0x61, 0xbe, 0x93); + +#undef INTERFACE +#define INTERFACE IKsPropertySet + +DECLARE_INTERFACE_(IKsPropertySet, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID*) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IKsPropertySet methods + STDMETHOD(Get) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, + LPVOID pPropertyData, ULONG ulDataLength, PULONG pulBytesReturned) PURE; + STDMETHOD(Set) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, + LPVOID pPropertyData, ULONG ulDataLength) PURE; + STDMETHOD(QuerySupport) (THIS_ REFGUID rguidPropSet, ULONG ulId, PULONG pulTypeSupport) PURE; +}; + +#endif // _IKsPropertySet_ + +// DirectSound Configuration Component GUID {11AB3EC0-25EC-11d1-A4D8-00C04FC28ACA} +DEFINE_GUID(CLSID_DirectSoundPrivate, 0x11ab3ec0, 0x25ec, 0x11d1, 0xa4, 0xd8, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); + +// DirectSound Device Properties {84624F82-25EC-11d1-A4D8-00C04FC28ACA} +DEFINE_GUID(DSPROPSETID_DirectSoundDevice, 0x84624f82, 0x25ec, 0x11d1, 0xa4, 0xd8, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); + +typedef enum +{ + DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_A = 1, + DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_1 = 2, + DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_1 = 3, + DSPROPERTY_DIRECTSOUNDDEVICE_WAVEDEVICEMAPPING_W = 4, + DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A = 5, + DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W = 6, + DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A = 7, + DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W = 8, +} DSPROPERTY_DIRECTSOUNDDEVICE; + +#ifdef UNICODE +#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W +#else // UNICODE +#define DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A +#endif // UNICODE + +typedef enum +{ + DIRECTSOUNDDEVICE_TYPE_EMULATED, + DIRECTSOUNDDEVICE_TYPE_VXD, + DIRECTSOUNDDEVICE_TYPE_WDM +} DIRECTSOUNDDEVICE_TYPE; + +typedef enum +{ + DIRECTSOUNDDEVICE_DATAFLOW_RENDER, + DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE +} DIRECTSOUNDDEVICE_DATAFLOW; + +typedef struct _DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA +{ + DIRECTSOUNDDEVICE_TYPE Type; // Device type + DIRECTSOUNDDEVICE_DATAFLOW DataFlow; // Device dataflow + GUID DeviceId; // DirectSound device id + LPTSTR Description; // Device description + LPTSTR Module; // Device driver module + LPTSTR Interface; // Device interface + ULONG WaveDeviceId; // Wave device id +} DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA, *PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA; + +#endif diff --git a/Sources/Emu48/SNDENUM.C b/Sources/Emu48/SNDENUM.C new file mode 100644 index 0000000..eb9adda --- /dev/null +++ b/Sources/Emu48/SNDENUM.C @@ -0,0 +1,256 @@ +/* + * SndEnum.c + * + * This file is part of Emu48 + * + * Copyright (C) 2015 Christoph Gießelink + * + */ +#include "pch.h" +#include "Emu48.h" +#include "snddef.h" + +typedef HRESULT (WINAPI *LPFNDLLGETCLASSOBJECT)(REFCLSID,REFIID,LPVOID *); +static LPFNDLLGETCLASSOBJECT pfnDllGetClassObject = NULL; + +// +// create a IKsPropertySet interface +// +static __inline HRESULT DirectSoundPrivateCreate(LPKSPROPERTYSET *ppKsPropertySet) +{ + LPCLASSFACTORY pClassFactory = NULL; + HRESULT hr; + + // create a class factory object + #if defined __cplusplus + hr = pfnDllGetClassObject(CLSID_DirectSoundPrivate,IID_IClassFactory,(LPVOID *) &pClassFactory); + #else + hr = pfnDllGetClassObject(&CLSID_DirectSoundPrivate,&IID_IClassFactory,(LPVOID *) &pClassFactory); + #endif + + // create the DirectSoundPrivate object and query for an IKsPropertySet interface + if (SUCCEEDED(hr)) + { + #if defined __cplusplus + hr = pClassFactory->CreateInstance(NULL,IID_IKsPropertySet,(LPVOID *) ppKsPropertySet); + #else + hr = pClassFactory->lpVtbl->CreateInstance(pClassFactory,NULL,&IID_IKsPropertySet,(LPVOID *) ppKsPropertySet); + #endif + } + + if (pClassFactory) // release the class factory object + { + #if defined __cplusplus + pClassFactory->Release(); + #else + pClassFactory->lpVtbl->Release(pClassFactory); + #endif + } + + if (FAILED(hr) && *ppKsPropertySet) // handle failure + { + #if defined __cplusplus + (*ppKsPropertySet)->Release(); + #else + (*ppKsPropertySet)->lpVtbl->Release(*ppKsPropertySet); + #endif + } + return hr; +} + +// +// get the device information about a DirectSound GUID. +// +static BOOL GetInfoFromDSoundGUID(CONST GUID *lpGUID, UINT *puWaveDeviceID) +{ + LPKSPROPERTYSET pKsPropertySet = NULL; + HRESULT hr; + BOOL bSuccess = FALSE; + + hr = DirectSoundPrivateCreate(&pKsPropertySet); + if (SUCCEEDED(hr)) + { + ULONG ulBytesReturned = 0; + + DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA sDirectSoundDeviceDescription; + + ZeroMemory(&sDirectSoundDeviceDescription,sizeof(sDirectSoundDeviceDescription)); + sDirectSoundDeviceDescription.DeviceId = *lpGUID; + + // get the size of the direct sound device description + #if defined __cplusplus + hr = pKsPropertySet->Get( + DSPROPSETID_DirectSoundDevice, + DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION, + NULL, + 0, + &sDirectSoundDeviceDescription, + sizeof(sDirectSoundDeviceDescription), + &ulBytesReturned + ); + #else + hr = pKsPropertySet->lpVtbl->Get(pKsPropertySet, + &DSPROPSETID_DirectSoundDevice, + DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION, + NULL, + 0, + &sDirectSoundDeviceDescription, + sizeof(sDirectSoundDeviceDescription), + &ulBytesReturned + ); + #endif + + if (SUCCEEDED(hr) && ulBytesReturned) + { + PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA psDirectSoundDeviceDescription = NULL; + + // fetch the direct sound device description + psDirectSoundDeviceDescription = (PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA) malloc(ulBytesReturned); + if (psDirectSoundDeviceDescription != NULL) + { + // init structure with data from length request + *psDirectSoundDeviceDescription = sDirectSoundDeviceDescription; + + #if defined __cplusplus + hr = pKsPropertySet->Get( + DSPROPSETID_DirectSoundDevice, + DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION, + NULL, + 0, + psDirectSoundDeviceDescription, + ulBytesReturned, + &ulBytesReturned + ); + #else + hr = pKsPropertySet->lpVtbl->Get(pKsPropertySet, + &DSPROPSETID_DirectSoundDevice, + DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION, + NULL, + 0, + psDirectSoundDeviceDescription, + ulBytesReturned, + &ulBytesReturned + ); + #endif + + if ((bSuccess = SUCCEEDED(hr))) + { + // the requested device ID + *puWaveDeviceID = psDirectSoundDeviceDescription->WaveDeviceId; + } + free(psDirectSoundDeviceDescription); + } + } + + #if defined __cplusplus + pKsPropertySet->Release(); + #else + pKsPropertySet->lpVtbl->Release(pKsPropertySet); + #endif + } + return bSuccess; +} + +// +// callback function for DirectSoundEnumerate() +// +static BOOL CALLBACK DSEnumProc(LPGUID lpGUID,LPCTSTR lpszDesc,LPCTSTR lpszDrvName,LPVOID lpContext) +{ + HWND hWnd = (HWND) lpContext; // window handle of the combo box + + if (lpGUID != NULL) // NULL only for "Primary Sound Driver" + { + UINT uDevID; + + if (GetInfoFromDSoundGUID(lpGUID,&uDevID)) + { + WAVEOUTCAPS woc; + + // has device the necessary capabilities? + if ( waveOutGetDevCaps(uDevID,&woc,sizeof(woc)) == MMSYSERR_NOERROR + && (woc.dwFormats & WAVE_FORMAT_4M08) != 0) + { + // copy product name and wave device ID to combo box + LONG i = (LONG) SendMessage(hWnd,CB_ADDSTRING,0,(LPARAM) lpszDesc); + SendMessage(hWnd,CB_SETITEMDATA,i,uDevID); + } + } + } + return TRUE; + UNREFERENCED_PARAMETER(lpszDrvName); +} + +// set listfield for sound device combo box +VOID SetSoundDeviceList(HWND hWnd,UINT uDeviceID) +{ + typedef BOOL (CALLBACK *LPDSENUMCALLBACK)(LPGUID, LPCTSTR, LPCTSTR, LPVOID); + typedef HRESULT (WINAPI *LPFN_SDE)(LPDSENUMCALLBACK lpDSEnumCallback,LPVOID lpContext); + LPFN_SDE pfnDirectSoundEnumerate = NULL; + + UINT uSelectDevice,uDevID,uDevNo; + + HMODULE hDSound = LoadLibrary(_T("dsound.dll")); + + if (hDSound != NULL) // direct sound dll found + { + #if defined _UNICODE + pfnDirectSoundEnumerate = (LPFN_SDE) GetProcAddress(hDSound,"DirectSoundEnumerateW"); + #else + pfnDirectSoundEnumerate = (LPFN_SDE) GetProcAddress(hDSound,"DirectSoundEnumerateA"); + #endif + pfnDllGetClassObject = (LPFNDLLGETCLASSOBJECT) GetProcAddress(hDSound,"DllGetClassObject"); + } + + SendMessage(hWnd,CB_RESETCONTENT,0,0); + + // preset selector + uSelectDevice = (UINT) SendMessage(hWnd,CB_ADDSTRING,0,(LPARAM) _T("Standard Audio")); + SendMessage(hWnd,CB_SETITEMDATA,uSelectDevice,WAVE_MAPPER); + + // check for direct sound interface functions + if (pfnDirectSoundEnumerate != NULL && pfnDllGetClassObject != NULL) + { + // copy product name and wave device ID to combo box + if (SUCCEEDED(pfnDirectSoundEnumerate((LPDSENUMCALLBACK) DSEnumProc,hWnd))) + { + UINT i; + + uDevNo = (UINT) SendMessage(hWnd,CB_GETCOUNT,0,0); + for (i = 0; i < uDevNo; ++i) + { + // translate device ID to combo box position + uDevID = (UINT) SendMessage(hWnd,CB_GETITEMDATA,i,0); + + if (uDevID == uDeviceID) uSelectDevice = i; + } + } + } + else // direct sound not available, detect over wave capabilities + { + WAVEOUTCAPS woc; + + uDevNo = waveOutGetNumDevs(); + for (uDevID = 0; uDevID < uDevNo; ++uDevID) + { + if ( waveOutGetDevCaps(uDevID,&woc,sizeof(woc)) == MMSYSERR_NOERROR + && (woc.dwFormats & WAVE_FORMAT_4M08) != 0) + { + // copy product name and wave device ID to combo box + LONG i = (LONG) SendMessage(hWnd,CB_ADDSTRING,0,(LPARAM) woc.szPname); + SendMessage(hWnd,CB_SETITEMDATA,i,uDevID); + + if (uDevID == uDeviceID) uSelectDevice = i; + } + } + } + + // activate last selected combo box item + SendMessage(hWnd,CB_SETCURSEL,uSelectDevice,0L); + + if (hDSound != NULL) // direct sound dll loaded + { + pfnDllGetClassObject = NULL; + VERIFY(FreeLibrary(hDSound)); + } + return; +} diff --git a/Sources/Emu48/STACK.C b/Sources/Emu48/STACK.C index 2840687..b709cc1 100644 --- a/Sources/Emu48/STACK.C +++ b/Sources/Emu48/STACK.C @@ -7,7 +7,6 @@ * */ #include "pch.h" -#include "resource.h" #include "Emu48.h" #include "io.h" diff --git a/Sources/GCCPatch/EMU48GCC.RC b/Sources/GCCPatch/EMU48GCC.RC index 6e22004..f6be9ad 100644 --- a/Sources/GCCPatch/EMU48GCC.RC +++ b/Sources/GCCPatch/EMU48GCC.RC @@ -106,7 +106,6 @@ BEGIN VERTGUIDE, 14 VERTGUIDE, 147 VERTGUIDE, 154 - VERTGUIDE, 161 VERTGUIDE, 237 TOPMARGIN, 7 BOTTOMMARGIN, 127 @@ -296,7 +295,7 @@ FONT 8, "MS Sans Serif" BEGIN ICON IDI_EMU48,IDC_STATIC,7,6,20,20,SS_REALSIZEIMAGE LTEXT "",IDC_VERSION,29,6,151,8,NOT WS_GROUP - LTEXT "Copyright © 2015 Christoph Gießelink && Sébastien Carlier", + LTEXT "Copyright © 2016 Christoph Gießelink && Sébastien Carlier", IDC_STATIC,29,18,181,8 DEFPUSHBUTTON "OK",IDOK,215,12,39,14 EDITTEXT IDC_LICENSE,7,33,247,112,ES_MULTILINE | ES_AUTOHSCROLL | @@ -365,9 +364,9 @@ FONT 8, "MS Sans Serif" BEGIN LTEXT "Volume",IDC_STATIC,14,21,24,8 CONTROL "Slider1",IDC_SOUND_SLIDER,"msctls_trackbar32", - TBS_AUTOTICKS | WS_TABSTOP,44,16,118,18 + TBS_AUTOTICKS | WS_TABSTOP,44,16,193,18 LTEXT "Device",IDC_STATIC,13,42,24,8 - COMBOBOX IDC_SOUND_DEVICE,44,40,118,87,CBS_DROPDOWNLIST | + COMBOBOX IDC_SOUND_DEVICE,44,40,193,87,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP GROUPBOX "Sound",IDC_STATIC,7,7,237,54 LTEXT "IP Address:",IDC_STATIC,14,81,37,8 @@ -720,8 +719,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,5,7,0 - PRODUCTVERSION 1,5,7,0 + FILEVERSION 1,5,8,0 + PRODUCTVERSION 1,5,8,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -738,12 +737,12 @@ BEGIN BEGIN VALUE "CompanyName", "Christoph Gießelink & Sebastien Carlier\0" VALUE "FileDescription", "HP38/39/40/48/49 Emulator\0" - VALUE "FileVersion", "1, 5, 7, 0\0" + VALUE "FileVersion", "1, 5, 8, 0\0" VALUE "InternalName", "Emu48\0" - VALUE "LegalCopyright", "Copyright © 2015\0" + VALUE "LegalCopyright", "Copyright © 2016\0" VALUE "OriginalFilename", "Emu48.exe\0" VALUE "ProductName", "Emu48\0" - VALUE "ProductVersion", "1, 5, 7, 0\0" + VALUE "ProductVersion", "1, 5, 8, 0\0" END END BLOCK "VarFileInfo" diff --git a/Sources/GCCPatch/Makefile b/Sources/GCCPatch/Makefile index 64db038..0b636fe 100644 --- a/Sources/GCCPatch/Makefile +++ b/Sources/GCCPatch/Makefile @@ -25,10 +25,11 @@ RSRCOBJ=$(PRJ).o OBJS=cursor.o ddeserv.o debugger.o disasm.o dismem.o display.o disrpl.o \ emu48.o engine.o external.o fetch.o files.o i28f160.o keyboard.o \ keymacro.o kml.o lowbat.o mru.o mops.o opcodes.o redeye.o rpl.o \ - serial.o settings.o sound.o stack.o symbfile.o timer.o udp.o \ + serial.o settings.o sndenum.o sound.o stack.o symbfile.o timer.o \ + udp.o \ $(RSRCOBJ) -LIBS=-lwinmm -lcomctl32 -lws2_32 +LIBS=-lwinmm -lcomctl32 -lws2_32 -luuid all: $(TARGET) @@ -127,10 +128,13 @@ serial.o: serial.c pch.h emu48.h types.h io.h settings.o: settings.c pch.h emu48.h types.h i28f160.h $(CC) $(CFLAGS) $(DEFINES) -c -o settings.o settings.c +sndenum.o: sndenum.c pch.h emu48.h snddef.h + $(CC) $(CFLAGS) $(DEFINES) -c -o sndenum.o sndenum.c + sound.o: sound.c pch.h emu48.h types.h $(CC) $(CFLAGS) $(DEFINES) -c -o sound.o sound.c -stack.o: stack.c pch.h resource.h emu48.h types.h io.h +stack.o: stack.c pch.h emu48.h types.h io.h $(CC) $(CFLAGS) $(DEFINES) -c -o stack.o stack.c symbfile.o: symbfile.c pch.h emu48.h types.h diff --git a/Sources/GCCPatch/README.TXT b/Sources/GCCPatch/README.TXT index 5a21663..8663411 100644 --- a/Sources/GCCPatch/README.TXT +++ b/Sources/GCCPatch/README.TXT @@ -48,4 +48,4 @@ Many thanks to Pedro A. Arranda Guti compatible. -03/13/15 (c) by Christoph Gießelink +06/28/16 (c) by Christoph Gießelink diff --git a/uninst.exe b/uninst.exe index 3e41d59732cd1c014a926b5db874d52130ea0492..e9c5832f0ead94896f5f82f2ebac7cd5ca32311b 100755 GIT binary patch delta 37197 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%0A;tEN(3sM4c>|W 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