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;
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;
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;
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)
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];
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;
"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
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
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);
}
}
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);
}
}
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);
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;