From: Toni Wilen Date: Fri, 2 May 2008 17:00:02 +0000 (+0300) Subject: imported winuaesrc1500b15.zip X-Git-Tag: 2100~151 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=dbf2ff672c593efca2f2d872ea2d20a512ea8140;p=francis%2Fwinuae.git imported winuaesrc1500b15.zip --- diff --git a/cfgfile.c b/cfgfile.c index 546e470d..cfa8372f 100755 --- a/cfgfile.c +++ b/cfgfile.c @@ -194,7 +194,7 @@ char *cfgfile_subst_path (const char *path, const char *subst, const char *file) /* @@@ use strcasecmp for some targets. */ if (strlen (path) > 0 && strncmp (file, path, strlen (path)) == 0) { int l; - char *p = (char*)xmalloc (strlen (file) + strlen (subst) + 2); + char *p = xmalloc (strlen (file) + strlen (subst) + 2); strcpy (p, subst); l = strlen (p); while (l > 0 && p[l - 1] == '/') @@ -1765,7 +1765,7 @@ static void cfgfile_parse_separated_line (struct uae_prefs *p, char *line1b, cha if (sl->option && !strcasecmp (line1b, sl->option)) break; } if (!sl) { - struct strlist *u = (struct strlist*)xcalloc (sizeof (struct strlist), 1); + struct strlist *u = xcalloc (sizeof (struct strlist), 1); u->option = my_strdup(line3b); u->value = my_strdup(line4b); u->next = p->all_lines; @@ -1967,7 +1967,7 @@ int cfgfile_save (struct uae_prefs *p, const char *filename, int type) int cfgfile_get_description (const char *filename, char *description, char *hostlink, char *hardwarelink, int *type) { int result = 0; - struct uae_prefs *p = (struct uae_prefs*)xmalloc (sizeof (struct uae_prefs)); + struct uae_prefs *p = xmalloc (sizeof (struct uae_prefs)); p->description[0] = 0; p->config_host_path[0] = 0; p->config_hardware_path[0] = 0; @@ -2361,7 +2361,7 @@ void cfgfile_addcfgparam (char *line) } if (!cfgfile_separate_line (line, line1b, line2b)) return; - u = (struct strlist*)xcalloc (sizeof (struct strlist), 1); + u = xcalloc (sizeof (struct strlist), 1); u->option = my_strdup(line1b); u->value = my_strdup(line2b); u->next = temp_lines; @@ -2646,12 +2646,12 @@ uae_u32 cfgfile_uaelib_modify (uae_u32 index, uae_u32 parms, uae_u32 size, uae_u int i, ret; put_byte (out, 0); - parms_p = (char*)xmalloc (size + 1); + parms_p = xmalloc (size + 1); if (!parms_p) { ret = 10; goto end; } - out_p = (char*)xmalloc (outsize + 1); + out_p = xmalloc (outsize + 1); if (!out_p) { ret = 10; goto end; diff --git a/expansion.c b/expansion.c index fd704992..acef08ee 100755 --- a/expansion.c +++ b/expansion.c @@ -136,6 +136,7 @@ static void (*card_init[MAX_EXPANSION_BOARDS]) (void); static void (*card_map[MAX_EXPANSION_BOARDS]) (void); static int ecard; +static int cardno; static uae_u16 uae_id; @@ -166,9 +167,19 @@ static uae_u8 expamem[65536]; static uae_u8 expamem_lo; static uae_u16 expamem_hi; -/* - * Dummy entries to show that there's no card in a slot - */ +static uae_u32 REGPARAM3 expamem_lget (uaecptr) REGPARAM; +static uae_u32 REGPARAM3 expamem_wget (uaecptr) REGPARAM; +static uae_u32 REGPARAM3 expamem_bget (uaecptr) REGPARAM; +static void REGPARAM3 expamem_lput (uaecptr, uae_u32) REGPARAM; +static void REGPARAM3 expamem_wput (uaecptr, uae_u32) REGPARAM; +static void REGPARAM3 expamem_bput (uaecptr, uae_u32) REGPARAM; + +addrbank expamem_bank = { + expamem_lget, expamem_wget, expamem_bget, + expamem_lput, expamem_wput, expamem_bput, + default_xlate, default_check, NULL, "Autoconfig", + dummy_lgeti, dummy_wgeti, ABFLAG_IO | ABFLAG_SAFE +}; static void expamem_map_clear (void) { @@ -179,33 +190,25 @@ static void expamem_init_clear (void) { memset (expamem, 0xff, sizeof expamem); } +/* autoconfig area is "non-existing" after last device */ +static void expamem_init_clear_zero (void) +{ + map_banks (&dummy_bank, 0xe8, 1, 0); +} static void expamem_init_clear2 (void) { - expamem_init_clear (); - ecard = MAX_EXPANSION_BOARDS - 1; + expamem_init_clear_zero (); + ecard = cardno; } static void expamem_init_last (void) { + expamem_init_clear2 (); write_log ("Memory map after autoconfig:\n"); memory_map_dump(); - expamem_init_clear (); } -static uae_u32 REGPARAM3 expamem_lget (uaecptr) REGPARAM; -static uae_u32 REGPARAM3 expamem_wget (uaecptr) REGPARAM; -static uae_u32 REGPARAM3 expamem_bget (uaecptr) REGPARAM; -static void REGPARAM3 expamem_lput (uaecptr, uae_u32) REGPARAM; -static void REGPARAM3 expamem_wput (uaecptr, uae_u32) REGPARAM; -static void REGPARAM3 expamem_bput (uaecptr, uae_u32) REGPARAM; - -addrbank expamem_bank = { - expamem_lget, expamem_wget, expamem_bget, - expamem_lput, expamem_wput, expamem_bput, - default_xlate, default_check, NULL, "Autoconfig", - dummy_lgeti, dummy_wgeti, ABFLAG_IO | ABFLAG_SAFE -}; static uae_u32 REGPARAM2 expamem_lget (uaecptr addr) { @@ -215,8 +218,9 @@ static uae_u32 REGPARAM2 expamem_lget (uaecptr addr) static uae_u32 REGPARAM2 expamem_wget (uaecptr addr) { - write_log ("warning: READ.W from address $%lx PC=%x\n", addr, M68K_GETPC); - return (expamem_bget (addr) << 8) | expamem_bget (addr + 1); + uae_u32 v = (expamem_bget (addr) << 8) | expamem_bget (addr + 1); + write_log ("warning: READ.W from address $%lx=%04x PC=%x\n", addr, v & 0xffff, M68K_GETPC); + return v; } static uae_u32 REGPARAM2 expamem_bget (uaecptr addr) @@ -265,6 +269,8 @@ static void REGPARAM2 expamem_wput (uaecptr addr, uae_u32 value) special_mem |= S_WRITE; #endif value &= 0xffff; + if (ecard >= cardno) + return; if (expamem_type() != zorroIII) write_log ("warning: WRITE.W to address $%lx : value $%x\n", addr, value); else { @@ -286,7 +292,7 @@ static void REGPARAM2 expamem_wput (uaecptr addr, uae_u32 value) (*card_map[ecard]) (); write_log (" Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; - if (ecard < MAX_EXPANSION_BOARDS) + if (ecard < cardno) (*card_init[ecard]) (); else expamem_init_clear2 (); @@ -301,6 +307,8 @@ static void REGPARAM2 expamem_bput (uaecptr addr, uae_u32 value) #ifdef JIT special_mem |= S_WRITE; #endif + if (ecard >= cardno) + return; value &= 0xff; switch (addr & 0xff) { case 0x30: @@ -316,7 +324,7 @@ static void REGPARAM2 expamem_bput (uaecptr addr, uae_u32 value) (*card_map[ecard]) (); write_log (" Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; - if (ecard < MAX_EXPANSION_BOARDS) + if (ecard < cardno) (*card_init[ecard]) (); else expamem_init_clear2 (); @@ -332,7 +340,7 @@ static void REGPARAM2 expamem_bput (uaecptr addr, uae_u32 value) case 0x4c: write_log (" Card %d (Zorro%s) had no success.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; - if (ecard < MAX_EXPANSION_BOARDS) + if (ecard < cardno) (*card_init[ecard]) (); else expamem_init_clear2 (); @@ -1135,7 +1143,7 @@ void expamem_next (void) expamem_init_clear (); map_banks (&expamem_bank, 0xE8, 1, 0); ++ecard; - if (ecard < MAX_EXPANSION_BOARDS) + if (ecard < cardno) (*card_init[ecard]) (); else expamem_init_clear2 (); @@ -1166,8 +1174,9 @@ void p96memstart(void) void expamem_reset (void) { int do_mount = 1; - int cardno = 0; + ecard = 0; + cardno = 0; if (currprefs.uae_hide) uae_id = commodore; @@ -1248,13 +1257,13 @@ void expamem_reset (void) card_init[cardno] = expamem_init_last; card_map[cardno++] = expamem_map_clear; } - while (cardno < MAX_EXPANSION_BOARDS) { - card_init[cardno] = expamem_init_clear; - card_map[cardno++] = expamem_map_clear; - } z3fastmem_start = currprefs.z3fastmem_start; - (*card_init[0]) (); + + if (cardno == 0) + expamem_init_clear_zero (); + else + (*card_init[0]) (); } void expansion_init (void) diff --git a/include/memory.h b/include/memory.h index c075a3f3..292f78d2 100755 --- a/include/memory.h +++ b/include/memory.h @@ -63,7 +63,7 @@ extern uaecptr fastmem_start; extern uaecptr a3000lmem_start, a3000hmem_start; extern int ersatzkickfile; -extern int cloanto_rom; +extern int cloanto_rom, kickstart_rom; extern uae_u16 kickstart_version; extern int uae_boot_rom, uae_boot_rom_size; extern uaecptr rtarea_base; @@ -344,6 +344,7 @@ extern void a3000_fakekick(int); #define ROMTYPE_NORDIC 0x001000 #define ROMTYPE_XPOWER 0x002000 #define ROMTYPE_CD32CART 0x004000 +#define ROMTYPE_SPECIALKICK 0x008000 #define ROMTYPE_MASK 0x01ffff #define ROMTYPE_EVEN 0x020000 #define ROMTYPE_ODD 0x040000 diff --git a/main.c b/main.c index e34508f9..46d3ba74 100755 --- a/main.c +++ b/main.c @@ -60,6 +60,7 @@ struct uae_prefs currprefs, changed_prefs; int no_gui = 0; int joystickpresent = 0; int cloanto_rom = 0; +int kickstart_rom = 1; struct gui_info gui_data; diff --git a/memory.c b/memory.c index a0c61ba4..4bf090f4 100755 --- a/memory.c +++ b/memory.c @@ -257,7 +257,7 @@ static struct romdata roms[] = { ALTROMPN(24, 2, 1, 4096, ROMTYPE_EVEN | ROMTYPE_8BIT, "252179-01", 0x42553bc4,0x8855a97f,0x7a44e3f6,0x2d1c88d9,0x38fee1f4,0xc606af5b) ALTROMPN(24, 2, 2, 4096, ROMTYPE_ODD | ROMTYPE_8BIT, "252180-01", 0x8e5b9a37,0xd10f1564,0xb99f5ffe,0x108fa042,0x362e877f,0x569de2c3) - { "The Diagnostic 2.0 (Logica)", 2, 0, 2, 0, "LOGICA\0", 524288, 72, 0, 0, ROMTYPE_KICK, 0, 0, NULL, + { "The Diagnostic 2.0 (Logica)", 2, 0, 2, 0, "LOGICA\0", 524288, 72, 0, 0, ROMTYPE_KICK | ROMTYPE_SPECIALKICK, 0, 0, NULL, 0x8484f426, 0xba10d161,0x66b2e2d6,0x177c979c,0x99edf846,0x2b21651e }, { "Freezer: Action Replay Mk I v1.00", 1, 0, 1, 0, "AR\0", 65536, 52, 0, 0, ROMTYPE_AR, 0, 1, NULL, @@ -1068,8 +1068,8 @@ static void dummylog (int rw, uaecptr addr, int size, uae_u32 val, int ins) /* ignore Zorro3 expansion space */ if (addr >= 0xff000000 && addr <= 0xff000200) return; - /* extended rom */ - if (addr >= 0xf00000 && addr <= 0xf7ffff) + /* autoconfig and extended rom */ + if (addr >= 0xe00000 && addr <= 0xf7ffff) return; /* motherboard ram */ if (addr >= 0x08000000 && addr <= 0x08000007) @@ -1092,16 +1092,27 @@ static void dummylog (int rw, uaecptr addr, int size, uae_u32 val, int ins) } } +static uae_u32 dummy_get (uaecptr addr, int size) +{ + uae_u32 v; + if (currprefs.cpu_model >= 68020) + return NONEXISTINGDATA; + v = (regs.irc << 16) | regs.irc; + if (v == 4) + return v; + if (v == 2) + return v & 0xffff; + return (addr & 1) ? (v & 0xff) : ((v >> 8) & 0xff); +} + static uae_u32 REGPARAM2 dummy_lget (uaecptr addr) { #ifdef JIT special_mem |= S_READ; #endif if (currprefs.illegal_mem) - dummylog(0, addr, 4, 0, 0); - if (currprefs.cpu_model >= 68020) - return NONEXISTINGDATA; - return (regs.irc << 16) | regs.irc; + dummylog (0, addr, 4, 0, 0); + return dummy_get (addr, 4); } uae_u32 REGPARAM2 dummy_lgeti (uaecptr addr) { @@ -1109,10 +1120,8 @@ uae_u32 REGPARAM2 dummy_lgeti (uaecptr addr) special_mem |= S_READ; #endif if (currprefs.illegal_mem) - dummylog(0, addr, 4, 0, 1); - if (currprefs.cpu_model >= 68020) - return NONEXISTINGDATA; - return (regs.irc << 16) | regs.irc; + dummylog (0, addr, 4, 0, 1); + return dummy_get (addr, 4); } static uae_u32 REGPARAM2 dummy_wget (uaecptr addr) @@ -1121,10 +1130,8 @@ static uae_u32 REGPARAM2 dummy_wget (uaecptr addr) special_mem |= S_READ; #endif if (currprefs.illegal_mem) - dummylog(0, addr, 2, 0, 0); - if (currprefs.cpu_model >= 68020) - return NONEXISTINGDATA; - return regs.irc; + dummylog (0, addr, 2, 0, 0); + return dummy_get (addr, 2); } uae_u32 REGPARAM2 dummy_wgeti (uaecptr addr) { @@ -1132,10 +1139,8 @@ uae_u32 REGPARAM2 dummy_wgeti (uaecptr addr) special_mem |= S_READ; #endif if (currprefs.illegal_mem) - dummylog(0, addr, 2, 0, 1); - if (currprefs.cpu_model >= 68020) - return NONEXISTINGDATA; - return regs.irc; + dummylog (0, addr, 2, 0, 1); + return dummy_get (addr, 2); } static uae_u32 REGPARAM2 dummy_bget (uaecptr addr) @@ -1144,10 +1149,8 @@ static uae_u32 REGPARAM2 dummy_bget (uaecptr addr) special_mem |= S_READ; #endif if (currprefs.illegal_mem) - dummylog(0, addr, 1, 0, 0); - if (currprefs.cpu_model >= 68020) - return NONEXISTINGDATA; - return (addr & 1) ? regs.irc : regs.irc >> 8; + dummylog (0, addr, 1, 0, 0); + return dummy_get (addr, 1); } static void REGPARAM2 dummy_lput (uaecptr addr, uae_u32 l) @@ -1156,7 +1159,7 @@ static void REGPARAM2 dummy_lput (uaecptr addr, uae_u32 l) special_mem |= S_WRITE; #endif if (currprefs.illegal_mem) - dummylog(1, addr, 4, l, 0); + dummylog (1, addr, 4, l, 0); } static void REGPARAM2 dummy_wput (uaecptr addr, uae_u32 w) { @@ -1164,7 +1167,7 @@ static void REGPARAM2 dummy_wput (uaecptr addr, uae_u32 w) special_mem |= S_WRITE; #endif if (currprefs.illegal_mem) - dummylog(1, addr, 2, w, 0); + dummylog (1, addr, 2, w, 0); } static void REGPARAM2 dummy_bput (uaecptr addr, uae_u32 b) { @@ -1172,7 +1175,7 @@ static void REGPARAM2 dummy_bput (uaecptr addr, uae_u32 b) special_mem |= S_WRITE; #endif if (currprefs.illegal_mem) - dummylog(1, addr, 1, b, 0); + dummylog (1, addr, 1, b, 0); } static int REGPARAM2 dummy_check (uaecptr addr, uae_u32 size) @@ -3175,6 +3178,7 @@ void memory_reset (void) if (strcmp (currprefs.romfile, changed_prefs.romfile) != 0 || strcmp (currprefs.romextfile, changed_prefs.romextfile) != 0) { + kickstart_rom = 1; ersatzkickfile = 0; a1000_handle_kickstart (0); xfree (a1000_bootrom); @@ -3218,6 +3222,9 @@ void memory_reset (void) } if (rd->cloanto) cloanto_rom = 1; + kickstart_rom = 0; + if ((rd->type & ROMTYPE_SPECIALKICK | ROMTYPE_KICK) == ROMTYPE_KICK) + kickstart_rom = 1; if ((rd->cpu & 4) && currprefs.cs_compatible) { /* A4000 ROM = need ramsey, gary and ide */ if (currprefs.cs_ramseyrev < 0) diff --git a/newcpu.c b/newcpu.c index d5255db7..5a0f6101 100755 --- a/newcpu.c +++ b/newcpu.c @@ -1625,7 +1625,8 @@ void m68k_reset (int hardreset) if (currprefs.cpu_model == 68060) { regs.pcr = currprefs.fpu_model ? MC68060_PCR : MC68EC060_PCR; regs.pcr |= (currprefs.cpu060_revision & 0xff) << 8; - regs.pcr |= 2; /* disable FPU */ + if (kickstart_rom) + regs.pcr |= 2; /* disable FPU */ } fill_prefetch_slow (®s); } diff --git a/od-win32/dxwrap.c b/od-win32/dxwrap.c index 2b82ce80..0c56b94c 100755 --- a/od-win32/dxwrap.c +++ b/od-win32/dxwrap.c @@ -55,6 +55,9 @@ static HRESULT restoresurface_2 (LPDIRECTDRAWSURFACE7 surf) if (surf == dxdata.flipping[0] || surf == dxdata.flipping[1]) surf = dxdata.primary; + ddrval = IDirectDrawSurface7_IsLost (surf); + if (SUCCEEDED (ddrval)) + return ddrval; ddrval = IDirectDrawSurface7_Restore (surf); if (SUCCEEDED (ddrval)) { if (surf == dxdata.primary && dxdata.palette) @@ -69,6 +72,9 @@ HRESULT restoresurface (LPDIRECTDRAWSURFACE7 surf) if (surf == dxdata.flipping[0] || surf == dxdata.flipping[1]) surf = dxdata.primary; + ddrval = IDirectDrawSurface7_IsLost (surf); + if (SUCCEEDED (ddrval)) + return ddrval; ddrval = IDirectDrawSurface7_Restore (surf); if (FAILED (ddrval)) { write_log ("IDirectDrawSurface7_Restore: %s\n", DXError (ddrval)); @@ -79,6 +85,19 @@ HRESULT restoresurface (LPDIRECTDRAWSURFACE7 surf) return ddrval; } +static HRESULT restoresurfacex (LPDIRECTDRAWSURFACE7 surf1, LPDIRECTDRAWSURFACE7 surf2) +{ + HRESULT r1, r2; + + r1 = restoresurface (surf1); + r2 = restoresurface (surf2); + if (SUCCEEDED (r1) && SUCCEEDED (r2)) + return r1; + if (SUCCEEDED (r1)) + return r2; + return r1; +} + static void clearsurf (LPDIRECTDRAWSURFACE7 surf) { HRESULT ddrval; @@ -590,7 +609,7 @@ int DirectDraw_BlitToPrimaryScale (RECT *rect) centerdstrect (&dstrect); while (FAILED (ddrval = IDirectDrawSurface7_Blt (dst, &dstrect, dxdata.secondary, rect, DDBLT_WAIT, NULL))) { if (ddrval == DDERR_SURFACELOST) { - ddrval = restoresurface (dst); + ddrval = restoresurfacex (dst, dxdata.secondary); if (FAILED (ddrval)) return 0; } else if (ddrval != DDERR_SURFACEBUSY) { @@ -627,7 +646,7 @@ int DirectDraw_BlitToPrimary (RECT *rect) centerdstrect (&dstrect); while (FAILED(ddrval = IDirectDrawSurface7_Blt (dst, &dstrect, dxdata.secondary, &srcrect, DDBLT_WAIT, NULL))) { if (ddrval == DDERR_SURFACELOST) { - ddrval = restoresurface (dst); + ddrval = restoresurfacex (dst, dxdata.secondary); if (FAILED (ddrval)) return 0; } else if (ddrval != DDERR_SURFACEBUSY) { @@ -659,6 +678,9 @@ static void DirectDraw_Blt (LPDIRECTDRAWSURFACE7 dst, RECT *dstrect, LPDIRECTDRA ddrval = restoresurface_2 (dst); if (FAILED (ddrval)) break; + ddrval = restoresurface_2 (src); + if (FAILED (ddrval)) + break; } else if (ddrval != DDERR_SURFACEBUSY) { write_log ("DirectDraw_Blit: %s\n", DXError (ddrval)); break; diff --git a/od-win32/hardfile_win32.c b/od-win32/hardfile_win32.c index 975bb9ff..33d14210 100755 --- a/od-win32/hardfile_win32.c +++ b/od-win32/hardfile_win32.c @@ -1219,10 +1219,17 @@ static int hmc (struct hardfiledata *hfd) ret = ReadFile (hfd->handle, buf, hfd->blocksize, &got, NULL); err = GetLastError (); SetErrorMode(errormode); - if (ret) - write_log ("read ok\n"); - else + if (ret) { + if (got == hfd->blocksize) { + write_log ("read ok (%d)\n", got); + } else { + write_log ("read ok but no data (%d)\n", hfd->blocksize); + ret = 0; + err = 0; + } + } else { write_log ("=%d\n", err); + } if (!ret && (err == ERROR_DEV_NOT_EXIST || err == ERROR_WRONG_DISK)) { if (!first) break; diff --git a/od-win32/lcd.c b/od-win32/lcd.c index 379cf964..0514c199 100755 --- a/od-win32/lcd.c +++ b/od-win32/lcd.c @@ -173,8 +173,10 @@ void lcd_update(int led, int on) x = 23 + (led - 1) * 40; y = 17; track = gui_data.drive_track[led - 1]; - if (gui_data.drive_disabled[led - 1]) + if (gui_data.drive_disabled[led - 1]) { track = -1; + on = 0; + } putnumbers (x, y, track, on); } else if (led == 0) { dorect (&coords[4 * 2], on); diff --git a/od-win32/mman.c b/od-win32/mman.c index 326c3608..2631f324 100755 --- a/od-win32/mman.c +++ b/od-win32/mman.c @@ -226,7 +226,8 @@ void preinit_shm (void) size64 = 8 * 1024 * 1024; if (max_allowed_mman * 1024 * 1024 > size64) max_allowed_mman = size64 / (1024 * 1024); - max_z3fastmem = (max_allowed_mman - (max_allowed_mman >> 3)) * 1024 * 1024; + if (maxmem == 0) + max_z3fastmem = (max_allowed_mman - (max_allowed_mman >> 3)) * 1024 * 1024; if (max_z3fastmem < 512 * 1024 * 1024) max_z3fastmem = 512 * 1024 * 1024; diff --git a/od-win32/picasso96_win.c b/od-win32/picasso96_win.c index b82ef360..1c225ee0 100755 --- a/od-win32/picasso96_win.c +++ b/od-win32/picasso96_win.c @@ -1363,8 +1363,7 @@ static void updatesprcolors (void) { int i; for (i = 1; i < 4; i++) { - uae_u32 v, vx; - v = cursorrgb[i]; + uae_u32 v = cursorrgb[i]; switch (picasso_vidinfo.pixbytes) { case 1: @@ -1454,7 +1453,7 @@ static uae_u32 setspriteimage (uaecptr bi) for (y = 0; y < h; y++, yy++) { uae_u8 *p = tmpbuf + w * bpp * y; uae_u8 *pprev = p; - uaecptr img = get_long (bi + PSSO_BoardInfo_MouseImage) + 4 + yy * 4 * hiressprite; + uaecptr img = get_long (bi + PSSO_BoardInfo_MouseImage) + 4 * hiressprite + yy * 4 * hiressprite; x = 0; while (x < w) { uae_u32 d1 = get_long (img); diff --git a/od-win32/win32.h b/od-win32/win32.h index 4c192f4c..78c931ec 100755 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -15,9 +15,9 @@ #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100) #define GETBDD(x) ((x) % 100) -#define WINUAEBETA 14 +#define WINUAEBETA 15 #define WINUAEPUBLICBETA 1 -#define WINUAEDATE MAKEBD(2008, 5, 1) +#define WINUAEDATE MAKEBD(2008, 5, 2) #define WINUAEEXTRA "" #define WINUAEREV "" diff --git a/od-win32/win32gfx.c b/od-win32/win32gfx.c index b49576a3..69ee88ec 100755 --- a/od-win32/win32gfx.c +++ b/od-win32/win32gfx.c @@ -248,17 +248,17 @@ static int set_ddraw_2 (void) if (dxfullscreen) { int rounds = 3; for (;;) { + HRESULT olderr; write_log ("set_ddraw: Trying %dx%d, bits=%d, refreshrate=%d\n", width, height, bits, freq); ddrval = DirectDraw_SetDisplayMode (width, height, bits, freq); if (SUCCEEDED (ddrval)) break; - if (ddrval != 0x80004001 && freq != 0) { // "The function called is not supported at this time" (wtf?) - write_log ("set_ddraw: failed, trying without forced refresh rate\n"); - ddrval = DirectDraw_SetDisplayMode (width, height, bits, 0); - if (SUCCEEDED (ddrval)) - break; - } - if (ddrval != DDERR_INVALIDMODE && ddrval != 0x80004001 && ddrval != DDERR_UNSUPPORTEDMODE) + olderr = ddrval; + write_log ("set_ddraw: failed, trying without forced refresh rate\n"); + ddrval = DirectDraw_SetDisplayMode (width, height, bits, 0); + if (SUCCEEDED (ddrval)) + break; + if (olderr != DDERR_INVALIDMODE && olderr != 0x80004001 && olderr != DDERR_UNSUPPORTEDMODE) goto oops; return -1; } diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index e3b5fb8c..8a99b6a3 100755 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -1,4 +1,16 @@ +Beta 15: + +- autoconfig emulation update, fixes AR3 (broken) autoconfig code that + detected non-existing ram expansion at 0x00600000-0x009ffff +- modified directdraw fullscreen mode fallback code +- Picasso96 hires hardware sprite problem fixed. It was emulation + problem after all.. (I really need new brown paper bag soon) +- Picasso96 hardware sprite resolution switching problem should be + really fixed now. (lots of logging can still happen after alt-tab, + this will be removed later) +- disk insert/remove tweak + Beta 14: - fixed IDE emulation crash