return 1;
}
-// blitter interrupt is set when last "main" cycle
-// has been finished, any non-linedraw D-channel blit
-// still needs 2 more cycles before final D is written
+// blitter interrupt is set (and busy bit cleared) when
+// last "main" cycle has been finished, any non-linedraw
+// D-channel blit still needs 2 more cycles before final
+// D is written
static void blitter_interrupt (int hpos, int done)
{
if (blit_interrupt)
return;
- if (!done && (!currprefs.blitter_cycle_exact || currprefs.cpu_model >= 68020))
+ if (!done && (!currprefs.blitter_cycle_exact || currprefs.cpu_model >= 68030))
return;
blit_interrupt = 1;
send_interrupt (6, 3 * CYCLE_UNIT);
if (p->filesys_no_uaefsdb)
cfgfile_write_bool (f, _T("filesys_no_fsdb"), p->filesys_no_uaefsdb);
cfgfile_dwrite (f, _T("filesys_max_size"), _T("%d"), p->filesys_limit);
+ cfgfile_dwrite (f, _T("filesys_max_name_length"), _T("%d"), p->filesys_max_name);
+ cfgfile_dwrite (f, _T("filesys_max_file_size"), _T("%d"), p->filesys_max_file_size);
#endif
write_inputdevice_config (p, f);
}
|| cfgfile_intval (option, value, _T("gfx_horizontal_tweak"), &p->gfx_extrawidth, 1)
|| cfgfile_string (option, value, _T("gfx_filter_mask"), p->gfx_filtermask[2 * MAX_FILTERSHADERS], sizeof p->gfx_filtermask[2 * MAX_FILTERSHADERS] / sizeof (TCHAR))
|| cfgfile_intval (option, value, _T("filesys_max_size"), &p->filesys_limit, 1)
+ || cfgfile_intval (option, value, _T("filesys_max_name_length"), &p->filesys_max_name, 1)
+ || cfgfile_intval (option, value, _T("filesys_max_file_size"), &p->filesys_max_file_size, 1)
|| cfgfile_floatval (option, value, _T("rtg_vert_zoom_multf"), &p->rtg_vert_zoom_mult)
|| cfgfile_floatval (option, value, _T("rtg_horiz_zoom_multf"), &p->rtg_horiz_zoom_mult)
p->genlock = 0;
p->ntscmode = 0;
p->filesys_limit = 0;
+ p->filesys_max_name = 107;
+ p->filesys_max_file_size = 0x7fffffff;
p->fastmem_size = 0x00000000;
p->fastmem2_size = 0x00000000;
*/
static int vpos_previous, hpos_previous;
static int vpos_lpen, hpos_lpen, lightpen_triggered;
-int lightpen_x = -1, lightpen_y = -1, lightpen_cx, lightpen_cy, lightpen_active;
+int lightpen_x = -1, lightpen_y = -1, lightpen_cx, lightpen_cy, lightpen_active, lightpen_enabled;
static uae_u32 sprtaba[256],sprtabb[256];
static uae_u32 sprite_ab_merge[256];
int minfirstline = VBLANK_ENDLINE_PAL;
static int equ_vblank_endline = EQU_ENDLINE_PAL;
static bool equ_vblank_toggle = true;
-double vblank_hz = VBLANK_HZ_PAL, fake_vblank_hz, vblank_hz_stored;
+double vblank_hz = VBLANK_HZ_PAL, fake_vblank_hz, vblank_hz_stored, vblank_hz_nom;
static float vblank_hz_lof, vblank_hz_shf, vblank_hz_lace;
static int vblank_hz_mult, vblank_hz_state;
static struct chipset_refresh *stored_chipset_refresh;
static int bpldmasetuphpos;
static int bpldmasetupphase;
-static void update_toscr_planes (void);
+static void update_toscr_planes (int fm);
/* set currently active Agnus bitplane DMA sequence */
static void setup_fmodes (int hpos)
{
memset (ptr, 0, nwords * 4);
}
-static void update_toscr_planes (void)
+static void update_toscr_planes (int fm)
{
// This must be called just before new bitplane block starts,
// not when depth value changes. Depth can change early and can leave
// 16+ pixel horizontal line of old data visible.
if (toscr_nr_planes_agnus > thisline_decision.nr_planes) {
- int j;
- for (j = thisline_decision.nr_planes; j < toscr_nr_planes_agnus; j++) {
- clear_fetchbuffer ((uae_u32 *)(line_data[next_lineno] + 2 * MAX_WORDS_PER_LINE * j), out_offs);
- if (thisline_decision.plfleft >= 0) {
- todisplay[j][0] = 0;
+ if (out_offs) {
+ int j;
+ for (j = thisline_decision.nr_planes; j < toscr_nr_planes_agnus; j++) {
+ clear_fetchbuffer ((uae_u32 *)(line_data[next_lineno] + 2 * MAX_WORDS_PER_LINE * j), out_offs);
+ if (thisline_decision.plfleft >= 0) {
+ todisplay[j][0] = 0;
#ifdef AGA
- todisplay[j][1] = 0;
- todisplay[j][2] = 0;
- todisplay[j][3] = 0;
+ if (fm) {
+ todisplay[j][1] = 0;
+ todisplay[j][2] = 0;
+ todisplay[j][3] = 0;
+ }
#endif
+ }
}
}
thisline_decision.nr_planes = toscr_nr_planes_agnus;
#endif
update_denise (hpos);
- update_toscr_planes ();
+ update_toscr_planes (fm);
maybe_first_bpl1dat (hpos);
bplcon1t2 = bplcon1t;
return;
pos = last_fetch_hpos;
- update_toscr_planes ();
+ update_toscr_planes (fm);
// not optimized, update_fetch_x() is extremely rarely used.
for (; pos < until; pos++) {
vblank_hz = currprefs.chipset_refreshrate;
if (isvsync_chipset ()) {
int mult = 0;
- if (!fake_vblank_hz && getvsyncrate (vblank_hz, &mult) != vblank_hz) {
+ if (getvsyncrate (vblank_hz, &mult) != vblank_hz) {
vblank_hz = getvsyncrate (vblank_hz, &vblank_hz_mult);
if (vblank_hz_mult > 0)
vblank_hz_state = 0;
updatedisplayarea ();
}
#endif
- if (currprefs.produce_sound > 1)
- update_sound (fake_vblank_hz);
+ if (currprefs.produce_sound > 1) {
+ double svpos = maxvpos;
+ double shpos = maxhpos_short;
+ if (islinetoggle ()) {
+ shpos += 0.5;
+ }
+ if (interlace_seen) {
+ svpos += 0.5;
+ } else if (lof_current) {
+ svpos += 1.0;
+ }
+ double clk = svpos * shpos * fake_vblank_hz;
+ write_log (_T("SNDRATE %.1f*%.1f*%.6f=%.6f\n"), svpos, shpos, fake_vblank_hz, clk);
+ update_sound (clk);
+ }
}
maxvpos = MAXVPOS_PAL;
maxhpos = MAXHPOS_PAL;
minfirstline = VBLANK_ENDLINE_PAL;
- vblank_hz = VBLANK_HZ_PAL;
+ vblank_hz_nom = vblank_hz = VBLANK_HZ_PAL;
sprite_vblank_endline = VBLANK_SPRITE_PAL;
equ_vblank_endline = EQU_ENDLINE_PAL;
equ_vblank_toggle = true;
maxvpos = MAXVPOS_NTSC;
maxhpos = MAXHPOS_NTSC;
minfirstline = VBLANK_ENDLINE_NTSC;
- vblank_hz = VBLANK_HZ_NTSC;
+ vblank_hz_nom = vblank_hz = VBLANK_HZ_NTSC;
sprite_vblank_endline = VBLANK_SPRITE_NTSC;
equ_vblank_endline = EQU_ENDLINE_NTSC;
equ_vblank_toggle = false;
- vblank_hz_shf = (double)clk / ((maxvpos + 0) * maxhpos);
- vblank_hz_lof = (double)clk / ((maxvpos + 1) * maxhpos);
- vblank_hz_lace = (double)clk / ((maxvpos + 0.5) * maxhpos);
+ vblank_hz_shf = (double)clk / ((maxvpos + 0) * (maxhpos + 0.5));
+ vblank_hz_lof = (double)clk / ((maxvpos + 1) * (maxhpos + 0.5));
+ vblank_hz_lace = (double)clk / ((maxvpos + 0.5) * (maxhpos + 0.5));
}
maxvpos_nom = maxvpos;
if (vpos_count < 10)
vpos_count = 10;
vblank_hz = (isntsc ? 15734 : 15625.0) / vpos_count;
- vblank_hz_shf = vblank_hz_lof = vblank_hz_lace = vblank_hz;
+ vblank_hz_nom = vblank_hz_shf = vblank_hz_lof = vblank_hz_lace = vblank_hz;
maxvpos_nom = vpos_count - (lof_current ? 1 : 0);
if ((maxvpos_nom >= 256 && maxvpos_nom <= 313) || (beamcon0 & 0x80)) {
maxvpos_display = maxvpos_nom;
if (htotal >= MAXHPOS)
htotal = MAXHPOS - 1;
maxhpos = htotal + 1;
- vblank_hz = 227.0 * 312.0 * 50.0 / (maxvpos * maxhpos);
+ vblank_hz_nom = vblank_hz = 227.0 * 312.0 * 50.0 / (maxvpos * maxhpos);
vblank_hz_shf = vblank_hz;
vblank_hz_lof = 227.0 * 313.0 * 50.0 / (maxvpos * maxhpos);;
vblank_hz_lace = 227.0 * 312.5 * 50.0 / (maxvpos * maxhpos);;
if (!(currprefs.chipset_mask & CSMASK_ECS_AGNUS))
vp &= 1;
- vp = vp | (lof_store ? 0x8000 : 0) | csbit;
+ vp |= (lof_store ? 0x8000 : 0) | csbit;
if (currprefs.chipset_mask & CSMASK_ECS_AGNUS)
vp |= lol ? 0x80 : 0;
hsyncdelay ();
if (lof_togglecnt_lace >= LOF_TOGGLES_NEEDED)
lof_togglecnt_nlace = 0;
} else {
+ // only 1-2 vblanks with bplcon0 lace bit set?
+ // lets check if lof has changed
+ if (!(bplcon0 & 4) && lof_togglecnt_lace > 0 && lof_togglecnt_lace < LOF_TOGGLES_NEEDED && !interlace_seen) {
+ lof_changed = 1;
+ }
lof_togglecnt_nlace = LOF_TOGGLES_NEEDED;
lof_togglecnt_lace = 0;
#if 0
lightpen_triggered = 0;
sprite_0 = 0;
}
- if (lightpen_cx > 0 && (bplcon0 & 8) && !lightpen_triggered && lightpen_cy == vpos) {
+ if (lightpen_enabled && lightpen_cx > 0 && (bplcon0 & 8) && !lightpen_triggered && lightpen_cy == vpos) {
vpos_lpen = vpos;
hpos_lpen = lightpen_cx;
lightpen_triggered = 1;
memcpy (row_map[gfx_ypos], xlinebuffer + linetoscr_x_adjust_bytes, gfxvidinfo.drawbuffer.pixbytes * gfxvidinfo.drawbuffer.inwidth);
do_flush_line (vb, gfx_ypos);
- if (do_double > 0) {
+ if (do_double) {
if (dh == dh_emerg)
memcpy (row_map[follow_ypos], xlinebuffer + linetoscr_x_adjust_bytes, gfxvidinfo.drawbuffer.pixbytes * gfxvidinfo.drawbuffer.inwidth);
else if (dh == dh_buf)
memcpy (row_map[follow_ypos], row_map[gfx_ypos], gfxvidinfo.drawbuffer.pixbytes * gfxvidinfo.drawbuffer.inwidth);
do_flush_line (vb, follow_ypos);
- } else if (do_double < 0) {
- if (dh == dh_emerg)
- memset (row_map[follow_ypos], 0, gfxvidinfo.drawbuffer.pixbytes * gfxvidinfo.drawbuffer.inwidth);
- else if (dh == dh_buf)
- memset (row_map[follow_ypos], 0, gfxvidinfo.drawbuffer.pixbytes * gfxvidinfo.drawbuffer.inwidth);
- do_flush_line (vb, follow_ypos);
}
if (dip_for_drawing->nr_sprites)
state[1] = LINE_DECIDED; //LINE_BLACK;
break;
case nln_lower_black:
- state[1] = currprefs.gfx_scanlines >= 4 ? LINE_BLACK : LINE_DONE;
- *state = LINE_DECIDED;
+ if (currprefs.gfx_scanlines >= 4) {
+ state[1] = LINE_BLACK;
+ *state = LINE_DECIDED;
+ } else {
+ changed += state[0] != LINE_DONE;
+ state[1] = LINE_DONE;
+ *state = changed ? LINE_DECIDED : LINE_DONE;
+ }
break;
case nln_upper_black:
- *state = LINE_DECIDED;
- state[-1] = currprefs.gfx_scanlines >= 4 ? LINE_BLACK : LINE_DONE;
+ if (currprefs.gfx_scanlines >= 4) {
+ *state = LINE_DECIDED;
+ state[1] = LINE_BLACK;
+ } else {
+ changed += state[0] != LINE_DONE;
+ *state = changed ? LINE_DECIDED : LINE_DONE;
+ state[-1] = LINE_DONE;
+ }
break;
}
}
TRACE((_T("name=\"%s\"\n"), xs));
x2 = x = ua_fs (xs, -1);
n = strlen (x);
- if (n > 106)
- n = 106;
+ if (n > 107)
+ n = 107;
+ if (n > abs (currprefs.filesys_max_name))
+ n = abs (currprefs.filesys_max_name);
i = 8;
put_byte (info + i, n); i++;
while (n--)
return ret;
}
+static bool filesys_name_invalid (const TCHAR *fn)
+{
+ return _tcslen (fn) > currprefs.filesys_max_name;
+}
+
static int action_examine_all_do (Unit *unit, uaecptr lock, ExAllKey *eak, uaecptr exalldata, uae_u32 exalldatasize, uae_u32 type, uaecptr control)
{
a_inode *aino, *base = NULL;
ok = isofs_readdir (d->isod, fn, &uniq);
else
ok = 0;
- } while (ok && d->fstype == FS_DIRECTORY && fsdb_name_invalid_dir (fn));
+ } while (ok && d->fstype == FS_DIRECTORY && (filesys_name_invalid (fn) || fsdb_name_invalid_dir (fn)));
if (!ok)
return 0;
} else {
ok = isofs_readdir (d->isod, fn, &uniq);
else
ok = 0;
- } while (ok && d->fstype == FS_DIRECTORY && fsdb_name_invalid_dir (fn));
+ } while (ok && d->fstype == FS_DIRECTORY && (filesys_name_invalid (fn) || fsdb_name_invalid_dir (fn)));
if (!ok)
break;
/* This calls init_child_aino, which will notice that the parent is
}
} else if (currprefs.cpu_model == 68040) {
regs.fpiar = oldpc;
- if (type == FPU_EXP_UNIMP_INS) {
+ if (type == FPU_EXP_UNIMP_INS || type == FPU_EXP_DISABLED) {
// PC = next instruction
oldpc = newpc;
m68k_areg (regs, 7) -= 4;
genamode (curi, curi->smode, "srcreg", curi->size, "extra", 1, 0, 0);
genamode (curi, curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0);
sync_m68k_pc ();
- printf ("\tm68k_divl(opcode, dst, extra);\n");
+ printf ("\tif (!m68k_divl(opcode, dst, extra)) goto %s;\n", endlabelstr);
+ need_endlabel = 1;
break;
case i_MULL:
genamode (curi, curi->smode, "srcreg", curi->size, "extra", 1, 0, 0);
genamode (curi, curi->dmode, "dstreg", curi->size, "dst", 1, 0, 0);
sync_m68k_pc ();
- printf ("\tm68k_mull(opcode, dst, extra);\n");
+ printf ("\tif (!m68k_mull(opcode, dst, extra)) goto %s;\n", endlabelstr);
+ need_endlabel = 1;
break;
case i_BFTST:
case i_BFEXTU:
extern void audio_evhandler (void);
extern void audio_hsync (void);
extern void audio_update_adkmasks (void);
-extern void update_sound (double freq);
+extern void update_sound (double clk);
extern void led_filter_audio (void);
extern void set_audio (void);
extern int audio_activate (void);
extern void fpscounter_reset (void);
extern unsigned long idletime;
-extern int lightpen_x, lightpen_y, lightpen_cx, lightpen_cy, lightpen_active;
+extern int lightpen_x, lightpen_y, lightpen_cx, lightpen_cy, lightpen_active, lightpen_enabled;
struct customhack {
uae_u16 v;
extern void dump_counts (void);
extern int m68k_move2c (int, uae_u32 *);
extern int m68k_movec2 (int, uae_u32 *);
-extern void m68k_divl (uae_u32, uae_u32, uae_u16);
-extern void m68k_mull (uae_u32, uae_u32, uae_u16);
+extern bool m68k_divl (uae_u32, uae_u32, uae_u16);
+extern bool m68k_mull (uae_u32, uae_u32, uae_u16);
extern void init_m68k (void);
extern void init_m68k_full (void);
extern void m68k_go (int);
int turbo_emulation;
bool headless;
int filesys_limit;
+ int filesys_max_name;
+ int filesys_max_file_size;
int cs_compatible;
int cs_ciaatod;
static int pot_dat_act[NORMAL_JPORTS][2];
static int analog_port[NORMAL_JPORTS][2];
static int digital_port[NORMAL_JPORTS][2];
-static int lightpen;
#define POTDAT_DELAY_PAL 8
#define POTDAT_DELAY_NTSC 7
dst->jports[num].autofire = src->jports[num].autofire;
}
-static void out_config (struct zfile *f, int id, int num, TCHAR *s1, TCHAR *s2)
+static void out_config (struct zfile *f, int id, int num, const TCHAR *s1, const TCHAR *s2)
{
TCHAR tmp[MAX_DPATH];
_stprintf (tmp, _T("input.%d.%s%d"), id, s1, num);
cfgfile_write_str (f, tmp, s2);
}
-static bool write_config_head (struct zfile *f, int idnum, int devnum, TCHAR *name, struct uae_input_device *id, struct inputdevice_functions *idf)
+static bool write_config_head (struct zfile *f, int idnum, int devnum, const TCHAR *name, struct uae_input_device *id, struct inputdevice_functions *idf)
{
+ TCHAR *s = NULL;
TCHAR tmp2[CONFIG_BLEN];
if (idnum == GAMEPORT_INPUT_SETTINGS) {
return false;
}
- TCHAR *s = NULL;
if (id->name)
s = id->name;
else if (devnum < idf->get_num ())
cfgfile_write_bool (f, tmp2, true);
if (id->enabled) {
_stprintf (tmp2, _T("input.%d.%s.%d.disabled"), idnum + 1, name, devnum);
- cfgfile_write (f, tmp2, _T("%d"), id->enabled ? 0 : 1);
+ cfgfile_write_bool (f, tmp2, id->enabled ? false : true);
}
return false;
}
}
}
-static void write_config (struct zfile *f, int idnum, int devnum, TCHAR *name, struct uae_input_device *id, struct inputdevice_functions *idf)
+static void write_config (struct zfile *f, int idnum, int devnum, const TCHAR *name, struct uae_input_device *id, struct inputdevice_functions *idf)
{
TCHAR tmp1[MAX_DPATH];
int i;
if (!_tcsnicmp (p, _T("false"), 5))
v = 0;
- if (!_tcsnicmp (p, _T("true"), 4))
+ else if (!_tcsnicmp (p, _T("true"), 4))
v = 1;
else
v = _tstol (p);
for (int i = 0; i < MAX_INPUT_SUB_EVENT_ALL; i++) {
uid->eventid[l][i] = 0;
uid->flags[l][i] = 0;
- xfree (uid->custom[l][i]);
- uid->custom[l][i] = NULL;
+ if (uid->custom[l][i]) {
+ xfree (uid->custom[l][i]);
+ uid->custom[l][i] = NULL;
+ }
}
}
}
}
void reset_inputdevice_config (struct uae_prefs *prefs)
{
- for (int i = 0; i< MAX_INPUT_SETTINGS; i++)
+ for (int i = 0; i < MAX_INPUT_SETTINGS; i++)
reset_inputdevice_slot (prefs, i);
}
lightpen_y = gfxvidinfo.outbuffer->outheight / 2;
}
lightpen_active = true;
+ lightpen_enabled = true;
if (ie->type == 0) {
int delta = 0;
if (max == 0)
static int islightpen (int ei)
{
if (ei >= INPUTEVENT_LIGHTPEN_FIRST && ei < INPUTEVENT_LIGHTPEN_LAST) {
- lightpen = 1;
+ lightpen_enabled = true;
return 1;
}
return 0;
joydirpot[i][j] = 128 / (312 * 100 / currprefs.input_analog_joystick_mult) + (128 * currprefs.input_analog_joystick_mult / 100) + currprefs.input_analog_joystick_offset;
}
}
- lightpen = 0;
+ lightpen_enabled = false;
if (lightpen_active > 0)
lightpen_active = -1;
return 0;
}
-void m68k_divl (uae_u32 opcode, uae_u32 src, uae_u16 extra)
+bool m68k_divl (uae_u32 opcode, uae_u32 src, uae_u16 extra)
{
if ((extra & 0x400) && currprefs.int_no_unimplemented && currprefs.cpu_model == 68060) {
op_unimpl (opcode);
- return;
+ return false;
}
if (src == 0) {
Exception (5);
- return;
+ return false;
}
#if defined (uae_s64)
if (extra & 0x800) {
}
}
#endif
+ return true;
}
STATIC_INLINE void mul_unsigned (uae_u32 src1, uae_u32 src2, uae_u32 *dst_hi, uae_u32 *dst_lo)
*dst_hi = r3;
}
-void m68k_mull (uae_u32 opcode, uae_u32 src, uae_u16 extra)
+bool m68k_mull (uae_u32 opcode, uae_u32 src, uae_u16 extra)
{
if ((extra & 0x400) && currprefs.int_no_unimplemented && currprefs.cpu_model == 68060) {
op_unimpl (opcode);
- return;
+ return false;
}
#if defined (uae_s64)
if (extra & 0x800) {
m68k_dreg (regs, (extra >> 12) & 7) = dst_lo;
}
#endif
+ return true;
}
#endif
static int get_kb_widget_type (int kb, int num, TCHAR *name, uae_u32 *code)
{
- if (name)
- _tcscpy (name, di_keyboard[kb].buttonname[num]);
- if (code)
+ if (name) {
+ if (di_keyboard[kb].buttonname[num])
+ _tcscpy (name, di_keyboard[kb].buttonname[num]);
+ else
+ name[0] = 0;
+ }
+ if (code) {
*code = di_keyboard[kb].buttonmappings[num];
+ }
return IDEV_WIDGET_KEY;
}
return 1;
}
+float sound_sync_multiplier = 1.0;
float scaled_sample_evtime_orig;
extern float sampler_evtime;
-void update_sound (double freq)
+
+void update_sound (double clk)
{
if (!have_sound)
return;
- int clk = currprefs.ntscmode ? CHIPSET_CLOCK_NTSC : CHIPSET_CLOCK_PAL;
- scaled_sample_evtime_orig = clk * CYCLE_UNIT / (double)sdp->obtainedfreq;
+ scaled_sample_evtime_orig = clk * CYCLE_UNIT * sound_sync_multiplier / sdp->obtainedfreq;
scaled_sample_evtime = scaled_sample_evtime_orig;
- sampler_evtime = clk * CYCLE_UNIT;
+ sampler_evtime = clk * CYCLE_UNIT * sound_sync_multiplier;
}
extern int vsynctimebase_orig;
have_sound = 1;
sound_available = 1;
- update_sound (fake_vblank_hz);
paula_sndbufsize = sdp->sndbufsize;
paula_sndbufpt = paula_sndbuffer;
driveclick_init ();
extern int log_blitter;
extern int slirp_debug;
extern int fakemodewaitms;
+extern float sound_sync_multiplier;
extern DWORD_PTR cpu_affinity, cpu_paffinity;
static DWORD_PTR original_affinity = -1;
return 0;
return v;
}
+#if 0
+static float getvalf (const TCHAR *s)
+{
+ TCHAR *endptr;
+ double v;
+
+ v = _tcstof (s, &endptr);
+ if (*endptr != '\0' || *s == '\0')
+ return 0;
+ return v;
+}
+#endif
static void makeverstr (TCHAR *s)
{
if (!np)
return 0;
+#if 0
+ if (!_tcscmp (arg, _T("sound_adjust"))) {
+ sound_sync_multiplier = getvalf (np);
+ return 2;
+ }
+#endif
if (!_tcscmp (arg, _T("vsync_modechangetimeout"))) {
vsync_modechangetimeout = getval (np);
return 2;
#define LANG_DLL 1
#if WINUAEPUBLICBETA
-#define WINUAEBETA _T("13")
+#define WINUAEBETA _T("14")
#else
#define WINUAEBETA _T("")
#endif
-#define WINUAEDATE MAKEBD(2013, 11, 15)
+#define WINUAEDATE MAKEBD(2013, 11, 20)
#define WINUAEEXTRA _T("")
//#define WINUAEEXTRA _T("AmiKit Preview")
//#define WINUAEEXTRA _T("Amiga Forever Edition")
if (currprefs.gfx_ycenter_size >= 0)
hh = currprefs.gfx_ycenter_size;
int oldwinw = currprefs.gfx_size_win.width;
- int oldwinh = 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);
updatejoyport (hDlg, port);
inputdevice_updateconfig (NULL, &workprefs);
inputdevice_config_change ();
- reset_inputdevice_config (&workprefs);
}
/* Handle messages for the Joystick Settings page of our property-sheet */
pages[IOPORTS_ID] = hDlg;
currentpage = IOPORTS_ID;
init_portsdlg (hDlg);
- inputdevice_updateconfig (NULL, &workprefs);
- reset_inputdevice_config (&workprefs);
enable_for_portsdlg (hDlg);
values_to_portsdlg (hDlg);
recursive--;
}
tres = scaleresource (panelresource, hwnd, gui_resize_enabled);
- dhwnd = CreateDialogIndirect (tres->inst, tres->resource, NULL, DialogProc);
+ dhwnd = CreateDialogIndirect (tres->inst, tres->resource, isfullscreen () > 0 ? hwnd : NULL, DialogProc);
dialog_rect.top = dialog_rect.left = 0;
dialog_rect.right = tres->width;
dialog_rect.bottom = tres->height;
#include "registry.h"
#include "win32.h"
#include "win32gui.h"
+#include "xwin.h"
#define MAX_GUI_FONTS 2
#define DEFAULT_FONTSIZE 8
d->style |= DS_MODALFRAME;
d->style &= ~WS_THICKFRAME;
}
- d->style |= WS_MINIMIZEBOX;
+ if (isfullscreen () <= 0)
+ d->style |= WS_MINIMIZEBOX;
d2 = (DLGTEMPLATEEX_END*)ns->resource;
p = (BYTE*)d + sizeof (DLGTEMPLATEEX);
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <PlatformToolset>v110</PlatformToolset>
+ <PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <AdditionalIncludeDirectories>..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;..\..\slirp;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WINVER=0x0500;NDEBUG;_WIN32_IE=0x0700;WIN32;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
- <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;packet.lib;wpcap.lib;openal32.lib;libpng15.lib;lglcd.lib;wtsapi32.lib;wntab32x.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;avrt.lib;hid.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;packet.lib;wpcap.lib;openal32.lib;libpng15.lib;lglcd.lib;wtsapi32.lib;wntab32x.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;avrt.lib;hid.lib;Iphlpapi.lib;luastatic.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
- restore only single input target to default.
+Beta 13:
+
+- Standard partition hardfile OFS filesystem check was broken (2.6.1)
+- Adjusted sprite xpos == hpos check. (Shed Tears / Ozone scroller)
+- 64-bit build didn't load portaudio dll.
+- GUI window minimize button worked strangely when emulation window was open.
+- Added new interlace emulation modes, first new is same as old one but display is updated every field
+ (Old doubling updated every frame) and another that does same and also blanks every other line.
+- Added separate non-laced and lace doubling modes to GUI. (Better labels needed, but there is no space)
+- Sound timing calculation wasn't updated to match new long/short field/interlace display emulation timing (b1).
+
Beta 12:
- AROS rom memory mapping fixed (b1).