From: Toni Wilen Date: Fri, 4 Aug 2006 12:42:25 +0000 (+0300) Subject: imported winuaesrc1310.zip X-Git-Tag: 2100~276 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=169b5fa51b5ccbba49b8683e9276eb692978cc37;p=francis%2Fwinuae.git imported winuaesrc1310.zip --- diff --git a/audio.c b/audio.c index 3ddb94dc..77063604 100755 --- a/audio.c +++ b/audio.c @@ -466,7 +466,7 @@ static void sinc_prehandler(unsigned long best_evtime) * write data into sinc queue for mixing in the BLEP */ if (acd->output_state != output) { if (acd->sinc_queue_length > SINC_QUEUE_LENGTH - 1) { - write_log("warning: sinc queue truncated. Last age: %d.\n", acd->sinc_queue[SINC_QUEUE_LENGTH-1].age); + //write_log("warning: sinc queue truncated. Last age: %d.\n", acd->sinc_queue[SINC_QUEUE_LENGTH-1].age); acd->sinc_queue_length = SINC_QUEUE_LENGTH - 1; } /* make room for new and add the new value */ diff --git a/disk.c b/disk.c index 343b98e7..c95a829c 100755 --- a/disk.c +++ b/disk.c @@ -1148,32 +1148,31 @@ static uae_u8 mfmencodetable[16] = { 0x4a, 0x49, 0x44, 0x45, 0x52, 0x51, 0x54, 0x55 }; -static uae_u16 *mfmcoder(uae_u8 *s, uae_u16 *mfm, int len) + +static uae_u16 dos_encode_byte(uae_u8 byte) +{ + uae_u8 b2, b1; + uae_u16 word; + + b1 = byte; + b2 = b1 >> 4; + b1 &= 15; + word = mfmencodetable[b2] <<8 | mfmencodetable[b1]; + return (word | ((word & (256 | 64)) ? 0 : 128)); +} + +static uae_u16 *mfmcoder(uae_u8 *src, uae_u16 *dest, int len) { - static int prev; + int i; - if (!s) { - prev = len; - return NULL; - } - while (len-- > 0) { - uae_u16 db; - uae_u8 b1, b2; - uae_u8 b = *s++; - b1 = b; - b2 = b >> 4; - b1 &= 15; - db = (mfmencodetable[b2] << 8) | mfmencodetable[b1]; - db = db | ((db & (256 | 64)) ? 0 : 128); - if (!prev && !(db & 0x4000)) - db |= 0x8000; - prev = db & 1; - *mfm++ = db; + for (i = 0; i < len; i++) { + *dest = dos_encode_byte(*src++); + *dest |= ((dest[-1] & 1)||(*dest & 0x4000)) ? 0: 0x8000; + dest++; } - return mfm; + return dest; } - static void decode_pcdos (drive *drv) { int i; @@ -1183,8 +1182,8 @@ static void decode_pcdos (drive *drv) uae_u16 crc16; trackid *ti = drv->trackdata + tr; - mfmcoder (NULL, NULL, 0); mfm2 = drv->bigmfmbuf; + *mfm2++ = 0x9254; memset (secbuf, 0x4e, 80); // 94 memset (secbuf + 80, 0x00, 12); // 12 secbuf[92] = 0xc2; @@ -1220,8 +1219,8 @@ static void decode_pcdos (drive *drv) crc16 = get_crc16(secbuf + 56, 3 + 1 + 512); secbuf[60 + 512] = crc16 >> 8; secbuf[61 + 512] = crc16 & 0xff; - memset(secbuf + 512 + 62, 0x4e, 80 / drv->ddhd); - dstmfmbuf = mfmcoder(secbuf, mfm2, 60 + 512 + 2 + 80 / drv->ddhd); + memset(secbuf + 512 + 62, 0x4e, 76 / drv->ddhd); + dstmfmbuf = mfmcoder(secbuf, mfm2, 60 + 512 + 2 + 76 / drv->ddhd); mfm2[12] = 0x4489; mfm2[13] = 0x4489; mfm2[14] = 0x4489; @@ -1229,6 +1228,8 @@ static void decode_pcdos (drive *drv) mfm2[57] = 0x4489; mfm2[58] = 0x4489; } + for (i = 0; i < 200; i++) + *dstmfmbuf++ = 0x9254; drv->skipoffset = 0; drv->tracklen = (dstmfmbuf - drv->bigmfmbuf) * 16; if (disk_debug_logging > 0) diff --git a/od-win32/avioutput.c b/od-win32/avioutput.c index c4585b14..eef5d8ed 100755 --- a/od-win32/avioutput.c +++ b/od-win32/avioutput.c @@ -53,7 +53,7 @@ int avioutput_audio, avioutput_video, avioutput_enabled, avioutput_requested; int avioutput_width, avioutput_height, avioutput_bits; int avioutput_fps = VBLANK_HZ_PAL; -DWORD avioutput_framelimiter = 0; +DWORD avioutput_framelimiter = 0, avioutput_nosoundoutput = 0; char avioutput_filename[MAX_DPATH]; static char avioutput_filename_tmp[MAX_DPATH]; @@ -105,14 +105,20 @@ static HKEY openavikey(void) static void storesettings(HKEY avikey) { RegSetValueEx(avikey, "FrameLimiter", 0, REG_DWORD, (BYTE*)&avioutput_framelimiter, sizeof(DWORD)); + RegSetValueEx(avikey, "NoSoundOutput", 0, REG_DWORD, (BYTE*)&avioutput_nosoundoutput, sizeof(DWORD)); RegSetValueEx(avikey, "FPS", 0, REG_DWORD, (BYTE*)&avioutput_fps, sizeof(DWORD)); } static void getsettings(HKEY avikey) { DWORD val; DWORD ss = sizeof (DWORD); + if (RegQueryValueEx(avikey, "NoSoundOutput", 0, NULL, (BYTE*)&val, &ss) == ERROR_SUCCESS) + avioutput_nosoundoutput = val; + ss = sizeof (DWORD); if (RegQueryValueEx(avikey, "FrameLimiter", 0, NULL, (BYTE*)&val, &ss) == ERROR_SUCCESS) avioutput_framelimiter = val; + if (!avioutput_framelimiter) + avioutput_nosoundoutput = 1; ss = sizeof (DWORD); if (RegQueryValueEx(avikey, "FPS", 0, NULL, (BYTE*)&val, &ss) == ERROR_SUCCESS) avioutput_fps = val; diff --git a/od-win32/avioutput.h b/od-win32/avioutput.h index 81a44533..693cbead 100755 --- a/od-win32/avioutput.h +++ b/od-win32/avioutput.h @@ -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; +extern DWORD avioutput_framelimiter, avioutput_nosoundoutput; extern char avioutput_filename[MAX_DPATH]; diff --git a/od-win32/resources/resource.h b/od-win32/resources/resource.h index 0913fb48..f516f95e 100755 --- a/od-win32/resources/resource.h +++ b/od-win32/resources/resource.h @@ -755,6 +755,8 @@ #define IDC_STATE_BUFFERSIZE 1647 #define IDC_SOUNDDRIVESELECT 1647 #define IDC_PANELTREE 1647 +#define IDC_AVIOUTPUT_FRAMELIMITER2 1647 +#define IDC_AVIOUTPUT_NOSOUNDOUTPUT 1647 #define IDC_AVIOUTPUT_DIMENSIONS_STATIC 1648 #define IDC_STATE_BUFFERSIZE_TEXT 1648 #define IDC_CONFIGTREE 1648 diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index 7db65950..ce0b4230 100755 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -500,11 +500,11 @@ BEGIN "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,174,56,100,10 END -IDD_AVIOUTPUT DIALOGEX 0, 0, 288, 193 +IDD_AVIOUTPUT DIALOGEX 0, 0, 288, 203 STYLE DS_SETFONT | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN - GROUPBOX "Output Properties",IDC_STATIC,5,8,274,97 + GROUPBOX "Output Properties",IDC_STATIC,5,8,274,118 EDITTEXT IDC_AVIOUTPUT_FILETEXT,15,21,226,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_CLIENTEDGE PUSHBUTTON "...",IDC_AVIOUTPUT_FILE,249,20,19,12 CONTROL "Audio",IDC_AVIOUTPUT_AUDIO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,36,32,11 @@ -513,19 +513,21 @@ BEGIN CONTROL "",IDC_AVIOUTPUT_VIDEO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,59,50,209,11 CONTROL "Disable frame rate limit while recording",IDC_AVIOUTPUT_FRAMELIMITER, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,68,136,10 - CONTROL "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,83,108,14 - CONTROL "PAL",IDC_AVIOUTPUT_PAL,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,133,83,66,14 - CONTROL "NTSC",IDC_AVIOUTPUT_NTSC,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,204,83,66,14 - CONTROL "Slider1",IDC_AVIOUTPUT_FPS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_ENABLESELRANGE | WS_TABSTOP,156,68,97,11 - LTEXT "fps",IDC_AVIOUTPUT_FPS_STATIC,255,68,19,8 - PUSHBUTTON "Save screenshot",IDC_SCREENSHOT,16,124,76,14 - GROUPBOX "Ripper",IDC_STATIC,5,110,275,38 - PUSHBUTTON "Pro Wizard",IDC_PROWIZARD,100,124,76,14,WS_DISABLED - CONTROL "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,124,77,14 - GROUPBOX "Input Recorder",IDC_STATIC,5,152,275,33 - CONTROL "Record",IDC_INPREC_RECORD,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,191,164,77,14 - CONTROL "Playback",IDC_INPREC_PLAY,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,16,165,77,14 - CONTROL "Alt. playback mode",IDC_INPREC_PLAYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,103,167,78,10 + CONTROL "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,103,108,14 + CONTROL "PAL",IDC_AVIOUTPUT_PAL,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,133,103,66,14 + CONTROL "NTSC",IDC_AVIOUTPUT_NTSC,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,204,103,66,14 + CONTROL "Slider1",IDC_AVIOUTPUT_FPS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_ENABLESELRANGE | WS_TABSTOP,156,84,97,11 + LTEXT "fps",IDC_AVIOUTPUT_FPS_STATIC,255,84,19,8 + PUSHBUTTON "Save screenshot",IDC_SCREENSHOT,16,141,76,14 + GROUPBOX "Ripper",IDC_STATIC,5,127,274,38 + PUSHBUTTON "Pro Wizard",IDC_PROWIZARD,100,141,76,14,WS_DISABLED + CONTROL "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,141,77,14 + GROUPBOX "Input Recorder",IDC_STATIC,5,166,274,33 + CONTROL "Record",IDC_INPREC_RECORD,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,191,177,77,14 + CONTROL "Playback",IDC_INPREC_PLAY,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,16,178,77,14 + CONTROL "Alt. playback mode",IDC_INPREC_PLAYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,103,180,78,10 + CONTROL "Disable sound output while recording",IDC_AVIOUTPUT_NOSOUNDOUTPUT, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,85,136,10 END IDD_INPUT DIALOGEX 0, 0, 300, 242 diff --git a/od-win32/sounddep/sound.c b/od-win32/sounddep/sound.c index fd2dfa4b..fbb2ea87 100755 --- a/od-win32/sounddep/sound.c +++ b/od-win32/sounddep/sound.c @@ -38,8 +38,6 @@ #define ADJUST_SIZE 10 #define EXP 1.3 -#define FILTER_FREQUENCY 7000.0 - //#define SOUND_DEBUG static int obtainedfreq; @@ -601,7 +599,7 @@ void finish_sound_buffer (void) #ifdef AVIOUTPUT if (avioutput_audio) AVIOutput_WriteAudio ((uae_u8*)sndbuffer, sndbufsize); - if (avioutput_enabled && !avioutput_framelimiter) + if (avioutput_enabled && (!avioutput_framelimiter || avioutput_nosoundoutput)) return; #endif if (!have_sound) diff --git a/od-win32/win32gui.c b/od-win32/win32gui.c index 1d9ce79d..510e9e6a 100755 --- a/od-win32/win32gui.c +++ b/od-win32/win32gui.c @@ -5098,10 +5098,9 @@ static void enable_for_sounddlg (HWND hDlg) EnableWindow (GetDlgItem (hDlg, IDC_SOUNDDRIVESELECT), workprefs.produce_sound); EnableWindow (GetDlgItem (hDlg, IDC_SOUNDDRIVEVOLUME), workprefs.produce_sound); EnableWindow (GetDlgItem (hDlg, IDC_SOUNDDRIVEVOLUME2), workprefs.produce_sound); - EnableWindow (GetDlgItem (hDlg, IDC_AUDIOSYNC), workprefs.produce_sound); - EnableWindow (GetDlgItem (hDlg, IDC_SOUNDFILTER), workprefs.produce_sound); + EnableWindow (GetDlgItem (hDlg, IDC_SOUNDSWAP), workprefs.produce_sound); EnableWindow (GetDlgItem (hDlg, IDC_SOUNDCALIBRATE), workprefs.produce_sound && full_property_sheet); } @@ -8159,6 +8158,7 @@ static void values_to_avioutputdlg(HWND hDlg) } CheckDlgButton (hDlg, IDC_AVIOUTPUT_FRAMELIMITER, avioutput_framelimiter ? FALSE : TRUE); + CheckDlgButton (hDlg, IDC_AVIOUTPUT_FRAMELIMITER, avioutput_nosoundoutput ? TRUE : FALSE); CheckDlgButton (hDlg, IDC_AVIOUTPUT_ACTIVATED, avioutput_requested ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton (hDlg, IDC_SAMPLERIPPER_ACTIVATED, sampleripper_enabled ? BST_CHECKED : BST_UNCHECKED); } @@ -8221,7 +8221,11 @@ static void enable_for_avioutputdlg(HWND hDlg) } SetWindowText(GetDlgItem(hDlg, IDC_AVIOUTPUT_VIDEO_STATIC), tmp); + EnableWindow(GetDlgItem(hDlg, IDC_AVIOUTPUT_NOSOUNDOUTPUT), avioutput_framelimiter ? TRUE : FALSE); + if (!avioutput_framelimiter) + avioutput_nosoundoutput = 1; CheckDlgButton (hDlg, IDC_AVIOUTPUT_FRAMELIMITER, avioutput_framelimiter ? FALSE : TRUE); + CheckDlgButton (hDlg, IDC_AVIOUTPUT_NOSOUNDOUTPUT, avioutput_nosoundoutput ? TRUE : FALSE); EnableWindow(GetDlgItem(hDlg, IDC_AVIOUTPUT_ACTIVATED), (!avioutput_audio && !avioutput_video) ? FALSE : TRUE); @@ -8283,6 +8287,10 @@ static INT_PTR CALLBACK AVIOutputDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPA avioutput_framelimiter = IsDlgButtonChecked (hDlg, IDC_AVIOUTPUT_FRAMELIMITER) ? 0 : 1; AVIOutput_SetSettings(); break; + case IDC_AVIOUTPUT_NOSOUNDOUTPUT: + avioutput_nosoundoutput = IsDlgButtonChecked (hDlg, IDC_AVIOUTPUT_NOSOUNDOUTPUT) ? 1 : 0; + AVIOutput_SetSettings(); + break; case IDC_INPREC_PLAYMODE: break;