From: Toni Wilen Date: Thu, 5 Feb 2009 17:54:32 +0000 (+0200) Subject: imported winuaesrc1600b11.zip X-Git-Tag: 2100~101 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=914d0e866429e2745c1f0ffb7943b1108d1f6861;p=francis%2Fwinuae.git imported winuaesrc1600b11.zip --- diff --git a/audio.c b/audio.c index 2e20164e..a20ea006 100644 --- a/audio.c +++ b/audio.c @@ -183,7 +183,7 @@ void audio_sampleripper (int mode) while (rs) { if (rs->changed) { rs->changed = 0; - fetch_screenshotpath (path, sizeof (path)); + fetch_ripperpath (path, sizeof (path)); name[0] = 0; if (currprefs.dfxtype[0] >= 0) strcpy (name, currprefs.df[0]); @@ -233,9 +233,9 @@ static void do_samplerip (struct audio_channel_data *adp) break; /* replace old identical but shorter sample */ if (len > rs->len && !memcmp (rs->sample, smp, rs->len)) { - xfree(rs->sample); - rs->sample = (uae_u8*)xmalloc (len); - memcpy(rs->sample, smp, len); + xfree (rs->sample); + rs->sample = xmalloc (len); + memcpy (rs->sample, smp, len); write_log ("SAMPLERIPPER: replaced sample %d (%d -> %d)\n", cnt, rs->len, len); rs->len = len; rs->per = adp->per / CYCLE_UNIT; @@ -250,14 +250,14 @@ static void do_samplerip (struct audio_channel_data *adp) } if (rs || cnt > 100) return; - rs = (struct ripped_sample*)xmalloc(sizeof(struct ripped_sample)); + rs = xmalloc(sizeof(struct ripped_sample)); if (prev) prev->next = rs; else ripped_samples = rs; rs->len = len; rs->per = adp->per / CYCLE_UNIT; - rs->sample = (uae_u8*)xmalloc (len); + rs->sample = xmalloc (len); memcpy(rs->sample, smp, len); rs->next = NULL; rs->changed = 1; diff --git a/blitter.c b/blitter.c index 1ad23098..10d29095 100644 --- a/blitter.c +++ b/blitter.c @@ -33,6 +33,7 @@ static int blitter_cycle_exact; uae_u16 bltcon0, bltcon1; uae_u32 bltapt, bltbpt, bltcpt, bltdpt; +static int blinea_shift; static uae_u16 blinea, blineb; static int blitline, blitfc, blitfill, blitife, blitsing, blitdesc; static int blitonedot, blitsign; @@ -489,23 +490,23 @@ STATIC_INLINE void blitter_write (void) if (bltcon0 & 0x200) { if (!dmaen (DMA_BLITTER)) return; - chipmem_bank.wput(bltdpt, blt_info.bltddat); + chipmem_bank.wput (bltdpt, blt_info.bltddat); } bltstate = BLT_next; } STATIC_INLINE void blitter_line_incx (void) { - if (++blt_info.blitashift == 16) { - blt_info.blitashift = 0; + if (++blinea_shift == 16) { + blinea_shift = 0; bltcpt += 2; } } STATIC_INLINE void blitter_line_decx (void) { - if (blt_info.blitashift-- == 0) { - blt_info.blitashift = 15; + if (blinea_shift-- == 0) { + blinea_shift = 15; bltcpt -= 2; } } @@ -524,7 +525,7 @@ STATIC_INLINE void blitter_line_incy (void) static void blitter_line (void) { - uae_u16 blitahold = (blinea & blt_info.bltafwm) >> blt_info.blitashift; + uae_u16 blitahold = (blinea & blt_info.bltafwm) >> blinea_shift; uae_u16 blitbhold = blineb & 1 ? 0xFFFF : 0; uae_u16 blitchold = blt_info.bltcdat; @@ -1017,6 +1018,8 @@ static void blit_modset (void) void reset_blit (int bltcon) { + if (bltcon == 1) + blinea_shift = bltcon0 >> 12; if (bltstate == BLT_done) return; if (bltcon) diff --git a/catweasel.c b/catweasel.c index 01a51ea8..a39c47e8 100644 --- a/catweasel.c +++ b/catweasel.c @@ -285,7 +285,7 @@ uae_u32 catweasel_do_bget (uaecptr addr) buf1[0] = (uae_u8)addr; if (handle != INVALID_HANDLE_VALUE) { if (!DeviceIoControl (handle, CW_PEEKREG_FULL, buf1, 1, buf2, 1, &did_read, 0)) - write_log ("catweasel_do_bget fail err=%d\n", GetLastError()); + write_log ("catweasel_do_bget %02x fail err=%d\n", buf1[0], GetLastError ()); } else { buf2[0] = ioport_read (cwc.iobase + addr); } @@ -304,7 +304,7 @@ void catweasel_do_bput (uaecptr addr, uae_u32 b) buf[1] = b; if (handle != INVALID_HANDLE_VALUE) { if (!DeviceIoControl (handle, CW_POKEREG_FULL, buf, 2, 0, 0, &did_read, 0)) - write_log ("catweasel_do_bput fail err=%d\n", GetLastError()); + write_log ("catweasel_do_bput %02x=%02x fail err=%d\n", buf[0], buf[1], GetLastError ()); } else { ioport_write (cwc.iobase + addr, b); } @@ -663,7 +663,7 @@ fail: void catweasel_free (void) { if (cwc.direct_access) { - if (cwc.type == 4) + if (cwc.type == CATWEASEL_TYPE_MK4) catweasel_do_bput(3, 0x61); // enable floppy passthrough } if (handle != INVALID_HANDLE_VALUE) diff --git a/cfgfile.c b/cfgfile.c index eeabd91f..e7657874 100644 --- a/cfgfile.c +++ b/cfgfile.c @@ -3008,7 +3008,7 @@ void default_prefs (struct uae_prefs *p, int type) p->cs_slowmemisfast = 0; p->cs_resetwarning = 1; - p->gfx_filter = 1; + p->gfx_filter = 0; p->gfx_filtershader[0] = 0; p->gfx_filter_horiz_zoom_mult = 0; p->gfx_filter_vert_zoom_mult = 0; diff --git a/custom.c b/custom.c index 9f07e322..39bbfb70 100644 --- a/custom.c +++ b/custom.c @@ -64,6 +64,8 @@ #define SPRITE_COLLISIONS #define SPEEDUP +#define NEW_BPL 1 + #define SPRBORDER 0 STATIC_INLINE int nocustom(void) @@ -517,11 +519,11 @@ void notice_new_xcolors (void) int i; update_mirrors (); - docols(¤t_colors); - docols(&colors_for_drawing); + docols (¤t_colors); + docols (&colors_for_drawing); for (i = 0; i < (MAXVPOS + 1) * 2; i++) { - docols(color_tables[0] + i); - docols(color_tables[1] + i); + docols (color_tables[0] + i); + docols (color_tables[1] + i); } } @@ -950,7 +952,12 @@ STATIC_INLINE void maybe_first_bpl1dat (int hpos) STATIC_INLINE void fetch (int nr, int fm) { if (nr < toscr_nr_planes) { +#if NEW_BPL uaecptr p = f_bplpt[nr]; +#else + uaecptr p = bplpt[nr]; + bplpt[nr] += 2 << fm; +#endif switch (fm) { case 0: @@ -987,9 +994,10 @@ STATIC_INLINE void fetch (int nr, int fm) } if (nr == 0) fetch_state = fetch_was_plane0; +#if NEW_BPL else if (nr == 1 && t_bplcon0_res > f_bplcon0_res) fetch_state = fetch_was_plane0; - +#endif } static void clear_fetchbuffer (uae_u32 *ptr, int nwords) @@ -1459,6 +1467,7 @@ static void finish_final_fetch (int pos, int fm) */ STATIC_INLINE void inc_bpl (int fm, int oe) { +#if NEW_BPL int i; for (i = 0; i < f_bplcon0_planes; i++) { if ((oe == 0) || (oe < 0 && (i & 1)) || (oe > 0 && !(i & 1))) { @@ -1467,6 +1476,7 @@ STATIC_INLINE void inc_bpl (int fm, int oe) bplptx[i] += 2 << fm; } } +#endif } STATIC_INLINE int one_fetch_cycle_0 (int pos, int ddfstop_to_test, int dma, int fm) @@ -1503,9 +1513,9 @@ STATIC_INLINE int one_fetch_cycle_0 (int pos, int ddfstop_to_test, int dma, int break; case 4: switch (cycle_start) { - case 0: inc_bpl (fm, 0); fetch (3, fm); break; + case 0: inc_bpl (fm, -1); fetch (3, fm); break; case 1: fetch (1, fm); break; - case 2: fetch (2, fm); break; + case 2: inc_bpl (fm, 1); fetch (2, fm); break; case 3: fetch (0, fm); break; } break; @@ -3183,7 +3193,7 @@ static void BPLxPTH (int hpos, uae_u16 v, int num) decide_fetch (hpos); bplpt[num] = (bplpt[num] & 0x0000ffff) | ((uae_u32)v << 16); bplptx[num] = (bplptx[num] & 0x0000ffff) | ((uae_u32)v << 16); - //write_log ("%d:%d:BPL%dPTH %08X\n", hpos, vpos, num, v); + //write_log ("%d:%d:BPL%dPTH %08X COP=%08x\n", hpos, vpos, num, v, cop_state.ip); } static void BPLxPTL (int hpos, uae_u16 v, int num) { @@ -3192,21 +3202,21 @@ static void BPLxPTL (int hpos, uae_u16 v, int num) decide_fetch (hpos); /* fix for "bitplane dma fetch at the same time while updating BPLxPTL" */ /* fixes "3v Demo" by Cave and "New Year Demo" by Phoenix */ - if (is_bitplane_dma (hpos - 1) == num + 1 && num > 0) { + if (is_bitplane_dma (hpos) == num + 1 || is_bitplane_dma (hpos - 1) == num + 1) { delta = 2 << f_fetchmode; } bplpt[num] = (bplpt[num] & 0xffff0000) | ((v + delta) & 0x0000fffe); bplptx[num] = (bplptx[num] & 0xffff0000) | ((v + delta) & 0x0000fffe); - //write_log ("%d:%d:BPL%dPTL %08X\n", hpos, vpos, num, v); + //write_log ("%d:%d:BPL%dPTL %08X COP=%08x\n", hpos, vpos, num, v, cop_state.ip); } static int isehb (uae_u16 bplcon0, uae_u16 bplcon2) { int bplehb; if (currprefs.chipset_mask & CSMASK_AGA) - bplehb = (bplcon0 & 0x7010) == 0x6000 && !(bplcon2 & 0x200); + bplehb = (bplcon0 & 0x7010) == 0x6000; else if (currprefs.chipset_mask & CSMASK_ECS_DENISE) - bplehb = ((bplcon0 & 0xFC00) == 0x6000 || (bplcon0 & 0xFC00) == 0x7000) && !(bplcon2 & 0x200); + bplehb = ((bplcon0 & 0xFC00) == 0x6000 || (bplcon0 & 0xFC00) == 0x7000); else bplehb = ((bplcon0 & 0xFC00) == 0x6000 || (bplcon0 & 0xFC00) == 0x7000) && !currprefs.cs_denisenoehb; return bplehb; @@ -3241,6 +3251,11 @@ static void BPLCON0 (int hpos, uae_u16 v) if ((bplcon0 & (0x800 | 0x400 | 0x80)) != (v & (0x800 | 0x400 | 0x80))) // HAM/EBH/DPF change is instant record_register_change (hpos, 0x100, (bplcon0 & ~(0x800 | 0x400 | 0x80)) | (v & (0x0800 | 0x400 | 0x80))); + + // don't ask.. + if (GET_PLANES (v) > GET_PLANES (bplcon0) && GET_RES (v) >= GET_RES (bplcon0) && fetch_state != fetch_not_started) + fetch_state = fetch_was_plane0; + bplcon0 = v; #ifdef ECS_DENISE @@ -3250,7 +3265,7 @@ static void BPLCON0 (int hpos, uae_u16 v) } #endif expand_fmodes (); - +#if NEW_BPL if (fetch_state == fetch_not_started || diwstate != DIW_waiting_stop) { record_register_change (hpos, 0x100, v); fetch_bpl_params (); @@ -3259,6 +3274,10 @@ static void BPLCON0 (int hpos, uae_u16 v) fetch_bpl_params (); copy_bpl_params (hpos); } +#else + fetch_bpl_params (); + copy_bpl_params (hpos); +#endif calcdiw (); estimate_last_fetch_cycle (hpos); diff --git a/debug.c b/debug.c index 44293d9a..48e2833d 100644 --- a/debug.c +++ b/debug.c @@ -2400,6 +2400,7 @@ static void debug_sprite (char **inptr) for (i = 0; i < size * 2; i++) console_out_f ("%04X ", get_word (addr + i * 2)); console_out_f ("\n"); + ypos = w1 >> 8; xpos = w1 & 255; ypose = w2 >> 8; @@ -2426,6 +2427,9 @@ static void debug_sprite (char **inptr) ecs = 1; if (w1 & 0x80) sh10 = 1; + if (ypose < ypos) + ypose += 256; + for (y = ypos; y < ypose; y++) { int x; addr += size * 4; diff --git a/disk.c b/disk.c index d3adafec..314d6979 100644 --- a/disk.c +++ b/disk.c @@ -190,7 +190,7 @@ int disk_debug_logging; int disk_debug_mode; int disk_debug_track = -1; -#define MIN_STEPLIMIT_CYCLE (CYCLE_UNIT * 150) +#define MIN_STEPLIMIT_CYCLE (CYCLE_UNIT * 250) static uae_u16 bigmfmbufw[0x4000 * DDHDMULT]; static drive floppy[MAX_FLOPPY_DRIVES]; @@ -1059,6 +1059,12 @@ static void rand_shifter (drive *drv) } } +static void set_steplimit (drive *drv) +{ + drv->steplimit = 10; + drv->steplimitcycle = get_cycles (); +} + static int drive_empty (drive * drv) { #ifdef CATWEASEL @@ -1083,15 +1089,15 @@ static void drive_step (drive * drv) #endif if (drv->steplimit && get_cycles() - drv->steplimitcycle < MIN_STEPLIMIT_CYCLE) { if (disk_debug_logging > 1) - write_log (" step ignored %d", (get_cycles() - drv->steplimitcycle) / CYCLE_UNIT); + write_log (" step ignored drive %d, %d", + drv - floppy, (get_cycles() - drv->steplimitcycle) / CYCLE_UNIT); return; } /* A1200's floppy drive needs at least 30 raster lines between steps * but we'll use very small value for better compatibility with faster CPU emulation * (stupid trackloaders with CPU delay loops) */ - drv->steplimit = 10; - drv->steplimitcycle = get_cycles (); + set_steplimit (drv); if (!drive_empty (drv)) drv->dskchange = 0; if (direction) { @@ -2463,8 +2469,10 @@ static void disk_doupdate_write (drive * drv, int floppybits) for (dr = 0; dr < MAX_FLOPPY_DRIVES ; dr++) { drive *drv2 = &floppy[dr]; drv2->writtento = 0; - if (drives[dr]) + if (drives[dr]) { drive_write_data (drv2); + //set_steplimit (drv2); + } } } } diff --git a/drawing.c b/drawing.c index 9857053c..81abe99f 100644 --- a/drawing.c +++ b/drawing.c @@ -66,6 +66,9 @@ static void lores_reset (void) lores_shift++; lores_factor = 2; } + sprite_buffer_res = currprefs.gfx_resolution; + if (doublescan > 0 && sprite_buffer_res < RES_SUPERHIRES) + sprite_buffer_res++; } int aga_mode; /* mirror of chipset_mask & CSMASK_AGA */ @@ -1799,6 +1802,8 @@ static void pfield_expand_dp_bplcon (void) can_use_lores = 0; bplehb = (dp_for_drawing->bplcon0 & 0x80) == 0x80; + if ((currprefs.chipset_mask & CSMASK_AGA) && (dp_for_drawing->bplcon2 & 0x0200)) + bplehb = 0; plf1pri = dp_for_drawing->bplcon2 & 7; plf2pri = (dp_for_drawing->bplcon2 >> 3) & 7; plf_sprite_mask = 0xFFFF0000 << (4 * plf2pri); @@ -2932,10 +2937,6 @@ void reset_drawing (void) frame_res_cnt = FRAMES_UNTIL_RES_SWITCH; lightpen_y1 = lightpen_y2 = -1; - sprite_buffer_res = currprefs.gfx_resolution; - if (doublescan > 0 && sprite_buffer_res < RES_SUPERHIRES) - sprite_buffer_res++; - reset_custom_limits (); } diff --git a/filesys.c b/filesys.c index 59b3ea99..2119f80d 100644 --- a/filesys.c +++ b/filesys.c @@ -3770,30 +3770,24 @@ action_change_mode (Unit *unit, dpacket packet) /* either a file-handle or lock */ uaecptr object = GET_PCK_ARG2 (packet) << 2; /* will be EXCLUSIVE_LOCK/SHARED_LOCK if CHANGE_LOCK, - * or MODE_OLDFILE/MODE_NEWFILE/MODE_READWRITE if CHANGE_FH */ + * or MODE_OLDFILE/MODE_NEWFILE/MODE_READWRITE if CHANGE_FH * + * Above is wrong, it is always *_LOCK. TW. */ long mode = GET_PCK_ARG3 (packet); unsigned long uniq; a_inode *a = NULL, *olda = NULL; uae_u32 err = 0; - TRACE(("ACTION_CHANGE_MODE(0x%lx,%d,%d)\n", object, type,mode)); + TRACE(("ACTION_CHANGE_MODE(0x%lx,%d,%d)\n", object, type, mode)); - if (! object - || (type != CHANGE_FH && type != CHANGE_LOCK)) - { + if (! object || (type != CHANGE_FH && type != CHANGE_LOCK)) { PUT_PCK_RES1 (packet, DOS_FALSE); PUT_PCK_RES2 (packet, ERROR_INVALID_LOCK); return; } - /* @@@ Brian: shouldn't this be good enough to support - CHANGE_FH? */ - if (type == CHANGE_FH) - mode = (mode == 1006 ? -1 : -2); - - if (type == CHANGE_LOCK) + if (type == CHANGE_LOCK) { uniq = get_long (object + 4); - else { - Key *k = lookup_key (unit, object); + } else { + Key *k = lookup_key (unit, get_long (object + 36)); if (!k) { PUT_PCK_RES1 (packet, DOS_FALSE); PUT_PCK_RES2 (packet, ERROR_OBJECT_NOT_AROUND); @@ -3803,13 +3797,13 @@ action_change_mode (Unit *unit, dpacket packet) } a = lookup_aino (unit, uniq); - if (! a) + if (! a) { err = ERROR_INVALID_LOCK; - else { + } else { if (mode == -1) { - if (a->shlock > 1) + if (a->shlock > 1) { err = ERROR_OBJECT_IN_USE; - else { + } else { a->shlock = 0; a->elock = 1; } @@ -5411,7 +5405,7 @@ static uae_u32 REGPARAM2 mousehack_done (TrapContext *context) uaecptr vp = m68k_areg (&context->regs, 4); input_mousehack_status (mode, diminfo, dispinfo, vp); } else if (mode == 10) { - amiga_clipboard_init (); + amiga_clipboard_die (); } else if (mode == 11) { amiga_clipboard_got_data (m68k_areg (&context->regs, 2), m68k_dreg (&context->regs, 2), m68k_dreg (&context->regs, 0) + 8); } else if (mode == 12) { @@ -5420,6 +5414,8 @@ static uae_u32 REGPARAM2 mousehack_done (TrapContext *context) return amiga_clipboard_proc_start (); } else if (mode == 14) { amiga_clipboard_task_start (m68k_dreg (&context->regs, 0)); + } else if (mode == 15) { + amiga_clipboard_init (); } return 1; } diff --git a/filesys_bootrom.c b/filesys_bootrom.c index 023dc47a..d365cbd7 100644 --- a/filesys_bootrom.c +++ b/filesys_bootrom.c @@ -2,14 +2,14 @@ db(0x60); db(0x00); db(0x09); db(0x8e); db(0x00); db(0x00); db(0x07); db(0x6c); db(0x00); db(0x00); db(0x00); db(0x30); db(0x00); db(0x00); db(0x01); db(0x8c); db(0x00); db(0x00); db(0x00); db(0x1c); db(0x00); db(0x00); db(0x02); db(0x48); - db(0x00); db(0x00); db(0x0d); db(0x5c); db(0x43); db(0xfa); db(0x14); db(0xd3); + db(0x00); db(0x00); db(0x0d); db(0x5c); db(0x43); db(0xfa); db(0x15); db(0x6f); db(0x4e); db(0xae); db(0xff); db(0xa0); db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x16); db(0x20); db(0x40); db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00); db(0x0b); db(0x8a); - db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x14); db(0xdc); db(0x70); db(0x24); + db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x15); db(0x78); db(0x70); db(0x24); db(0x7a); db(0x01); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); - db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x14); db(0xcc); db(0x70); db(0x00); + db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x15); db(0x68); db(0x70); db(0x00); db(0x7a); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x4a); db(0xad); db(0x01); db(0x0c); db(0x67); db(0x5a); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c); db(0x22); db(0x3c); db(0x00); db(0x01); @@ -28,20 +28,20 @@ db(0x0a); db(0xf8); db(0x4e); db(0x90); db(0x72); db(0x03); db(0x74); db(0xf6); db(0x20); db(0x7c); db(0x00); db(0x20); db(0x00); db(0x00); db(0x90); db(0x88); db(0x65); db(0x0a); db(0x67); db(0x08); db(0x78); db(0x00); db(0x22); db(0x44); - db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x13); db(0xd7); + db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x14); db(0x73); db(0x43); db(0xfa); db(0x00); db(0x54); db(0x70); db(0x0a); db(0x61); db(0x00); db(0x0b); db(0xac); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00); db(0x0a); db(0xc4); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x00); db(0x28); db(0x01); db(0x26); db(0x09); db(0x24); db(0x48); db(0x43); db(0xfa); - db(0x13); db(0xd1); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); + db(0x14); db(0x6d); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0x14); db(0x2c); db(0x40); db(0x22); db(0x0a); db(0xe4); db(0x8b); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x44); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d); - db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x13); db(0x82); + db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x14); db(0x1e); db(0x43); db(0xfa); db(0x00); db(0x16); db(0x70); db(0x0f); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x1f); db(0x40); db(0x61); db(0x00); db(0xff); db(0xa8); db(0x60); db(0xdc); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10); @@ -74,7 +74,7 @@ db(0x70); db(0x01); db(0x4c); db(0xdf); db(0x04); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xc0); db(0x70); db(0x1a); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); - db(0x22); db(0x40); db(0x41); db(0xfa); db(0x12); db(0x5a); db(0x23); db(0x48); + db(0x22); db(0x40); db(0x41); db(0xfa); db(0x12); db(0xf6); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); db(0xff); db(0x28); db(0x23); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xfa); db(0xff); db(0x20); db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c); db(0x02); db(0x14); db(0x00); db(0x08); @@ -90,7 +90,7 @@ db(0x00); db(0x00); db(0x00); db(0x0e); db(0x52); db(0x40); db(0x0c); db(0x40); db(0x00); db(0x8c); db(0x66); db(0xf2); db(0x20); db(0x0a); db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x36); db(0x22); db(0x48); db(0x41); db(0xfa); - db(0x11); db(0xde); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b); + db(0x12); db(0x7a); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b); db(0x01); db(0x98); db(0x41); db(0xe8); db(0x00); db(0x12); db(0x4e); db(0xae); db(0xff); db(0x10); db(0x4c); db(0xdf); db(0x4f); db(0x03); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x7f); db(0x7e); db(0x2c); db(0x78); db(0x00); db(0x04); @@ -127,13 +127,13 @@ db(0x60); db(0xf4); db(0x48); db(0xe7); db(0x40); db(0xe2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x41); db(0xee); db(0x01); db(0x50); db(0x20); db(0x50); db(0x4a); db(0x90); db(0x67); db(0x1a); db(0x22); db(0x68); db(0x00); db(0x0a); - db(0x45); db(0xfa); db(0x11); db(0x30); db(0x10); db(0x19); db(0x12); db(0x1a); + db(0x45); db(0xfa); db(0x11); db(0xcc); db(0x10); db(0x19); db(0x12); db(0x1a); db(0xb0); db(0x01); db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x42); db(0x60); db(0xf2); db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08); - db(0x00); db(0x08); db(0x41); db(0xfa); db(0x11); db(0x06); db(0x25); db(0x48); - db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x10); db(0x82); db(0x25); db(0x48); + db(0x00); db(0x08); db(0x41); db(0xfa); db(0x11); db(0xa2); db(0x25); db(0x48); + db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x11); db(0x1e); db(0x25); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xea); db(0x00); db(0x12); db(0x20); db(0x88); db(0x58); db(0x90); db(0x21); db(0x48); db(0x00); db(0x08); db(0x41); db(0xee); db(0x01); db(0x50); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x0a); @@ -285,16 +285,16 @@ db(0x67); db(0x3a); db(0x20); db(0x52); db(0x24); db(0x40); db(0x22); db(0x4a); db(0x12); db(0xd8); db(0x66); db(0xfc); db(0x13); db(0x7c); db(0x00); db(0x3a); db(0xff); db(0xff); db(0x42); db(0x11); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x43); db(0xfa); db(0x0b); db(0xff); db(0x70); db(0x00); db(0x4e); db(0xae); + db(0x43); db(0xfa); db(0x0c); db(0x9b); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2c); db(0x40); db(0x22); db(0x0a); db(0x4e); db(0xae); db(0xff); db(0x52); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x01); db(0x7e); db(0x06); - db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0b); db(0xfa); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0c); db(0x96); db(0x70); db(0x24); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87); db(0x00); db(0x02); db(0x43); db(0xfa); - db(0x0b); db(0xe8); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); + db(0x0c); db(0x84); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x2c); @@ -307,16 +307,16 @@ db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40); db(0x4b); db(0xe8); db(0x00); db(0x5c); - db(0x43); db(0xfa); db(0x0b); db(0x4f); db(0x70); db(0x00); db(0x4e); db(0xae); + db(0x43); db(0xfa); db(0x0b); db(0xeb); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x24); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xb9); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40); db(0x7c); db(0x00); db(0x26); db(0x86); db(0x27); db(0x46); db(0x00); db(0x04); db(0x27); db(0x46); db(0x00); db(0x08); db(0x27); db(0x4a); db(0x00); db(0xa0); db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); - db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x0a); db(0x86); + db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x0b); db(0x06); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0x84); - db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x0a); db(0x83); + db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x0b); db(0x03); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0x74); db(0x27); db(0x40); db(0x00); db(0xa8); db(0x7a); db(0x00); db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x80); db(0x20); db(0x4d); db(0x4e); db(0xae); @@ -415,7 +415,7 @@ db(0x25); db(0x4b); db(0x00); db(0x36); db(0x22); db(0x4a); db(0x24); db(0x43); db(0x97); db(0xcb); db(0x24); db(0x09); db(0x4e); db(0xae); db(0xfe); db(0xe6); db(0x20); db(0x02); db(0x4c); db(0xdf); db(0x4c); db(0x1c); db(0x4e); db(0x75); - db(0x41); db(0xfa); db(0x07); db(0xa3); db(0x43); db(0xfa); db(0x01); db(0x30); + db(0x41); db(0xfa); db(0x08); db(0x3f); db(0x43); db(0xfa); db(0x01); db(0x30); db(0x70); db(0x13); db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75); db(0x22); db(0x6d); db(0x01); db(0x9e); db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); @@ -465,33 +465,33 @@ db(0x00); db(0x0c); db(0x70); db(0xff); db(0x37); db(0x40); db(0x00); db(0x00); db(0x43); db(0xed); db(0x00); db(0x00); db(0x13); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x05); db(0x00); db(0x09); - db(0x41); db(0xfa); db(0x06); db(0x13); db(0x23); db(0x48); db(0x00); db(0x0a); + db(0x41); db(0xfa); db(0x06); db(0xaf); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x03); db(0x0e); db(0x23); db(0x48); db(0x00); db(0x12); db(0x23); db(0x4d); db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58); db(0x20); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x70); db(0x00); db(0x53); db(0xab); db(0x00); db(0x1c); db(0x6a); db(0x06); db(0x70); db(0x0a); db(0x27); db(0x40); db(0x00); db(0x1c); db(0x4a); db(0xab); db(0x00); db(0x14); db(0x66); db(0x18); db(0x4a); db(0xab); db(0x00); db(0x1c); - db(0x66); db(0xe0); db(0x43); db(0xfa); db(0x06); db(0x31); db(0x70); db(0x00); + db(0x66); db(0xe0); db(0x43); db(0xfa); db(0x06); db(0xcd); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x14); db(0x67); db(0x00); db(0xff); db(0xd0); db(0x4a); db(0xab); db(0x00); db(0x18); db(0x66); db(0x18); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xc2); - db(0x43); db(0xfa); db(0x06); db(0x25); db(0x70); db(0x00); db(0x4e); db(0xae); + db(0x43); db(0xfa); db(0x06); db(0xc1); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00); db(0xff); db(0xb2); db(0x4a); db(0xad); db(0x01); db(0x9a); db(0x66); db(0x38); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xa4); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); - db(0x05); db(0x54); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); + db(0x05); db(0xd4); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x8a); - db(0x41); db(0xfa); db(0x05); db(0x42); db(0x70); db(0x00); db(0x72); db(0x00); + db(0x41); db(0xfa); db(0x05); db(0xc2); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfd); db(0x40); db(0x2b); db(0x40); db(0x01); db(0x9a); db(0x67); db(0x00); db(0x02); db(0x74); db(0x60); db(0x00); db(0xff); db(0x74); db(0x4a); db(0xad); db(0x01); db(0x9e); db(0x66); db(0x48); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0x00); db(0xff); db(0x66); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); - db(0x05); db(0x21); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); + db(0x05); db(0xa1); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x00); - db(0xff); db(0x4a); db(0x41); db(0xfa); db(0x05); db(0x0d); db(0x70); db(0x00); + db(0xff); db(0x4a); db(0x41); db(0xfa); db(0x05); db(0x8d); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0xfe); db(0x2b); db(0x40); db(0x01); db(0x9e); db(0x67); db(0x00); db(0x02); db(0x32); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0x4a); @@ -573,47 +573,63 @@ db(0x33); db(0x7c); db(0x00); db(0x32); db(0x00); db(0x42); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x02); db(0x61); db(0x00); db(0xf9); db(0xe2); db(0x4e); db(0x90); db(0x41); db(0xf9); db(0x00); db(0xdf); db(0xf0); db(0x00); - db(0x70); db(0x00); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x02); db(0x99); + db(0x70); db(0x00); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x03); db(0x35); db(0x43); db(0xfa); db(0x00); db(0x0a); db(0x70); db(0xf6); db(0x61); db(0x00); - db(0xfa); db(0xa4); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x34); db(0x22); db(0x3c); - db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); - db(0x4a); db(0x80); db(0x67); db(0xe6); db(0x2a); db(0x40); db(0x2b); db(0x4e); - db(0x00); db(0x14); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); - db(0x2b); db(0x40); db(0x00); db(0x08); db(0x30); db(0x3c); db(0xff); db(0x38); - db(0x72); db(0x0e); db(0x61); db(0x00); db(0xf9); db(0x94); db(0x20); db(0x0d); - db(0x4e); db(0x90); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d); - db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x4e); db(0xae); db(0xff); db(0x7c); - db(0x41); db(0xee); db(0x01); db(0x7a); db(0x43); db(0xfa); db(0x02); db(0xa3); - db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); - db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0xdc); db(0x42); db(0xad); - db(0x00); db(0x08); db(0x41); db(0xfa); db(0x02); db(0x2b); db(0x43); db(0xfa); - db(0x00); db(0x18); db(0x70); db(0xf6); db(0x22); db(0x3c); db(0x00); db(0x00); - db(0x0f); db(0xa0); db(0x61); db(0x00); db(0xee); db(0x9a); db(0x70); db(0x00); - db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10); - db(0x00); db(0x00); db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38); - db(0x72); db(0x0d); db(0x61); db(0x00); db(0xf9); db(0x3c); db(0x4e); db(0x90); - db(0x4a); db(0x80); db(0x67); db(0x00); db(0xff); db(0x6e); db(0x2a); db(0x40); - db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x93); db(0xc9); db(0x4e); db(0xae); - db(0xfe); db(0xda); db(0x2b); db(0x40); db(0x00); db(0x08); db(0x61); db(0x00); - db(0xf9); db(0x3c); db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34); - db(0x61); db(0x00); db(0xf9); db(0x80); db(0x28); db(0x40); db(0x4a); db(0x80); - db(0x67); db(0x00); db(0xff); db(0x48); db(0x70); db(0x00); db(0x08); db(0xc0); + db(0xfa); db(0xa4); db(0x4e); db(0x75); db(0x9b); db(0xcd); db(0x2c); db(0x78); + db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x38); + db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); + db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x5e); db(0x2a); db(0x40); + db(0x2b); db(0x4e); db(0x00); db(0x14); db(0x93); db(0xc9); db(0x4e); db(0xae); + db(0xfe); db(0xda); db(0x2b); db(0x40); db(0x00); db(0x08); db(0x30); db(0x3c); + db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00); db(0xf9); db(0x92); + db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x70); db(0x00); db(0x08); db(0xc0); + db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x4e); db(0xae); + db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x7a); db(0x43); db(0xfa); + db(0x03); db(0x3d); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); + db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0xdc); + db(0x42); db(0xad); db(0x00); db(0x08); db(0x41); db(0xfa); db(0x02); db(0xc5); + db(0x43); db(0xfa); db(0x00); db(0x42); db(0x70); db(0xf6); db(0x22); db(0x3c); + db(0x00); db(0x00); db(0x0b); db(0xb8); db(0x61); db(0x00); db(0xee); db(0x98); + db(0x70); db(0x00); db(0x4e); db(0x75); db(0x30); db(0x3c); db(0xff); db(0x38); + db(0x72); db(0x0a); db(0x61); db(0x00); db(0xf9); db(0x44); db(0x4e); db(0x90); + db(0x20); db(0x0d); db(0x67); db(0x18); db(0x2c); db(0x6d); db(0x00); db(0x14); + db(0x20); db(0x2d); db(0x00); db(0x18); db(0x67); db(0x06); db(0x22); db(0x40); + db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4d); db(0x70); db(0x38); + db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00); db(0x4e); db(0x75); + db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00); + db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0d); db(0x61); db(0x00); + db(0xf9); db(0x10); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00); + db(0xff); db(0xbc); db(0x2a); db(0x40); db(0x2c); db(0x6d); db(0x00); db(0x14); + db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x2b); db(0x40); + db(0x00); db(0x08); db(0x43); db(0xfa); db(0x02); db(0xb9); db(0x70); db(0x00); + db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2b); db(0x40); db(0x00); db(0x18); + db(0x4a); db(0x80); db(0x67); db(0x00); db(0xff); db(0x98); db(0x2c); db(0x40); + db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); + db(0x02); db(0x0e); db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); + db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0xea); db(0x22); db(0x00); + db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x72); db(0x32); db(0x4e); db(0xae); + db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x01); db(0xf8); db(0x22); db(0x08); + db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); + db(0x67); db(0x00); db(0xff); db(0x62); db(0x22); db(0x00); db(0x4e); db(0xae); + db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x61); db(0x00); + db(0xf8); db(0xbc); db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34); + db(0x61); db(0x00); db(0xf9); db(0x00); db(0x28); db(0x40); db(0x4a); db(0x80); + db(0x67); db(0x00); db(0xff); db(0x42); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x72); db(0x00); - db(0x20); db(0x2d); db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x01); db(0xb0); - db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x24); db(0x00); - db(0x66); db(0xe2); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a); - db(0x61); db(0x00); db(0xf8); db(0xe6); db(0x4e); db(0x90); db(0x41); db(0xed); - db(0x00); db(0x18); db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); + db(0x20); db(0x2d); db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x01); db(0xcc); + db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x4a); db(0x80); + db(0x66); db(0xe2); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0f); + db(0x61); db(0x00); db(0xf8); db(0x66); db(0x4e); db(0x90); db(0x41); db(0xed); + db(0x00); db(0x1c); db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x39); db(0x7c); db(0x00); db(0x0c); - db(0x00); db(0x1c); db(0x2b); db(0x4d); db(0x00); db(0x28); db(0x41); db(0xfa); - db(0x01); db(0x38); db(0x2b); db(0x48); db(0x00); db(0x20); db(0x22); db(0x4c); + db(0x00); db(0x1c); db(0x2b); db(0x4d); db(0x00); db(0x2c); db(0x41); db(0xfa); + db(0x01); db(0x38); db(0x2b); db(0x48); db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x20); db(0x2d); db(0x00); db(0x00); db(0x67); db(0x00); db(0x00); db(0x72); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2b); db(0x40); db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0c); db(0x61); db(0x00); - db(0xf8); db(0x98); db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x04); + db(0xf8); db(0x18); db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x04); db(0x67); db(0x3a); db(0x39); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x1c); db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x20); db(0x29); db(0x6d); db(0x00); db(0x00); db(0x00); db(0x24); db(0x29); db(0x6d); @@ -625,28 +641,28 @@ db(0x42); db(0xad); db(0x00); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x04); db(0x67); db(0x00); db(0xff); db(0x8a); db(0x22); db(0x41); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x80); db(0x39); db(0x7c); - db(0x00); db(0x02); db(0x00); db(0x1c); db(0x41); db(0xed); db(0x00); db(0x2c); + db(0x00); db(0x02); db(0x00); db(0x1c); db(0x41); db(0xed); db(0x00); db(0x30); db(0x42); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x08); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x0c); db(0xad); db(0x46); db(0x4f); db(0x52); db(0x4d); - db(0x00); db(0x2c); db(0x66); db(0x52); db(0x20); db(0x2d); db(0x00); db(0x30); + db(0x00); db(0x30); db(0x66); db(0x52); db(0x20); db(0x2d); db(0x00); db(0x34); db(0x67); db(0x4c); db(0x6b); db(0x4a); db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10); db(0x50); db(0x80); db(0x24); db(0x00); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x36); - db(0x24); db(0x40); db(0x20); db(0x4a); db(0x20); db(0xed); db(0x00); db(0x2c); - db(0x20); db(0xed); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28); + db(0x24); db(0x40); db(0x20); db(0x4a); db(0x20); db(0xed); db(0x00); db(0x30); + db(0x20); db(0xed); db(0x00); db(0x34); db(0x29); db(0x48); db(0x00); db(0x28); db(0x20); db(0x02); db(0x51); db(0x80); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c); - db(0xff); db(0x38); db(0x72); db(0x0b); db(0x61); db(0x00); db(0xf7); db(0xc2); + db(0xff); db(0x38); db(0x72); db(0x0b); db(0x61); db(0x00); db(0xf7); db(0x42); db(0x20); db(0x2c); db(0x00); db(0x20); db(0x4e); db(0x90); db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4a); db(0xac); db(0x00); db(0x20); db(0x67); db(0x00); db(0xfe); db(0xf0); db(0x41); db(0xed); - db(0x00); db(0x2c); db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); + db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x42); db(0xac); db(0x00); db(0x20); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x60); db(0xde); - db(0x41); db(0xe8); db(0xff); db(0xe8); db(0x20); db(0x29); db(0x00); db(0x08); + db(0x41); db(0xe8); db(0xff); db(0xe4); db(0x20); db(0x29); db(0x00); db(0x08); db(0xb0); db(0xa8); db(0x00); db(0x10); db(0x67); db(0x1a); db(0x21); db(0x40); db(0x00); db(0x10); db(0x2f); db(0x0e); db(0x2c); db(0x68); db(0x00); db(0x14); db(0x22); db(0x68); db(0x00); db(0x08); db(0x70); db(0x00); db(0x08); db(0xc0); @@ -654,31 +670,34 @@ db(0x70); db(0x00); db(0x4e); db(0x75); db(0x69); db(0x6e); db(0x70); db(0x75); db(0x74); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x74); db(0x69); db(0x6d); db(0x65); db(0x72); db(0x2e); db(0x64); - db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x63); db(0x6c); - db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e); - db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x55); - db(0x41); db(0x45); db(0x20); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); - db(0x6f); db(0x61); db(0x72); db(0x64); db(0x20); db(0x73); db(0x68); db(0x61); - db(0x72); db(0x69); db(0x6e); db(0x67); db(0x00); db(0x55); db(0x41); db(0x45); - db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20); db(0x64); - db(0x72); db(0x69); db(0x76); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); - db(0x45); db(0x20); db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73); db(0x79); - db(0x73); db(0x74); db(0x65); db(0x6d); db(0x00); db(0x55); db(0x41); db(0x45); - db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); - db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x00); - db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); - db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); - db(0x20); db(0x70); db(0x72); db(0x6f); db(0x63); db(0x65); db(0x73); db(0x73); - db(0x00); db(0x64); db(0x6f); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); - db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x69); db(0x6e); db(0x74); - db(0x75); db(0x69); db(0x74); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); - db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x67); - db(0x72); db(0x61); db(0x70); db(0x68); db(0x69); db(0x63); db(0x73); db(0x2e); - db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); - db(0x65); db(0x78); db(0x70); db(0x61); db(0x6e); db(0x73); db(0x69); db(0x6f); - db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); - db(0x79); db(0x00); db(0x46); db(0x69); db(0x6c); db(0x65); db(0x53); db(0x79); - db(0x73); db(0x74); db(0x65); db(0x6d); db(0x2e); db(0x72); db(0x65); db(0x73); - db(0x6f); db(0x75); db(0x72); db(0x63); db(0x65); db(0x00); db(0x00); db(0x00); - db(0x00); db(0x00); db(0x03); db(0xf2); + db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x44); db(0x45); + db(0x56); db(0x53); db(0x3a); db(0x00); db(0x44); db(0x45); db(0x56); db(0x53); + db(0x3a); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); + db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); + db(0x65); db(0x00); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); + db(0x61); db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); + db(0x63); db(0x65); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x63); + db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); + db(0x20); db(0x73); db(0x68); db(0x61); db(0x72); db(0x69); db(0x6e); db(0x67); + db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75); + db(0x73); db(0x65); db(0x20); db(0x64); db(0x72); db(0x69); db(0x76); db(0x65); + db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x69); + db(0x6c); db(0x65); db(0x73); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); + db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); + db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); + db(0x74); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); + db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); + db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x20); db(0x70); db(0x72); db(0x6f); + db(0x63); db(0x65); db(0x73); db(0x73); db(0x00); db(0x64); db(0x6f); db(0x73); + db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); + db(0x00); db(0x69); db(0x6e); db(0x74); db(0x75); db(0x69); db(0x74); db(0x69); + db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); + db(0x72); db(0x79); db(0x00); db(0x67); db(0x72); db(0x61); db(0x70); db(0x68); + db(0x69); db(0x63); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); + db(0x61); db(0x72); db(0x79); db(0x00); db(0x65); db(0x78); db(0x70); db(0x61); + db(0x6e); db(0x73); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); + db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x46); db(0x69); + db(0x6c); db(0x65); db(0x53); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); + db(0x2e); db(0x72); db(0x65); db(0x73); db(0x6f); db(0x75); db(0x72); db(0x63); + db(0x65); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x03); db(0xf2); diff --git a/gayle.c b/gayle.c index fb0d2305..1be9ba5a 100644 --- a/gayle.c +++ b/gayle.c @@ -1735,7 +1735,7 @@ void gayle_map_pcmcia (void) if (currprefs.chipmem_size <= 4 * 1024 * 1024 && currprefs.fastmem_size <= 4 * 1024 * 1024) map_banks (&dummy_bank, PCMCIA_COMMON_START >> 16, PCMCIA_COMMON_SIZE >> 16, 0); } else { - map_banks (&gayle_attr_bank, 0xA0, 8, 0); + map_banks (&gayle_attr_bank, 0xa0, 8, 0); if (currprefs.chipmem_size <= 4 * 1024 * 1024 && currprefs.fastmem_size <= 4 * 1024 * 1024) map_banks (&gayle_common_bank, PCMCIA_COMMON_START >> 16, PCMCIA_COMMON_SIZE >> 16, 0); } diff --git a/gencpu.c b/gencpu.c index 68bf7238..7ed2e889 100644 --- a/gencpu.c +++ b/gencpu.c @@ -2920,29 +2920,15 @@ static void gen_opcode (unsigned long int opcode) break; case i_CINVL: - printf ("\tif (opcode&0x80)\n" - "\t\tflush_icache(31);\n"); - break; case i_CINVP: - printf ("\tif (opcode&0x80)\n" - "\t\tflush_icache(32);\n"); - break; case i_CINVA: - printf ("\tif (opcode&0x80)\n" - "\t\tflush_icache(33);\n"); - break; case i_CPUSHL: - printf ("\tif (opcode&0x80)\n" - "\t\tflush_icache(41);\n"); - break; case i_CPUSHP: - printf ("\tif (opcode&0x80)\n" - "\t\tflush_icache(42);\n"); - break; case i_CPUSHA: - printf ("\tif (opcode&0x80)\n" - "\t\tflush_icache(43);\n"); + printf ("\tif (opcode & 0x80)\n"); + printf ("\t\tflush_icache(m68k_areg (regs, opcode & 3), (opcode >> 6) & 3);\n"); break; + case i_MOVE16: if ((opcode & 0xfff8) == 0xf620) { /* MOVE16 (Ax)+,(Ay)+ */ diff --git a/include/clipboard.h b/include/clipboard.h index db94cef4..639f5eda 100644 --- a/include/clipboard.h +++ b/include/clipboard.h @@ -1,6 +1,7 @@ extern void amiga_clipboard_want_data (void); extern void amiga_clipboard_got_data (uaecptr data, uae_u32 size, uae_u32 actual); +extern void amiga_clipboard_die (void); extern void amiga_clipboard_init (void); extern uaecptr amiga_clipboard_proc_start (void); extern void amiga_clipboard_task_start (uaecptr); diff --git a/include/native2amiga_api.h b/include/native2amiga_api.h index 1a243ba2..ffa8ba12 100644 --- a/include/native2amiga_api.h +++ b/include/native2amiga_api.h @@ -11,3 +11,4 @@ void uae_Signal(uaecptr task, uae_u32 mask); void uae_NotificationHack(uaecptr, uaecptr); #endif void uae_NewList(uaecptr list); +int native2amiga_isfree (void); \ No newline at end of file diff --git a/include/newcpu.h b/include/newcpu.h index 2f035180..ce42ad1c 100644 --- a/include/newcpu.h +++ b/include/newcpu.h @@ -348,7 +348,7 @@ extern cpuop_func *cpufunctbl[65536] ASM_SYM_FOR_FUNC ("cpufunctbl"); void newcpu_showstate(void); #ifdef JIT -extern void flush_icache(int n); +extern void flush_icache(uaecptr, int n); extern void compemu_reset(void); extern int check_prefs_changed_comp (void); #else diff --git a/include/uae.h b/include/uae.h index 84f13495..8fa460a3 100644 --- a/include/uae.h +++ b/include/uae.h @@ -47,5 +47,6 @@ extern char *colormodes[]; extern void fetch_saveimagepath (char*, int, int); extern void fetch_configurationpath (char *out, int size); extern void fetch_screenshotpath (char *out, int size); +extern void fetch_ripperpath (char *out, int size); extern void fetch_datapath (char *out, int size); extern int uaerand(void); \ No newline at end of file diff --git a/inputdevice.c b/inputdevice.c index c1508ad4..fcfd888f 100644 --- a/inputdevice.c +++ b/inputdevice.c @@ -1196,11 +1196,6 @@ static void inputdevice_tablet_abs_v36 (int x, int y) diffx = diffy = 0; maxx = maxy = 0; - { - //uaecptr gb = get_intuitionbase (); - //write_log ("%d %d\n", get_word (gb + 70), get_word (gb + 68)); - } - if (picasso_on) { maxx = picasso96_state.Width; maxy = picasso96_state.Height; @@ -1217,6 +1212,40 @@ static void inputdevice_tablet_abs_v36 (int x, int y) } get_custom_mouse_limits (&maxx, &maxy, &diffx, &diffy, 0); } +#if 0 + { + uaecptr gb = get_intuitionbase (); + maxy = get_word (gb + 1344 + 2); + maxx = get_word (gb + 1348 + 2); + write_log ("%d %d\n", maxx, maxy); + } +#endif +#if 1 + { + uaecptr gb = get_gfxbase (); + uaecptr view = get_long (gb + 34); + if (view) { + uaecptr vp = get_long (view); + if (vp) { + int w, h, dw, dh; + w = get_word (vp + 24); + h = get_word (vp + 26) * 2; + dw = get_word (vp + 28); + dh = get_word (vp + 30); + //write_log ("%d %d %d %d\n", w, h, dw, dh); + if (w < maxx) + maxx = w; + if (h < maxy) + maxy = h; + x -= dw; + y -= dh; + } + } + //write_log ("* %d %d\n", get_word (gb + 218), get_word (gb + 216)); + } + //write_log ("%d %d\n", maxx, maxy); +#endif + maxx = maxx * 1000 / fmx; maxy = maxy * 1000 / fmy; diff --git a/jit/compemu.h b/jit/compemu.h index 4cb23f93..74083f03 100644 --- a/jit/compemu.h +++ b/jit/compemu.h @@ -95,7 +95,7 @@ extern void set_cache_state(int enabled); extern int get_cache_state(void); extern uae_u32 get_jitted_size(void); #ifdef JIT -extern void flush_icache(int n); +extern void flush_icache(uaecptr ptr, int n); #endif extern void alloc_cache(void); extern void compile_block(cpu_history* pc_hist, int blocklen, int totcyles); diff --git a/jit/compemu_support.c b/jit/compemu_support.c index 86848d45..73277d87 100644 --- a/jit/compemu_support.c +++ b/jit/compemu_support.c @@ -73,11 +73,11 @@ extern unsigned long foink; waste half the entries in this array UPDATE: We now use those entries to store the start of the linked lists that we maintain for each hash result. */ -cacheline cache_tags[TAGSIZE]; -int letit=0; -blockinfo* hold_bi[MAX_HOLD_BI]; -blockinfo* active; -blockinfo* dormant; +static cacheline cache_tags[TAGSIZE]; +static int letit=0; +static blockinfo* hold_bi[MAX_HOLD_BI]; +static blockinfo* active; +static blockinfo* dormant; op_properties prop[65536]; @@ -100,13 +100,13 @@ extern const struct cputbl op_smalltbl_4_nf[]; extern const struct cputbl op_smalltbl_5_nf[]; #endif -static void flush_icache_hard(int n); +static void flush_icache_hard(uae_u32 ptr, int n); -bigstate live; -smallstate empty_ss; -smallstate default_ss; +static bigstate live; +static smallstate empty_ss; +static smallstate default_ss; static int optlev; static int writereg(int r, int size); @@ -5347,7 +5347,7 @@ STATIC_INLINE unsigned int cft_map (unsigned int f) void set_cache_state(int enabled) { if (enabled!=letit) - flush_icache_hard(77); + flush_icache_hard(0, 3); letit=enabled; } @@ -5366,7 +5366,7 @@ uae_u32 get_jitted_size(void) void alloc_cache(void) { if (compiled_code) { - flush_icache_hard(6); + flush_icache_hard(0, 3); cache_free(compiled_code); } if (veccode == NULL) @@ -5810,7 +5810,7 @@ void build_comp(void) } -static void flush_icache_hard(int n) +static void flush_icache_hard(uae_u32 ptr, int n) { blockinfo* bi; @@ -5844,13 +5844,13 @@ static void flush_icache_hard(int n) we simply mark everything as "needs to be checked". */ -void flush_icache(int n) +void flush_icache(uaecptr ptr, int n) { blockinfo* bi; blockinfo* bi2; if (currprefs.comp_hardflush) { - flush_icache_hard(n); + flush_icache_hard(ptr, n); return; } soft_flush_count++; @@ -5866,8 +5866,7 @@ void flush_icache(int n) cache_tags[cl].handler=popall_execute_normal; bi->handler_to_use=popall_execute_normal; set_dhtu(bi,bi->direct_pen); - } - else { + } else { if (bi==cache_tags[cl+1].bi) cache_tags[cl].handler=popall_check_checksum; bi->handler_to_use=popall_check_checksum; @@ -5914,7 +5913,7 @@ void compile_block(cpu_history* pc_hist, int blocklen, int totcycles) compile_count++; if (current_compile_p>=max_compile_start) - flush_icache_hard(7); + flush_icache_hard(0, 3); alloc_blockinfos(); @@ -6265,7 +6264,7 @@ void compile_block(cpu_history* pc_hist, int blocklen, int totcycles) /* We will flush soon, anyway, so let's do it now */ if (current_compile_p>=max_compile_start) - flush_icache_hard(7); + flush_icache_hard(0, 3); do_extra_cycles(totcycles); /* for the compilation time */ } diff --git a/memory.c b/memory.c index 2d8d76ea..d2bc8c3f 100644 --- a/memory.c +++ b/memory.c @@ -3749,7 +3749,7 @@ void map_banks (addrbank *bank, int start, int size, int realsize) //write_log ("MAP_BANK %04X0000 %d %s\n", start, size, bank->name); old = debug_bankchange (-1); - flush_icache (1); /* Sure don't want to keep any old mappings around! */ + flush_icache (0, 3); /* Sure don't want to keep any old mappings around! */ #ifdef NATMEM_OFFSET delete_shmmaps (start << 16, size << 16); #endif diff --git a/moduleripper.c b/moduleripper.c index 3ca727f4..141a6b8a 100644 --- a/moduleripper.c +++ b/moduleripper.c @@ -15,6 +15,7 @@ #include "memory.h" #include "moduleripper.h" #include "gui.h" +#include "uae.h" static int got, canceled; @@ -27,7 +28,7 @@ static void mc (uae_u8 *d, uaecptr s, int size) } #ifdef _WIN32 -static LONG WINAPI ExceptionFilter( struct _EXCEPTION_POINTERS * pExceptionPointers, DWORD ec) +static LONG WINAPI ExceptionFilter (struct _EXCEPTION_POINTERS * pExceptionPointers, DWORD ec) { return EXCEPTION_EXECUTE_HANDLER; } @@ -70,7 +71,7 @@ void moduleripper (void) #endif prowizard_search (buf, size); #ifdef _WIN32 - } __except(ExceptionFilter(GetExceptionInformation(), GetExceptionCode())) { + } __except(ExceptionFilter (GetExceptionInformation (), GetExceptionCode ())) { write_log ("prowizard scan crashed\n"); } #endif @@ -83,7 +84,10 @@ void moduleripper (void) FILE *moduleripper_fopen (const char *name, const char *mode) { - return fopen (name, mode); + char tmp[MAX_DPATH], tmp2[MAX_DPATH]; + fetch_ripperpath (tmp, sizeof tmp); + sprintf (tmp2, "%s%s", tmp, name); + return fopen (tmp2, mode); } FILE *moduleripper2_fopen (const char *name, const char *mode, const char *id, int addr, int size) @@ -101,7 +105,7 @@ FILE *moduleripper2_fopen (const char *name, const char *mode, const char *id, i canceled = 1; if (ret < 0 || ret != 1) return NULL; - return fopen (name, mode); + return moduleripper_fopen (name, mode); } #else diff --git a/native2amiga.c b/native2amiga.c index 119191d7..42cc3f31 100644 --- a/native2amiga.c +++ b/native2amiga.c @@ -41,6 +41,11 @@ void native2amiga_startup (void) { } +int native2amiga_isfree (void) +{ + return comm_pipe_has_data (&native2amiga_pending) == 0; +} + #ifdef SUPPORT_THREADS void uae_Cause (uaecptr interrupt) diff --git a/newcpu.c b/newcpu.c index c85cbee3..8b72f16a 100644 --- a/newcpu.c +++ b/newcpu.c @@ -134,7 +134,7 @@ static void set_cpu_caches (void) set_cache_state (regs.cacr & 1); if (regs.cacr & 0x08) { regs.cacr &= ~0x08; - flush_icache (1); + flush_icache (0, 3); } } else { set_cache_state ((regs.cacr & 0x8000) ? 1 : 0); @@ -1262,7 +1262,7 @@ int m68k_move2c (int regno, uae_u32 *regp) if (((opcr ^ regs.pcr) & 2) == 2) { write_log ("68060 FPU state: %s\n", regs.pcr & 2 ? "disabled" : "enabled"); /* flush possible already translated FPU instructions */ - flush_icache (2); + flush_icache (0, 3); } } break; diff --git a/od-win32/clipboard_win32.c b/od-win32/clipboard_win32.c index 27e59a15..3866f1ee 100644 --- a/od-win32/clipboard_win32.c +++ b/od-win32/clipboard_win32.c @@ -10,9 +10,12 @@ #include "clipboard_win32.h" #include "clipboard.h" +#include "threaddep/thread.h" #include "memory.h" #include "native2amiga_api.h" +int clipboard_debug; + static HWND chwnd; static HDC hdc; static uaecptr clipboard_data; @@ -25,10 +28,39 @@ static int clipboard_change; static void *clipboard_delayed_data; static int clipboard_delayed_size; +static void debugwrite (const char *name, uae_u8 *p, int size) +{ + FILE *f; + int cnt; + + if (!p || !size) + return; + cnt = 0; + for (;;) { + char tmp[MAX_DPATH]; + sprintf (tmp, "%s.%03d.dat", name, cnt); + f = fopen (tmp, "rb"); + if (f) { + fclose (f); + cnt++; + continue; + } + f = fopen (tmp, "wb"); + if (f) { + fwrite (p, size, 1, f); + fclose (f); + } + return; + } +} + static void to_amiga_start (void) { if (!clipboard_data) return; + if (clipboard_debug) { + debugwrite ("clipboard_p2a", to_amiga, to_amiga_size); + } put_long (clipboard_data, to_amiga_size); uae_Signal (get_long (clipboard_data + 8), 1 << 13); } @@ -50,6 +82,17 @@ static char *pctoamiga (const char *txt) } return txt2; } + +static int parsecsi (const char *txt, int off, int len) +{ + while (off < len) { + if (txt[off] >= 0x40) + break; + off++; + } + return off; +} + static char *amigatopc (const char *txt) { int i, j, cnt; @@ -68,7 +111,7 @@ static char *amigatopc (const char *txt) } if (pc) return my_strdup (txt); - txt2 = xmalloc (len + cnt); + txt2 = xcalloc (len + cnt, 1); j = 0; for (i = 0; i < len; i++) { char c = txt[i]; @@ -76,6 +119,13 @@ static char *amigatopc (const char *txt) continue; if (c == 10) txt2[j++] = 13; + if (c == 0x9b) { + i = parsecsi (txt, i + 1, len); + continue; + } else if (c == 0x1b && i + 1 < len && txt[i + 1] == '[') { + i = parsecsi (txt, i + 2, len); + continue; + } txt2[j++] = c; } return txt2; @@ -118,6 +168,16 @@ static void from_iff_text (uaecptr ftxt, uae_u32 len) int txtsize = 0; char *pctxt; +#if 0 + { + FILE *f = fopen("c:\\d\\clipboard_a2p.000.dat", "rb"); + if (f) { + addr = xmalloc (10000); + len = fread (addr, 1, 10000, f); + fclose (f); + } + } +#endif addr = get_real_address (ftxt); eaddr = addr + len; if (memcmp ("FTXT", addr + 8, 4)) @@ -130,13 +190,15 @@ static void from_iff_text (uaecptr ftxt, uae_u32 len) if (!memcmp (addr, "CHRS", 4) && csize) { int prevsize = txtsize; txtsize += csize; - if (!prevsize) - txtsize++; // space for terminating null - txt = realloc (txt, txtsize); + txt = realloc (txt, txtsize + 1); memcpy (txt + prevsize, addr + 8, csize); - txt[txtsize - 1] = 0; + txt[txtsize] = 0; } addr += 8 + csize + (csize & 1); + if (csize >= 1 && addr[-2] == 0x0d && addr[-1] == 0x0a && addr[0] == 0) + addr++; + else if (csize >= 1 && addr[-1] == 0x0d && addr[0] == 0x0a) + addr++; } pctxt = amigatopc (txt); clipboard_put_text (pctxt); @@ -317,13 +379,7 @@ static void to_iff_ilbm (HBITMAP hbmp) to_amiga_size = 8 + tsize + (tsize & 1); to_amiga = iff; -#if 0 - { - FILE *f = fopen("d:\\amiga\\amiga\\1.iff", "wb"); - fwrite (to_amiga, to_amiga_size, 1, f); - fclose (f); - } -#endif + to_amiga_start (); xfree (bmp.bmBits); @@ -410,10 +466,20 @@ static void from_iff_ilbm (uaecptr ilbm, uae_u32 len) camg = 0; } else if (!memcmp (chunk, "CMAP" ,4)) { if (planes <= 8) { + int zero4 = 1; for (i = 0; i < (1 << planes) && addr < ceaddr; i++, addr += 3) { rgbx[i].rgbRed = addr[0]; rgbx[i].rgbGreen = addr[1]; rgbx[i].rgbBlue = addr[2]; + if ((addr[0] & 0x0f) || (addr[1] & 0x0f) || (addr[2] & 0x0f)) + zero4 = 0; + } + if (zero4) { + for (i = 0; i < (1 << planes); i++) { + rgbx[i].rgbRed |= rgbx[i].rgbRed >> 4; + rgbx[i].rgbGreen |= rgbx[i].rgbGreen >> 4; + rgbx[i].rgbBlue |= rgbx[i].rgbBlue >> 4; + } } } } else if (!memcmp (chunk, "BODY" ,4) && bmhd) { @@ -562,7 +628,8 @@ static void from_iff_ilbm (uaecptr ilbm, uae_u32 len) } if (body) { hbm = CreateDIBitmap (hdc, &bmih->bmiHeader, CBM_INIT, bmptr, bmih, DIB_RGB_COLORS); - clipboard_put_bmp (hbm); + if (hbm) + clipboard_put_bmp (hbm); } xfree (bmih); xfree (bmptr); @@ -577,6 +644,8 @@ static void from_iff (uaecptr data, uae_u32 len) if (!valid_address (data, len)) return; addr = get_real_address (data); + if (clipboard_debug) + debugwrite ("clipboard_a2p", addr, len); if (memcmp ("FORM", addr, 4)) return; if (!memcmp ("FTXT", addr + 8, 4)) @@ -704,10 +773,16 @@ static int clipboard_put_bmp (HBITMAP hbmp) return 1; } +void amiga_clipboard_die (void) +{ + signaling = 0; + write_log ("clipboard not initialized\n"); +} + void amiga_clipboard_init (void) { signaling = 0; - write_log ("clipboard active\n"); + write_log ("clipboard initialized\n"); } void amiga_clipboard_task_start (uaecptr data) @@ -733,15 +808,16 @@ void amiga_clipboard_got_data (uaecptr data, uae_u32 size, uae_u32 actual) void amiga_clipboard_want_data (void) { - uae_u32 addr; + uae_u32 addr, size; addr = get_long (clipboard_data + 4); - if (addr) { + size = get_long (clipboard_data); + if (addr && size) { uae_u8 *raddr = get_real_address (addr); - memcpy (raddr, to_amiga, to_amiga_size); + memcpy (raddr, to_amiga, size); } xfree (to_amiga); - write_log ("clipboard: ->amiga, %08x %d bytes\n", addr, to_amiga_size); + write_log ("clipboard: ->amiga, %08x %d bytes\n", addr, size); to_amiga = NULL; to_amiga_size = 0; } @@ -774,7 +850,7 @@ void clipboard_vsync (void) if (vdelay > 0) return; task = get_long (clipboard_data + 8); - if (task) + if (task && native2amiga_isfree ()) uae_Signal (task, 1 << 13); vdelay = 50; } diff --git a/od-win32/dxwrap.c b/od-win32/dxwrap.c index 8b6efe4e..084b5f01 100644 --- a/od-win32/dxwrap.c +++ b/od-win32/dxwrap.c @@ -686,15 +686,15 @@ DWORD DirectDraw_GetBytesPerPixel (void) HRESULT DirectDraw_GetDC (HDC *hdc) { - HRESULT result; - result = IDirectDrawSurface7_GetDC (getlocksurface (), hdc); - return result; + if (getlocksurface () == NULL) + return E_FAIL; + return IDirectDrawSurface7_GetDC (getlocksurface (), hdc); } HRESULT DirectDraw_ReleaseDC (HDC hdc) { - HRESULT result; - result = IDirectDrawSurface7_ReleaseDC (getlocksurface (), hdc); - return result; + if (getlocksurface () == NULL) + return E_FAIL; + return IDirectDrawSurface7_ReleaseDC (getlocksurface (), hdc); } int DirectDraw_GetVerticalBlankStatus (void) { diff --git a/od-win32/fsdb_win32.c b/od-win32/fsdb_win32.c index 15f362b1..59db874d 100644 --- a/od-win32/fsdb_win32.c +++ b/od-win32/fsdb_win32.c @@ -25,6 +25,8 @@ #define TRACE(x) #endif +static int fsdb_debug = 0; + /* these are deadly (but I think allowed on the Amiga): */ #define NUM_EVILCHARS 7 static char evilchars[NUM_EVILCHARS] = { '\\', '*', '?', '\"', '<', '>', '|' }; @@ -37,7 +39,7 @@ static char evilchars[NUM_EVILCHARS] = { '\\', '*', '?', '\"', '<', '>', '|' }; * Offset 0, 1 byte, valid * Offset 1, 4 bytes, mode * Offset 5, 257 bytes, aname - * Offset 263, 257 bytes, nname + * Offset 262, 257 bytes, nname * Offset 519, 81 bytes, comment * Offset 600, 4 bytes, Windows-side mode */ @@ -67,16 +69,26 @@ static int read_uaefsdb (const char *dir, const char *name, uae_u8 *fsdb) HANDLE h; DWORD read; + read = 0; p = make_uaefsdbpath (dir, name); h = CreateFile (p, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (fsdb_debug) + write_log ("read_uaefsdb '%s' = %x\n", p, h); xfree (p); if (h != INVALID_HANDLE_VALUE) { ReadFile (h, fsdb, UAEFSDB_LEN, &read, NULL); CloseHandle (h); - if (read == UAEFSDB_LEN) + if (read == UAEFSDB_LEN) { + if (fsdb_debug) { + write_log ("->ok\n"); + write_log ("v=%02x flags=%08x an='%s' nn='%s' c='%s'\n", fsdb[0], ((uae_u32*)(fsdb+1))[0], fsdb + 5, fsdb + 262, fsdb + 519); + } return 1; + } } + if (fsdb_debug) + write_log ("->fail %d, %d\n", read, GetLastError ()); memset (fsdb, 0, UAEFSDB_LEN); return 0; } @@ -88,7 +100,8 @@ static int delete_uaefsdb (const char *dir) p = make_uaefsdbpath (dir, NULL); ret = DeleteFile(p); - //write_log ("delete FSDB stream '%s' = %d\n", p, ret); + if (fsdb_debug) + write_log ("delete_uaefsdb '%s' = %d\n", p, ret); xfree (p); return ret; } @@ -97,7 +110,7 @@ static int write_uaefsdb (const char *dir, uae_u8 *fsdb) { char *p; HANDLE h; - DWORD written, dirflag, dirattr; + DWORD written = 0, dirflag, dirattr; DWORD attr = INVALID_FILE_ATTRIBUTES; FILETIME t1, t2, t3; int time_valid = FALSE; @@ -117,6 +130,10 @@ static int write_uaefsdb (const char *dir, uae_u8 *fsdb) } h = CreateFile (p, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (fsdb_debug) { + write_log ("write_uaefsdb '%s' = %x\n", p, h); + write_log ("v=%02x flags=%08x an='%s' nn='%s' c='%s'\n", fsdb[0], ((uae_u32*)(fsdb+1))[0], fsdb + 5, fsdb + 262, fsdb + 519); + } if (h == INVALID_HANDLE_VALUE && GetLastError () == ERROR_ACCESS_DENIED) { attr = GetFileAttributes (p); if (attr != INVALID_FILE_ATTRIBUTES) { @@ -124,6 +141,8 @@ static int write_uaefsdb (const char *dir, uae_u8 *fsdb) SetFileAttributes (p, attr & ~(FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN)); h = CreateFile (p, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (fsdb_debug) + write_log ("write_uaefsdb (2) '%s' = %x\n", p, h); } } } @@ -131,10 +150,15 @@ static int write_uaefsdb (const char *dir, uae_u8 *fsdb) WriteFile (h, fsdb, UAEFSDB_LEN, &written, NULL); CloseHandle (h); if (written == UAEFSDB_LEN) { + if (fsdb_debug) + write_log ("->ok\n"); ret = 1; goto end; } } + if (fsdb_debug) + write_log ("->fail %d, %d\n", written, GetLastError ()); + DeleteFile (p); end: if (attr != INVALID_FILE_ATTRIBUTES) diff --git a/od-win32/gencpu_msvc/gencpu.exe.manifest b/od-win32/gencpu_msvc/gencpu.exe.manifest new file mode 100644 index 00000000..11bb704c --- /dev/null +++ b/od-win32/gencpu_msvc/gencpu.exe.manifest @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/od-win32/gencpu_msvc/gencpu_msvc.vcproj b/od-win32/gencpu_msvc/gencpu_msvc.vcproj index 6e0537ec..d959e11f 100644 --- a/od-win32/gencpu_msvc/gencpu_msvc.vcproj +++ b/od-win32/gencpu_msvc/gencpu_msvc.vcproj @@ -177,6 +177,7 @@ /> 0) + result = 1; } } @@ -62,19 +65,19 @@ int target_get_volume_name(struct uaedev_mount_info *mtinf, const char *volumepa switch(drivetype) { case DRIVE_FIXED: - sprintf(volumename, "WinDH_%c", volumepath[0]); + sprintf (volumename, "WinDH_%c", volumepath[0]); break; case DRIVE_CDROM: - sprintf(volumename, "WinCD_%c", volumepath[0]); + sprintf (volumename, "WinCD_%c", volumepath[0]); break; case DRIVE_REMOVABLE: - sprintf(volumename, "WinRMV_%c", volumepath[0]); + sprintf (volumename, "WinRMV_%c", volumepath[0]); break; case DRIVE_REMOTE: - sprintf(volumename, "WinNET_%c", volumepath[0]); + sprintf (volumename, "WinNET_%c", volumepath[0]); break; case DRIVE_RAMDISK: - sprintf(volumename, "WinRAM_%c", volumepath[0]); + sprintf (volumename, "WinRAM_%c", volumepath[0]); break; case DRIVE_UNKNOWN: case DRIVE_NO_ROOT_DIR: @@ -133,7 +136,7 @@ static void filesys_addexternals(void) continue; volumename[0] = 0; if (inserted) { - target_get_volume_name(&mountinfo, volumepath, volumename, MAX_DPATH, inserted, 1); + target_get_volume_name (&mountinfo, volumepath, volumename, MAX_DPATH, inserted, 1); if (!volumename[0]) sprintf (volumename, "WinUNK_%c", drive); } @@ -141,6 +144,7 @@ static void filesys_addexternals(void) strcat(volumepath, "."); else strcat(volumepath, ".."); + //write_log ("Drive type %d: '%s' '%s'\n", drivetype, volumepath, volumename); add_filesys_unit (devname[0] ? devname : NULL, volumename, volumepath, !rw, 0, 0, 0, 0, -20 - drvnum, 0, 1, 0, 0, 0); drvnum++; } /* if drivemask */ diff --git a/od-win32/win32gui.c b/od-win32/win32gui.c index 9f70caaf..df40b23c 100644 --- a/od-win32/win32gui.c +++ b/od-win32/win32gui.c @@ -1349,6 +1349,7 @@ typedef struct tagOFNX { int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs, char *path_out, int *multi) { static int statefile_previousfilter; + static int previousfilter[20]; OPENFILENAME openFileName; char full_path[MAX_DPATH] = ""; char full_path2[MAX_DPATH]; @@ -1360,7 +1361,6 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs char *p, *nextp; int all = 1; int next; - int filterindex = 0; int nosavepath = 0; char szTitle[MAX_DPATH] = { 0 }; @@ -1517,7 +1517,6 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs p += strlen (p) + 1; *p = 0; all = 0; - filterindex = statefile_previousfilter; } defext = "USS"; break; @@ -1561,7 +1560,7 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs OFN_LONGNAMES | OFN_HIDEREADONLY | OFN_NOCHANGEDIR; openFileName.lpstrFilter = szFilter; openFileName.lpstrDefExt = defext; - openFileName.nFilterIndex = filterindex; + openFileName.nFilterIndex = previousfilter[flag]; openFileName.lpstrFile = full_path; openFileName.nMaxFile = MAX_DPATH; openFileName.lpstrFileTitle = file_name; @@ -1581,6 +1580,8 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs if (!(result = GetOpenFileName (&openFileName))) write_log ("GetOpenFileName() failed, err=%d.\n", GetLastError()); } + previousfilter[flag] = openFileName.nFilterIndex; + memcpy (full_path2, full_path, sizeof (full_path)); memcpy (stored_path, full_path, sizeof (stored_path)); next = 0; @@ -1645,7 +1646,6 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs break; case IDC_DOSAVESTATE: case IDC_DOLOADSTATE: - statefile_previousfilter = openFileName.nFilterIndex; savestate_initsave (full_path, openFileName.nFilterIndex, FALSE); break; case IDC_CREATE: @@ -3618,6 +3618,7 @@ static void values_to_pathsdialog (HWND hDlg) setpath (hDlg, "StatefilePath", IDC_PATHS_SAVESTATE, "Savestates"); setpath (hDlg, "SaveimagePath", IDC_PATHS_SAVEIMAGE, "SaveImages"); setpath (hDlg, "VideoPath", IDC_PATHS_AVIOUTPUT, "Videos"); + setpath (hDlg, "RipperPath", IDC_PATHS_RIP, ".\\"); } static void resetregistry (void) @@ -3634,6 +3635,7 @@ static void resetregistry (void) regdelete (NULL, "ScreenshotPath"); regdelete (NULL, "StatefilePath"); regdelete (NULL, "VideoPath"); + regdelete (NULL, "RipperPath"); regdelete (NULL, "QuickStartModel"); regdelete (NULL, "QuickStartConfiguration"); regdelete (NULL, "QuickStartCompatibility"); @@ -3662,6 +3664,7 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM setac (hDlg, IDC_PATHS_SAVESTATE); setac (hDlg, IDC_PATHS_SAVEIMAGE); setac (hDlg, IDC_PATHS_AVIOUTPUT); + setac (hDlg, IDC_PATHS_RIP); CheckDlgButton(hDlg, IDC_PATHS_CONFIGCACHE, configurationcache); currentpage = PATHS_ID; ShowWindow (GetDlgItem (hDlg, IDC_RESETREGISTRY), FALSE); @@ -3778,10 +3781,21 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM values_to_pathsdialog (hDlg); } break; + case IDC_PATHS_RIPS: + fetch_path ("RipperPath", tmp, sizeof (tmp)); + if (DirectorySelection (hDlg, 0, tmp)) { + set_path ("RipperPath", tmp); + values_to_pathsdialog (hDlg); + } + break; case IDC_PATHS_AVIOUTPUT: GetWindowText (GetDlgItem (hDlg, IDC_PATHS_AVIOUTPUT), tmp, sizeof (tmp)); set_path ("VideoPath", tmp); break; + case IDC_PATHS_RIP: + GetWindowText (GetDlgItem (hDlg, IDC_PATHS_RIP), tmp, sizeof (tmp)); + set_path ("RipperPath", tmp); + break; case IDC_PATHS_DEFAULT: val = SendDlgItemMessage (hDlg, IDC_PATHS_DEFAULTTYPE, CB_GETCURSEL, 0, 0L); if (val != CB_ERR && val >= 0 && val < numtypes) { @@ -3817,6 +3831,7 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM set_path ("StatefilePath", NULL); set_path ("SaveimagePath", NULL); set_path ("VideoPath", NULL); + set_path ("RipperPath", NULL); values_to_pathsdialog (hDlg); FreeConfigStore (); } @@ -10859,7 +10874,7 @@ static int ignorewindows[] = { -1, IDD_MISC1, IDC_LANGUAGE, -1, - IDD_PATHS, IDC_PATHS_ROM, IDC_PATHS_CONFIG, IDC_PATHS_SCREENSHOT, IDC_PATHS_SAVESTATE, IDC_PATHS_AVIOUTPUT, IDC_PATHS_SAVEIMAGE, + IDD_PATHS, IDC_PATHS_ROM, IDC_PATHS_CONFIG, IDC_PATHS_SCREENSHOT, IDC_PATHS_SAVESTATE, IDC_PATHS_AVIOUTPUT, IDC_PATHS_SAVEIMAGE, IDC_PATHS_RIP, -1, IDD_IOPORTS, IDC_PRINTERLIST, IDC_PS_PARAMS, IDC_SERIAL, IDC_MIDIOUTLIST, IDC_MIDIINLIST, -1, diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index 2886d765..564d0059 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -1,5 +1,26 @@ -Beta 10: +Beta 11: + +- fix for graphics corruption introduced in 1.5.3 when bitplane DMA + fetch happened while bitplane pointer was updated +- AGA 6 plane mode (non-EHB) was not always enabled properly (b3) +- added -clipboarddebug command line parameter that writes clipboard + contents to file in winuae directory. (clipboard_p2a.xxx.dat + and clipboard_a2p.xxx.dat) +- added ripper path to Paths panel, used by prowizard and sample + ripper (previously sample ripper used screenshot directory and + prowizard used winuae root directory) +- directory filesystem ACTION_CHANGE_MODE was completely broken in + CHANGE_FH mode, returned error and "Error: couldn't find key + x / y!" was logged. Bug since the beginning +- clipboard: multiple CHRS chunk merging fixed (again), less stupid + clipboard.device detection +- blitter line mode (only if linedraw code was "weird") broke in b3 +- file selection dialog (adf, hdf etc..) remembers previous filter + mode ("*.adf", "all files" etc..) + + +Beta 10: clipboard stuff. - clipboard: multiple CHRS chunks inside FTXT supported - clipboard: IFF ILBM Amiga to PC support implemented. EHB supported,