This commit is contained in:
Toni Wilen 2016-10-15 20:23:27 +03:00
parent c1d006830b
commit 4e668927b5
12 changed files with 89 additions and 30 deletions

View File

@ -1834,6 +1834,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
cfgfile_dwrite_str (f, _T("waiting_blits"), waitblits[p->waiting_blits]);
cfgfile_write_bool (f, _T("ntsc"), p->ntscmode);
cfgfile_write_bool(f, _T("genlock"), p->genlock);
cfgfile_dwrite_bool(f, _T("genlock_alpha"), p->genlock_alpha);
cfgfile_dwrite_str(f, _T("genlockmode"), genlockmodes[p->genlock_image]);
cfgfile_dwrite_str(f, _T("genlock_image"), p->genlock_image_file);
cfgfile_dwrite_str(f, _T("genlock_video"), p->genlock_video_file);
@ -4670,7 +4671,8 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, const TCHAR *option, TCH
|| cfgfile_yesno (option, value, _T("ks_write_enabled"), &p->rom_readwrite)
|| cfgfile_yesno (option, value, _T("ntsc"), &p->ntscmode)
|| cfgfile_yesno (option, value, _T("sana2"), &p->sana2)
|| cfgfile_yesno (option, value, _T("genlock"), &p->genlock)
|| cfgfile_yesno(option, value, _T("genlock"), &p->genlock)
|| cfgfile_yesno(option, value, _T("genlock_alpha"), &p->genlock_alpha)
|| cfgfile_yesno(option, value, _T("cpu_compatible"), &p->cpu_compatible)
|| cfgfile_yesno(option, value, _T("cpu_threaded"), &p->cpu_thread)
|| cfgfile_yesno(option, value, _T("cpu_24bit_addressing"), &p->address_space_24)
@ -5207,7 +5209,7 @@ void cfgfile_compatibility_rtg(struct uae_prefs *p)
} else if (romtype == ROMTYPE_x86_VGA) {
romname = _T("");
}
addbcromtype(p, romtype, romname, NULL, devnum);
addbcromtype(p, romtype, false, romname, devnum);
devnum++;
}
}
@ -5258,7 +5260,7 @@ void cfgfile_compatibility_romtype(struct uae_prefs *p)
addbcromtype(p, ROMTYPE_NE2KPCMCIA, p->ne2000pcmcianame[0] != 0, NULL, 0);
addbcromtype(p, ROMTYPE_NE2KPCI, p->ne2000pciname[0] != 0, NULL, 0);
static int restricted_net[] = { ROMTYPE_A2065, ROMTYPE_NE2KPCMCIA, ROMTYPE_NE2KPCI, ROMTYPE_NE2KISA, ROMTYPE_ARIADNE2, 0 };
static int restricted_net[] = { ROMTYPE_A2065, ROMTYPE_NE2KPCMCIA, ROMTYPE_NE2KPCI, ROMTYPE_NE2KISA, ROMTYPE_ARIADNE2, ROMTYPE_XSURF, ROMTYPE_XSURF100Z2, ROMTYPE_XSURF100Z3, 0 };
static int restricted_x86[] = { ROMTYPE_A1060, ROMTYPE_A2088, ROMTYPE_A2088T, ROMTYPE_A2286, ROMTYPE_A2386, 0 };
static int restricted_pci[] = { ROMTYPE_GREX, ROMTYPE_MEDIATOR, ROMTYPE_PROMETHEUS, 0 };
romtype_restricted(p, restricted_net);

View File

@ -194,6 +194,7 @@ void devices_hsync(void)
#ifdef WITH_TOCCATA
sndboard_hsync();
#endif
ne2000_hsync();
DISK_hsync ();
audio_hsync ();
CIA_hsync_prehandler ();
@ -205,6 +206,7 @@ void devices_hsync(void)
#endif
}
// these really should be dynamically allocated..
void devices_rethink(void)
{
rethink_cias ();
@ -238,6 +240,7 @@ void devices_rethink(void)
#ifdef WITH_TOCCATA
sndboard_rethink();
#endif
rethink_ne2000();
rethink_gayle ();
idecontroller_rethink();
rethink_uae_int();
@ -303,6 +306,7 @@ void reset_all_systems (void)
#if defined (PARALLEL_PORT)
initparallel ();
#endif
ne2000_reset();
native2amiga_reset ();
dongle_reset ();
sampler_init ();
@ -462,7 +466,7 @@ void devices_pause(void)
#ifdef RETROPLATFORM
rp_pause(pause_emulation);
#endif
pausevideograb(true);
pausevideograb(1);
}
void devices_unpause(void)
@ -474,5 +478,5 @@ void devices_unpause(void)
#ifdef WITH_PPC
uae_ppc_pause(0);
#endif
pausevideograb(false);
pausevideograb(0);
}

View File

@ -509,6 +509,7 @@ struct uae_prefs {
bool genlock;
int genlock_image;
int genlock_mix;
bool genlock_alpha;
TCHAR genlock_image_file[MAX_DPATH];
TCHAR genlock_video_file[MAX_DPATH];
int monitoremu;

View File

@ -2663,7 +2663,9 @@ void handle_rawinput (LPARAM lParam)
if (dwSize <= sizeof (lpb)) {
if (GetRawInputData ((HRAWINPUT)lParam, RID_INPUT, lpb, &dwSize, sizeof (RAWINPUTHEADER)) == dwSize) {
raw = (RAWINPUT*)lpb;
handle_rawinput_2 (raw);
if (!isguiactive() || (inputdevice_istest() && isguiactive())) {
handle_rawinput_2 (raw);
}
DefRawInputProc (&raw, 1, sizeof (RAWINPUTHEADER));
} else {
write_log (_T("GetRawInputData(%d) failed, %d\n"), dwSize, GetLastError ());

View File

@ -529,6 +529,7 @@
#define IDC_GENLOCK 1220
#define IDC_COMPATIBLE_FPU 1221
#define IDC_FASTERRTG 1221
#define IDC_GENLOCK_ALPHA 1221
#define IDC_COMPATIBLE24 1222
#define IDC_SPEED 1223
#define IDC_FPU0 1224

View File

@ -702,7 +702,7 @@ BEGIN
PUSHBUTTON "Cancel",IDCANCEL,201,57,48,15
END
IDD_CHIPSET DIALOGEX 0, 0, 396, 258
IDD_CHIPSET DIALOGEX 0, 0, 396, 266
STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
@ -728,7 +728,7 @@ BEGIN
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,234,32,150,10
CONTROL "Wait for Blitter [] Compatibility hack for programs that don't wait for the blitter correctly, causing graphics corruption if CPU is too fast.",IDC_BLITWAIT,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,234,45,150,10
CONTROL "Genlock connected [] Allow boot sequence to detect genlock. Genlock is not emulated.",IDC_GENLOCK,
CONTROL "Genlock connected [] Allow boot sequence to detect genlock.",IDC_GENLOCK,
"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,209,150,10
LTEXT "Video port display hardware:",IDC_STATIC,237,62,117,15,SS_CENTERIMAGE
COMBOBOX IDC_MONITOREMU,237,80,147,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
@ -745,9 +745,11 @@ BEGIN
COMBOBOX IDC_GENLOCKMIX,330,209,54,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Cycle-exact (Full) [] The most compatible A500/A1200 emulation mode.",IDC_CYCLEEXACT,
"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,12,68,194,10
GROUPBOX "Genlock",IDC_STATIC,0,195,393,57
COMBOBOX IDC_GENLOCKFILE,12,231,356,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "...",IDC_GENLOCKFILESELECT,375,230,10,15
GROUPBOX "Genlock",IDC_STATIC,0,195,393,66
COMBOBOX IDC_GENLOCKFILE,12,241,356,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "...",IDC_GENLOCKFILESELECT,375,240,10,15
CONTROL "Include alpha channel in screenshots and video captures.",IDC_GENLOCK_ALPHA,
"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,226,214,10
END
IDD_CHIPSET2 DIALOGEX 0, 0, 396, 305
@ -1550,7 +1552,7 @@ BEGIN
IDD_CHIPSET, DIALOG
BEGIN
BOTTOMMARGIN, 192
BOTTOMMARGIN, 258
END
IDD_CHIPSET2, DIALOG

View File

@ -47,6 +47,8 @@
#define USE_XAUDIO 0
#ifndef _WIN64
// only in 8.1+ SDKs
typedef enum _AUDIO_STREAM_CATEGORY {
@ -105,6 +107,13 @@ public:
};
#else
#define AudioCategory_Media 11
#define AUDCLNT_STREAMOPTIONS_MATCH_FORMAT 0x2
#endif
EXTERN_C const IID IID_IAudioClient3;
MIDL_INTERFACE("7ED4EE07-8E67-4CD4-8C1A-2B7A5987AD42")
@ -1340,7 +1349,7 @@ static int open_audio_wasapi (struct sound_data *sd, int index, int exclusive)
if (s->AudioClientVersion >= 3) {
BOOL cap = FALSE;
hr = s->pAudioClient->IsOffloadCapable(AudioCategory_Media, &cap);
hr = s->pAudioClient->IsOffloadCapable((AUDIO_STREAM_CATEGORY)AudioCategory_Media, &cap);
write_log(_T("WASAPI: IsOffloadCapable() returned %d %08x\n"), cap, hr);
}
@ -1352,8 +1361,8 @@ static int open_audio_wasapi (struct sound_data *sd, int index, int exclusive)
AudioClientProperties props;
props.bIsOffload = FALSE;
props.cbSize = sizeof props;
props.eCategory = AudioCategory_Media;
props.Options = AUDCLNT_STREAMOPTIONS_MATCH_FORMAT;
props.eCategory = (AUDIO_STREAM_CATEGORY)AudioCategory_Media;
props.Options = (AUDCLNT_STREAMOPTIONS)AUDCLNT_STREAMOPTIONS_MATCH_FORMAT;;
hr = s->pAudioClient->SetClientProperties(&props);
if (FAILED(hr)) {
write_log(_T("WASAPI: SetClientProperties() %08X\n"), hr);

View File

@ -6417,6 +6417,9 @@ static void create_dump (struct _EXCEPTION_POINTERS *pExceptionPointers)
flush_log ();
savedump (dump, f, pExceptionPointers);
CloseHandle (f);
ClipCursor(NULL);
ReleaseCapture();
ShowCursor(TRUE);
if (isfullscreen () <= 0) {
_stprintf (msg, _T("Crash detected. MiniDump saved as:\n%s\n"), path3);
MessageBox (NULL, msg, _T("Crash"), MB_OK | MB_ICONWARNING | MB_TASKMODAL | MB_SETFOREGROUND);

View File

@ -20,12 +20,12 @@
#define LANG_DLL_FULL_VERSION_MATCH 1
#if WINUAEPUBLICBETA
#define WINUAEBETA _T("11")
#define WINUAEBETA _T("12")
#else
#define WINUAEBETA _T("")
#endif
#define WINUAEDATE MAKEBD(2016, 10, 8)
#define WINUAEDATE MAKEBD(2016, 10, 15)
//#define WINUAEEXTRA _T("AmiKit Preview")
//#define WINUAEEXTRA _T("Amiga Forever Edition")

View File

@ -2044,6 +2044,7 @@ int check_prefs_changed_gfx (void)
c |= currprefs.monitoremu != changed_prefs.monitoremu ? (2 | 8) : 0;
c |= currprefs.genlock_image != changed_prefs.genlock_image ? (2 | 8) : 0;
c |= currprefs.genlock != changed_prefs.genlock ? (2 | 8) : 0;
c |= currprefs.genlock_alpha != changed_prefs.genlock_alpha ? (1 | 8) : 0;
c |= currprefs.genlock_mix != changed_prefs.genlock_mix ? (1 | 256) : 0;
c |= _tcsicmp(currprefs.genlock_image_file, changed_prefs.genlock_image_file) ? (2 | 8) : 0;
c |= _tcsicmp(currprefs.genlock_video_file, changed_prefs.genlock_video_file) ? (2 | 8) : 0;
@ -2141,6 +2142,7 @@ int check_prefs_changed_gfx (void)
currprefs.genlock_image = changed_prefs.genlock_image;
currprefs.genlock = changed_prefs.genlock;
currprefs.genlock_mix = changed_prefs.genlock_mix;
currprefs.genlock_alpha = changed_prefs.genlock_alpha;
_tcscpy(currprefs.genlock_image_file, changed_prefs.genlock_image_file);
_tcscpy(currprefs.genlock_video_file, changed_prefs.genlock_video_file);
@ -2437,9 +2439,9 @@ void init_colors (void)
S2X_configure (red_bits, green_bits, blue_bits, red_shift,green_shift, blue_shift);
#endif
#ifdef AVIOUTPUT
AVIOutput_RGBinfo (red_bits, green_bits, blue_bits, red_shift, green_shift, blue_shift);
AVIOutput_RGBinfo (red_bits, green_bits, blue_bits, alpha_bits, red_shift, green_shift, blue_shift, alpha_shift);
#endif
Screenshot_RGBinfo (red_bits, green_bits, blue_bits, red_shift, green_shift, blue_shift);
Screenshot_RGBinfo (red_bits, green_bits, blue_bits, alpha_bits, red_shift, green_shift, blue_shift, alpha_shift);
}
#ifdef PICASSO96

View File

@ -1409,7 +1409,7 @@ static const int msi_cpuboard[] = { 0, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
#define MIN_REFRESH_RATE 1
#define MAX_REFRESH_RATE 10
#define MIN_SOUND_MEM 0
#define MAX_SOUND_MEM 9
#define MAX_SOUND_MEM 10
struct romscandata {
UAEREG *fkey;
@ -6694,6 +6694,7 @@ static void enable_for_chipsetdlg (HWND hDlg)
ew(hDlg, IDC_GENLOCKMODE, workprefs.genlock ? TRUE : FALSE);
ew(hDlg, IDC_GENLOCKMIX, workprefs.genlock ? TRUE : FALSE);
ew(hDlg, IDC_GENLOCK_ALPHA, workprefs.genlock ? TRUE : FALSE);
ew(hDlg, IDC_GENLOCKFILE, workprefs.genlock && workprefs.genlock_image >= 3 && workprefs.genlock_image < 5 ? TRUE : FALSE);
ew(hDlg, IDC_GENLOCKFILESELECT, workprefs.genlock && workprefs.genlock_image >= 3 && workprefs.genlock_image < 5 ? TRUE : FALSE);
}
@ -7684,6 +7685,7 @@ static void values_to_chipsetdlg (HWND hDlg)
SendDlgItemMessage(hDlg, IDC_MONITOREMU, CB_SETCURSEL, workprefs.monitoremu, 0);
SendDlgItemMessage(hDlg, IDC_GENLOCKMODE, CB_SETCURSEL, workprefs.genlock_image, 0);
SendDlgItemMessage(hDlg, IDC_GENLOCKMIX, CB_SETCURSEL, workprefs.genlock_mix / 25, 0);
CheckDlgButton(hDlg, IDC_GENLOCK_ALPHA, workprefs.genlock_alpha);
}
static int cs_compatible = CP_GENERIC;
@ -7696,8 +7698,11 @@ static void values_from_chipsetdlg (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l
int id = LOWORD(wParam);
workprefs.genlock = ischecked (hDlg, IDC_GENLOCK);
workprefs.genlock_alpha = ischecked(hDlg, IDC_GENLOCK_ALPHA);
workprefs.immediate_blits = ischecked (hDlg, IDC_BLITIMM);
workprefs.waiting_blits = ischecked (hDlg, IDC_BLITWAIT) ? 1 : 0;
n2 = ischecked (hDlg, IDC_CYCLEEXACTMEMORY);
n1 = ischecked (hDlg, IDC_CYCLEEXACT);
if (workprefs.cpu_cycle_exact != n1 || workprefs.cpu_memory_cycle_exact != n2) {
@ -11816,8 +11821,10 @@ static int sounddrivesel;
static int getsoundbufsizeindex (int size)
{
int idx;
if (size < sndbufsizes[0])
return 0;
for (idx = 0; sndbufsizes[idx] < size && sndbufsizes[idx + 1] >= 0 ; idx++);
return idx;
return idx + 1;
}
static void update_soundgui (HWND hDlg)
@ -11825,8 +11832,12 @@ static void update_soundgui (HWND hDlg)
int bufsize;
TCHAR txt[20];
bufsize = getsoundbufsizeindex (workprefs.sound_maxbsiz) + 1;
_stprintf (txt, _T("%d"), bufsize);
bufsize = getsoundbufsizeindex (workprefs.sound_maxbsiz);
if (bufsize <= 0) {
_tcscpy(txt, _T("Min"));
} else {
_stprintf (txt, _T("%d"), bufsize);
}
SetDlgItemText (hDlg, IDC_SOUNDBUFFERMEM, txt);
SendDlgItemMessage (hDlg, IDC_SOUNDVOLUME, TBM_SETPOS, TRUE, 100 - workprefs.sound_volume_master);
@ -11958,7 +11969,7 @@ static void values_to_sounddlg (HWND hDlg)
CheckDlgButton (hDlg, IDC_SOUND_CDPAULAMIX, workprefs.sound_cdaudio);
if (workprefs.sound_maxbsiz < SOUND_BUFFER_MULTIPLIER)
workprefs.sound_maxbsiz = SOUND_BUFFER_MULTIPLIER;
workprefs.sound_maxbsiz = 0;
SendDlgItemMessage (hDlg, IDC_SOUNDBUFFERRAM, TBM_SETPOS, TRUE, getsoundbufsizeindex (workprefs.sound_maxbsiz));
SendDlgItemMessage (hDlg, IDC_SOUNDVOLUME, TBM_SETPOS, TRUE, 0);
@ -12214,8 +12225,12 @@ static INT_PTR CALLBACK SoundDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
case WM_HSCROLL:
if ((HWND)lParam == GetDlgItem (hDlg, IDC_SOUNDBUFFERRAM)) {
int v = SendMessage (GetDlgItem (hDlg, IDC_SOUNDBUFFERRAM), TBM_GETPOS, 0, 0);
if (v >= 0)
workprefs.sound_maxbsiz = sndbufsizes[v];
if (v >= 0) {
if (v == 0)
workprefs.sound_maxbsiz = 0;
else
workprefs.sound_maxbsiz = sndbufsizes[v - 1];
}
}
workprefs.sound_volume_master = 100 - SendMessage (GetDlgItem (hDlg, IDC_SOUNDVOLUME), TBM_GETPOS, 0, 0);
(*volumeselection) = 100 - SendMessage (GetDlgItem (hDlg, IDC_SOUNDVOLUMEEXT), TBM_GETPOS, 0, 0);
@ -14181,8 +14196,7 @@ static void getfloppytypeq (HWND hDlg, int n)
static int getfloppybox (HWND hDlg, int f_text, TCHAR *out, int maxlen, int type)
{
LRESULT val;
TCHAR *p1, *p2, *p;
TCHAR *tmp;
TCHAR *p;
int i;
out[0] = 0;
@ -16637,7 +16651,6 @@ static INT_PTR CALLBACK RemapSpecialsProc(HWND hDlg, UINT msg, WPARAM wParam, LP
case WM_NOTIFY:
if (((LPNMHDR)lParam)->idFrom == IDC_LISTDIALOG_LIST)
{
TCHAR name[256];
int column, entry;
NM_LISTVIEW *nmlistview = (NM_LISTVIEW *)lParam;
list = nmlistview->hdr.hwndFrom;
@ -16648,7 +16661,6 @@ static INT_PTR CALLBACK RemapSpecialsProc(HWND hDlg, UINT msg, WPARAM wParam, LP
{
entry = listview_entry_from_click(list, &column);
if (entry >= 0 && inputmap_selected >= 0) {
int devnum, num, sub;
if (inputmap_handle(NULL, -1, -1, NULL, NULL, -1, NULL, inputmap_selected,
remapcustoms[entry].flags, IDEV_MAPPED_AUTOFIRE_SET | IDEV_MAPPED_TOGGLE | IDEV_MAPPED_INVERTTOGGLE, NULL)) {
inputdevice_generate_jport_custom(&workprefs, inputmap_port);

View File

@ -5,6 +5,27 @@ JIT Direct current rules are less complex now. It automatically switches off onl
Note that in 64-bit version RTG VRAM must be inside of reserved natmem space. (Outside = error message and return back to GUI)
Beta 12:
- If genlock is active, mode is not "-" and new genlock alpha option is checked, screenshots and avioutput videos
include alpha-channel generated from genlock transparency data. Only works in 32-bit mode and may not work if capture
before filtering is not set.
- Added genlock video input events: restart, pause/unpause, next and previous frame.
- WASAPI shared mode uses lower latency mode introduced in Windows 10 that allows sub-10ms latencies in shared mode (if sound driver
supports it). Buffers larger than 10ms and non-Windows 10 systems use "old" method.
- "Min" (WASAPI only) sound buffer setting added. Selects smallest buffer size that driver supports.
- WASAPI sound buffer size adjusted. All buffer size values now allocate smaller buffer than previously, pull (event) mode
is much more stable than previously used push mode, there is no need for very large buffer sizes anymore.
- WASAPI sound automatically switches to default device if current device disappears (for example unplugged USB sound card/headset)
- Added RTL8019 9346 EEPROM emulation.
- Ariadne II NIC emulation. RTL8019AS based. (9346 contents are not correct but driver does not seem to care)
- X-Surf NIC emulation, also RTL8019AS based. (Including ISA PNP emulation that driver needs...) No IDE support.
- X-Surf 100 (Z2 and Z3) NIC emulation, uses RTL8019AS "compatible" chip. Does not emulate any AX88796B extra features (=only works
if driver assumes chip only supports NE2000/RTL8019AS features. Official driver does not seem to use any extra features.)
- Ariadne II and X-Surfs are currently SLIRP-only, no configuration available. Multiple enabled NICs are still also not supported.
- Disable horizontal/vertical filter configured blanking if display port adapter is active that needs RGBI control lines.
- Try to uncapture mouse before showing crash report dialog.
Beta 11:
- Added generic Z2/Z3 autoconfig support to expansion.cpp. Previously each expansion type needed own separate autoconfig handling.