if (usum1 == Calc_CheckSum(b2,(ULONG)unpklen)) {
passfound = maybeencrypted;
if (passfound)
- write_log ("DMS: decryption key = 0x%04.4X\n", pass);
+ write_log ("DMS: decryption key = 0x%04X\n", prevpass);
err = NO_PROBLEM;
pass = prevpass;
break;
#ifdef TOD_HACK
static uae_u64 tod_hack_tv, tod_hack_tod, tod_hack_tod_last;
+static int tod_hack_enabled;
static void tod_hack_reset (void)
{
struct timeval tv;
{
struct timeval tv;
static int oldrate;
- uae_u64 t, rate;
+ uae_u64 t;
+ int rate;
int docount = 0;
+ if (tod_hack_enabled == 0)
+ return;
+ if (tod_hack_enabled > 1) {
+ tod_hack_enabled--;
+ if (tod_hack_enabled == 1) {
+ write_log ("TOD HACK enabled\n");
+ tod_hack_reset ();
+ }
+ return;
+ }
+
if (currprefs.cs_ciaatod == 0)
rate = vblank_hz;
else if (currprefs.cs_ciaatod == 1)
rate = 50;
else
rate = 60;
+ if (rate <= 0)
+ return;
if (rate != oldrate || ciaatod != tod_hack_tod_last) {
+ if (ciaatod != 0)
+ write_log ("TOD HACK reset %d,%d %d,%d\n",
+ rate, oldrate, ciaatod, tod_hack_tod_last);
tod_hack_reset ();
oldrate = rate;
docount = 1;
- write_log ("TOD HACK reset %d\n", rate);
}
if (!dotod && currprefs.cs_ciaatod == 0)
return;
{
led_vsync ();
#ifdef TOD_HACK
- if (currprefs.tod_hack)
+ if (currprefs.tod_hack && tod_hack_enabled == 1)
return;
#endif
if (ciaatodon && dotod) {
#ifdef TOD_HACK
tod_hack_tv = 0;
tod_hack_tod = 0;
+ tod_hack_enabled = 0;
if (currprefs.tod_hack)
- tod_hack_reset ();
+ tod_hack_enabled = 312 * 50 * 10;
#endif
kback = 1;
kbstate = 3;
int gayle_modify_pcmcia_sram_unit (const char *path, int readonly, int insert)
{
if (insert)
- return initpcmcia (path, readonly, 1);
+ return initpcmcia (path, readonly, pcmcia_sram ? 0 : 1);
else
- return freepcmcia (1);
+ return freepcmcia (0);
}
static void initide (void)
int i;
int red_bits = 0, green_bits, blue_bits;
int red_shift, green_shift, blue_shift;
-
int bpp = rw + gw + bw;
switch (rgbfmt)
b = (((j >> blue_shift) & lbmask) << lbbits) | lowbits (j, blue_shift, lbbits);
c = doMask(r, rw, rs) | doMask(g, gw, gs) | doMask(b, bw, bs);
if (bpp <= 16)
- c |= c * 0x00010001;
+ c *= 0x00010001;
p96_rgbx16[i] = c;
}
}
if (h == INVALID_HANDLE_VALUE)
goto end;
if (!DeviceIoControl(h, FSCTL_ALLOW_EXTENDED_DASD_IO, NULL, 0, NULL, 0, &r, NULL))
- write_log ("FSCTL_ALLOW_EXTENDED_DASD_IO returned %d\n", GetLastError());
+ write_log ("WARNING: '%s' FSCTL_ALLOW_EXTENDED_DASD_IO returned %d\n", name, GetLastError());
strncpy (hfd->vendor_id, udi->vendor_id, 8);
strncpy (hfd->product_id, udi->product_id, 16);
strncpy (hfd->product_rev, udi->product_rev, 4);
}
hfd->handle = h;
if (hfd->handle_valid || hfd->drive_empty) {
- hfd_log ("HDF '%s' opened succesfully, mode=%d empty=%d\n",
- name, hfd->handle_valid, hfd->drive_empty);
+ hfd_log ("HDF '%s' opened, size=%dK mode=%d empty=%d\n",
+ name, hfd->size / 1024, hfd->handle_valid, hfd->drive_empty);
return 1;
}
end:
static void picasso_trigger_vblank (void)
{
- if (!boardinfo || !uaegfx_base || !interrupt_enabled)
+ if (!boardinfo || !uaegfx_base || !interrupt_enabled) {
return;
+ }
put_long (uaegfx_base + CARD_VBLANKCODE + 6 + 2, boardinfo + PSSO_BoardInfo_SoftInterrupt);
put_byte (uaegfx_base + CARD_VBLANKFLAG, 1);
INTREQ_f (0x8000 | 0x2000);
}
+static int isvsync (void)
+{
+ return currprefs.gfx_pfullscreen && currprefs.gfx_pvsync;
+}
+
void picasso_handle_vsync (void)
{
static int vsynccnt;
- int isvsync = 1;
+ int thisisvsync = 1;
#ifdef RETROPLATFORM
rp_vsync ();
#endif
if (currprefs.chipset_refreshrate >= 100) {
- vsynccnt++;
+ thisisvsync++;
if (vsynccnt < 2)
- isvsync = 0;
+ thisisvsync = 0;
vsynccnt = 0;
}
- if (isvsync && currprefs.win32_rtgvblankrate == 0 && !(currprefs.gfx_pfullscreen && currprefs.gfx_pvsync))
+ if (thisisvsync && currprefs.win32_rtgvblankrate == 0 && !isvsync ())
picasso_trigger_vblank ();
if (!picasso_on)
framecnt++;
mouseupdate ();
- if (isvsync) {
+ if (thisisvsync) {
if (doskip () && p96skipmode == 0) {
;
} else {
}
picasso_convert = v;
host_mode = DirectDraw_GetSurfacePixelFormat (NULL);
+ gfx_set_picasso_colors (picasso96_state.RGBFormat);
if (d == 4)
alloc_colors_rgb (8, 8, 8, 16, 8, 0, 0, 0, 0, 0, p96rc, p96gc, p96bc);
else
if (currprefs.gfxmem_size == 0)
return;
- if (currprefs.win32_rtgvblankrate == 0)
+ if (currprefs.win32_rtgvblankrate == 0 && !isvsync ())
return;
if (p96hsync < 0) {
p96hsync++;
p96hsync = p96syncrate;
return;
}
- if (WIN32GFX_IsPicassoScreen () && currprefs.gfx_pfullscreen && currprefs.gfx_pvsync) {
+ if (WIN32GFX_IsPicassoScreen () && isvsync ()) {
if (DirectDraw_GetVerticalBlankStatus ())
p96hsync = -maxvpos / 3;
} else {
void init_hz_p96 (void)
{
p96syncrate = maxvpos * vblank_hz;
- if (currprefs.win32_rtgvblankrate < 0)
+ if (currprefs.win32_rtgvblankrate < 0 || isvsync ())
p96vblank = DirectDraw_CurrentRefreshRate ();
else if (currprefs.win32_rtgvblankrate == 0)
p96vblank = vblank_hz;
#define WINUAEPUBLICBETA 1
-#define WINUAEBETA "7"
-#define WINUAEDATE MAKEBD(2008, 11, 2)
+#define WINUAEBETA "8"
+#define WINUAEDATE MAKEBD(2008, 11, 9)
#define WINUAEEXTRA ""
#define WINUAEREV ""
+1.5.3
+
+- delay sync clock enable until 10s from reset
+- real PCMCIA SRAM re-insert detection really really does work now
+ (Thanks to Eclipse for donating PCMCIA SRAM card)
+ Vista note: Vista does not come with generic PCMCIA SRAM drivers
+ anymore but XP built-in drivers work after force-installing them..
+ (only need memcard.sys and memcard.inf) 32-bit tested only.
+
Beta 7:
- fixed D3D scanline missing right edge
configured chipset refresh rate was different than current refresh
rate. Bug since the beginning of time but genlock option made this
worse because old "genlock always connected" feature hide this bug..
- (CIA-A TOD configured to PS tick didn't have this problem)
+ (CIA-A TOD configured to PS tick didn't have this problem) Thanks
+ to Ed Cruse for real NTSC A3000 testing.
- Syncronize clock improved. Automatically enables PS supply tick mode
(CIA-A TOD = sysclock only if it uses PS supply tick) and also counts
"lost" ticks when emulation is stopped (for example GUI is open)
apparently only gets reset when disk read is started. Kick Off 2
save, most likely many other programs too..
-
Beta 5:
- moved file extension stuff to half-empty priority panel, replaced