From 1194259fbb5ac3737f1a8b5cbd14223a76bb204b Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 30 Dec 2006 21:59:53 +0200 Subject: [PATCH] imported winuaesrc1340.zip --- od-win32/WinUAE_Install.nsi | 4 +- od-win32/makeexe.bat | 26 +++++----- od-win32/sounddep/sound.c | 99 ++++++++++++++++++++++-------------- od-win32/srcrelease.bat | 6 +++ od-win32/win32.c | 9 ++-- od-win32/win32.h | 6 +-- od-win32/win32gui.c | 4 +- od-win32/winuaechangelog.txt | 3 +- 8 files changed, 94 insertions(+), 63 deletions(-) diff --git a/od-win32/WinUAE_Install.nsi b/od-win32/WinUAE_Install.nsi index 608d44ff..d19604ab 100755 --- a/od-win32/WinUAE_Install.nsi +++ b/od-win32/WinUAE_Install.nsi @@ -1,5 +1,5 @@ !define PRODUCT_NAME "WinUAE" -!define PRODUCT_VERSION "1.3.3" +!define PRODUCT_VERSION "1.3.4" !define PRODUCT_PUBLISHER "Toni Wilen" !define PRODUCT_WEB_SITE "http://www.winuae.net/" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\winuae.exe" @@ -7,7 +7,7 @@ !define PRODUCT_UNINST_ROOT_KEY "HKLM" ;-- Your path here -!define DISTPATH "d:\projects\winuae\distribution" +!define DISTPATH "c:\projects\winuae\distribution" SetCompressor lzma diff --git a/od-win32/makeexe.bat b/od-win32/makeexe.bat index c58d8cbb..1a476fa6 100755 --- a/od-win32/makeexe.bat +++ b/od-win32/makeexe.bat @@ -1,19 +1,17 @@ del *.zip -copy f:\amiga\winuae.exe d:\projects\winuae\distribution -copy resourcedll\release\resourcedll.dll f:\amiga\WinUAE_default.dll -"d:\winutils\NSIS\makensis.exe" winuae_install -cd d:\projects\winuae\distribution -copy docs\windows\translation.txt f:\amiga -zip -9 -r d:\projects\winuae\src\od-win32\winuae.zip * -cd d:\projects\winuae\src\od-win32 -copy installwinuae.exe f:\amiga\InstallWinUAE%1.exe -copy winuae.zip f:\amiga\WinUAE%1.zip -cdd f:\amiga +copy d:\amiga\winuae.exe c:\projects\winuae\distribution +"c:\program files (x86)\NSIS\makensis.exe" winuae_install +cd c:\projects\winuae\distribution +copy docs\windows\translation.txt d:\amiga +zip -9 -r c:\projects\winuae\src\od-win32\winuae.zip * +cd c:\projects\winuae\src\od-win32 +copy installwinuae.exe d:\amiga\InstallWinUAE%1.exe +copy winuae.zip d:\amiga\WinUAE%1.zip +cdd d:\amiga zip -9 WinUAE%1_translation WinUAE_default.dll translation.txt -del WinUAE_default.dll del translation.txt rem zip -9 WinUAEMini%1 winuae_mini.exe -cdd d:\projects\winuae\src\od-win32 -zip -9 winuaedebug%1 winuae_msvc\release\winuae.pdb -copy winuaedebug%1.zip f:\amiga\winuaepackets +cdd c:\projects\winuae\src\od-win32 +zip -9 winuaedebug%1 winuae_msvc\release\winuae.pdb winuae_msvc\fullrelease\winuae.pdb +copy winuaedebug%1.zip d:\amiga\winuaepackets del *.zip diff --git a/od-win32/sounddep/sound.c b/od-win32/sounddep/sound.c index 96145804..fafbfab5 100755 --- a/od-win32/sounddep/sound.c +++ b/od-win32/sounddep/sound.c @@ -68,7 +68,9 @@ static char *sound_devices[MAX_SOUND_DEVICES]; GUID sound_device_guid[MAX_SOUND_DEVICES]; static int num_sound_devices; +#ifdef USE_PRIMARY_BUFFER static LPDIRECTSOUNDBUFFER lpDSBprimary; +#endif #define USE_DS8 #ifdef USE_DS8 @@ -184,10 +186,12 @@ static void close_audio_ds (void) waiting_for_buffer = 0; if (lpDSBsecondary) IDirectSound_Release (lpDSBsecondary); + lpDSBsecondary = 0; +#ifdef USE_PRIMARY_BUFFER if (lpDSBprimary) IDirectSound_Release (lpDSBprimary); - lpDSBsecondary = 0; lpDSBprimary = 0; +#endif if (lpDS) { IDirectSound_Release (lpDS); write_log ("SOUND: DirectSound driver freed\n"); @@ -209,6 +213,7 @@ static void setvolume (void) write_log ("SOUND: SetVolume(%d) failed: %s\n", vol, DXError (hr)); setvolume_ahi (vol); } + static void recalc_offsets(void) { snd_writeoffset = max_sndbufsize * 5 / 8; @@ -225,17 +230,21 @@ static int open_audio_ds (int size) HRESULT hr; DSBUFFERDESC sound_buffer; DSCAPS DSCaps; +#ifdef USE_PRIMARY_BUFFER DSBCAPS DSBCaps; +#endif WAVEFORMATEXTENSIBLE wavfmt; - int freq = currprefs.sound_freq; LPDIRECTSOUNDBUFFER pdsb; - + int freq = currprefs.sound_freq; + int ch = (currprefs.sound_stereo == 3 || currprefs.sound_stereo == 2) ? 4 : (currprefs.sound_stereo ? 2 : 1); + int round; + enumerate_sound_devices (0); - if (currprefs.sound_stereo == 3) { + if (ch == 4) { size <<= 3; } else { size <<= 1; - if (currprefs.sound_stereo) + if (ch == 2) size <<= 1; } snd_configsize = size; @@ -258,24 +267,6 @@ static int open_audio_ds (int size) recalc_offsets(); - memset (&wavfmt, 0, sizeof (WAVEFORMATEXTENSIBLE)); - wavfmt.Format.nChannels = (currprefs.sound_stereo == 3 || currprefs.sound_stereo == 2) ? 4 : (currprefs.sound_stereo ? 2 : 1); - wavfmt.Format.wFormatTag = wavfmt.Format.nChannels > 2 ? WAVE_FORMAT_EXTENSIBLE : WAVE_FORMAT_PCM; - wavfmt.Format.nSamplesPerSec = freq; - wavfmt.Format.wBitsPerSample = 16; - wavfmt.Format.nBlockAlign = wavfmt.Format.wBitsPerSample / 8 * wavfmt.Format.nChannels; - wavfmt.Format.nAvgBytesPerSec = wavfmt.Format.nBlockAlign * wavfmt.Format.nSamplesPerSec; - if (wavfmt.Format.nChannels > 2) { - wavfmt.Format.cbSize = sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX); - wavfmt.SubFormat = KSDATAFORMAT_SUBTYPE_PCM; - wavfmt.Samples.wValidBitsPerSample = 16; - wavfmt.dwChannelMask = KSAUDIO_SPEAKER_QUAD; - } - - write_log ("SOUND: '%s'/%d/%d bits/%d Hz/buffer %d/dist %d\n", - sound_devices[currprefs.win32_soundcard], - wavfmt.Format.nChannels, 16, freq, max_sndbufsize, snd_configsize); - #ifdef USE_DS8 hr = DirectSoundCreate8 (&sound_device_guid[currprefs.win32_soundcard], &lpDS, NULL); #else @@ -316,7 +307,8 @@ static int open_audio_ds (int size) write_log("SOUND: maximum supported frequency: %d\n", maxfreq); } } - + +#if 0 memset (&sound_buffer, 0, sizeof (sound_buffer)); sound_buffer.dwSize = sizeof (sound_buffer); sound_buffer.dwFlags = DSBCAPS_PRIMARYBUFFER; @@ -339,24 +331,57 @@ static int open_audio_ds (int size) write_log ("SOUND: Primary SetFormat() failure: %s\n", DXError (hr)); goto error; } +#endif - memset (&sound_buffer, 0, sizeof (sound_buffer)); - sound_buffer.dwSize = sizeof (sound_buffer); - sound_buffer.dwBufferBytes = dsoundbuf; - sound_buffer.lpwfxFormat = &wavfmt.Format; - sound_buffer.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_GLOBALFOCUS; - sound_buffer.dwFlags |= DSBCAPS_CTRLVOLUME | DSBCAPS_LOCSOFTWARE; - sound_buffer.guid3DAlgorithm = GUID_NULL; + round = 0; + for (;;) { + int extend = round > 0 && ch > 2; + + memset (&wavfmt, 0, sizeof (WAVEFORMATEXTENSIBLE)); + wavfmt.Format.nChannels = ch; + wavfmt.Format.wFormatTag = extend ? WAVE_FORMAT_EXTENSIBLE : WAVE_FORMAT_PCM; + wavfmt.Format.nSamplesPerSec = freq; + wavfmt.Format.wBitsPerSample = 16; + wavfmt.Format.nBlockAlign = wavfmt.Format.wBitsPerSample / 8 * wavfmt.Format.nChannels; + wavfmt.Format.nAvgBytesPerSec = wavfmt.Format.nBlockAlign * wavfmt.Format.nSamplesPerSec; + if (extend) { + wavfmt.Format.cbSize = sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX); + wavfmt.SubFormat = KSDATAFORMAT_SUBTYPE_PCM; + wavfmt.Samples.wValidBitsPerSample = 16; + wavfmt.dwChannelMask = round == 1 ? SPEAKER_ALL : KSAUDIO_SPEAKER_QUAD; + } - hr = IDirectSound_CreateSoundBuffer(lpDS, &sound_buffer, &pdsb, NULL); - if (FAILED(hr)) { - write_log ("SOUND: Secondary CreateSoundBuffer() failure: %s\n", DXError (hr)); - goto error; + write_log ("SOUND: %s:%d '%s'/%d/%d bits/%d Hz/buffer %d/dist %d\n", + extend ? "EXT" : "PCM", round, + sound_devices[currprefs.win32_soundcard], + wavfmt.Format.nChannels, 16, freq, max_sndbufsize, snd_configsize); + + memset (&sound_buffer, 0, sizeof (sound_buffer)); + sound_buffer.dwSize = sizeof (sound_buffer); + sound_buffer.dwBufferBytes = dsoundbuf; + sound_buffer.lpwfxFormat = &wavfmt.Format; + sound_buffer.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_GLOBALFOCUS; + sound_buffer.dwFlags |= DSBCAPS_CTRLVOLUME | DSBCAPS_LOCSOFTWARE; + sound_buffer.guid3DAlgorithm = GUID_NULL; + + hr = IDirectSound_CreateSoundBuffer(lpDS, &sound_buffer, &pdsb, NULL); + if (FAILED(hr)) { + write_log ("SOUND: Secondary CreateSoundBuffer() failure: %s\n", DXError (hr)); + if (ch <= 2) + goto error; + if (round < 3) { + round++; + continue; + } + goto error; + } + break; } + #ifdef USE_DS8 hr = IDirectSound_QueryInterface(pdsb, &IID_IDirectSoundBuffer8, (LPVOID*)&lpDSBsecondary); if (FAILED(hr)) { - write_log ("SOUND: Primary QueryInterface() failure: %s\n", DXError (hr)); + write_log ("SOUND: Secondary QueryInterface() failure: %s\n", DXError (hr)); goto error; } IDirectSound_Release(pdsb); @@ -747,7 +772,7 @@ void finish_sound_buffer (void) finish_sound_buffer_ds (); } -static BOOL CALLBACK DSEnumProc(LPGUID lpGUID, LPCTSTR lpszDesc, LPCTSTR lpszDrvName, LPVOID lpContext) +static BOOL CALLBACK DSEnumProc(LPGUID lpGUID, LPCTSTR lpszDesc, LPCTSTR lpszDrvName, LPVOID lpContext) { int i = num_sound_devices; if (i == MAX_SOUND_DEVICES) diff --git a/od-win32/srcrelease.bat b/od-win32/srcrelease.bat index fe4bcfec..f0598a46 100755 --- a/od-win32/srcrelease.bat +++ b/od-win32/srcrelease.bat @@ -89,6 +89,12 @@ cd resourcedll rm -rf debug rm -rf release cd .. + +cd fdrawcmd +rm -rf debug +rm -rf release +cd .. + cd .. zip -9 -r winuaesrc * diff --git a/od-win32/win32.c b/od-win32/win32.c index e534a80f..604839eb 100755 --- a/od-win32/win32.c +++ b/od-win32/win32.c @@ -2200,7 +2200,7 @@ static void WIN32_HandleRegistryStuff(void) load_keyring(NULL, NULL); } -#ifdef WINUAEPUBLICBETA +#if WINUAEPUBLICBETA > 0 static char *BETAMESSAGE = { "This is unstable beta software. Click cancel if you are not comfortable using software that is incomplete and can have serious programming errors." }; @@ -2208,7 +2208,7 @@ static char *BETAMESSAGE = { static int betamessage (void) { -#ifdef WINUAEPUBLICBETA +#if WINUAEPUBLICBETA > 0 int showmsg = TRUE; HANDLE h = INVALID_HANDLE_VALUE; ULONGLONG regft64; @@ -2554,9 +2554,12 @@ static void makeverstr(char *s) #if WINUAEBETA > 0 sprintf(BetaStr, " (%sBeta %d, %d.%02d.%02d)", WINUAEPUBLICBETA > 0 ? "Public " : "", WINUAEBETA, GETBDY(WINUAEDATE), GETBDM(WINUAEDATE), GETBDD(WINUAEDATE)); -#endif sprintf(s, "WinUAE %d.%d.%d%s", UAEMAJOR, UAEMINOR, UAESUBREV, BetaStr); +#else + sprintf(s, "WinUAE %d.%d.%d (%d.%02d.%02d)", + UAEMAJOR, UAEMINOR, UAESUBREV, GETBDY(WINUAEDATE), GETBDM(WINUAEDATE), GETBDD(WINUAEDATE)); +#endif } static int multi_display = 1; diff --git a/od-win32/win32.h b/od-win32/win32.h index 9b08def3..80b87093 100755 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -15,9 +15,9 @@ #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100) #define GETBDD(x) ((x) % 100) -#define WINUAEBETA 9 -#define WINUAEPUBLICBETA 1 -#define WINUAEDATE MAKEBD(2006, 12, 29) +#define WINUAEBETA 0 +#define WINUAEPUBLICBETA 0 +#define WINUAEDATE MAKEBD(2006, 12, 30) #define IHF_WINDOWHIDDEN 6 #define NORMAL_WINDOW_STYLE (WS_VISIBLE | WS_BORDER | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU) diff --git a/od-win32/win32gui.c b/od-win32/win32gui.c index b8e51adc..6bf74674 100755 --- a/od-win32/win32gui.c +++ b/od-win32/win32gui.c @@ -2724,7 +2724,7 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM recursive++; pages[PATHS_ID] = hDlg; currentpage = PATHS_ID; -#if !WINUAEBETA +#if WINUAEBETA == 0 ShowWindow (GetDlgItem (hDlg, IDC_RESETREGISTRY), FALSE); #endif numtypes = 0; @@ -7981,7 +7981,7 @@ static INT_PTR CALLBACK hw3dDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM l switch (msg) { case WM_INITDIALOG: -#if !WINUAEBETA +#if WINUAEBETA == 0 ShowWindow (GetDlgItem(hDlg, IDC_FILTERAUTORES), SW_HIDE); #endif pages[HW3D_ID] = hDlg; diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index 97a2b9a2..a922cddd 100755 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -3,8 +3,7 @@ Beta 9: - interrupt timing tweak (Gravity Force in ce-mode) - CPU Idle tweak (slightly less aggressive) -- file dialogs work again in Windows9X/ME.. Apparently - nobody is using 9x anymore, I like it :) +- file dialogs work again in Windows9X/ME.. - sound problems really fixed now Beta 8: (RC3, really final?) -- 2.47.3