static const TCHAR *abspointers[] = { _T("none"), _T("mousehack"), _T("tablet"), 0 };
static const TCHAR *magiccursors[] = { _T("both"), _T("native"), _T("host"), 0 };
static const TCHAR *autoscale[] = { _T("none"), _T("auto"), _T("standard"), _T("max"), _T("scale"), _T("resize"), _T("center"), _T("manual"),
- _T("integer"), _T("half-integer"), _T("integer_auto"), _T("half-integer_auto"), _T("separator"), _T("overscan_blanking"), 0 };
+ _T("integer"), _T("integer_auto"), _T("separator"), _T("overscan_blanking"), 0 };
static const TCHAR *autoscale_rtg[] = { _T("resize"), _T("scale"), _T("center"), _T("integer"), 0 };
+static const TCHAR *autoscalelimit[] = { _T("1/1"), _T("1/2"), _T("1/4"), _T("1/8"), 0 };
static const TCHAR *joyportmodes[] = { _T(""), _T("mouse"), _T("mousenowheel"), _T("djoy"), _T("gamepad"), _T("ajoy"), _T("cdtvjoy"), _T("cd32joy"), _T("lightpen"), 0 };
static const TCHAR *joyaf[] = { _T("none"), _T("normal"), _T("toggle"), _T("always"), 0 };
static const TCHAR *epsonprinter[] = { _T("none"), _T("ascii"), _T("epson_matrix_9pin"), _T("epson_matrix_24pin"), _T("epson_matrix_48pin"), 0 };
};
static const TCHAR *cdmodes[] = { _T("disabled"), _T(""), _T("image"), _T("ioctl"), _T("spti"), _T("aspi"), 0 };
static const TCHAR *cdconmodes[] = { _T(""), _T("uae"), _T("ide"), _T("scsi"), _T("cdtv"), _T("cd32"), 0 };
-static const TCHAR *specialmonitors[] = { _T("none"), _T("autodetect"), _T("a2024"), _T("graffiti"), _T("ham_e"), _T("dctv"), 0 };
+static const TCHAR *specialmonitors[] = { _T("none"), _T("autodetect"), _T("a2024"), _T("graffiti"), _T("ham_e"), _T("ham_e_plus"), _T("dctv"), 0 };
static const TCHAR *rtgtype[] = {
_T("ZorroII"), _T("ZorroIII"),
_T("PicassoII"),
cfgfile_dwrite_ext (f, _T("gfx_filter_keep_autoscale_aspect"), ext, _T("%d"), gf->gfx_filter_keep_autoscale_aspect);
cfgfile_dwrite_str (f, _T("gfx_filter_keep_aspect"), ext, aspects[gf->gfx_filter_keep_aspect]);
cfgfile_dwrite_str(f, _T("gfx_filter_autoscale"), ext, ext == NULL ? autoscale[gf->gfx_filter_autoscale] : autoscale_rtg[gf->gfx_filter_autoscale]);
+ cfgfile_dwrite_str (f, _T("gfx_filter_autoscale_limit"), ext, autoscalelimit[gf->gfx_filter_integerscalelimit]);
cfgfile_dwrite_ext (f, _T("gfx_filter_aspect_ratio"), ext, _T("%d:%d"),
gf->gfx_filter_aspect >= 0 ? (gf->gfx_filter_aspect / ASPECTMULT) : -1,
gf->gfx_filter_aspect >= 0 ? (gf->gfx_filter_aspect & (ASPECTMULT - 1)) : -1);
struct gfx_filterdata *gf = &p->gf[j];
const TCHAR *ext = j == 0 ? NULL : _T("_rtg");
if (cfgfile_strval (option, value, _T("gfx_filter_autoscale"), ext, &gf->gfx_filter_autoscale, j == 0 ? autoscale : autoscale_rtg, 0)
- || cfgfile_strval (option, value, _T("gfx_filter_keep_aspect"), ext, &gf->gfx_filter_keep_aspect, aspects, 0))
+ || cfgfile_strval (option, value, _T("gfx_filter_keep_aspect"), ext, &gf->gfx_filter_keep_aspect, aspects, 0)
+ || cfgfile_strval (option, value, _T("gfx_filter_autoscale_limit"), ext, &gf->gfx_filter_integerscalelimit, autoscalelimit, 0))
return 1;
+
if (cfgfile_floatval (option, value, _T("gfx_filter_vert_zoomf"), ext, &gf->gfx_filter_vert_zoom)
|| cfgfile_floatval (option, value, _T("gfx_filter_horiz_zoomf"), ext, &gf->gfx_filter_horiz_zoom)
|| cfgfile_floatval (option, value, _T("gfx_filter_vert_zoom_multf"), ext, &gf->gfx_filter_vert_zoom_mult)
_T(" fp \"<name>\"/<addr> Step forward until process <name> or <addr> is active.\n")
_T(" fl List breakpoints.\n")
_T(" fd Remove all breakpoints.\n")
- _T(" fs <val> <mask> Break when (SR & mask) = val.\n")
+ _T(" fs <lines to wait> | <vpos> <hpos> Wait n scanlines/position.\n")
+ _T(" fc <CCKs to wait> Wait n color clocks.\n")
+ _T(" fS <val> <mask> Break when (SR & mask) = val.\n")
_T(" f <addr1> <addr2> Step forward until <addr1> <= PC <= <addr2>.\n")
_T(" e Dump contents of all custom registers, ea = AGA colors.\n")
_T(" i [<addr>] Dump contents of interrupt and trap vectors.\n")
static int cycle_breakpoint(TCHAR **c)
{
- TCHAR nc = _totupper((*c)[0]);
+ TCHAR nc = (*c)[0];
next_char(c);
if (more_params(c)) {
int count = readint(c);
add500_init, add500_add_scsi_unit, ROMTYPE_ADD500, 0, 0, 2, false,
NULL, 0,
false, EXPANSIONTYPE_SCSI,
- 8498, 27, 0,
+ 8498, 27, 0
+ },
+ {
+ _T("rochard"), _T("RocHard RH800C"), _T("Roctec"),
+ rochard_init, rochard_add_ide_unit, ROMTYPE_ROCHARD | ROMTYPE_NONE, 0, 0, 2, false,
+ NULL, 0,
+ true, EXPANSIONTYPE_IDE,
+ 2144, 2, 0
},
#if 0
{
#define AUTOSCALE_CENTER 6
#define AUTOSCALE_MANUAL 7 // use gfx_xcenter_pos and gfx_ycenter_pos
#define AUTOSCALE_INTEGER 8
-#define AUTOSCALE_HALF_INTEGER 9
-#define AUTOSCALE_INTEGER_AUTOSCALE 10
-#define AUTOSCALE_HALF_INTEGER_AUTOSCALE 11
-#define AUTOSCALE_SEPARATOR 12
-#define AUTOSCALE_OVERSCAN_BLANK 13
+#define AUTOSCALE_INTEGER_AUTOSCALE 9
+#define AUTOSCALE_SEPARATOR 10
+#define AUTOSCALE_OVERSCAN_BLANK 11
#define MONITOREMU_NONE 0
#define MONITOREMU_AUTO 1
#define MONITOREMU_A2024 2
#define MONITOREMU_GRAFFITI 3
#define MONITOREMU_HAM_E 4
-#define MONITOREMU_DCTV 5
+#define MONITOREMU_HAM_E_PLUS 5
+#define MONITOREMU_DCTV 6
#define MAX_FILTERSHADERS 4
int gfx_filter_gamma, gfx_filter_gamma_ch[3];
int gfx_filter_keep_aspect, gfx_filter_aspect;
int gfx_filter_autoscale;
+ int gfx_filter_integerscalelimit;
int gfx_filter_keep_autoscale_aspect;
};
goto end;
}
- while (tcp_is_connected () == false) {
- Sleep (1000);
- write_log (_T("SERIAL_TCP: waiting for connect...\n"));
+ if (waitmode) {
+ while (tcp_is_connected () == false) {
+ Sleep (1000);
+ write_log (_T("SERIAL_TCP: waiting for connect...\n"));
+ }
}
xfree (port);
comports[cnt]->name = my_strdup (comports[cnt]->dev);
cnt++;
}
+ if (cnt < MAX_SERPAR_PORTS) {
+ comports[cnt] = xcalloc(struct serparportinfo, 1);
+ comports[cnt]->dev = my_strdup (_T("TCP://0.0.0.0:1234/wait"));
+ comports[cnt]->cfgname = my_strdup (comports[cnt]->dev);
+ comports[cnt]->name = my_strdup (comports[cnt]->dev);
+ cnt++;
+ }
write_log (_T("Parallel port enumeration..\n"));
enumports_2 (parports, 0, true);
FILE *f;
TCHAR *ppath = *pppath;
+ inimode = 0;
if (!ppath) {
int ok = 0;
TCHAR *posn;
write_log (_T("'%s' enabled\n"), inipath);
}
-int getregmode (void)
+const TCHAR *getregmode (void)
{
if (!inimode)
- return 0;
- return inimode;
+ return NULL;
+ return inipath;
}
TCHAR *inipath;
} UAEREG;
-extern int getregmode (void);
+extern const TCHAR *getregmode (void);
extern int reginitializeinit (TCHAR **path);
extern void regstatus (void);
#define IDS_DISPLAY_ATTRIBUTES 403
#define IDS_NUMSG_NO_PPC 404
#define IDS_NUMSG_UAEBOOTROM_PCC 405
-#define IDS_AUTOSCALE_HALF_INTEGER 406
-#define IDS_AUTOSCALE_HALF_INTEGER_AUTOSCALE 407
#define IDS_AUTOSCALE_OVERSCAN_BLANK 408
#define IDS_QS_MODELS 1000
#define IDS_QS_MODEL_A500 1001
#define IDC_CS_DF0IDHW 1817
#define IDC_FILTERSTACK 1818
#define IDC_INPUTMAP_CAPTURE 1819
+#define IDC_FILTERINTEGER 1819
#define IDC_INPUTMAP_CUSTOM 1820
#define IDC_INPUTMAP_DELETE 1821
#define IDC_INPUTMAP_TEST 1822
// Microsoft Visual C++ generated resource script.
//
-#include "winres.h"
#include "resource.h"
+#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
// English resources
FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
GROUPBOX "Filter Settings",-1,1,1,393,160
- COMBOBOX IDC_FILTERMODE,9,31,167,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
- COMBOBOX IDC_FILTERSTACK,182,31,27,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
- COMBOBOX IDC_FILTERFILTER,215,31,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "Reset to defaults",IDC_FILTERDEFAULT,283,31,106,14
- COMBOBOX IDC_FILTEROVERLAYTYPE,9,52,118,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
- COMBOBOX IDC_FILTEROVERLAY,134,52,145,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
- COMBOBOX IDC_FILTERAUTOSCALE,284,52,104,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_FILTERMODE,9,31,153,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_FILTERSTACK,167,31,27,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_FILTERFILTER,199,31,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "Reset to defaults",IDC_FILTERDEFAULT,268,31,121,14
+ COMBOBOX IDC_FILTEROVERLAYTYPE,9,52,119,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_FILTEROVERLAY,134,52,129,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_FILTERAUTOSCALE,268,52,88,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
RTEXT "Horiz. size:",-1,7,79,81,10,SS_CENTERIMAGE
COMBOBOX IDC_FILTERHZMULT,92,78,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
RTEXT "Vert. size:",-1,7,100,81,10,SS_CENTERIMAGE
PUSHBUTTON "Load",IDC_FILTERPRESETLOAD,205,272,55,14
PUSHBUTTON "Save",IDC_FILTERPRESETSAVE,265,272,55,14
PUSHBUTTON "Delete",IDC_FILTERPRESETDELETE,325,272,55,14
- COMBOBOX IDC_FILTER_NATIVERTG,284,12,104,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_FILTER_NATIVERTG,268,12,120,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_FILTERINTEGER,361,52,27,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
END
IDD_HARDDRIVE DIALOGEX 0, 0, 396, 109
IDD_FILTER, DIALOG
BEGIN
- BOTTOMMARGIN, 288
END
IDD_HARDDRIVE, DIALOG
IDS_NUMSG_NO_PPC "PPC CPU was started but PPC CPU emulation core plugin was not found. Download available from http://www.winuae.net/"
IDS_NUMSG_UAEBOOTROM_PCC
"PPC native OS booted with UAE boot ROM active. UAE expansions are not hardware emulated and are not PPC compatible. (UAE HD controller, uaescsi.device, uaeserial, bsdsocket and so on..)"
- IDS_AUTOSCALE_HALF_INTEGER "Half-integer scaling"
- IDS_AUTOSCALE_HALF_INTEGER_AUTOSCALE "Auto Half-integer scaling"
IDS_AUTOSCALE_OVERSCAN_BLANK "Overscan blanking"
END
} else if (integerscale) {
hmult = vmult = 1;
p->gf[0].gfx_filter_autoscale = AUTOSCALE_INTEGER;
+ p->gf[0].gfx_filter_integerscalelimit = 0;
if (sm->dwClipFlags & RP_CLIPFLAGS_AUTOCLIP) {
p->gfx_xcenter_pos = -1;
p->gfx_ycenter_pos = -1;
static int data_in_serdatr; /* new data received */
static int data_in_sershift; /* data transferred from SERDAT to shift register */
static uae_u16 serdatshift; /* serial shift register */
+static uae_u16 serdatshift_masked; /* stop bit masked */
static int ovrun;
static int dtr;
static int serial_period_hsyncs, serial_period_hsync_counter;
if (checkserwrite()) {
if (ninebit)
writeser(((serdatshift >> 8) & 1) | 0xa8);
- writeser(serdatshift);
+ writeser(serdatshift_masked);
} else {
// buffer full, try again later
sent = false;
static void serdatcopy(void)
{
+ int bits;
+
if (data_in_sershift || !data_in_serdat)
return;
serdatshift = serdat;
+ bits = 8;
+ if ((serdatshift & 0xff80) == 0x80) {
+ bits = 7;
+ }
+ serdatshift_masked = serdatshift & ((1 << bits) - 1);
data_in_sershift = 1;
data_in_serdat = 0;
INTREQ(0x8000 | 0x0001);
serial_check_irq();
checksend();
+
if (seriallog) {
gotlogwrite = true;
- write_log(_T("%c"), dochar(serdatshift));
+ write_log(_T("%c"), dochar(serdatshift_masked));
}
if (serper == 372) {
if (enforcermode & 2) {
- console_out_f(_T("%c"), dochar(serdatshift));
- if (serdatshift == 256 + 10)
+ console_out_f(_T("%c"), dochar(serdatshift_masked));
+ if (serdatshift_masked == 10)
console_out(_T("\n"));
}
}
// if someone uses serial port as some kind of timer..
if (currprefs.cpu_cycle_exact) {
- int per, bits;
+ int per;
bits = 16 + 1;
for (int i = 15; i >= 0; i--) {
}
}
-static TCHAR *getdefaultini (void)
+static TCHAR *getdefaultini (int *tempfile)
{
FILE *f;
TCHAR path[MAX_DPATH], orgpath[MAX_DPATH];
+
+ *tempfile = 0;
path[0] = 0;
if (!GetFullPathName (_wpgmptr, sizeof path / sizeof (TCHAR), path, NULL))
_tcscpy (path, _wpgmptr);
return my_strdup (path);
}
#endif
+ *tempfile = 1;
int v = GetTempPath (sizeof path / sizeof (TCHAR), path);
if (v == 0 || v > sizeof path / sizeof (TCHAR))
return my_strdup (orgpath);
return 2;
}
if (!_tcscmp (arg, _T("portable"))) {
- inipath = getdefaultini ();
+ int temp;
+ inipath = getdefaultini (&temp);
createbootlog = false;
return 2;
}
reginitializeinit (&inipath);
hWinUAEKey = NULL;
- if (getregmode () == 0 || WINUAEPUBLICBETA > 0) {
+ if (getregmode () == NULL || WINUAEPUBLICBETA > 0) {
/* Create/Open the hWinUAEKey which points our config-info */
RegCreateKeyEx (HKEY_CURRENT_USER, _T("Software\\Arabuusimiehet\\WinUAE"), 0, _T(""), REG_OPTION_NON_VOLATILE,
KEY_WRITE | KEY_READ, NULL, &hWinUAEKey, &disposition);
if (hWinUAEKey == NULL) {
FILE *f;
TCHAR *path;
+ int tempfile;
- path = getdefaultini ();
+ path = getdefaultini (&tempfile);
f = _tfopen (path, _T("r"));
if (!f)
f = _tfopen (path, _T("w"));
return NULL;
}
+bool switchreginimode(void)
+{
+ TCHAR *path;
+ const TCHAR *inipath = getregmode();
+ if (inipath == NULL) {
+ // reg -> ini
+ FILE *f;
+ int tempfile;
+
+ path = getdefaultini(&tempfile);
+ if (tempfile)
+ return false;
+ f = _tfopen (path, _T("w"));
+ if (f) {
+ fclose(f);
+ return reginitializeinit(&path) != 0;
+ }
+ } else {
+ // ini -> reg
+ DeleteFile(inipath);
+ path = NULL;
+ reginitializeinit(&path);
+ return true;
+ }
+ return false;
+}
+
static const TCHAR *pipename = _T("\\\\.\\pipe\\WinUAE");
static bool singleprocess (void)
#define LANG_DLL_FULL_VERSION_MATCH 1
#if WINUAEPUBLICBETA
-#define WINUAEBETA _T("15")
+#define WINUAEBETA _T("16")
#else
#define WINUAEBETA _T("")
#endif
-#define WINUAEDATE MAKEBD(2015, 4, 5)
+#define WINUAEDATE MAKEBD(2015, 4, 18)
//#define WINUAEEXTRA _T("AmiKit Preview")
//#define WINUAEEXTRA _T("Amiga Forever Edition")
filterymult = scale;
if (scalemode == AUTOSCALE_STATIC_MAX || scalemode == AUTOSCALE_STATIC_NOMINAL ||
- scalemode == AUTOSCALE_INTEGER || scalemode == AUTOSCALE_INTEGER_AUTOSCALE ||
- scalemode == AUTOSCALE_HALF_INTEGER || scalemode == AUTOSCALE_HALF_INTEGER_AUTOSCALE) {
+ scalemode == AUTOSCALE_INTEGER || scalemode == AUTOSCALE_INTEGER_AUTOSCALE) {
if (specialmode) {
cx = 0;
scl = true;
}
- if (scalemode == AUTOSCALE_INTEGER || scalemode == AUTOSCALE_INTEGER_AUTOSCALE ||
- scalemode == AUTOSCALE_HALF_INTEGER || scalemode == AUTOSCALE_HALF_INTEGER_AUTOSCALE) {
+ if (scalemode == AUTOSCALE_INTEGER || scalemode == AUTOSCALE_INTEGER_AUTOSCALE) {
int maxw = currprefs.gfx_size.width;
int maxh = currprefs.gfx_size.height;
double mult = 1;
get_custom_topedge (&cx, &cy, false);
}
- if (scalemode == AUTOSCALE_INTEGER_AUTOSCALE || scalemode == AUTOSCALE_HALF_INTEGER_AUTOSCALE) {
+ if (scalemode == AUTOSCALE_INTEGER_AUTOSCALE) {
ok = get_custom_limits (&cw, &ch, &cx, &cy, &crealh) != 0;
if (ok)
store_custom_limits (cw, ch, cx, cy);
}
- if (scalemode == AUTOSCALE_INTEGER || scalemode == AUTOSCALE_HALF_INTEGER || ok == false) {
+ if (scalemode == AUTOSCALE_INTEGER || ok == false) {
getmanualpos (&cx, &cy, &cw, &ch);
store_custom_limits (cw, ch, cx, cy);
}
filter_horiz_zoom_mult = 1.0;
filter_vert_zoom_mult = 1.0;
- double multadd = (scalemode == AUTOSCALE_HALF_INTEGER || scalemode == AUTOSCALE_HALF_INTEGER_AUTOSCALE) ? 0.5 : 1.0;
+ double multadd = 1.0 / (1 << currprefs.gf[picasso_on].gfx_filter_integerscalelimit);
if (cw2 > maxw || ch2 > maxh) {
while (cw2 / mult > maxw || ch2 / mult > maxh)
mult += multadd;
autoaspectratio = 0;
if (currprefs.gf[picasso_on].gfx_filter_keep_autoscale_aspect && cw > 0 && ch > 0 && crealh > 0 && (scalemode == AUTOSCALE_NORMAL ||
- scalemode == AUTOSCALE_INTEGER_AUTOSCALE || scalemode == AUTOSCALE_HALF_INTEGER_AUTOSCALE || scalemode == AUTOSCALE_MANUAL)) {
+ scalemode == AUTOSCALE_INTEGER_AUTOSCALE || scalemode == AUTOSCALE_MANUAL)) {
float cw2 = cw;
float ch2 = ch;
int res = currprefs.gfx_resolution - currprefs.gfx_vresolution;
lastdelay = 0;
}
float scalex = currprefs.gf[picasso_on].gfx_filter_horiz_zoom_mult > 0 ? currprefs.gf[picasso_on].gfx_filter_horiz_zoom_mult : 1.0f;
- float scaley = currprefs.gf[picasso_on].gfx_filter_vert_zoom_mult > 0 ? currprefs.gf[picasso_on].gfx_filter_horiz_zoom_mult : 1.0f;
+ float scaley = currprefs.gf[picasso_on].gfx_filter_vert_zoom_mult > 0 ? currprefs.gf[picasso_on].gfx_filter_vert_zoom_mult : 1.0f;
SetRect (sr, 0, 0, cw * scale * scalex, ch * scale * scaley);
dr->left = (temp_width - aws) /2;
dr->top = (temp_height - ahs) / 2;
c |= gf->gfx_filter_contrast != gfc->gfx_filter_contrast ? (1) : 0;
c |= gf->gfx_filter_saturation != gfc->gfx_filter_saturation ? (1) : 0;
c |= gf->gfx_filter_gamma != gfc->gfx_filter_gamma ? (1) : 0;
+ c |= gf->gfx_filter_integerscalelimit != gfc->gfx_filter_integerscalelimit ? (1) : 0;
if (j && gf->gfx_filter_autoscale != gfc->gfx_filter_autoscale)
c |= 8 | 64;
//c |= gf->gfx_filter_ != gfc->gfx_filter_ ? (1|8) : 0;
CheckDlgButton(hDlg, IDC_PATHS_CONFIGCACHE, configurationcache);
CheckDlgButton(hDlg, IDC_PATHS_SAVEIMAGEORIGINALPATH, saveimageoriginalpath);
CheckDlgButton(hDlg, IDC_PATHS_RELATIVE, relativepaths);
- CheckDlgButton(hDlg, IDC_REGISTRYMODE, getregmode() != 0);
- ew(hDlg, IDC_REGISTRYMODE, FALSE);
+ CheckDlgButton(hDlg, IDC_REGISTRYMODE, getregmode() != NULL);
currentpage = PATHS_ID;
ShowWindow (GetDlgItem (hDlg, IDC_RESETREGISTRY), FALSE);
numtypes = 0;
switch (LOWORD (wParam))
{
+ case IDC_REGISTRYMODE:
+ bool switchreginimode(void);
+ switchreginimode();
+ CheckDlgButton(hDlg, IDC_REGISTRYMODE, getregmode() != NULL);
+ break;
case IDC_LOGSAVE:
savelog (hDlg, 1);
break;
SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_ADDSTRING, 0, (LPARAM)_T("A2024"));
SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_ADDSTRING, 0, (LPARAM)_T("Graffiti"));
SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_ADDSTRING, 0, (LPARAM)_T("HAM-E"));
+ SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_ADDSTRING, 0, (LPARAM)_T("HAM-E Plus"));
//SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_ADDSTRING, 0, (LPARAM)_T("DCTV"));
#ifndef AGA
int i;
LRESULT result = -1;
for (i = 0; i < MAX_SERPAR_PORTS && comports[i]; i++) {
- if (!_tcscmp (comports[i]->dev, workprefs.sername) || (!_tcsncmp (workprefs.sername, _T("TCP:"), 4) && !_tcsncmp (comports[i]->dev, workprefs.sername, 4))) {
- result = SendDlgItemMessage (hDlg, IDC_SERIAL, CB_SETCURSEL, i + 1, 0L);
- break;
+ if (!_tcsncmp (workprefs.sername, _T("TCP:"), 4) && !_tcsncmp (comports[i]->dev, workprefs.sername, 4)) {
+ const TCHAR *p1 = _tcschr(workprefs.sername + 4, ':');
+ const TCHAR *p2 = _tcschr(comports[i]->dev + 4, ':');
+ if (p1) {
+ p1 = _tcschr(p1 + 1, '/');
+ }
+ if (p2) {
+ p2 = _tcschr(p2 + 1, '/');
+ }
+ if ((p1 == NULL && p2 == NULL) || (p1 && p2 && !_tcsicmp(p1, p2))) {
+ result = SendDlgItemMessage (hDlg, IDC_SERIAL, CB_SETCURSEL, i + 1, 0L);
+ break;
+ }
+ } else {
+ if (!_tcscmp (comports[i]->dev, workprefs.sername) || (!_tcsncmp (workprefs.sername, _T("TCP:"), 4) && !_tcsncmp (comports[i]->dev, workprefs.sername, 4))) {
+ result = SendDlgItemMessage (hDlg, IDC_SERIAL, CB_SETCURSEL, i + 1, 0L);
+ break;
+ }
}
}
if(result < 0 && workprefs.sername[0]) {
ew (hDlg, IDC_FILTERASPECT, v);
ew (hDlg, IDC_FILTERASPECT2, v && workprefs.gf[filter_nativertg].gfx_filter_keep_aspect);
ew (hDlg, IDC_FILTERKEEPAUTOSCALEASPECT, (workprefs.gf[filter_nativertg].gfx_filter_autoscale == AUTOSCALE_NORMAL ||
- workprefs.gf[filter_nativertg].gfx_filter_autoscale == AUTOSCALE_INTEGER_AUTOSCALE ||
- workprefs.gf[filter_nativertg].gfx_filter_autoscale == AUTOSCALE_HALF_INTEGER_AUTOSCALE));
+ workprefs.gf[filter_nativertg].gfx_filter_autoscale == AUTOSCALE_INTEGER_AUTOSCALE));
ew (hDlg, IDC_FILTEROVERLAY, workprefs.gfx_api);
ew (hDlg, IDC_FILTEROVERLAYTYPE, workprefs.gfx_api);
ew (hDlg, IDC_FILTERPRESETSAVE, filterpreset_builtin < 0);
ew (hDlg, IDC_FILTERPRESETLOAD, filterpreset_selected > 0);
ew (hDlg, IDC_FILTERPRESETDELETE, filterpreset_selected > 0 && filterpreset_builtin < 0);
+
+ ew (hDlg, IDC_FILTERINTEGER, workprefs.gf[filter_nativertg].gfx_filter_autoscale == AUTOSCALE_INTEGER ||
+ workprefs.gf[filter_nativertg].gfx_filter_autoscale == AUTOSCALE_INTEGER_AUTOSCALE);
}
static TCHAR *filtermultnames[] = {
SendDlgItemMessage (hDlg, IDC_FILTERASPECT2, CB_SETCURSEL,
workprefs.gf[filter_nativertg].gfx_filter_keep_aspect, 0);
+ SendDlgItemMessage (hDlg, IDC_FILTERINTEGER, CB_RESETCONTENT, 0, 0L);
+ SendDlgItemMessage (hDlg, IDC_FILTERINTEGER, CB_ADDSTRING, 0, (LPARAM)_T("1/1"));
+ SendDlgItemMessage (hDlg, IDC_FILTERINTEGER, CB_ADDSTRING, 0, (LPARAM)_T("1/2"));
+ SendDlgItemMessage (hDlg, IDC_FILTERINTEGER, CB_ADDSTRING, 0, (LPARAM)_T("1/4"));
+ SendDlgItemMessage (hDlg, IDC_FILTERINTEGER, CB_ADDSTRING, 0, (LPARAM)_T("1/8"));
+
SendDlgItemMessage (hDlg, IDC_FILTERAUTOSCALE, CB_RESETCONTENT, 0, 0L);
WIN32GUI_LoadUIString (IDS_AUTOSCALE_DISABLED, txt, sizeof (txt) / sizeof (TCHAR));
SendDlgItemMessage (hDlg, IDC_FILTERAUTOSCALE, CB_ADDSTRING, 0, (LPARAM)txt);
SendDlgItemMessage (hDlg, IDC_FILTERAUTOSCALE, CB_ADDSTRING, 0, (LPARAM)txt);
WIN32GUI_LoadUIString (IDS_AUTOSCALE_INTEGER, txt, sizeof (txt) / sizeof (TCHAR));
SendDlgItemMessage (hDlg, IDC_FILTERAUTOSCALE, CB_ADDSTRING, 0, (LPARAM)txt);
- WIN32GUI_LoadUIString (IDS_AUTOSCALE_HALF_INTEGER, txt, sizeof (txt) / sizeof (TCHAR));
- SendDlgItemMessage (hDlg, IDC_FILTERAUTOSCALE, CB_ADDSTRING, 0, (LPARAM)txt);
WIN32GUI_LoadUIString (IDS_AUTOSCALE_INTEGER_AUTOSCALE, txt, sizeof (txt) / sizeof (TCHAR));
SendDlgItemMessage (hDlg, IDC_FILTERAUTOSCALE, CB_ADDSTRING, 0, (LPARAM)txt);
- WIN32GUI_LoadUIString (IDS_AUTOSCALE_HALF_INTEGER_AUTOSCALE, txt, sizeof (txt) / sizeof (TCHAR));
- SendDlgItemMessage (hDlg, IDC_FILTERAUTOSCALE, CB_ADDSTRING, 0, (LPARAM)txt);
SendDlgItemMessage (hDlg, IDC_FILTERAUTOSCALE, CB_ADDSTRING, 0, (LPARAM)_T("-"));
WIN32GUI_LoadUIString (IDS_AUTOSCALE_OVERSCAN_BLANK, txt, sizeof (txt) / sizeof (TCHAR));
#endif
}
SendDlgItemMessage (hDlg, IDC_FILTERAUTOSCALE, CB_SETCURSEL, workprefs.gf[filter_nativertg].gfx_filter_autoscale, 0);
+ SendDlgItemMessage (hDlg, IDC_FILTERINTEGER, CB_SETCURSEL, workprefs.gf[filter_nativertg].gfx_filter_integerscalelimit, 0);
SendDlgItemMessage (hDlg, IDC_FILTERSTACK, CB_RESETCONTENT, 0, 0);
for (i = -MAX_FILTERSHADERS; i < MAX_FILTERSHADERS; i++) {
yrange1 = 0;
yrange2 = 700;
} else if (workprefs.gf[filter_nativertg].gfx_filter_autoscale == AUTOSCALE_INTEGER ||
- workprefs.gf[filter_nativertg].gfx_filter_autoscale == AUTOSCALE_INTEGER_AUTOSCALE ||
- workprefs.gf[filter_nativertg].gfx_filter_autoscale == AUTOSCALE_HALF_INTEGER ||
- workprefs.gf[filter_nativertg].gfx_filter_autoscale == AUTOSCALE_HALF_INTEGER_AUTOSCALE) {
+ workprefs.gf[filter_nativertg].gfx_filter_autoscale == AUTOSCALE_INTEGER_AUTOSCALE) {
xrange1 = -99;
xrange2 = 99;
yrange1 = xrange1;
enable_for_hw3ddlg (hDlg);
}
break;
+ case IDC_FILTERINTEGER:
+ item = SendDlgItemMessage (hDlg, IDC_FILTERINTEGER, CB_GETCURSEL, 0, 0L);
+ if (item != CB_ERR) {
+ workprefs.gf[filter_nativertg].gfx_filter_integerscalelimit = item;
+ values_to_hw3ddlg (hDlg);
+ enable_for_hw3ddlg (hDlg);
+ }
+ break;
case IDC_FILTERAUTOSCALE:
item = SendDlgItemMessage (hDlg, IDC_FILTERAUTOSCALE, CB_GETCURSEL, 0, 0L);
if (item != CB_ERR) {