int sprite_buffer_res;
#ifdef CPUEMU_13
-uae_u8 cycle_line[256];
+uae_u8 cycle_line[256 + 1];
#endif
static bool bpl1dat_written, bpl1dat_written_at_least_once;
static int dbplptl_on[8], dbplpth_on[8], dbplptl_on2, dbplpth_on2;
static int bitplane_line_crossing;
-/*static int blitcount[256]; blitter debug */
-
static struct color_entry current_colors;
unsigned int bplcon0;
static unsigned int bplcon1, bplcon2, bplcon3, bplcon4;
bplplanecnt = dp_for_drawing->nr_planes;
bplham = dp_for_drawing->ham_seen;
bplehb = dp_for_drawing->ehb_seen;
- if ((currprefs.chipset_mask & CSMASK_AGA) && (dp_for_drawing->bplcon2 & 0x0200))
+ if ((currprefs.chipset_mask & CSMASK_ECS_DENISE) && (dp_for_drawing->bplcon2 & 0x0200))
bplehb = 0;
issprites = dip_for_drawing->nr_sprites > 0;
#ifdef ECS_DENISE
int current_hpos (void)
{
int hp = current_hpos_safe ();
- if (hp < 0 || hp >= 256) {
+ if (hp < 0 || hp > 256) {
gui_message(_T("hpos = %d!?\n"), hp);
hp = 0;
}
goto end;
}
ib = get_intuitionbase ();
- if (!ib || get_word (ib + 20) < 31) // version < 31
+ if (!ib)
+ return 0;
+ if (get_word (ib + 20) < 31) // version < 31
+ return 0;
+ if (get_long (ib + 34 + 0) == 0) // ViewPort == NULL
+ return 0;
+ if (get_long (ib + 60) == 0) // FirstScreen == NULL
return 0;
x = get_word (ib + 70);
y = get_word (ib + 68);
return ERROR_SEEK_ERROR;
default:
- {
- static int done;
- if (!done)
- gui_message (_T("Unimplemented error %d\nContact author!"), e);
- done = 1;
- }
- return ERROR_NOT_IMPLEMENTED;
+ write_log (_T("Unimplemented error %d\n"), e);
+ /* most common */
+ return ERROR_OBJECT_NOT_AROUND;
}
}
out[size - 1] = 0;
return;
}
- PathCanonicalize(out, tmp);
+ GetFullPathName(tmp, size, out, NULL);
}
int my_issamevolume(const TCHAR *path1, const TCHAR *path2, TCHAR *path)
my_canonicalize_path (tmp, linkfile, size);
}
return false;
-}
\ No newline at end of file
+}
p->gfx_size_fs.width, p->gfx_size_fs.height,
p->rtg_horiz_zoom_mult, p->rtg_vert_zoom_mult);
} else {
- write_log (_T("WW=%d WH=%d FW=%d FH=%d HM=%.1f VM=%.1f XP=%d YP=%d XS=%d YS=%d AS=%d AR=%d,%d\n"),
- p->gfx_size_win.width, p->gfx_size_win.height,
- p->gfx_size_fs.width, p->gfx_size_fs.height,
+ write_log (_T("WW=%d (%d) WH=%d (%d) FW=%d (%d) FH=%d (%d) HM=%.1f VM=%.1f XP=%d YP=%d XS=%d YS=%d AS=%d AR=%d,%d\n"),
+ p->gfx_size_win.width, currprefs.gfx_size_win.width, p->gfx_size_win.height, currprefs.gfx_size.height,
+ p->gfx_size_fs.width, currprefs.gfx_size_fs.width, p->gfx_size_fs.height, currprefs.gfx_size_fs.height,
p->gf[0].gfx_filter_horiz_zoom_mult, p->gf[0].gfx_filter_vert_zoom_mult,
p->gfx_xcenter_pos, p->gfx_ycenter_pos,
p->gfx_xcenter_size, p->gfx_ycenter_size,
updatewinfsmode (p);
hwndset = 0;
set_config_changed ();
+
+ write_log (_T("AFTER WW=%d (%d) WH=%d (%d) FW=%d (%d) FH=%d (%d) HM=%.1f VM=%.1f XP=%d YP=%d XS=%d YS=%d AS=%d AR=%d,%d\n"),
+ p->gfx_size_win.width, currprefs.gfx_size_win.width, p->gfx_size_win.height, currprefs.gfx_size.height,
+ p->gfx_size_fs.width, currprefs.gfx_size_fs.width, p->gfx_size_fs.height, currprefs.gfx_size_fs.height,
+ p->gf[0].gfx_filter_horiz_zoom_mult, p->gf[0].gfx_filter_vert_zoom_mult,
+ p->gfx_xcenter_pos, p->gfx_ycenter_pos,
+ p->gfx_xcenter_size, p->gfx_ycenter_size,
+ p->gf[0].gfx_filter_autoscale, p->gf[0].gfx_filter_aspect, p->gf[0].gfx_filter_keep_aspect);
+ write_log (_T("AFTER W=%d (%d) H=%d (%d)\n"), p->gfx_size.width, currprefs.gfx_size.width, p->gfx_size.height, currprefs.gfx_size.height);
}
static LRESULT CALLBACK RPHostMsgFunction2 (UINT uMessage, WPARAM wParam, LPARAM lParam,
int ret = GetFullPathName (path, sizeof tmp2 / sizeof (TCHAR), tmp2, NULL);
if (ret == 0 || ret >= sizeof tmp2 / sizeof (TCHAR))
return;
- if (_tcsnicmp (tmp1, tmp2, _tcslen (tmp1)) == 0) { // tmp2 is inside tmp1
+ if (_tcslen(tmp1) > 2 && _tcsnicmp(tmp1, tmp2, 3) == 0 && tmp1[1] == ':' && tmp1[2] == '\\') {
+ // same drive letter
+ if (PathRelativePathTo(path, tmp1, FILE_ATTRIBUTE_DIRECTORY, tmp2, tmp2[_tcslen(tmp2) - 1] == '\\' ? FILE_ATTRIBUTE_DIRECTORY : 0))
+ goto done;
+ }
+ if (_tcsnicmp (tmp1, tmp2, _tcslen (tmp1)) == 0) {
+ // tmp2 is inside tmp1
_tcscpy (path, _T(".\\"));
_tcscat (path, tmp2 + _tcslen (tmp1));
} else {
_tcscpy (path, tmp2);
}
+done:;
} else {
TCHAR tmp[MAX_DPATH];
_tcscpy (tmp, path);
#define LANG_DLL 1
#if WINUAEPUBLICBETA
-#define WINUAEBETA _T("2")
+#define WINUAEBETA _T("3")
#else
#define WINUAEBETA _T("")
#endif
-#define WINUAEDATE MAKEBD(2014, 5, 21)
+#define WINUAEDATE MAKEBD(2014, 5, 29)
#define WINUAEEXTRA _T("")
//#define WINUAEEXTRA _T("AmiKit Preview")
//#define WINUAEEXTRA _T("Amiga Forever Edition")
}
int scalemode = currprefs.gf[picasso_on].gfx_filter_autoscale;
+ int oscalemode = changed_prefs.gf[picasso_on].gfx_filter_autoscale;
if (!specialmode && scalemode == AUTOSCALE_STATIC_AUTO) {
if (currprefs.gfx_apmode[0].gfx_fullscreen) {
ww = currprefs.gfx_xcenter_size;
if (currprefs.gfx_ycenter_size >= 0)
hh = currprefs.gfx_ycenter_size;
- int oldwinw = currprefs.gfx_size_win.width;
- int oldwinh = currprefs.gfx_size_win.height;
- changed_prefs.gfx_size_win.width = ww;
- changed_prefs.gfx_size_win.height = hh;
- fixup_prefs_dimensions (&changed_prefs);
- if (oldwinw != changed_prefs.gfx_size_win.width || oldwinh != changed_prefs.gfx_size_win.height)
- set_config_changed ();
+ if (scalemode == oscalemode) {
+ int oldwinw = currprefs.gfx_size_win.width;
+ int oldwinh = currprefs.gfx_size_win.height;
+ changed_prefs.gfx_size_win.width = ww;
+ changed_prefs.gfx_size_win.height = hh;
+ fixup_prefs_dimensions (&changed_prefs);
+ if (oldwinw != changed_prefs.gfx_size_win.width || oldwinh != changed_prefs.gfx_size_win.height)
+ set_config_changed ();
+ }
OffsetRect (zr, -(changed_prefs.gfx_size_win.width - ww + 1) / 2, -(changed_prefs.gfx_size_win.height - hh + 1) / 2);
filteroffsetx = -zr->left / scale;
filteroffsety = -zr->top / scale;
- restore only single input target to default.
+Beta 3:
+
+- Do not show "hpos = 256!?" error dialog if something writes very bad values to programmed display
+ mode registers.
+- "Magic mouse" now stays disabled unless there is at least one open Intuition Screen.
+- If relative path mode, support also relative paths that point outside of winuae root directory.
+- BPLCON2 KILLEHB bit still required AGA instead of ECS Denise. This was supposed to be fixed in 1.4.5.
+ (But no one cares, pre-AGA it was only meant for genlock stuff)
+- Removed "Unimplemented error" dialog if directory filesystem returns unhandled/unknown win32 disk error
+ codes, adds log message, returns ERROR_OBJECT_NOT_AROUND. (Most common causes are network filesystem problems,
+ file/directory errors due security problems etc, no new missing errors reported for long time)
+- On the fly (not using GUI) switching from Automatic resize filter to another filter mode may have incorrectly
+ changed window size in some situations.
+
Beta 2:
- Quickstart GUI disk eject button was unreliable.