]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc1340b9.zip
authorToni Wilen <twilen@winuae.net>
Fri, 29 Dec 2006 18:05:57 +0000 (20:05 +0200)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:31:03 +0000 (21:31 +0200)
newcpu.c
od-win32/sounddep/sound.c
od-win32/srcrelease.bat
od-win32/win32.c
od-win32/win32.h
od-win32/win32gui.c
od-win32/winuae_msvc/winuae_msvc.vcproj
od-win32/winuaechangelog.txt

index 8e482481dc017dd05021be05420cc83c89fbc467..2b412e2069981031eb3135221bb8f88774ad8a6d 100755 (executable)
--- a/newcpu.c
+++ b/newcpu.c
@@ -1651,7 +1651,7 @@ static void do_trace (void)
     }
 }
 
-#define IDLETIME (currprefs.cpu_idle * sleep_resolution / 1000)
+#define IDLETIME (currprefs.cpu_idle * sleep_resolution / 700)
 
 STATIC_INLINE int do_specialties (int cycles, struct regstruct *regs)
 {
index ee57b6c1e41b41a63b071671d3cbc6f9f66df4c4..ff7b8974b8e7621c13567cbcd6c66dd6c9a46e33 100755 (executable)
@@ -132,9 +132,15 @@ static void cleardsbuffer (void)
 
 static void pause_audio_ds (void)
 {
+    HRESULT hr;
+
     waiting_for_buffer = 0;
-    IDirectSoundBuffer_Stop (lpDSBsecondary);
-    IDirectSoundBuffer_SetCurrentPosition (lpDSBsecondary, 0);
+    hr = IDirectSoundBuffer_Stop (lpDSBsecondary);
+    if (FAILED(hr))
+       write_log("SOUND: DirectSoundBuffer_Stop failed, %s\n", DXError(hr));
+    hr = IDirectSoundBuffer_SetCurrentPosition (lpDSBsecondary, 0);
+    if (FAILED(hr))
+       write_log("SOUND: DirectSoundBuffer_SetCurretPosition failed, %s\n", DXError(hr));
     cleardsbuffer ();
 }
 
@@ -150,7 +156,7 @@ static int restore (DWORD hr)
     if (hr != DSERR_BUFFERLOST)
        return 0;
     if (sound_debug)
-       write_log ("sound buffer lost\n");
+       write_log ("SOUND: sound buffer lost\n");
     hr = IDirectSoundBuffer_Restore (lpDSBsecondary);
     if (FAILED(hr)) {
        write_log ("SOUND: restore failed %s\n", DXError (hr));
@@ -173,19 +179,6 @@ static double getqpf (void)
     return (qpfc2.QuadPart - qpfc.QuadPart) / (qpf.QuadPart / 1000.0);
 }
 
-static int getpos (void)
-{
-    DWORD playpos, safepos;
-    HRESULT hr;
-
-    hr = IDirectSoundBuffer_GetCurrentPosition (lpDSBsecondary, &playpos, &safepos);
-    if (FAILED(hr)) {
-       write_log ("SOUND: GetCurrentPosition failed: %s\n", DXError (hr));
-       return -1;
-    }
-    return playpos;
-}
-
 static void close_audio_ds (void)
 {
     waiting_for_buffer = 0;
@@ -216,9 +209,16 @@ 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;
+    snd_maxoffset = max_sndbufsize;
+    snd_totalmaxoffset_of = max_sndbufsize + (dsoundbuf - max_sndbufsize) * 3 / 9;
+    snd_totalmaxoffset_uf = max_sndbufsize + (dsoundbuf - max_sndbufsize) * 7 / 9;
+}
+       
 const static GUID KSDATAFORMAT_SUBTYPE_PCM = {0x00000001,0x0000,0x0010,
-{0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71}};
+    {0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71}};
 
 static int open_audio_ds (int size)
 {
@@ -256,10 +256,7 @@ static int open_audio_ds (int size)
     if (max_sndbufsize * 2 > dsoundbuf)
         max_sndbufsize = dsoundbuf / 2;
 
-    snd_writeoffset = max_sndbufsize * 5 / 8;
-    snd_maxoffset = max_sndbufsize;
-    snd_totalmaxoffset_of = max_sndbufsize + (dsoundbuf - max_sndbufsize) * 3 / 9;
-    snd_totalmaxoffset_uf = max_sndbufsize + (dsoundbuf - max_sndbufsize) * 7 / 9;
+    recalc_offsets();
 
     memset (&wavfmt, 0, sizeof (WAVEFORMATEXTENSIBLE));
     wavfmt.Format.nChannels = (currprefs.sound_stereo == 3 || currprefs.sound_stereo == 2) ? 4 : (currprefs.sound_stereo ? 2 : 1);
@@ -508,9 +505,11 @@ void restart_sound_buffer(void)
     if (waiting_for_buffer != -1)
        return;
     hr = IDirectSoundBuffer_GetCurrentPosition (lpDSBsecondary, &playpos, &safed);
-    if (FAILED(hr))
+    if (FAILED(hr)) {
+       write_log("SOUND: DirectSoundBuffer_GetCurrentPosition failed, %s\n", DXError(hr));
        return;
-    writepos = playpos + snd_writeoffset - 2 * sndbufsize;
+    }
+    writepos = playpos + snd_writeoffset - sndbufsize;
     if (writepos < 0)
        writepos += dsoundbuf;
     cf (writepos);
@@ -524,7 +523,7 @@ static void finish_sound_buffer_ds (void)
     void *b1, *b2;
     DWORD s1, s2;
     int diff;
-    int counter = 1000;
+    int counter;
     double vdiff, m, skipmode;
     static int statuscnt;
 
@@ -549,19 +548,31 @@ static void finish_sound_buffer_ds (void)
            waiting_for_buffer = 0;
            return;
        }
-       hr = IDirectSoundBuffer_GetCurrentPosition (lpDSBsecondary, &playpos, &safedist);
+       hr = IDirectSoundBuffer_SetCurrentPosition (lpDSBsecondary, 0);
        if (FAILED(hr)) {
-           write_log ("SOUND: 1st GetCurrentPosition failed: %s\n", DXError (hr));
+           write_log ("SOUND: 1st SetCurrentPosition failed: %s\n", DXError (hr));
            restore (DSERR_BUFFERLOST);
            waiting_for_buffer = 0;
            return;
        }
+       /* there are crappy drivers that return PLAYCURSOR = WRITECURSOR = 0 without this.. */
+       counter = 5000;
+       for (;;) {
+           hr = IDirectSoundBuffer_GetCurrentPosition (lpDSBsecondary, &playpos, &safedist);
+           if (playpos > 0)
+               break;
+           sleep_millis(1);
+           counter--;
+           if (counter < 0) {
+               write_log("SOUND: stuck?!?!\n");
+               break;
+           }
+       }
+       write_log("SOUND: %d = (%d - %d)\n", safedist - playpos, safedist, playpos);
+       recalc_offsets();
        safedist -= playpos;
        if (safedist < 64)
            safedist = 64;
-       safedist += sndbufsize;
-       if (safedist < 0)
-           safedist += dsoundbuf;
        cf(safedist);
        snd_totalmaxoffset_uf += safedist;
        cf (snd_totalmaxoffset_uf);
@@ -573,13 +584,14 @@ static void finish_sound_buffer_ds (void)
        cf (snd_writeoffset);
        waiting_for_buffer = -1;
        restart_sound_buffer();
-       write_log("SOUND: safe=%d bs=%d w=%d max=%d tof=%d tuf=%d\n",
-           safedist - sndbufsize, sndbufsize, snd_writeoffset,
+       write_log("SOUND: bs=%d w=%d max=%d tof=%d tuf=%d\n",
+           sndbufsize, snd_writeoffset,
            snd_maxoffset, snd_totalmaxoffset_of, snd_totalmaxoffset_uf);
        tfprev = timeframes + 10;
        tfprev = (tfprev / 10) * 10;
     }
 
+    counter = 5000;
     hr = IDirectSoundBuffer_GetStatus (lpDSBsecondary, &status);
     if (FAILED(hr)) {
        write_log ("SOUND: GetStatus() failed: %s\n", DXError(hr));
@@ -603,7 +615,6 @@ static void finish_sound_buffer_ds (void)
            write_log ("SOUND: GetCurrentPosition failed: %s\n", DXError (hr));
            return;
        }
-
        if (writepos >= playpos)
            diff = writepos - playpos;
        else
index 9df918f96aee62f617db90b44f8491b049f2dc55..fe4bcfecf1b57e6949a1521a60d7377ecb247b45 100755 (executable)
@@ -71,6 +71,7 @@ rm -rf release
 rm -rf debug64
 rm -rf release64
 rm -rf x64
+rm -rf fullrelease
 rm -rf _UpgradeReport_Files
 cd ..
 
@@ -95,5 +96,5 @@ zip -9 -r winuaesrc *
 copy winuaesrc.zip d:\amiga\winuaepackets\winuaesrc%1.zip
 move winuaesrc.zip d:\amiga
 cd c:\projects\winuae\src\od-win32
-zip -9 winuaedebug%1 winuae_msvc\release\winuae.pdb
+zip -9 winuaedebug%1 winuae_msvc\release\winuae.pdb winuae_msvc\fullrelease\winuae.pdb
 move winuaedebug%1.zip d:\amiga\winuaepackets\
index b019679c89f911f7531c0b3fc42afed0693db9e2..e534a80f2ddc4b857d0eaeed225d3b83969a6acf 100755 (executable)
@@ -2698,13 +2698,16 @@ static int PASCAL WinMain2 (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
     AVIOutput_Initialize();
 #endif
 
-    argv = xcalloc (sizeof (char*),  __argc);
-    argc = process_arg(argv);
-
     getstartpaths(start_data);
     makeverstr(VersionStr);
     SetCurrentDirectory (start_path_data);
 
+    if (!os_winnt && max_allowed_mman > 256)
+       max_allowed_mman = 256;
+
+    argv = xcalloc (sizeof (char*),  __argc);
+    argc = process_arg(argv);
+
     logging_init ();
 
     if(WIN32_RegisterClasses() && WIN32_InitLibraries() && DirectDraw_Start(NULL)) {
index d200f4462d3c85750425c35c0d0580e49b04b7c4..9b08def341c7960c4a5835eaf5555c25c11ba8b6 100755 (executable)
@@ -15,7 +15,7 @@
 #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100)
 #define GETBDD(x) ((x) % 100)
 
-#define WINUAEBETA 8
+#define WINUAEBETA 9
 #define WINUAEPUBLICBETA 1
 #define WINUAEDATE MAKEBD(2006, 12, 29)
 
index 155c0532b1668d2a4f0793fdca2b19d9bcdc1a43..b8e51adc6dab2f8810c35d55a3f4bf31c700fed2 100755 (executable)
@@ -367,7 +367,7 @@ static HWND cachedlist = NULL;
 #define MIN_SLOW_MEM 0
 #define MAX_SLOW_MEM 4
 #define MIN_Z3_MEM 0
-#define MAX_Z3_MEM ((max_z3fastmem >> 20) < 1024 ? 10 : ((max_z3fastmem >> 20) < 2048) ? 11 : 12)
+#define MAX_Z3_MEM ((max_z3fastmem >> 20) < 512 ? 9 : ((max_z3fastmem >> 20) < 1024 ? 10 : ((max_z3fastmem >> 20) < 2048) ? 11 : 12))
 #define MIN_P96_MEM 0
 #define MAX_P96_MEM 7
 #define MIN_M68K_PRIORITY 1
@@ -966,7 +966,7 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs
        
     }
 
-    openFileName.lStructSize = sizeof (OPENFILENAME);
+    openFileName.lStructSize = os_winnt ? sizeof (OPENFILENAME) : OPENFILENAME_SIZE_VERSION_400;
     openFileName.hwndOwner = hDlg;
     openFileName.hInstance = hInst;
     
@@ -1136,10 +1136,10 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs
        openFileName.Flags |= OFN_ALLOWMULTISELECT;
     if (flag == 1 || flag == 3 || flag == 5 || flag == 9 || flag == 11 || flag == 16) {
        if (!(result = GetSaveFileName (&openFileName)))
-           write_log ("GetSaveFileName() failed.\n");
+           write_log ("GetSaveFileName() failed, err=%d.\n", GetLastError());
     } else {
        if (!(result = GetOpenFileName (&openFileName)))
-           write_log ("GetOpenFileName() failed.\n");
+           write_log ("GetOpenFileName() failed, err=%d.\n", GetLastError());
     }
     memcpy (full_path2, full_path, sizeof (full_path));
     next = 0;
index 216bc00d0ff5680c75565383d8a2ec46daaf6db4..5949147c375b104927dc064a2e06dbaf188795a4 100755 (executable)
                                TreatWChar_tAsBuiltInType="false"
                                RuntimeTypeInfo="false"
                                UsePrecompiledHeader="0"
-                               PrecompiledHeaderFile=".\Release/winuae_msvc.pch"
-                               AssemblerListingLocation=".\Release/"
-                               ObjectFile=".\Release/"
-                               ProgramDataBaseFileName=".\Release/"
+                               PrecompiledHeaderFile=".\FullRelease/winuae_msvc.pch"
+                               AssemblerListingLocation=".\FullRelease/"
+                               ObjectFile=".\FullRelease/"
+                               ProgramDataBaseFileName=".\FullRelease/"
                                WarningLevel="3"
                                SuppressStartupBanner="true"
                                CompileAs="0"
                                AdditionalManifestDependencies=""
                                DelayLoadDLLs="setupapi.dll"
                                GenerateDebugInformation="true"
-                               ProgramDatabaseFile=".\Release/winuae.pdb"
+                               ProgramDatabaseFile=".\FullRelease/winuae.pdb"
                                SubSystem="2"
                                StackReserveSize="2621440"
                                StackCommitSize="2621440"
index 391a8e8eb2ebe48a449b21fee201fe85efde469f..5392a4e54f38c02cf6e7774b894f7b68040ad025 100755 (executable)
@@ -2,6 +2,9 @@
 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 :)
 
 Beta 8: (RC3, really final?)