int win32_iconified_input;
bool win32_rtgallowscaling;
+ bool win32_rtgnonsquarepixels;
int win32_rtgscaleaspectratio;
int win32_rtgvblankrate;
bool win32_borderless;
#define IDC_RTG_INITIAL_MONITOR 1803
#define IDC_INFOBOX_TEXT3 1804
#define IDC_CD_EJECT 1804
+#define IDC_RTG_NONSQUAREPIXELS 1804
#define IDC_CD_TEXT 1805
#define IDC_CD_TYPE 1806
#define IDC_CD_SELECT 1807
COMBOBOX IDC_RTG_16BIT,296,113,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_RTG_24BIT,296,131,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_RTG_32BIT,296,148,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
- COMBOBOX IDC_RTG_DISPLAYSELECT,11,188,371,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+ COMBOBOX IDC_RTG_DISPLAYSELECT,11,197,371,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
CTEXT "Refresh rate:",IDC_STATIC,30,212,83,10,SS_CENTERIMAGE
COMBOBOX IDC_RTG_VBLANKRATE,29,227,84,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
CTEXT "Buffer mode:",IDC_STATIC,154,212,83,10,SS_CENTERIMAGE
LTEXT "Active output:",IDC_STATIC,249,37,62,10,NOT WS_VISIBLE,WS_EX_RIGHT
CONTROL "Override initial native chipset display",IDC_RTG_INITIAL_MONITOR,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,249,63,131,10
+ CONTROL "Scale if non-square pixels",IDC_RTG_NONSQUAREPIXELS,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,182,161,10
END
IDD_INPUTMAP DIALOGEX 0, 0, 421, 293
p->gf[GF_RTG].gfx_filter_autoscale = RTG_MODE_SCALE;
p->win32_rtgallowscaling = 0;
p->win32_rtgscaleaspectratio = -1;
+ p->win32_rtgnonsquarepixels = false;
p->win32_rtgvblankrate = 0;
p->rtg_hardwaresprite = true;
p->rtg_overlay = true;
cfgfile_target_dwrite_bool(f, _T("rtg_scale_small"), p->gf[GF_RTG].gfx_filter_autoscale == 1);
cfgfile_target_dwrite_bool(f, _T("rtg_scale_center"), p->gf[GF_RTG].gfx_filter_autoscale == 2);
- cfgfile_target_dwrite_bool (f, _T("rtg_scale_allow"), p->win32_rtgallowscaling);
+ cfgfile_target_dwrite_bool(f, _T("rtg_scale_allow"), p->win32_rtgallowscaling);
+ cfgfile_target_dwrite_bool(f, _T("rtg_scale_nonsquarepixels"), p->win32_rtgnonsquarepixels);
cfgfile_target_dwrite (f, _T("rtg_scale_aspect_ratio"), _T("%d:%d"),
p->win32_rtgscaleaspectratio >= 0 ? (p->win32_rtgscaleaspectratio / ASPECTMULT) : -1,
p->win32_rtgscaleaspectratio >= 0 ? (p->win32_rtgscaleaspectratio & (ASPECTMULT - 1)) : -1);
}
if (cfgfile_yesno(option, value, _T("rtg_scale_allow"), &p->win32_rtgallowscaling))
return 1;
+ if (cfgfile_yesno(option, value, _T("rtg_scale_nonsquarepixels"), &p->win32_rtgnonsquarepixels))
+ return 1;
if (cfgfile_intval(option, value, _T("soundcard"), &p->win32_soundcard, 1)) {
if (p->win32_soundcard < 0 || p->win32_soundcard >= MAX_SOUND_DEVICES || sound_devices[p->win32_soundcard] == NULL)
if (vb->vram_buffer) {
vb->bufmem = D3D_locktexture(vb->monitor_id, &vb->rowbytes, &vb->width_allocated, &vb->height_allocated, skip ? -1 : (fullupdate ? 1 : 0));
if (vb->bufmem) {
+ vb->bufmemend = vb->bufmem + vb->rowbytes * vb->height_allocated;
ret = 1;
}
} else {
vb->locked = false;
if (vb->vram_buffer) {
vb->bufmem = NULL;
+ vb->bufmemend = NULL;
D3D_unlocktexture(vb->monitor_id, y_start, y_end);
}
gfx_unlock();
picasso_offset_my *= currprefs.gf[GF_RTG].gfx_filter_vert_zoom_mult;
}
- if (!mon->scalepicasso)
+ if (!mon->scalepicasso || currprefs.win32_rtgnonsquarepixels)
return;
int srcratio, dstratio;
ew(hDlg, IDC_RTG_SCALE, rtg2);
ew(hDlg, IDC_RTG_CENTER, rtg2);
ew(hDlg, IDC_RTG_INTEGERSCALE, rtg2);
+ ew(hDlg, IDC_RTG_NONSQUAREPIXELS, rtg2);
+ hide(hDlg, IDC_RTG_NONSQUAREPIXELS, TRUE); // not yet implemen ted
ew(hDlg, IDC_RTG_SCALE_ALLOW, rtg2);
ew(hDlg, IDC_RTG_SCALE_ASPECTRATIO, rtg2);
ew(hDlg, IDC_RTG_VBLANKRATE, rtg2);
CheckDlgButton(hDlg, IDC_RTG_SCALE, workprefs.gf[1].gfx_filter_autoscale == RTG_MODE_SCALE);
CheckDlgButton(hDlg, IDC_RTG_CENTER, workprefs.gf[1].gfx_filter_autoscale == RTG_MODE_CENTER);
CheckDlgButton(hDlg, IDC_RTG_INTEGERSCALE, workprefs.gf[1].gfx_filter_autoscale == RTG_MODE_INTEGER_SCALE);
+ CheckDlgButton(hDlg, IDC_RTG_NONSQUAREPIXELS, workprefs.win32_rtgnonsquarepixels);
CheckDlgButton(hDlg, IDC_RTG_SCALE_ALLOW, workprefs.win32_rtgallowscaling);
CheckDlgButton(hDlg, IDC_RTG_VBINTERRUPT, workprefs.rtg_hardwareinterrupt);
CheckDlgButton(hDlg, IDC_RTG_HWSPRITE, workprefs.rtg_hardwaresprite);
workprefs.gf[1].gfx_filter_autoscale = ischecked(hDlg, IDC_RTG_INTEGERSCALE) ? RTG_MODE_INTEGER_SCALE : 0;
setchecked(hDlg, IDC_RTG_SCALE, false);
setchecked(hDlg, IDC_RTG_CENTER, false);
+ setchecked(hDlg, IDC_RTG_NONSQUAREPIXELS, false);
+ break;
+ case IDC_RTG_NONSQUAREPIXELS:
+ workprefs.win32_rtgnonsquarepixels = ischecked(hDlg, IDC_RTG_NONSQUAREPIXELS);
+ if (workprefs.win32_rtgnonsquarepixels) {
+ setchecked(hDlg, IDC_RTG_INTEGERSCALE, false);
+ }
break;
case IDC_RTG_SCALE_ALLOW:
workprefs.win32_rtgallowscaling = ischecked(hDlg, IDC_RTG_SCALE_ALLOW);