]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc1600b18b.zip
authorToni Wilen <twilen@winuae.net>
Tue, 24 Mar 2009 22:21:25 +0000 (00:21 +0200)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:45:26 +0000 (21:45 +0200)
audio.c
cfgfile.c
main.c
od-win32/debug_win32.c
od-win32/fsdb_win32.c
od-win32/registry.c
od-win32/win32.c
od-win32/win32.h
od-win32/win32gui.c
od-win32/winuaechangelog.txt

diff --git a/audio.c b/audio.c
index 2bc8f731ac0baa18eed098b9f68fdea97999126a..9309066c50e6f1f8b18b8d1d9fb525a6c53df4de 100644 (file)
--- a/audio.c
+++ b/audio.c
@@ -1025,7 +1025,7 @@ static void audio_event_reset (void)
     next_sample_evtime = scaled_sample_evtime;
     for (i = 0; i < 4; i++) {
        struct audio_channel_data *cdp = audio_channel + i;
-       zerostate(cdp);
+       zerostate (cdp);
     }
     schedule_audio ();
     events_schedule ();
@@ -1037,8 +1037,9 @@ static void audio_deactivate (void)
        return;
     gui_data.sndbuf_status = 3;
     gui_data.sndbuf = 0;
-    clear_sound_buffers();
-    audio_event_reset();
+    reset_sound ();
+    clear_sound_buffers ();
+    audio_event_reset ();
 }
 
 int audio_activate (void)
index d1ce40f0e16f910c73a888d014ff938248075f0a..ecda35ad2ddea86aeef6d05b5d5416988cd8fc94 100644 (file)
--- a/cfgfile.c
+++ b/cfgfile.c
@@ -1897,7 +1897,6 @@ static int cfgfile_separate_linea (char *line, TCHAR *line1b, TCHAR *line2b)
     } else {
         au_copy (line2b, MAX_DPATH, line2);
     }
-
     return 1;
 }
 
@@ -1927,6 +1926,16 @@ static int cfgfile_separate_line (TCHAR *line, TCHAR *line1b, TCHAR *line2b)
        line[--i] = '\0';
     line += _tcsspn (line, L"\t \r\n");
     _tcscpy (line1b, line);
+
+    if (line2b[0] == '"' || line2b[0] == '\"') {
+       TCHAR c = line2b[0];
+       int i = 0;
+       memmove (line2b, line2b + 1, (_tcslen (line2b) + 1) * sizeof (TCHAR));
+       while (line2b[i] != 0 && line2b[i] != c)
+           i++;
+       line2b[i] = 0;
+    }
+
     if (isutf8ext (line1b))
        return 0;
     return 1;
diff --git a/main.c b/main.c
index 0d68a8d5e3f5d6d61bf34dfd774e67d55f1ff8a3..448fb731edab0d3cf5a41ac20a55593816d94cff 100644 (file)
--- a/main.c
+++ b/main.c
@@ -433,7 +433,9 @@ static void parse_cmdline_2 (int argc, TCHAR **argv)
 
     cfgfile_addcfgparam (0);
     for (i = 1; i < argc; i++) {
-       if (_tcscmp (argv[i], L"-cfgparam") == 0) {
+       if (_tcsncmp (argv[i], L"-cfgparam=", 10) == 0) {
+           cfgfile_addcfgparam (argv[i] + 10);
+       } else if (_tcscmp (argv[i], L"-cfgparam") == 0) {
            if (i + 1 == argc)
                write_log (L"Missing argument for '-cfgparam' option.\n");
            else
@@ -463,22 +465,48 @@ static void parse_diskswapper (TCHAR *s)
     free (tmp);
 }
 
+static TCHAR *parsetext (const TCHAR *s)
+{
+    if (*s == '"' || *s == '\'') {
+       TCHAR *d;
+       TCHAR c = *s++;
+       int i;
+       d = my_strdup (s);
+       for (i = 0; i < _tcslen (d); i++) {
+           if (d[i] == c) {
+               d[i] = 0;
+               break;
+           }
+       }
+       return d;
+    } else {
+       return my_strdup (s);
+    }
+}
+
 static void parse_cmdline (int argc, TCHAR **argv)
 {
     int i;
 
     for (i = 1; i < argc; i++) {
        if (!_tcsncmp (argv[i], L"-diskswapper=", 13)) {
-           parse_diskswapper (argv[i] + 13);
+           TCHAR *txt = parsetext (argv[i] + 13);
+           parse_diskswapper (txt);
+           xfree (txt);
        } else if (_tcscmp (argv[i], L"-cfgparam") == 0) {
            if (i + 1 < argc)
                i++;
        } else if (_tcsncmp (argv[i], L"-config=", 8) == 0) {
+           TCHAR *txt = parsetext (argv[i] + 8);
            currprefs.mountitems = 0;
-           target_cfgfile_load (&currprefs, argv[i] + 8, -1, 1);
+           target_cfgfile_load (&currprefs, txt, -1, 1);
+           xfree (txt);
        } else if (_tcsncmp (argv[i], L"-statefile=", 11) == 0) {
+           TCHAR *txt = parsetext (argv[i] + 11);
+           write_log (L"%s\n", txt);
            savestate_state = STATE_DORESTORE;
-           _tcscpy (savestate_fname, argv[i] + 11);
+           _tcscpy (savestate_fname, txt);
+           xfree (txt);
        } else if (_tcscmp (argv[i], L"-f") == 0) {
            /* Check for new-style "-f xxx" argument, where xxx is config-file */
            if (i + 1 == argc) {
index 6f9e91814b3be77f58dbccf4cbe16c456e3a713a..5420f47bcc5ef5960022b7c034dce60090d5c049 100644 (file)
@@ -42,8 +42,8 @@ static HWND hedit = 0;
 extern int consoleopen;
 BOOL debuggerinitializing = FALSE;
 
-extern uae_u32 get_fpsr();
-extern void set_fpsr(uae_u32 x);
+extern uae_u32 get_fpsr (void);
+extern void set_fpsr (uae_u32 x);
 
 static TCHAR linebreak[] = {'\r', '\n', '\0'};
 
@@ -70,11 +70,11 @@ static int histcount;
 struct debuggerpage {
     HWND ctrl[MAXPAGECONTROLS];
     uae_u32 memaddr;
-       uae_u32 dasmaddr;
+    uae_u32 dasmaddr;
     TCHAR addrinput[9];
-       int selection;
+    int selection;
     int init;
-       int autoset;
+    int autoset;
 };
 static struct debuggerpage dbgpage[MAXPAGES];
 static int currpage, pages;
@@ -179,20 +179,20 @@ static void AddToHistory(const TCHAR *command)
 int GetInput (TCHAR *out, int maxlen)
 {
     HWND hInput;
-    int TCHARs;
+    int chars;
 
     if (!hDbgWnd)
        return 0;
     hInput = GetDlgItem(hDbgWnd, IDC_DBG_INPUT);
-    TCHARs = GetWindowText(hInput, out, maxlen);
-    if (TCHARs == 0)
+    chars = GetWindowText(hInput, out, maxlen);
+    if (chars == 0)
        return 0;
     WriteOutput(linebreak + 1, 2);
     WriteOutput(out, _tcslen(out));
     WriteOutput(linebreak + 1, 2);
     AddToHistory(out);
     SetWindowText(hInput, L"");
-    return TCHARs;
+    return chars;
 }
 
 static int CheckLineLimit(HWND hWnd, const TCHAR *out)
@@ -807,7 +807,7 @@ static LRESULT CALLBACK MemInputProc (HWND hWnd, UINT message, WPARAM wParam, LP
     LPTSTR lptstr;
     TCHAR allowed[] = L"1234567890abcdefABCDEF";
     int ok = 1;
-    TCHAR addrstr[11];
+    TCHAR addrstr[12];
     uae_u32 addr;
     WNDPROC oldproc;
 
index 7ef69d06b081241f4fcd99b799ee5857edac9ec7..71399ba00ed0b9f9a49d8f32250e3d6be868425e 100644 (file)
@@ -884,7 +884,11 @@ int dos_errno (void)
        return ERROR_SEEK_ERROR;
 
      default:
-       gui_message (L"Unimplemented error %d\nContact author!", e);
+       {
+           uae_u8 *p = 0;
+           *p = 0;
+           gui_message (L"Unimplemented error %d\nContact author!", e);
+       }
        return ERROR_NOT_IMPLEMENTED;
     }
 }
index 826c787f41a8e7b2e4801e30fb12fb6c62a31b70..1e531b49e75812f7801f843d0425f2e7aa918ae4 100644 (file)
@@ -369,14 +369,14 @@ int reginitializeinit (const TCHAR *ppath)
     if (!ppath) {
        int ok = 0;
        TCHAR *posn;
-       _tcscpy (path, pgmptr);
+       _tcscpy (path, _wpgmptr);
        if (_tcslen (path) > 4 && !_tcsicmp (path + _tcslen (path) - 4, L".exe")) {
            _tcscpy (path + _tcslen (path) - 3, L"ini");
            if (GetFileAttributes (path) != INVALID_FILE_ATTRIBUTES)
                ok = 1;
        }
        if (!ok) {
-           _tcscpy (path, pgmptr);
+           _tcscpy (path, _wpgmptr);
            if((posn = _tcsrchr (path, '\\')))
                posn[1] = 0;
            _tcscat (path, L"winuae.ini");
index 1f7c8d6ade034b02ce4fbff695234ef31e37dc50..15152cc2bf9b7c106186e828f57a070fa38ba308 100644 (file)
@@ -149,7 +149,6 @@ static CRITICAL_SECTION cs_time;
 
 TCHAR start_path_data[MAX_DPATH];
 TCHAR start_path_exe[MAX_DPATH];
-TCHAR *pgmptr;
 TCHAR start_path_af[MAX_DPATH]; /* OLD AF */
 TCHAR start_path_new1[MAX_DPATH]; /* AF2005 */
 TCHAR start_path_new2[MAX_DPATH]; /* AMIGAFOREVERDATA */
@@ -1814,10 +1813,13 @@ static void WIN32_InitLang (void)
     pritransla ();
 }
 
- /* try to load COMDLG32 and DDRAW, initialize csDraw */
+typedef HRESULT (CALLBACK* SETCURRENTPROCESSEXPLICITAPPUSERMODEIDD)(PCWSTR);
+
+/* try to load COMDLG32 and DDRAW, initialize csDraw */
 static int WIN32_InitLibraries (void)
 {
     LARGE_INTEGER freq;
+    SETCURRENTPROCESSEXPLICITAPPUSERMODEIDD pSetCurrentProcessExplicitAppUserModelID; 
 
     CoInitialize (0);
     /* Determine our processor speed and capabilities */
@@ -1835,6 +1837,10 @@ static int WIN32_InitLibraries (void)
        pre_gui_message (L"MMTimer second initialization failed, exiting..");
        return 0;
     }
+    pSetCurrentProcessExplicitAppUserModelID = (SETCURRENTPROCESSEXPLICITAPPUSERMODEIDD)GetProcAddress (
+       GetModuleHandle (L"shell32.dll"), "SetCurrentProcessExplicitAppUserModelID");
+    if (pSetCurrentProcessExplicitAppUserModelID)
+       pSetCurrentProcessExplicitAppUserModelID (L"Arabuusimiehet.WinUAE");
 
     hRichEdit = LoadLibrary (L"RICHED32.DLL");
     return 1;
@@ -3201,7 +3207,7 @@ static void getstartpaths (void)
     if (!_tcscmp (prevpath, L"AMIGAFOREVERDATA"))
        path_type = PATH_TYPE_AMIGAFOREVERDATA;
 
-    _tcscpy (start_path_exe, pgmptr);
+    _tcscpy (start_path_exe, _wpgmptr);
     if((posn = _tcsrchr (start_path_exe, '\\')))
        posn[1] = 0;
 
@@ -3354,7 +3360,7 @@ static int getval (const TCHAR *s)
     return v;
 }
 
-static void makeverstr(TCHAR *s)
+static void makeverstr (TCHAR *s)
 {
     if (_tcslen (WINUAEBETA) > 0) {
        _stprintf (BetaStr, L" (%sBeta %s, %d.%02d.%02d)", WINUAEPUBLICBETA > 0 ? L"Public " : L"", WINUAEBETA,
@@ -3362,7 +3368,7 @@ static void makeverstr(TCHAR *s)
        _stprintf (s, L"WinUAE %d.%d.%d%s%s",
            UAEMAJOR, UAEMINOR, UAESUBREV, WINUAEREV, BetaStr);
     } else {
-       _stprintf(s, L"WinUAE %d.%d.%d%s (%d.%02d.%02d)",
+       _stprintf (s, L"WinUAE %d.%d.%d%s (%d.%02d.%02d)",
            UAEMAJOR, UAEMINOR, UAESUBREV, WINUAEREV, GETBDY(WINUAEDATE), GETBDM(WINUAEDATE), GETBDD(WINUAEDATE));
     }
     if (_tcslen (WINUAEEXTRA) > 0) {
@@ -3552,21 +3558,19 @@ static int parseargs (const TCHAR *arg, const TCHAR *np)
     return 0;
 }
 
-
-static TCHAR **parseargstring (TCHAR *s, TCHAR **xargv)
+static TCHAR **parseargstring (TCHAR *s)
 {
-    int cnt, i, xargc;
+    int cnt;
     TCHAR **args;
 
     if (_tcslen (s) == 0)
        return NULL;
-
     args = xcalloc (sizeof (TCHAR*), 32 + 1);
     cnt = 0;
     for (;;) {
        TCHAR *p = s;
        int skip = 0;
-       while (*p && isspace (*p))
+       while (*p && _istspace (*p))
            p++;
        if (*p == 0)
            break;
@@ -3577,13 +3581,13 @@ static TCHAR **parseargstring (TCHAR *s, TCHAR **xargv)
                p++;
            skip = 1;
        } else {
-           while (*p && !isspace (*p))
+           while (*p && !_istspace (*p))
                p++;
        }
-       args[cnt] = xcalloc (p - s + 1, 1);
-       memcpy (args[cnt++], s, p - s);
+       args[cnt] = xcalloc (p - s + 1, sizeof (TCHAR));
+       memcpy (args[cnt++], s, (p - s) * sizeof (TCHAR));
        p += skip;
-       while (*p && isspace (*p))
+       while (*p && _istspace (*p))
            p++;
        if (*p == 0)
            break;
@@ -3591,6 +3595,16 @@ static TCHAR **parseargstring (TCHAR *s, TCHAR **xargv)
            break;
        s = p;
     }
+    return args;
+}
+
+static TCHAR **parseargstrings (TCHAR *s, TCHAR **xargv)
+{
+    int cnt, i, xargc;
+    TCHAR **args;
+
+    args = parseargstring (s);
+    for (cnt = 0; args[cnt]; cnt++);
     for (xargc = 0; xargv[xargc]; xargc++);
     for (i = 0; i < cnt; i++) {
        TCHAR *arg = args[i];
@@ -3605,17 +3619,63 @@ static TCHAR **parseargstring (TCHAR *s, TCHAR **xargv)
 }
 
 
-static int process_arg (TCHAR **xargv)
+static int process_arg (TCHAR *cmdline, TCHAR **xargv, TCHAR ***xargv3)
 {
-    int i, argc, xargc;
-    char **argv;
+    int i, xargc;
+    TCHAR **argv;
+    TCHAR tmp[MAX_DPATH];
+    int fd, ok, added;
 
+    argv = parseargstring (cmdline);
+    if (argv == NULL)
+       return 0;
+    added = 0;
     xargc = 0;
-    argc = __argc; argv = __argv;
-    xargv[xargc++] = my_strdup_ansi (argv[0]);
-    for (i = 1; i < argc; i++) {
-       TCHAR *arg = au (argv[i]);
-       TCHAR *next = i + 1 < argc ? au (argv[i + 1]) : NULL;
+    xargv[xargc++] = my_strdup (_wpgmptr);
+    fd = 0;
+    for (i = 0; argv[i]; i++) {
+       TCHAR *f = argv[i];
+       ok = 0;
+       if (f[0] != '-' && f[0] != '/') {
+           int type = -1;
+           struct zfile *z = zfile_fopen (f, L"rb");
+           if (z) {
+               type = zfile_gettype (z);
+               zfile_fclose (z);
+           }
+           tmp[0] = 0;
+           switch (type)
+           {
+               case ZFILE_CONFIGURATION:
+               _stprintf (tmp, L"-config=%s", f);
+               break;
+               case ZFILE_STATEFILE:
+               _stprintf (tmp, L"-statefile=%s", f);
+               break;
+               case ZFILE_DISKIMAGE:
+               if (fd < 4)
+                   _stprintf (tmp, L"-cfgparam=floppy%d=%s", fd++, f);
+               break;
+           }
+           if (tmp[0]) {
+               xfree (argv[i]);
+               argv[i] = my_strdup (tmp);
+               ok = 1;
+               added = 1;
+           }
+       }
+       if (!ok)
+           break;
+    }
+    if (added) {
+       for (i = 0; argv[i]; i++);
+       argv[i++] = my_strdup (L"-s");
+       argv[i++] = my_strdup (L"use_gui=no");
+       argv[i] = NULL;
+    }
+    for (i = 0; argv[i]; i++) {
+       TCHAR *arg = argv[i];
+       TCHAR *next = argv[i + 1];
        int v = parseargs (arg, next);
        if (!v)
            xargv[xargc++] = my_strdup (arg);
@@ -3626,6 +3686,7 @@ static int process_arg (TCHAR **xargv)
     argv = 0;
     argv[0] = 0;
 #endif
+    *xargv3 = argv;
     return xargc;
 }
 
@@ -3643,7 +3704,7 @@ static TCHAR **WIN32_InitRegistry (TCHAR **argv)
            KEY_WRITE | KEY_READ, NULL, &hWinUAEKey, &disposition);
     }
     if (regquerystr (NULL, L"Commandline", tmp, &size))
-       return parseargstring (tmp, argv);
+       return parseargstrings (tmp, argv);
     return NULL;
 }
 
@@ -3651,7 +3712,7 @@ static TCHAR **WIN32_InitRegistry (TCHAR **argv)
 static int PASCAL WinMain2 (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
 {
     HANDLE hMutex;
-    TCHAR **argv = NULL, **argv2 = NULL;
+    TCHAR **argv = NULL, **argv2 = NULL, **argv3;
     int argc, i;
 
 #ifdef _DEBUG
@@ -3679,21 +3740,21 @@ static int PASCAL WinMain2 (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR
     AVIOutput_Initialize ();
 #endif
 
-    argv = xcalloc (sizeof (TCHAR*),  __argc);
-    argc = process_arg (argv);
+    argv = xcalloc (sizeof (TCHAR*), 32);
+    argc = process_arg (lpCmdLine, argv, &argv3);
 
     argv2 = WIN32_InitRegistry (argv);
     getstartpaths ();
     makeverstr (VersionStr);
 
     logging_init ();
-#if 0
-    if (__argc > 1) {
+    if (_tcslen (lpCmdLine) > 0)
+       write_log (L"'%s'\n", lpCmdLine);
+    if (argv3[0]) {
        write_log (L"params:\n");
-       for (i = 1; i < __argc; i++)
-           write_log (L"%d: '%s'\n", i, __argv[i]);
+       for (i = 0; argv3[i]; i++)
+           write_log (L"%d: '%s'\n", i + 1, argv3[i]);
     }
-#endif
     if (argv2) {
        write_log (L"extra params:\n");
        for (i = 0; argv2[i]; i++)
@@ -4222,7 +4283,7 @@ void target_reset (void)
 typedef BOOL (CALLBACK* SETPROCESSDPIAWARE)(void);
 typedef BOOL (CALLBACK* CHANGEWINDOWMESSAGEFILTER)(UINT, DWORD);
 
-int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
+int PASCAL wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
 {
     SETPROCESSDPIAWARE pSetProcessDPIAware;
     DWORD_PTR sys_aff;
@@ -4232,7 +4293,7 @@ int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLin
     InitCommonControls ();
 
     original_affinity = 1;
-    GetProcessAffinityMask (GetCurrentProcess(), &original_affinity, &sys_aff);
+    GetProcessAffinityMask (GetCurrentProcess (), &original_affinity, &sys_aff);
 
     thread = GetCurrentThread ();
     //original_affinity = SetThreadAffinityMask(thread, 1);
@@ -4251,10 +4312,8 @@ int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLin
     if (pSetProcessDPIAware)
        pSetProcessDPIAware ();
 
-    pgmptr = au (_pgmptr);
-
     __try {
-       WinMain2 (hInstance, hPrevInstance, GetCommandLineW (), nCmdShow);
+       WinMain2 (hInstance, hPrevInstance, lpCmdLine, nCmdShow);
     } __except(WIN32_ExceptionFilter (GetExceptionInformation (), GetExceptionCode ())) {
     }
     //SetThreadAffinityMask(thread, original_affinity);
index 35259ea655b89528abfbe97221e9704513e1d1b5..403c015792e3b5c9c339e597289b1a2ddf437121 100644 (file)
@@ -18,7 +18,7 @@
 #define WINUAEPUBLICBETA 1
 
 #define WINUAEBETA L"18"
-#define WINUAEDATE MAKEBD(2009, 3, 22)
+#define WINUAEDATE MAKEBD(2009, 3, 25)
 #define WINUAEEXTRA L""
 #define WINUAEREV L""
 
@@ -85,7 +85,6 @@ extern int win_x_diff, win_y_diff;
 extern int window_extra_width, window_extra_height;
 extern int af_path_2005, af_path_old;
 extern TCHAR start_path_af[MAX_DPATH], start_path_new1[MAX_DPATH], start_path_new2[MAX_DPATH];
-extern TCHAR *pgmptr;
 #define PATH_TYPE_WINUAE 0
 #define PATH_TYPE_NEWWINUAE 1
 #define PATH_TYPE_OLDAF 2
index 475b1f5bd74c34368085b97c1dce7b7c432f6cb2..4fb91a94d3b0c1ea06a2db368cbc70b84b1cad7e 100644 (file)
@@ -1587,7 +1587,7 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs
        WIN32GUI_LoadUIString (IDS_CHOOSEBLANK, szTitle, MAX_DPATH);
        WIN32GUI_LoadUIString (IDS_ADF, szFormat, MAX_DPATH);
        _stprintf (szFilter, L"%s ", szFormat);
-       memcpy (szFilter + _tcslen (szFilter), L"(*.adf)\0*.adf\0", 15);
+       memcpy (szFilter + _tcslen (szFilter), L"(*.adf)\0*.adf\0", 15 * sizeof (TCHAR));
        defext = L"ADF";
        break;
     case 2:
@@ -1603,7 +1603,7 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs
        WIN32GUI_LoadUIString (IDS_SELECTUAE, szTitle, MAX_DPATH);
        WIN32GUI_LoadUIString (IDS_UAE, szFormat, MAX_DPATH );
        _stprintf (szFilter, L"%s ", szFormat);
-       memcpy (szFilter + _tcslen (szFilter), L"(*.uae)\0*.uae\0", 15);
+       memcpy (szFilter + _tcslen (szFilter), L"(*.uae)\0*.uae\0", 15 * sizeof (TCHAR));
        defext = L"UAE";
        break;
     case 6:
@@ -1617,7 +1617,7 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs
        WIN32GUI_LoadUIString (IDS_SELECTKEY, szTitle, MAX_DPATH);
        WIN32GUI_LoadUIString (IDS_KEY, szFormat, MAX_DPATH);
        _stprintf (szFilter, L"%s ", szFormat);
-       memcpy (szFilter + _tcslen (szFilter), L"(*.key)\0*.key\0", 15);
+       memcpy (szFilter + _tcslen (szFilter), L"(*.key)\0*.key\0", 15 * sizeof (TCHAR));
        defext = L"KEY";
        break;
     case 15:
index 8e4b8238e1eda178910313b0b162ac4d9313725f..1b7e9bc4dbe35b06759e750734b65f3755bc7e56 100644 (file)
@@ -1,4 +1,19 @@
 
+Beta 19:
+
+- missing command line unicode support added
+- added support for winuae.exe <paths> [<other params>] command line.
+  <Paths> can be path to a configuration file, any supported floppy
+  disk image file or statefile, multiple paths supported, path
+  parsing stops when first parameter beginning with '-' or '/' is
+  detected. Now manually created Windows file extension mappings work
+  as expected. Automatically disables "show gui on startup".
+- improved configuration parsing, now for example something="path"
+  and command line -something="path" works, previously " (or ')
+  were not accepted
+- clear dsound buffer when sound autodeactivates, there could have
+  been some old sound data left if buffer size is really big
+
 Beta 18:
 
 - gui debugger unicode conversion fixes (b15)