]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc2000b23.zip
authorToni Wilen <twilen@winuae.net>
Sun, 29 Nov 2009 17:47:27 +0000 (19:47 +0200)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:49:31 +0000 (21:49 +0200)
15 files changed:
akiko.c
blitter.c
debug.c
od-win32/avioutput.c
od-win32/avioutput.h
od-win32/parser.c
od-win32/resources/resource
od-win32/resources/winuae.rc
od-win32/sounddep/sound.c
od-win32/win32.c
od-win32/win32.h
od-win32/win32gfx.c
od-win32/win32gui.c
od-win32/winuaechangelog.txt
zfile.c

diff --git a/akiko.c b/akiko.c
index c50488ad9f4199dc03aeb08b2833b3b6067ec584..6cc35e0f4fae9a0ee2e5fc79856d706f9061eda5 100644 (file)
--- a/akiko.c
+++ b/akiko.c
@@ -334,22 +334,22 @@ static uae_u32 akiko_c2p_read (int offset)
 * 0xb80004-0xb80028
 */
 
-#define CDINTERRUPT_SUBCODE        0x80000000
-#define CDINTERRUPT_DRIVEXMIT      0x40000000 /* not used by ROM */
-#define CDINTERRUPT_DRIVERECV      0x20000000 /* not used by ROM */
-#define CDINTERRUPT_RXDMADONE      0x10000000
-#define CDINTERRUPT_TXDMADONE      0x08000000
-#define CDINTERRUPT_PBX                    0x04000000
-#define CDINTERRUPT_OVERFLOW       0x02000000
-
-#define CDFLAG_SUBCODE             0x80000000
-#define CDFLAG_TXD                 0x40000000
-#define CDFLAG_RXD                 0x20000000
-#define CDFLAG_CAS                 0x10000000
-#define CDFLAG_PBX                 0x08000000
-#define CDFLAG_ENABLE              0x04000000
-#define CDFLAG_RAW                 0x02000000
-#define CDFLAG_MSB                 0x01000000
+#define CDINTERRUPT_SUBCODE            0x80000000
+#define CDINTERRUPT_DRIVEXMIT  0x40000000 /* not used by ROM */
+#define CDINTERRUPT_DRIVERECV  0x20000000 /* not used by ROM */
+#define CDINTERRUPT_RXDMADONE  0x10000000
+#define CDINTERRUPT_TXDMADONE  0x08000000
+#define CDINTERRUPT_PBX                        0x04000000
+#define CDINTERRUPT_OVERFLOW   0x02000000
+
+#define CDFLAG_SUBCODE                 0x80000000
+#define CDFLAG_TXD                             0x40000000
+#define CDFLAG_RXD                             0x20000000
+#define CDFLAG_CAS                             0x10000000
+#define CDFLAG_PBX                             0x08000000
+#define CDFLAG_ENABLE                  0x04000000
+#define CDFLAG_RAW                             0x02000000
+#define CDFLAG_MSB                             0x01000000
 
 #define CDS_ERROR 0x80
 #define CDS_PLAYING 0x08
@@ -1775,6 +1775,9 @@ uae_u8 *restore_akiko (uae_u8 *src)
        restore_u32 ();
        cdrom_addressdata = restore_u32 ();
        cdrom_addressmisc = restore_u32 ();
+       subcode_address = cdrom_addressmisc | 0x100;
+       cdrx_address = cdrom_addressmisc;
+       cdtx_address = cdrom_addressmisc | 0x200;
        cdrom_subcodeoffset = restore_u8 ();
        cdcomtxinx = restore_u8 ();
        cdcomrxinx = restore_u8 ();
index 321c391fba2c503477beea84199b3b0385d4148b..a735665dc2f9980c594e27e15b2177b78bb3dfc3 100644 (file)
--- a/blitter.c
+++ b/blitter.c
@@ -65,7 +65,7 @@ static int blit_maxcyclecounter, blit_slowdown, blit_totalcyclecounter;
 static int blit_startcycles, blit_misscyclecounter;
 
 #ifdef CPUEMU_12
-extern uae_u8 cycle_line[];
+extern uae_u8 cycle_line[256];
 #endif
 
 static long blit_firstline_cycles;
@@ -597,9 +597,14 @@ static void blitter_line (void)
 
 static void blitter_line_proc (void)
 {
-       if (!blitsign) {
-               if (bltcon0 & 0x800)
+       if (bltcon0 & 0x800) {
+               if (!blitsign)
                        bltapt += (uae_s16)blt_info.bltamod;
+               else
+                       bltapt += (uae_s16)blt_info.bltbmod;
+       }
+
+       if (!blitsign) {
                if (bltcon1 & 0x10) {
                        if (bltcon1 & 0x8)
                                blitter_line_decy ();
@@ -611,9 +616,6 @@ static void blitter_line_proc (void)
                        else
                                blitter_line_incx ();
                }
-       } else {
-               if (bltcon0 & 0x800)
-                       bltapt += (uae_s16)blt_info.bltbmod;
        }
        if (bltcon1 & 0x10) {
                if (bltcon1 & 0x4)
@@ -626,6 +628,7 @@ static void blitter_line_proc (void)
                else
                        blitter_line_incy ();
        }
+
        blitsign = 0 > (uae_s16)bltapt;
        bltstate = BLT_write;
 }
@@ -1086,7 +1089,7 @@ static void blitter_force_finish (void)
                if (blitter_cycle_exact) {
                        int rounds = 10000;
                        while (bltstate != BLT_done && rounds > 0) {
-                               memset (cycle_line, 0, maxhpos);
+                               memset (cycle_line, 0, sizeof cycle_line);
                                decide_blitter (maxhpos);
                                rounds--;
                        }
@@ -1216,6 +1219,8 @@ void reset_blit (int bltcon)
 {
        if (bltcon & 1)
                blinea_shift = bltcon0 >> 12;
+       if (bltcon & 2)
+               blitsign = bltcon1 & 0x40;
        if (bltstate == BLT_done)
                return;
        if (bltcon)
@@ -1266,11 +1271,10 @@ static void do_blitter2 (int hpos, int copper)
        blit_interrupt = 0;
 
        if (blitline) {
-               blitsing = bltcon1 & 0x2;
                blinea = blt_info.bltadat;
                blineb = (blt_info.bltbdat >> blt_info.blitbshift) | (blt_info.bltbdat << (16 - blt_info.blitbshift));
-               blitsign = bltcon1 & 0x40;
                blitonedot = 0;
+               blitsing = bltcon1 & 0x2;
                cycles = vblitsize;
        } else {
                blit_firstline_cycles = blit_first_cycle + (blit_diag[0] * hblitsize + cpu_cycles) * CYCLE_UNIT;
diff --git a/debug.c b/debug.c
index 799962a3949cdd0019fc18ee4c689bdf7dc1634d..7a12dc23b1049d202e5b294c5d5d68927ab2cb07 100644 (file)
--- a/debug.c
+++ b/debug.c
@@ -89,7 +89,6 @@ static TCHAR help[] = {
        L"  r                     Dump state of the CPU\n"
        L"  r <reg> <value>       Modify CPU registers (Dx,Ax,USP,ISP,VBR,...)\n"
        L"  m <address> [<lines>] Memory dump starting at <address>\n"
-       L"  m r<register>         Memory dump starting at <register>\n"
        L"  d <address> [<lines>] Disassembly starting at <address>\n"
        L"  t [instructions]      Step one or more instructions\n"
        L"  z                     Step through one instruction - useful for JSR, DBRA etc\n"
@@ -97,7 +96,7 @@ static TCHAR help[] = {
        L"  f <address>           Add/remove breakpoint\n"
        L"  fa <address> [<start>] [<end>]\n"
        L"                        Find effective address <address>\n"
-       L"  fi                    Step forward until PC points to RTS/RTD or RTE\n"
+       L"  fi                    Step forward until PC points to RTSRTD or RTE\n"
        L"  fi <opcode>           Step forward until PC points to <opcode>\n"
        L"  fp \"<name>\"/<addr>    Step forward until process <name> or <addr> is active\n"
        L"  fl                    List breakpoints\n"
@@ -136,6 +135,7 @@ static TCHAR help[] = {
        L"  smc [<0-1>]           Enable self-modifying code detector. 1 = enable break.\n"
        L"  dm                    Dump current address space map\n"
        L"  v <vpos> [<hpos>]     Show DMA data (accurate only in cycle-exact mode)\n"
+       L"                        v [-1 to -4] = enable visual DMA debugger\n"
        L"  ?<value>              Hex/Bin/Dec converter\n"
 #ifdef _WIN32
        L"  x                     Close debugger.\n"
index 7364930dafcfd2ba7088fb4c49ca7d5fccaae08f..4697550d44f0e8677918beda0240c8a0098e4f64 100644 (file)
@@ -64,7 +64,7 @@ static int videoallocated;
 
 int avioutput_width, avioutput_height, avioutput_bits;
 int avioutput_fps = VBLANK_HZ_PAL;
-DWORD avioutput_framelimiter = 0, avioutput_nosoundoutput = 0;
+DWORD avioutput_framelimiter = 0, avioutput_nosoundoutput = 0, avioutput_nosoundsync = 1;
 
 TCHAR avioutput_filename[MAX_DPATH];
 static TCHAR avioutput_filename_tmp[MAX_DPATH];
@@ -214,6 +214,7 @@ static void storesettings (UAEREG *avikey)
 {
        regsetint (avikey, L"FrameLimiter", avioutput_framelimiter);
        regsetint (avikey, L"NoSoundOutput", avioutput_nosoundoutput);
+       regsetint (avikey, L"NoSoundSync", avioutput_nosoundsync);
        regsetint (avikey, L"FPS", avioutput_fps);
 }
 static void getsettings (UAEREG *avikey)
@@ -221,6 +222,8 @@ static void getsettings (UAEREG *avikey)
        DWORD val;
        if (regqueryint (avikey, L"NoSoundOutput", &val))
                avioutput_nosoundoutput = val;
+       if (regqueryint (avikey, L"NoSoundSync", &val))
+               avioutput_nosoundsync = val;
        if (regqueryint (avikey, L"FrameLimiter", &val))
                avioutput_framelimiter = val;
        if (!avioutput_framelimiter)
@@ -1306,7 +1309,7 @@ static void *AVIOutput_worker (void *arg)
 #define ADJUST_SIZE 10
 #define EXP 1.1
 
-void frame_drawn(void)
+void frame_drawn (void)
 {
 #if 0
        double diff, skipmode;
index 29cdcdb51e57d39a1e5e579e0af139539e379bac..0ba67cfbea1947aeafaa5747d47b2631a9bbf5b1 100644 (file)
@@ -10,7 +10,7 @@ extern int avioutput_video, avioutput_audio, avioutput_enabled, avioutput_reques
 
 extern int avioutput_width, avioutput_height, avioutput_bits;
 extern int avioutput_fps;
-extern DWORD avioutput_framelimiter, avioutput_nosoundoutput;
+extern DWORD avioutput_framelimiter, avioutput_nosoundoutput, avioutput_nosoundsync;
 
 extern TCHAR avioutput_filename[MAX_DPATH];
 
index f7f04c375782e5a7f194972ae979c2d3cb40596e..991b4eac39963212828b2969ecdcd746832c93e9 100644 (file)
@@ -9,7 +9,7 @@
 
 #include "sysconfig.h"
 
-//#undef SERIAL_ENET
+#undef SERIAL_ENET
 
 #include <windows.h>
 #include <winspool.h>
index 21de335eec5c268ff7527f582e133958eff823c1..2f9dd6ccd5a946eed714a3831814da8cb3c8ba30 100644 (file)
 #define IDS_PRINTER_EPSON               352
 #define IDS_PRINTER_EPSON9              352
 #define IDS_PRINTER_POSTSCRIPT_DETECTION 353
-#define IDI_ICON4                       353
 #define IDI_EXPANSION                   353
 #define IDS_PRINTER_POSTSCRIPT_EMULATION 354
 #define IDS_PRINTER_PASSTHROUGH         355
 #define IDC_AVIOUTPUT_DIMENSIONS_STATIC 1648
 #define IDC_STATE_BUFFERSIZE_TEXT       1648
 #define IDC_CONFIGTREE                  1648
+#define IDC_AVIOUTPUT_NOSOUNDOUTPUT2    1648
+#define IDC_AVIOUTPUT_NOSOUNDSYNC       1648
 #define IDC_AVIOUTPUT_OPTIONS           1649
 #define IDC_STATE_RATE_TEXT             1649
 #define IDC_DISKLISTREMOVE              1649
index 98cc8aaeb829bab18dc1d5fa6ea5eb1bb43b144b..c3e294251bb1e0df4c66d29cb4b04c60e0476e34 100644 (file)
@@ -674,13 +674,13 @@ BEGIN
     CONTROL         "",IDC_AVIOUTPUT_AUDIO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,59,34,209,13\r
     CONTROL         "Video",IDC_AVIOUTPUT_VIDEO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,50,39,14\r
     CONTROL         "",IDC_AVIOUTPUT_VIDEO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,59,51,209,13\r
-    CONTROL         "Disable frame rate limit while recording",IDC_AVIOUTPUT_FRAMELIMITER,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,68,158,10\r
+    CONTROL         "Disable frame rate limit",IDC_AVIOUTPUT_FRAMELIMITER,\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,71,158,10\r
     CONTROL         "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,103,108,14\r
     CONTROL         "PAL",IDC_AVIOUTPUT_PAL,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,131,103,66,14\r
     CONTROL         "NTSC",IDC_AVIOUTPUT_NTSC,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,204,103,66,14\r
-    CONTROL         "Slider1",IDC_AVIOUTPUT_FPS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_ENABLESELRANGE | WS_TABSTOP,166,84,87,11\r
-    LTEXT           "fps",IDC_AVIOUTPUT_FPS_STATIC,255,84,19,8\r
+    CONTROL         "Slider1",IDC_AVIOUTPUT_FPS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_ENABLESELRANGE | WS_TABSTOP,143,74,87,11\r
+    LTEXT           "fps",IDC_AVIOUTPUT_FPS_STATIC,237,74,19,8\r
     PUSHBUTTON      "Save screenshot",IDC_SCREENSHOT,16,141,77,14\r
     GROUPBOX        "Ripper",IDC_STATIC,5,127,274,38\r
     PUSHBUTTON      "Pro Wizard 1.62",IDC_PROWIZARD,104,141,77,14,WS_DISABLED\r
@@ -689,8 +689,9 @@ BEGIN
     CONTROL         "Record",IDC_INPREC_RECORD,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,178,77,14\r
     CONTROL         "Playback",IDC_INPREC_PLAY,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,16,178,77,14\r
     CONTROL         "Alt. playback mode",IDC_INPREC_PLAYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,103,180,78,10\r
-    CONTROL         "Disable sound output while recording",IDC_AVIOUTPUT_NOSOUNDOUTPUT,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,85,148,10\r
+    CONTROL         "Disable sound output",IDC_AVIOUTPUT_NOSOUNDOUTPUT,\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,88,123,10\r
+    CONTROL         "Disable sound sync",IDC_AVIOUTPUT_NOSOUNDSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,88,120,10\r
 END\r
 \r
 IDD_INPUT DIALOGEX 0, 0, 300, 242\r
index f25d7a379a11f022bdee602738f6b4f0f4e37a9d..d654d746e28fbfb70d889711b8d3eb51c280865a 100644 (file)
@@ -1296,9 +1296,9 @@ void sound_setadjust (double v)
                v = 0;
 
        mult = (1000.0 + v);
-       if (avioutput_audio)
+       if (avioutput_audio && avioutput_enabled && avioutput_nosoundsync)
                mult = 1000.0;
-       if (isvsync () || (avioutput_audio && !compiled_code)) {
+       if (isvsync () || (avioutput_audio && avioutput_enabled && !compiled_code)) {
                vsynctime = vsynctime_orig;
                scaled_sample_evtime = scaled_sample_evtime_orig * mult / 1000.0;
        } else if (compiled_code || currprefs.m68k_speed != 0) {
@@ -1855,7 +1855,7 @@ void finish_sound_buffer (void)
        driveclick_mix ((uae_s16*)paula_sndbuffer, sdp->sndbufsize / 2);
 #endif
 #ifdef AVIOUTPUT
-       if (avioutput_audio)
+       if (avioutput_enabled && avioutput_audio)
                AVIOutput_WriteAudio ((uae_u8*)paula_sndbuffer, sdp->sndbufsize);
        if (avioutput_enabled && (!avioutput_framelimiter || avioutput_nosoundoutput))
                return;
index 2cb62bf2d2d8c8a311b8cd261752940bdae376b5..01af1d63d015882578d0c61753602390f74b769e 100644 (file)
@@ -835,7 +835,7 @@ static LRESULT CALLBACK AmigaWindowProc (HWND hWnd, UINT message, WPARAM wParam,
                return 0;
        case WM_LBUTTONDOWN:
        case WM_LBUTTONDBLCLK:
-               if (!mouseactive && !gui_active && (!mousehack_alive () || currprefs.input_tablet != TABLET_MOUSEHACK || isfullscreen () > 0)) {
+               if (!mouseactive && !gui_active && (!mousehack_alive () || currprefs.input_tablet != TABLET_MOUSEHACK || (currprefs.input_tablet == TABLET_MOUSEHACK && !currprefs.input_magic_mouse) || isfullscreen () > 0)) {
                        setmouseactive ((message == WM_LBUTTONDBLCLK || isfullscreen() > 0) ? 2 : 1);
                } else if (dinput_winmouse () >= 0 && isfocus ()) {
                        setmousebuttonstate (dinput_winmouse (), 0, 1);
@@ -1975,6 +1975,7 @@ void logging_init (void)
        int wow64 = 0;
        static int started;
        static int first;
+       TCHAR tmp[MAX_DPATH];
 
        if (first > 1) {
                write_log (L"** RESTART **\n");
@@ -2008,6 +2009,9 @@ void logging_init (void)
                L"\nPress F12 to show the Settings Dialog (GUI), Alt-F4 to quit."
                L"\nEnd+F1 changes floppy 0, End+F2 changes floppy 1, etc."
                L"\n");
+       tmp[0] = 0;
+       GetModuleFileName (NULL, tmp, sizeof (tmp) / sizeof (TCHAR));
+       write_log (L"'%s'\n", tmp);
        write_log (L"EXE: '%s', DATA: '%s'\n", start_path_exe, start_path_data);
        regstatus ();
 }
index 230735833b943465ee3c14cbfdbe1b77e7beec4f..08e2652b34844b1558d43c481510baf0f8d53177 100644 (file)
@@ -17,8 +17,8 @@
 
 #define WINUAEPUBLICBETA 1
 
-#define WINUAEBETA L"22"
-#define WINUAEDATE MAKEBD(2009, 11, 21)
+#define WINUAEBETA L"23"
+#define WINUAEDATE MAKEBD(2009, 11, 29)
 #define WINUAEEXTRA L""
 #define WINUAEREV L""
 
index ba50802f1e2b6e24f5c61d1a749467e2743b050c..152fabd6dbfd669be87b2317d402bb653c457f0e 100644 (file)
@@ -172,6 +172,7 @@ int WIN32GFX_GetHeight (void)
        return currentmode->current_height;
 }
 
+static int init_round;
 static BOOL doInit (void);
 
 uae_u32 default_freq = 0;
@@ -1136,6 +1137,7 @@ static int open_windows (int full)
                return 0;
        write_log (L"DirectDraw GUID=%s\n", outGUID (displayGUID));
 
+       init_round = 0;
        ret = -2;
        do {
                if (ret < -1) {
@@ -1143,6 +1145,12 @@ static int open_windows (int full)
                        update_gfxparams ();
                }
                ret = doInit ();
+               init_round++;
+               if (ret < -9) {
+                       DirectDraw_Release ();
+                       if (!DirectDraw_Start (displayGUID))
+                               return 0;
+               }
        } while (ret < 0);
 
        if (!ret) {
@@ -2336,7 +2344,7 @@ static BOOL doInit (void)
        int ret = 0;
        int mult = 0;
 
-       colortype = DirectDraw_GetPixelFormat();
+       colortype = DirectDraw_GetPixelFormat ();
        gfxmode_reset ();
 
        for (;;) {
@@ -2559,7 +2567,7 @@ static BOOL doInit (void)
        return 1;
 
 oops:
-       close_hwnds();
+       close_hwnds ();
        return ret;
 }
 
index 6b28c102c6c7a3c130a6a32df4dd8595e6c40425..47f8e577bc0c79ccdd11ee8026f08481c135a7c2 100644 (file)
@@ -1317,8 +1317,17 @@ int target_cfgfile_load (struct uae_prefs *p, TCHAR *filename, int type, int isd
                discard_prefs (p, 0);
        }
        type2 = type;
-       if (type == 0)
+       if (type == 0) {
                default_prefs (p, type);
+#if 0
+               if (isdefault == 0) {
+                       fetch_configurationpath (tmp1, sizeof (tmp1) / sizeof (TCHAR));
+                       _tcscat (tmp1, OPTIONSFILENAME);
+                       cfgfile_load (p, tmp1, NULL, 0, 0);
+               }
+#endif
+       }
+               
        regqueryint (NULL, L"ConfigFile_NoAuto", &ct2);
        v = cfgfile_load (p, fname, &type2, ct2, isdefault ? 0 : 1);
        if (!v)
@@ -1347,7 +1356,7 @@ int target_cfgfile_load (struct uae_prefs *p, TCHAR *filename, int type, int isd
 static int gui_width = 640, gui_height = 480;
 
 static int mm = 0;
-static void m(void)
+static void m (void)
 {
        write_log (L"%d:0: %dx%d %dx%d %dx%d\n", mm, currprefs.gfx_size.width, currprefs.gfx_size.height,
                workprefs.gfx_size.width, workprefs.gfx_size.height, changed_prefs.gfx_size.width, changed_prefs.gfx_size.height);
@@ -11215,9 +11224,6 @@ static void values_to_avioutputdlg (HWND hDlg)
        _stprintf (tmpstr, L"%d fps", avioutput_fps);
        SendMessage (GetDlgItem(hDlg, IDC_AVIOUTPUT_FPS_STATIC), WM_SETTEXT, (WPARAM) 0, (LPARAM) tmpstr);
 
-       _stprintf (tmpstr, L"Actual: %d x %d", workprefs.gfx_size.width, workprefs.gfx_size.height);
-       SendMessage (GetDlgItem(hDlg, IDC_AVIOUTPUT_DIMENSIONS_STATIC), WM_SETTEXT, (WPARAM) 0, (LPARAM) tmpstr);
-
        switch(avioutput_fps)
        {
        case VBLANK_HZ_PAL:
@@ -11236,6 +11242,7 @@ static void values_to_avioutputdlg (HWND hDlg)
 
        CheckDlgButton (hDlg, IDC_AVIOUTPUT_FRAMELIMITER, avioutput_framelimiter ? FALSE : TRUE);
        CheckDlgButton (hDlg, IDC_AVIOUTPUT_NOSOUNDOUTPUT, avioutput_nosoundoutput ? TRUE : FALSE);
+       CheckDlgButton (hDlg, IDC_AVIOUTPUT_NOSOUNDSYNC, avioutput_nosoundsync ? TRUE : FALSE);
        CheckDlgButton (hDlg, IDC_AVIOUTPUT_ACTIVATED, avioutput_requested ? BST_CHECKED : BST_UNCHECKED);
        CheckDlgButton (hDlg, IDC_SAMPLERIPPER_ACTIVATED, sampleripper_enabled ? BST_CHECKED : BST_UNCHECKED);
 }
@@ -11305,6 +11312,7 @@ static void enable_for_avioutputdlg(HWND hDlg)
                avioutput_nosoundoutput = 1;
        CheckDlgButton (hDlg, IDC_AVIOUTPUT_FRAMELIMITER, avioutput_framelimiter ? FALSE : TRUE);
        CheckDlgButton (hDlg, IDC_AVIOUTPUT_NOSOUNDOUTPUT, avioutput_nosoundoutput ? TRUE : FALSE);
+       CheckDlgButton (hDlg, IDC_AVIOUTPUT_NOSOUNDSYNC, avioutput_nosoundsync ? TRUE : FALSE);
 
        ew (hDlg, IDC_AVIOUTPUT_ACTIVATED, (!avioutput_audio && !avioutput_video) ? FALSE : TRUE);
 
@@ -11370,6 +11378,10 @@ static INT_PTR CALLBACK AVIOutputDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LP
                        avioutput_nosoundoutput = IsDlgButtonChecked (hDlg, IDC_AVIOUTPUT_NOSOUNDOUTPUT) ? 1 : 0;
                        AVIOutput_SetSettings ();
                        break;
+               case IDC_AVIOUTPUT_NOSOUNDSYNC:
+                       avioutput_nosoundsync = IsDlgButtonChecked (hDlg, IDC_AVIOUTPUT_NOSOUNDSYNC) ? 1 : 0;
+                       AVIOutput_SetSettings ();
+                       break;
 
                case IDC_INPREC_PLAYMODE:
                        break;
index cc846d4af589f5ab47edf9364ea2559b8d574645..c12ecafb5e5a5bdaa55c7a8543a9b14c42946543 100644 (file)
@@ -1,3 +1,16 @@
+
+- mouse capture didn't work if mouse driver (tablet) mode was enabled
+  without magic mouse
+- selecting wave recording (file select) disabled audio sync even if
+  recording was not activated
+- added disable sound sync option to output panel. Previously it was
+  always disabled (for best sound quality), option was added because
+  audio only recording with sync disabled can cause sound glitches and
+  emulation slowdowns and vsync issues (recorded sound was still fine)
+- CD32 state restore compatibility update
+- only update BLTSIGN when writing to BPLCON1, not when starting the
+  the blit (Anesthesia / Possessed and probably others)
+
 Beta 22:
 
 - do not load multiple harddrives (directory and regular hardfile) from
@@ -6,8 +19,7 @@ Beta 22:
 - added simple validation to harddrive device and volume labels
 - fixed small graphics glitch in Sequential / Andromeda "18 frames!"
 - slightly smaller on screen leds, fits in 320 pixel wide display
-- "write to BPLCON1 immediately after BPL1DAT" handling was buggy, in
-  some cases bpl delay change had too long delay (Demo2 / Parasite)
+- BPLCON1 to bitplane delay timing fix in some specific situations
 - KS 1.x interlace screen setup was incompatible with "scandoubler"
 
 Beta 21:
diff --git a/zfile.c b/zfile.c
index 4f4b8a0adb648203020f20f16b0712ed472f682c..6ddf30a9fac761233920ba0637b0738af0028e1b 100644 (file)
--- a/zfile.c
+++ b/zfile.c
@@ -1517,7 +1517,6 @@ static struct zfile *zfile_fopen_x (const TCHAR *name, const TCHAR *mode, int ma
        if (_tcslen (name) == 0)
                return NULL;
        manglefilename (path, name);
-       //write_log (L"zfile_fopen('%s','%s',%08x)\n", path, mode, mask);
        l = zfile_fopen_2 (path, mode, mask);
        if (!l)
                return 0;
@@ -1642,7 +1641,7 @@ end:
 }
 #endif
 
-static struct zfile *zfile_fopenx (const TCHAR *name, const TCHAR *mode, int mask, int index)
+static struct zfile *zfile_fopenx2 (const TCHAR *name, const TCHAR *mode, int mask, int index)
 {
        struct zfile *f;
        TCHAR tmp[MAX_DPATH];
@@ -1685,6 +1684,16 @@ static struct zfile *zfile_fopenx (const TCHAR *name, const TCHAR *mode, int mas
 #endif
        return NULL;
 }
+
+static struct zfile *zfile_fopenx (const TCHAR *name, const TCHAR *mode, int mask, int index)
+{
+       struct zfile *zf;
+       //write_log (L"zfile_fopen('%s','%s',%08x,%d)\n", name, mode, mask, index);
+       zf = zfile_fopenx2 (name, mode, mask, index);
+       //write_log (L"=%p\n", zf);
+       return zf;
+}
+
 struct zfile *zfile_fopen (const TCHAR *name, const TCHAR *mode, int mask)
 {
        return zfile_fopenx (name, mode, mask, 0);
@@ -2462,7 +2471,7 @@ static struct zvolume *prepare_recursive_volume (struct zvolume *zv, const TCHAR
 {
        struct zfile *zf = NULL;
        struct zvolume *zvnew = NULL;
-       int i;
+//     int i;
        int done = 0;
 
 #ifdef ZFILE_DEBUG