]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
2700b11
authorToni Wilen <twilen@winuae.net>
Sat, 2 Nov 2013 18:33:11 +0000 (20:33 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 2 Nov 2013 18:33:11 +0000 (20:33 +0200)
19 files changed:
blkdev_cdimage.cpp
custom.cpp
gencpu.cpp
include/cpu_prefetch.h
inputdevice.cpp
main.cpp
newcpu.cpp
od-win32/dinput.cpp
od-win32/genblitter_msvc/genblitter_msvc.vcxproj
od-win32/lib/prowizard.lib
od-win32/prowizard/prowizard.vcxproj
od-win32/srcrelease.cmd
od-win32/uaeunp/uaeunp.vcxproj
od-win32/unpackers/unpackers.vcxproj
od-win32/win32.h
od-win32/win32gui.cpp
od-win32/winuae_msvc11/winuae_msvc.sln
od-win32/winuaechangelog.txt
table68k

index f0bb1524eadb145c6375795e0ae3a4ce23ff4c4b..a4400b2f4feb542643e305a497ac7c45f1c547b7 100644 (file)
@@ -379,6 +379,19 @@ static void *cdda_unpack_func (void *v)
        return 0;
 }
 
+static void audio_unpack (struct cdunit *cdu, struct cdtoc *t)
+{
+       // do this even if audio is not compressed, t->handle also could be
+       // compressed and we want to unpack it in background too
+       while (cdimage_unpack_active == 1)
+               Sleep (10);
+       cdimage_unpack_active = 0;
+       write_comm_pipe_u32 (&unpack_pipe, cdu - &cdunits[0], 0);
+       write_comm_pipe_u32 (&unpack_pipe, t - &cdu->toc[0], 1);
+       while (cdimage_unpack_active == 0)
+               Sleep (10);
+}
+
 static void *cdda_play_func (void *v)
 {
        int cdda_pos;
@@ -423,20 +436,14 @@ static void *cdda_play_func (void *v)
                                if (!t) {
                                        write_log (_T("IMAGE CDDA: illegal sector number %d\n"), cdu->cdda_start);
                                        setstate (cdu, AUDIO_STATUS_PLAY_ERROR);
+                               } else {
+                                       audio_unpack (cdu, t);
                                }
                        } else {
                                write_log (_T("IMAGE CDDA: playing from %d to %d, track %d ('%s', offset %lld, secoffset %d (%d))\n"),
                                        cdu->cdda_start, cdu->cdda_end, t->track, t->fname, t->offset, sector, t->index1);
                                oldtrack = t->track;
-                               // do this even if audio is not compressed, t->handle also could be
-                               // compressed and we want to unpack it in background too
-                               while (cdimage_unpack_active == 1)
-                                       Sleep (10);
-                               cdimage_unpack_active = 0;
-                               write_comm_pipe_u32 (&unpack_pipe, cdu - &cdunits[0], 0);
-                               write_comm_pipe_u32 (&unpack_pipe, t - &cdu->toc[0], 1);
-                               while (cdimage_unpack_active == 0)
-                                       Sleep (10);
+                               audio_unpack (cdu, t);
                        }
                        idleframes = cdu->cdda_delay_frames;
                        while (cdu->cdda_paused && cdu->cdda_play > 0) {
@@ -481,7 +488,8 @@ static void *cdda_play_func (void *v)
 
                        sector = cdda_pos;
                        struct cdtoc *t1 = findtoc (cdu, &sector);
-                       struct cdtoc *t2 = findtoc (cdu, &sector + 2 * 75);
+                       int tsector = cdda_pos + 2 * 75;
+                       struct cdtoc *t2 = findtoc (cdu, &tsector);
                        if (t1 != t2) {
                                for (sector = cdda_pos; sector < cdda_pos + 2 * 75; sector++) {
                                        int sec = sector;
@@ -526,6 +534,7 @@ static void *cdda_play_func (void *v)
                                                oldtrack = t->track;
                                                write_log (_T("IMAGE CDDA: track %d ('%s', offset %lld, secoffset %d (%d))\n"),
                                                        t->track, t->fname, t->offset, sector, t->index1);
+                                               audio_unpack (cdu, t);
                                        }
                                        if (!(t->ctrl & 4)) {
                                                if (t->enctype == ENC_CHD) {
index 3dfc420fc049b17b7b534b992ada6f2127358c73..5156b1ddc424e1cb759dc65413f97136424993ae 100644 (file)
@@ -390,6 +390,7 @@ static uae_u32 thisline_changed;
 
 static struct decision thisline_decision;
 static int fetch_cycle, fetch_modulo_cycle;
+static int bitplane_dma_turned_on;
 
 enum plfstate
 {
@@ -559,7 +560,7 @@ static void do_sprites (int currhp);
 
 static void remember_ctable (void)
 {
-       /* This can happen when program program crashes very badly */
+       /* This can happen when program crashes very badly */
        if (next_color_entry >= COLOR_TABLE_SIZE)
                return;
        if (remembered_color_entry < 0) {
@@ -1052,12 +1053,10 @@ static void setup_fmodes (int hpos)
        fm_maxplane = 1 << fm_maxplane_shift;
        fetch_modulo_cycle = fetchunit - fetchstart;
 
-       // wacky pixels / raf megademo hires unaligned scroller feature
-       if ((thisline_decision.plfleft < 0) && bplcon0_res >= RES_HIRES) {
-               if (fetch_cycle & (fetchunit >> 1)) {
-                       fetch_cycle &= ~(fetchunit_mask >> 1);
-                       fetch_cycle += fetchunit;
-               }
+       if (thisline_decision.plfleft < 0) {
+               thisline_decision.bplres = bplcon0_res;
+               thisline_decision.bplcon0 = bplcon0;
+               thisline_decision.nr_planes = bplcon0_planes;
        }
 
        if (is_bitplane_dma (hpos - 1))
@@ -2148,8 +2147,10 @@ static void maybe_start_bpl_dma (int hpos)
        * ECS/AGA: BPL DMA restarts but only if DMA was turned off
        outside of DDF or during current line, otherwise display
        processing jumps immediately to "DDFSTOP passed"-condition */
-       if (!(currprefs.chipset_mask & CSMASK_ECS_AGNUS))
+       if (!(currprefs.chipset_mask & CSMASK_ECS_AGNUS)) {
+               bitplane_dma_turned_on = hpos;
                return;
+       }
        if (fetch_state != fetch_not_started)
                return;
        if (diwstate != DIW_waiting_stop)
@@ -2202,7 +2203,7 @@ STATIC_INLINE void decide_line (int hpos)
                                        ok = 0;
                        }
                        if (ok && diwstate == DIW_waiting_stop) {
-                               if (dmaen (DMA_BITPLANE)) {
+                               if (dmaen (DMA_BITPLANE) && bitplane_dma_turned_on + 4 < hpos) {
                                        start_bpl_dma (hpos, plfstrt);
                                        estimate_last_fetch_cycle (plfstrt);
                                }
@@ -3001,6 +3002,7 @@ static void reset_decisions (void)
        ddfstrt_old_hpos = -1;
        bpldmawasactive = false;
        reset_bpldelays ();
+       bitplane_dma_turned_on = 0;
 
        if (plf_state > plf_active)
                plf_state = plf_idle;
@@ -4203,7 +4205,7 @@ static void BPLCON0_Denise (int hpos, uae_u16 v, bool immediate)
        v |= 1;
 #endif
 
-       if (bplcon0d == v)
+       if (bplcon0d == v && !immediate)
                return;
 
        bplcon0dd = -1;
@@ -8627,6 +8629,8 @@ void do_cycles_ce020 (unsigned long cycles)
        unsigned long c;
        int extra;
 
+       if (!cycles)
+               return;
        c = get_cycles ();
        extra = c & (CYCLE_UNIT - 1);
        if (extra) {
@@ -8639,13 +8643,15 @@ void do_cycles_ce020 (unsigned long cycles)
                cycles -= extra;
        }
        c = cycles;
-       while (c >= CYCLE_UNIT) {
+       while (c) {
                int hpos = current_hpos () + 1;
                decide_line (hpos);
                sync_copper (hpos);
                decide_fetch_ce (hpos);
                if (bltstate != BLT_done)
                        decide_blitter (hpos);
+               if (c < CYCLE_UNIT)
+                       break;
                do_cycles (1 * CYCLE_UNIT);
                c -= CYCLE_UNIT;
        }
index afe669e940ed9d2646737f99ac546b52b44a6251..101c6b9f74efe9ab3fe3463a93b9d6504616ccfb 100644 (file)
@@ -59,6 +59,7 @@ static int optimized_flags;
 #define GF_LRMW 256
 #define GF_NOFAULTPC 512
 #define GF_RMW 1024
+#define GF_OPCE020 2048
 
 /* For the current opcode, the next lower level that will have different code.
 * Initialized to -1 for each opcode. If it remains unchanged, indicates we
@@ -161,6 +162,10 @@ static int ir2irc;
 
 static int tail_ce020, total_ce020, head_in_ea_ce020;
 static bool head_ce020_cycs_done, tail_ce020_done;
+static int subhead_ce020;
+static instr *curi_ce020;
+static bool no_prefetch_ce020;
+static bool got_ea_ce020;
 
 static void fpulimit (void)
 {
@@ -196,13 +201,13 @@ static void addcycles_ce020 (int cycles)
 
 static void get_prefetch_020 (void)
 {
-       if (!using_prefetch_020)
+       if (!using_prefetch_020 || no_prefetch_ce020)
                return;
        printf ("\tregs.irc = %s (%d);\n", prefetch_word, m68k_pc_offset);
 }
 static void get_prefetch_020_0 (void)
 {
-       if (!using_prefetch_020)
+       if (!using_prefetch_020 || no_prefetch_ce020)
                return;
        printf ("\tregs.irc = %s (0);\n", prefetch_word);
 }
@@ -222,12 +227,14 @@ static void returntail (bool iswrite)
        }
        if (!tail_ce020_done) {
                total_ce020 -= 2;
+#if 0
                if (iswrite) {
                        printf("\t/* C - %d = %d */\n", memory_cycle_cnt, total_ce020 - memory_cycle_cnt);
                        total_ce020 -= memory_cycle_cnt;
                } else {
                        printf("\t/* C = %d */\n", total_ce020);
                }
+#endif
                if (0 && total_ce020 <= 0) {
                        printf ("\t/* C was zero */\n");
                        total_ce020 = 1;
@@ -261,10 +268,14 @@ static void returntail (bool iswrite)
 static void returncycles (char *s, int cycles)
 {
        if (using_ce || using_ce020) {
-               if (tail_ce020 == 1)
+#if 0
+               if (tail_ce020 == 0)
+                       printf ("\tregs.ce020memcycles -= 2 * cpucycleunit; /* T=0 */ \n");
+               else if (tail_ce020 == 1)
                        printf ("\tregs.ce020memcycles -= 1 * cpucycleunit; /* T=1 */ \n");
                else if (tail_ce020 == 2)
-                       printf ("\tregs.ce020memcycles -= 2 * cpucycleunit; /* T=2 */\n");
+                       printf ("\tregs.ce020memcycles -= 0 * cpucycleunit; /* T=2 */\n");
+#endif
                printf ("%sreturn;\n", s);
                return;
        }
@@ -544,7 +555,9 @@ static void fill_prefetch_full (void)
                irc2ir ();
                fill_prefetch_1 (2);
        } else if (using_prefetch_020) {
-               did_prefetch = 1;
+               did_prefetch = 2;
+               total_ce020 -= 4;
+               returntail (false);
                if (cpu_level >= 3)
                        printf ("\tfill_prefetch_030 ();\n");
                else if (cpu_level == 2)
@@ -731,7 +744,28 @@ static void addopcycles_ce20 (int h, int t, int c, int subhead)
        head_cycs (h);
 
        //c = 0;
+#if 0
+       if (tail_ce020 == 1)
+               printf ("\tregs.ce020memcycles -= 1 * cpucycleunit; /* T=1 */ \n");
+       else if (tail_ce020 == 2)
+               printf ("\tregs.ce020memcycles -= 2 * cpucycleunit; /* T=2 */\n");
+#endif
+       if (1 && !subhead && (h > 0 || t > 0 || c > 0) && got_ea_ce020) {
+               if (!did_prefetch) {
+                       get_prefetch_020 ();
+                       did_prefetch = 1;
+               }
+               if (1) {
+                       if (h > 0) {
+                               printf ("\tif (regs.ce020memcycles > %d * cpucycleunit)\n", h);
+                               printf ("\t\tregs.ce020memcycles = %d * cpucycleunit;\n", h);
+                       } else {
+                               printf ("\tregs.ce020memcycles = 0;\n", h);
+                       }
+               }
+       }
 
+#if 0
        if (tail_ce020 >= 0 && h >= 0 && head_in_ea_ce020 == 0) {
                int largest = tail_ce020 > h ? tail_ce020: h;
                if (tail_ce020 != h) {
@@ -758,6 +792,7 @@ static void addopcycles_ce20 (int h, int t, int c, int subhead)
 #endif
                } else if (h) {
                        printf ("\t/* ea tail == op head (%d) */\n", h);
+
                        printf ("\tregs.ce020memcycles -= %d * cpucycleunit;\n", h);
                        printf ("\tif (regs.ce020memcycles < 0) {\n");
                        //printf ("\t\tx_do_cycles (-regs.ce020memcycles);\n");
@@ -765,6 +800,8 @@ static void addopcycles_ce20 (int h, int t, int c, int subhead)
                        printf ("\t}\n");
                }
        }
+#endif
+
        if (h < 0)
                h = 0;
        
@@ -827,12 +864,21 @@ static void addcycles_ea_ce020 (char *ea, int h, int t, int c, int oph)
                        h += oph;
                }
        }
-       if (0 && c > 0) {
+
+       if (h) {
+               printf ("\tif (regs.ce020memcycles > %d * cpucycleunit)\n", h);
+               printf ("\t\tregs.ce020memcycles = %d * cpucycleunit;\n", h);
+       } else {
+               printf ("\tregs.ce020memcycles = 0;\n", h);
+       }
+
+       if (1 && c > 0) {
                printf ("\t%s (%d);\n", do_cycles, c);
                count_cycles += c;
        }
        tail_ce020 = t;
        head_in_ea_ce020 = oph;
+       got_ea_ce020 = true;
 //     if (t > 0)
 //             printf ("\tregs.ce020_tail = get_cycles () + %d * cpucycleunit;\n", t);
 }
@@ -883,7 +929,7 @@ static int gence020cycles_fiea (instr *curi, wordsizes ssize, amodes dmode)
                        SETCE020(8, 2, 10)
                break;
        case Ad16: // (d16,An)
-       case PC16: // (d16,PC,Xn)
+       case PC16: // (d16,PC)
                if (!l)
                        SETCE020(2, 0, 4)
                else
@@ -946,7 +992,7 @@ static int gence020cycles_ciea (instr *curi, wordsizes ssize, amodes dmode)
                        SETCE020H(8, 0, 8)
                break;
        case Ad16: // (d16,An)
-       case PC16: // (d16,PC,Xn)
+       case PC16: // (d16,PC)
                if (!l)
                        SETCE020H(4, 0, 4)
                else
@@ -997,7 +1043,7 @@ static int gence020cycles_fea (amodes mode)
                SETCE020(4, 2, 6)
                break;
        case Ad16: // (d16,An)
-       case PC16: // (d16,PC,Xn)
+       case PC16: // (d16,PC)
                ws++;
                SETCE020(2, 2, 4)
                break;
@@ -1043,7 +1089,7 @@ static int gence020cycles_cea (instr *curi, amodes mode)
                SETCE020H(4, 0, 4)
                break;
        case Ad16: // (d16,An)
-       case PC16: // (d16,PC,Xn)
+       case PC16: // (d16,PC)
                SETCE020H(2, 0, 2)
                break;
        case absw:
@@ -1057,29 +1103,42 @@ static int gence020cycles_cea (instr *curi, amodes mode)
        return oph;
 }
 
-static int gence020cycles_jea (amodes mode)
+static int gence020cycles_jea (instr *curi, amodes mode)
 {
-       int h = 0, t = 0, c = 0;
+       int h = 0, t = 0, c = 0, oph = 0;
        switch (mode)
        {
        case Aind: // (An)
-               SETCE020(2, 0, 2)
+               SETCE020H(2, 0, 2)
                break;
        case Ad16: // (d16,An)
-       case PC16: // (d16,PC,Xn)
-               SETCE020(4, 0, 4)
+       case PC16: // (d16,PC)
+               SETCE020H(4, 0, 4)
                break;
        case absw:
-               SETCE020(2, 0, 2)
+               SETCE020H(2, 0, 2)
                break;
        case absl:
-               SETCE020(2, 0, 2)
+               SETCE020H(2, 0, 2)
                break;
        }
-       addcycles_ea_ce020 ("jea", h, t, c);
-       return 0;
+       addcycles_ea_ce020 ("jea", h, t, c, oph);
+       return oph;
 }
 
+static void next_level_000 (void)
+{
+       if (next_cpu_level < 0)
+               next_cpu_level = 0;
+}
+
+static void maybeaddop_ce020 (int flags)
+{
+       if (flags & GF_OPCE020)
+               addop_ce020 (curi_ce020, subhead_ce020);
+}
+
+
 /* getv == 1: fetch data; getv != 0: check for odd address. If movem != 0,
 * the calling routine handles Apdi and Aipi modes.
 * gb-- movem == 2 means the same thing but for a MOVE16 instruction */
@@ -1133,6 +1192,7 @@ static void genamode2x (amodes mode, char *reg, wordsizes size, char *name, int
                        default:
                                term ();
                }
+               maybeaddop_ce020 (flags);
                syncmovepc (getv, flags);
                return;
        case Areg:
@@ -1149,6 +1209,7 @@ static void genamode2x (amodes mode, char *reg, wordsizes size, char *name, int
                        default:
                                term ();
                }
+               maybeaddop_ce020 (flags);
                syncmovepc (getv, flags);
                return;
        case Aind: // (An)
@@ -1214,28 +1275,25 @@ static void genamode2x (amodes mode, char *reg, wordsizes size, char *name, int
                }
                break;
        case Ad16: // (d16,An)
-               switch (fetchmode)
-               {
-                       case fetchmode_fea:
-                       case fetchmode_cea:
-                       addcycles_ce020 (2);
-                       break;
-                       case fetchmode_jea:
-                       addcycles_ce020 (4);
-                       break;
-               }
                printf ("\tuaecptr %sa;\n", name);
                add_mmu040_movem (movem);
                printf ("\t%sa = m68k_areg (regs, %s) + (uae_s32)(uae_s16)%s;\n", name, reg, gen_nextiword (flags));
                count_read_ea++; 
                break;
+       case PC16: // (d16,PC)
+               printf ("\tuaecptr %sa;\n", name);
+               add_mmu040_movem (movem);
+               printf ("\t%sa = m68k_getpc () + %d;\n", name, m68k_pc_offset);
+               printf ("\t%sa += (uae_s32)(uae_s16)%s;\n", name, gen_nextiword (flags));
+               break;
        case Ad8r: // (d8,An,Xn)
                switch (fetchmode)
                {
                        case fetchmode_fea:
+                       addcycles_ce020 (4);
+                       break;
                        case fetchmode_cea:
                        case fetchmode_jea:
-                       addcycles_ce020 (4);
                        break;
                }
                printf ("\tuaecptr %sa;\n", name);
@@ -1249,35 +1307,23 @@ static void genamode2x (amodes mode, char *reg, wordsizes size, char *name, int
                        insn_n_cycles += 4;
                        printf ("\t%sa = %s (m68k_areg (regs, %s), %d);\n", name, disp020, reg, mmudisp020cnt++);
                } else {
+                       printf ("\t%sa = %s (m68k_areg (regs, %s), %s);\n", name, disp000, reg, gen_nextiword (flags));
                        if (!(flags & GF_AD8R)) {
                                addcycles000 (2);
                                insn_n_cycles += 2;
                                count_cycles_ea += 2;
                        }
-                       printf ("\t%sa = %s (m68k_areg (regs, %s), %s);\n", name, disp000, reg, gen_nextiword (flags));
                        count_read_ea++; 
                }
                break;
-       case PC16: // (d16,PC,Xn)
+       case PC8r: // (d8,PC,Xn)
                switch (fetchmode)
                {
                        case fetchmode_fea:
-                       case fetchmode_cea:
-                       case fetchmode_jea:
                        addcycles_ce020 (4);
                        break;
-               }
-               printf ("\tuaecptr %sa;\n", name);
-               add_mmu040_movem (movem);
-               printf ("\t%sa = m68k_getpc () + %d;\n", name, m68k_pc_offset);
-               printf ("\t%sa += (uae_s32)(uae_s16)%s;\n", name, gen_nextiword (flags));
-               break;
-       case PC8r: // (d8,PC,Xn)
-               switch (fetchmode)
-               {
-                       case fetchmode_fea:
                        case fetchmode_cea:
-                       addcycles_ce020 (4);
+                       case fetchmode_jea:
                        break;
                }
                printf ("\tuaecptr tmppc;\n");
@@ -1333,6 +1379,7 @@ static void genamode2x (amodes mode, char *reg, wordsizes size, char *name, int
                default:
                        term ();
                }
+               maybeaddop_ce020 (flags);
                syncmovepc (getv, flags);
                return;
        case imm0:
@@ -1340,6 +1387,7 @@ static void genamode2x (amodes mode, char *reg, wordsizes size, char *name, int
                        term ();
                printf ("\tuae_s8 %s = %s;\n", name, gen_nextibyte (flags));
                count_read_ea++;
+               maybeaddop_ce020 (flags);
                syncmovepc (getv, flags);
                return;
        case imm1:
@@ -1347,6 +1395,7 @@ static void genamode2x (amodes mode, char *reg, wordsizes size, char *name, int
                        term ();
                printf ("\tuae_s16 %s = %s;\n", name, gen_nextiword (flags));
                count_read_ea++;
+               maybeaddop_ce020 (flags);
                syncmovepc (getv, flags);
                return;
        case imm2:
@@ -1354,12 +1403,14 @@ static void genamode2x (amodes mode, char *reg, wordsizes size, char *name, int
                        term ();
                gen_nextilong ("uae_s32", name, flags);
                count_read_ea += 2;
+               maybeaddop_ce020 (flags);
                syncmovepc (getv, flags);
                return;
        case immi:
                if (getv != 1)
                        term ();
                printf ("\tuae_u32 %s = %s;\n", name, reg);
+               maybeaddop_ce020 (flags);
                syncmovepc (getv, flags);
                return;
        default:
@@ -1367,6 +1418,7 @@ static void genamode2x (amodes mode, char *reg, wordsizes size, char *name, int
        }
 
        syncmovepc (getv, flags);
+       maybeaddop_ce020 (flags);
 
        /* We get here for all non-reg non-immediate addressing modes to
        * actually fetch the value. */
@@ -1489,7 +1541,7 @@ static void genamode (instr *curi, amodes mode, char *reg, wordsizes size, char
                        subhead = gence020cycles_cea (curi, mode);
                break;
                case fetchmode_jea:
-                       subhead = gence020cycles_jea (mode);
+                       subhead = gence020cycles_jea (curi, mode);
                break;
                }
                genamode2x (mode, reg, size, name, getv, movem, flags, curi->fetchmode);
@@ -1518,14 +1570,18 @@ static void genamodedual (instr *curi, amodes smode, char *sreg, wordsizes ssize
                                           amodes dmode, char *dreg, wordsizes dsize, char *dname, int dgetv, int dflags)
 {
        int subhead = 0;
+       bool eadmode = false;
+
        if (using_ce020) {
                switch (curi->fetchmode)
                {
                case fetchmode_fea:
-                       if (smode >= imm || isreg (smode))
+                       if (smode >= imm || isreg (smode)) {
                                subhead = gence020cycles_fea (dmode);
-                       else
+                               eadmode = true;
+                       } else {
                                subhead = gence020cycles_fea (smode);
+                       }
                break;
                case fetchmode_cea:
                        subhead = gence020cycles_cea (curi, smode);
@@ -1537,17 +1593,19 @@ static void genamodedual (instr *curi, amodes smode, char *sreg, wordsizes ssize
                        subhead = gence020cycles_ciea (curi, ssize, dmode);
                break;
                case fetchmode_jea:
-                       subhead = gence020cycles_jea (smode);
+                       subhead = gence020cycles_jea (curi, smode);
                break;
                default:
                        printf ("\t/* No EA */\n");
                break;
                }
        }
+       subhead_ce020 = subhead;
+       curi_ce020 = curi;
        genamode3 (curi, smode, sreg, ssize, sname, sgetv, 0, sflags);
-       genamode3 (NULL, dmode, dreg, dsize, dname, dgetv, 0, dflags);
-       if (using_ce020)
-               addop_ce020 (curi, subhead);
+       genamode3 (NULL, dmode, dreg, dsize, dname, dgetv, 0, dflags | (eadmode == true ? GF_OPCE020 : 0));
+       if (eadmode == false)
+               maybeaddop_ce020 (GF_OPCE020);
 }
 
 static void genastore_2 (char *from, amodes mode, char *reg, wordsizes size, char *to, int store_dir, int flags)
@@ -2398,6 +2456,8 @@ static void resetvars (void)
        tail_ce020_done = false;
        head_in_ea_ce020 = 0;
        head_ce020_cycs_done = false;
+       no_prefetch_ce020 = false;
+       got_ea_ce020 = false;
        
        prefetch_long = NULL;
        srcli = NULL;
@@ -2964,6 +3024,7 @@ static void gen_opcode (unsigned long int opcode)
                genastore ("newv", curi->smode, "srcreg", curi->size, "src");
                break;
        case i_CLR:
+               next_level_000 ();
                genamode (curi, curi->smode, "srcreg", curi->size, "src", cpu_level == 0 ? 1 : 2, 0, 0);
                fill_prefetch_next ();
                if (isreg (curi->smode) && curi->size == sz_long)
@@ -3141,15 +3202,18 @@ static void gen_opcode (unsigned long int opcode)
                                                fea = true;
                                        }
                                } else if (curi->dmode == Ad16) {
+                                       // MOVE EA,(d16,An)
                                        h = 2; t = 0; c = 4;
                                        fea = true;
                                } else if (curi->dmode == Ad8r) {
                                        h = 4; t = 0; c = 6;
                                        fea = true;
                                } else if (curi->dmode == absw) {
+                                       // MOVE EA,xxx.W
                                        h = 2; t = 0; c = 4;
                                        fea = true;
                                } else if (curi->dmode == absl) {
+                                       // MOVE EA,xxx.L
                                        h = 0; t = 0; c = 6;
                                        fea = true;
                                } else {
@@ -3536,6 +3600,7 @@ static void gen_opcode (unsigned long int opcode)
                tail_ce020_done = true;
                break;
        case i_JSR: // TODO: check stack write order
+               no_prefetch_ce020 = true;
                genamode (curi, curi->smode, "srcreg", curi->size, "src", 0, 0, GF_AA|GF_NOREFILL);
                start_brace ();
                printf ("\tuaecptr oldpc = m68k_getpc () + %d;\n", m68k_pc_offset);
@@ -3572,6 +3637,7 @@ static void gen_opcode (unsigned long int opcode)
                fill_prefetch_next ();
                break;
        case i_JMP:
+               no_prefetch_ce020 = true;
                genamode (curi, curi->smode, "srcreg", curi->size, "src", 0, 0, GF_AA | ((curi->smode == Ad8r || curi->smode == PC8r) ? 0 : GF_NOREFILL));
                if (using_exception_3) {
                        printf ("\tif (srca & 1) {\n");
@@ -3588,6 +3654,8 @@ static void gen_opcode (unsigned long int opcode)
                break;
        case i_BSR:
                // .b and .w confirmed
+       if (using_ce020)
+               no_prefetch_ce020 = true;
                printf ("\tuae_s32 s;\n");
                if (curi->size == sz_long) {
                        if (next_cpu_level < 1)
@@ -3758,6 +3826,7 @@ static void gen_opcode (unsigned long int opcode)
                break;
        case i_Scc:
                // confirmed
+               next_level_000 ();
                genamode (curi, curi->smode, "srcreg", curi->size, "src", cpu_level == 0 ? 1 : 2, 0, 0);
                start_brace ();
                fill_prefetch_next();
@@ -3778,7 +3847,7 @@ static void gen_opcode (unsigned long int opcode)
                        curi->dmode, "dstreg", sz_long, "dst", 1, 0);
                printf ("\tCLEAR_CZNV ();\n");
                printf ("\tif (src == 0) {\n");
-               if (cpu_level > 0)
+               if (cpu_level > 1)
                        printf ("\t\tdivbyzero_special (0, dst);\n");
                incpc ("%d", m68k_pc_offset);
                printf ("\t\tException (5);\n");
@@ -3821,7 +3890,7 @@ static void gen_opcode (unsigned long int opcode)
                        curi->smode, "srcreg", sz_word, "src", 1, 0,
                        curi->dmode, "dstreg", sz_long, "dst", 1, 0);
                printf ("\tif (src == 0) {\n");
-               if (cpu_level > 0)
+               if (cpu_level > 1)
                        printf ("\t\tdivbyzero_special (1, dst);\n");
                incpc ("%d", m68k_pc_offset);
                printf ("\t\tException (5);\n");
@@ -4958,6 +5027,25 @@ static char *decodeEA (amodes mode, wordsizes size)
        return buffer;
 }
 
+static char *m68k_cc[] = {
+       "T",
+       "F",
+       "HI",
+       "LS",
+       "CC",
+       "CS",
+       "NE",
+       "EQ",
+       "VC",
+       "VS",
+       "PL",
+       "MI",
+       "GE",
+       "LT",
+       "GT",
+       "LE"
+};
+
 static char *outopcode (int opcode)
 {
        static char out[100];
@@ -4989,6 +5077,12 @@ static char *outopcode (int opcode)
                if (ins->suse) strcat (out,",");
                strcat (out, decodeEA (ins->dmode, ins->size));
        }
+       if (ins->mnemo == i_DBcc || ins->mnemo == i_Scc || ins->mnemo == i_Bcc || ins->mnemo == i_TRAPcc) {
+               strcat (out, " (");
+               strcat (out, m68k_cc[table68k[opcode].cc]);
+               strcat (out, ")");
+       }
+
        return out;
 }
 
index 07c7bea17a5cd8b23343561f03de907f1a420587..bbc3155cbd18cc8eb14441a675e16ac2b04e4463 100644 (file)
@@ -362,10 +362,7 @@ STATIC_INLINE void m68k_do_rts_ce (void)
        pc = x_get_word (m68k_areg (regs, 7)) << 16;
        pc |= x_get_word (m68k_areg (regs, 7) + 2);
        m68k_areg (regs, 7) += 4;
-       if (pc & 1)
-               exception3 (0x4e75, pc);
-       else
-               m68k_setpc (pc);
+       m68k_setpc (pc);
 }
 
 STATIC_INLINE void m68k_do_bsr_ce (uaecptr oldpc, uae_s32 offset)
index 2df82d7606e2f41bb4ac58cd4c20381d00c88a7f..77202a3cb0da88b72181ee004ec7c15af83cb8dd 100644 (file)
@@ -3436,6 +3436,7 @@ static int switchdevice (struct uae_input_device *id, int num, bool buttonmode)
        int flags = 0;
        TCHAR *name = NULL;
        int otherbuttonpressed = 0;
+       int acc = input_acquired;
 
        //write_log (_T("switchdevice '%s' %d %d\n"), id->name, num, buttonmode);
 
@@ -3507,9 +3508,12 @@ static int switchdevice (struct uae_input_device *id, int num, bool buttonmode)
                                }
 #endif
                                write_log (_T("inputdevice change '%s':%d->%d\n"), name, num, newport);
+                               inputdevice_unacquire ();
                                inputdevice_joyport_config (&changed_prefs, name, newport, -1, 2);
                                inputdevice_validate_jports (&changed_prefs, -1);
                                inputdevice_copyconfig (&changed_prefs, &currprefs);
+                               if (acc)
+                                       inputdevice_acquire (TRUE);
                                return 1;
                        }
                }
@@ -3570,9 +3574,12 @@ static int switchdevice (struct uae_input_device *id, int num, bool buttonmode)
                        }
                }
                write_log (_T("inputdevice change '%s':%d->%d\n"), name, num, newport);
+               inputdevice_unacquire ();
                inputdevice_copyconfig (&currprefs, &changed_prefs);
                inputdevice_validate_jports (&changed_prefs, -1);
                inputdevice_copyconfig (&changed_prefs, &currprefs);
+               if (acc)
+                       inputdevice_acquire (TRUE);
                return 1;
        }
        return 0;
@@ -3776,6 +3783,7 @@ static void setbuttonstateall (struct uae_input_device *id, struct uae_input_dev
                return;
        if (!id->enabled) {
                frame_time_t t = read_processor_time ();
+
                if (buttonstate) {
                        switchdevice_timeout = t;
                } else {
@@ -6684,8 +6692,30 @@ void setjoystickstate (int joy, int axis, int state, int max)
        if (input_play)
                return;
        if (!joysticks[joy].enabled) {
-               if (v1 && v1 != v2)
-                       switchdevice (&joysticks[joy], v1 < 0 ? 0 : 1, false);
+               if (v1 > 0)
+                       v1 = 1;
+               else if (v1 < 0)
+                       v1 = -1;
+               if (v2 > 0)
+                       v2 = 1;
+               else if (v2 < 0)
+                       v2 = -1;
+               if (v1 && v1 != v2) {
+                       static int prevdir;
+                       static struct timeval tv1;
+                       struct timeval tv2;
+                       gettimeofday (&tv2, NULL);
+                       if ((uae_s64)tv2.tv_sec * 1000000 + tv2.tv_usec < (uae_s64)tv1.tv_sec * 1000000 + tv1.tv_usec + 500000 && prevdir == v1) {
+                               switchdevice (&joysticks[joy], v1 < 0 ? 0 : 1, false);
+                               tv1.tv_sec = 0;
+                               tv1.tv_usec = 0;
+                               prevdir = 0;
+                       } else {
+                               tv1.tv_sec = tv2.tv_sec;
+                               tv1.tv_usec = tv2.tv_usec;
+                               prevdir = v1;
+                       }
+               }
                return;
        }
        for (i = 0; i < MAX_INPUT_SUB_EVENT; i++) {
@@ -6930,24 +6960,22 @@ void inputdevice_validate_jports (struct uae_prefs *p, int changedport)
        }
 }
 
-static bool inputdevice_inserted (struct uae_prefs *p, int portnum, int id, int mode, int type)
+static void inputdevice_inserted (struct uae_prefs *p, int portnum, int id, int mode, int type)
 {
        for (int k = 0; k < MAX_JPORTS; k++) {
                if (p->jports[k].id == id && k != portnum) {
                        if (type == IDTYPE_JOYSTICK) {
                                // if this joystick is already in port 0, reset port 0 back to original
-                               // and insert joystick in port 1. Probably what user wanted.
                                if (k == 0 && portnum == 1) {
                                        memcpy (&p->jports[0], &stored_ports[0], sizeof (struct jport));
-                                       return false;
+                                       return;
                                }
                        } else if (type == IDTYPE_MOUSE) {
-                               return true;
+                               return;
                        }
-                       return true;
+                       return;
                }
        }
-       return false;
 }
 
 void store_inputdevice_config (struct uae_prefs *p)
@@ -6979,17 +7007,25 @@ int inputdevice_joyport_config (struct uae_prefs *p, const TCHAR *value, int por
                                }
                                idf = &idev[type];
                                for (i = 0; i < idf->get_num (); i++) {
-                                       TCHAR *name1 = idf->get_friendlyname (i);
                                        TCHAR *name2 = idf->get_uniquename (i);
-                                       if ((name1 && !_tcscmp (name1, value)) || (name2 && !_tcscmp (name2, value))) {
-                                               if (!inputdevice_inserted (p, portnum, idnum + 1, mode, type)) {
-                                                       p->jports[portnum].id = idnum + i;
-                                                       if (mode >= 0)
-                                                               p->jports[portnum].mode = mode;
-                                                       set_config_changed ();
-                                                       return 1;
-                                               }
-                                               return 0;
+                                       if (name2 && !_tcscmp (name2, value)) {
+                                               inputdevice_inserted (p, portnum, idnum + i, mode, type);
+                                               p->jports[portnum].id = idnum + i;
+                                               if (mode >= 0)
+                                                       p->jports[portnum].mode = mode;
+                                               set_config_changed ();
+                                               return 1;
+                                       }
+                               }
+                               for (i = 0; i < idf->get_num (); i++) {
+                                       TCHAR *name1 = idf->get_friendlyname (i);
+                                       if (name1 && !_tcscmp (name1, value)) {
+                                               inputdevice_inserted (p, portnum, idnum + i, mode, type);
+                                               p->jports[portnum].id = idnum + i;
+                                               if (mode >= 0)
+                                                       p->jports[portnum].mode = mode;
+                                               set_config_changed ();
+                                               return 1;
                                        }
                                }
                        }
@@ -7038,8 +7074,7 @@ int inputdevice_joyport_config (struct uae_prefs *p, const TCHAR *value, int por
                                        }
                                }
                                if (got == 2) {
-                                       if (inputdevice_inserted (p, portnum, start, mode, type))
-                                               return 0;
+                                       inputdevice_inserted (p, portnum, start, mode, type);
                                        p->jports[portnum].id = start;
                                        if (mode >= 0)
                                                p->jports[portnum].mode = mode;
index 6e3df6faf0e46da91ddb2516e2d9efe32da77a44..99ee5293aa3101155ec01818f46cfb2e90e5d9b7 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -148,6 +148,8 @@ void discard_prefs (struct uae_prefs *p, int type)
 
 static void fixup_prefs_dim2 (struct wh *wh)
 {
+       if (wh->special)
+               return;
        if (wh->width < 160) {
                error_log (_T("Width (%d) must be at least 128."), wh->width);
                wh->width = 160;
@@ -299,6 +301,7 @@ void fixup_prefs (struct uae_prefs *p)
                || (p->fastmem_size != 0 && (p->fastmem_size < 0x100000 || p->fastmem_size > 0x800000)))
 {
                error_log (_T("Unsupported fastmem size %d (0x%x)."), p->fastmem_size, p->fastmem_size);
+               p->fastmem_size = 0;
                err = 1;
        }
        if (p->rtgmem_size > max_z3fastmem && p->rtgmem_type == GFXBOARD_UAE_Z3) {
index 029b90dd8aca75aa2e3901ba5289fce598761858..6e2d3e98e1cac827fa1f4416def9a1d1cbbbcd2d 100644 (file)
@@ -738,6 +738,7 @@ static void set_x_funcs (void)
                x_do_cycles_pre = do_cycles;
                x_do_cycles_post = do_cycles_post;
        } else if (currprefs.cpu_model < 68020) {
+               // 68000/010
                if (currprefs.cpu_cycle_exact) {
                        x_prefetch = get_word_ce000_prefetch;
                        x_prefetch_long = NULL;
@@ -992,7 +993,7 @@ bool set_cpu_tracer (bool state)
        return is_cpu_tracer ();
 }
 
-static void set_cpu_caches (void)
+static void set_cpu_caches (bool flush)
 {
        int i;
 
@@ -1012,7 +1013,7 @@ static void set_cpu_caches (void)
        }
 #endif
        if (currprefs.cpu_model == 68020) {
-               if (regs.cacr & 0x08) { // clear instr cache
+               if ((regs.cacr & 0x08) || flush) { // clear instr cache
                        for (i = 0; i < CACHELINES020; i++)
                                caches020[i].valid = 0;
                }
@@ -1022,7 +1023,7 @@ static void set_cpu_caches (void)
                }
        } else if (currprefs.cpu_model == 68030) {
                //regs.cacr |= 0x100;
-               if (regs.cacr & 0x08) { // clear instr cache
+               if ((regs.cacr & 0x08) || flush) { // clear instr cache
                        for (i = 0; i < CACHELINES030; i++) {
                                icaches030[i].valid[0] = 0;
                                icaches030[i].valid[1] = 0;
@@ -1034,7 +1035,7 @@ static void set_cpu_caches (void)
                        icaches030[(regs.caar >> 4) & (CACHELINES030 - 1)].valid[(regs.caar >> 2) & 3] = 0;
                        regs.cacr &= ~0x04;
                }
-               if (regs.cacr & 0x800) { // clear data cache
+               if ((regs.cacr & 0x800) || flush) { // clear data cache
                        for (i = 0; i < CACHELINES030; i++) {
                                dcaches030[i].valid[0] = 0;
                                dcaches030[i].valid[1] = 0;
@@ -1231,7 +1232,7 @@ static void build_cpufunctbl (void)
 #ifdef JIT
        build_comp ();
 #endif
-       set_cpu_caches ();
+       set_cpu_caches (true);
 }
 
 #define CYCLES_DIV 8192
@@ -1313,11 +1314,10 @@ void check_prefs_changed_cpu (void)
                || currprefs.fpu_no_unimplemented != changed_prefs.fpu_no_unimplemented
                || currprefs.cpu_compatible != changed_prefs.cpu_compatible
                || currprefs.cpu_cycle_exact != changed_prefs.cpu_cycle_exact) {
-                       bool doprefetch = !currprefs.cpu_compatible && changed_prefs.cpu_compatible;
+
                        prefs_changed_cpu ();
-                       if (doprefetch)
-                               fill_prefetch ();
                        build_cpufunctbl ();
+                       fill_prefetch ();
                        changed = true;
        }
        if (changed
@@ -3004,7 +3004,7 @@ int m68k_move2c (int regno, uae_u32 *regp)
                                else if (currprefs.cpu_model == 68060)
                                        cacr_mask = 0xf8e0e000;
                                regs.cacr = *regp & cacr_mask;
-                               set_cpu_caches ();
+                               set_cpu_caches (false);
                        }
                        break;
                        /* 68040/060 only */
@@ -3422,7 +3422,7 @@ static void m68k_reset (bool hardreset)
        mmu_tt_modified (); 
        if (currprefs.cpu_model == 68020) {
                regs.cacr |= 8;
-               set_cpu_caches ();
+               set_cpu_caches (false);
        }
 
        mmufixup[0].reg = -1;
@@ -4715,6 +4715,8 @@ static void m68k_run_2ce (void)
                if (regs.irc == 0xffff)
                        gui_message (_T("OPCODE %04X HAS FAULTY PREFETCH!"), prevopcode);
 
+               //write_log (_T("%x %04x\n"), r->instruction_pc, regs.irc);
+
                opcode = regs.irc;
                prevopcode = opcode;
                regs.irc = 0xffff;
@@ -4781,7 +4783,7 @@ cont:
 
 #ifdef CPUEMU_20
 
-// only opcode fetch prefetch
+// only opcode fetch prefetch (030+ more compatible)
 static void m68k_run_2pf (void)
 {
        struct regstruct *r = &regs;
@@ -4810,7 +4812,7 @@ static void m68k_run_2pf (void)
        }
 }
 
-// full prefetch 020+
+// full prefetch 020 (more compatible)
 static void m68k_run_2p (void)
 {
        struct regstruct *r = &regs;
@@ -5653,7 +5655,7 @@ uae_u8 *restore_cpu (uae_u8 *src)
                if (khz > 0 && khz < 800000)
                        currprefs.m68k_speed = changed_prefs.m68k_speed = 0;
        }
-       set_cpu_caches ();
+       set_cpu_caches (true);
        if (flags & 0x40000000) {
                if (model == 68020) {
                        for (int i = 0; i < CACHELINES020; i++) {
@@ -6945,12 +6947,14 @@ void fill_prefetch (void)
 {
        if (currprefs.cachesize)
                return;
-       uaecptr pc = m68k_getpc ();
        if (currprefs.cpu_model == 68020) {
                fill_prefetch_020 ();
        } else if (currprefs.cpu_model == 68030) {
+               if (!currprefs.cpu_cycle_exact)
+                       return;
                fill_prefetch_030 ();
        } else if (currprefs.cpu_model <= 68010) {
+               uaecptr pc = m68k_getpc ();
                regs.ir = x_get_word (pc);
                regs.irc = x_get_word (pc + 2);
        }
index 1bcbbcfe54ff7649f8dc2b56bda99564836a316f..5053403a7ca920ccbb23dfbb5f3b4ffbf9b5ac73 100644 (file)
@@ -219,7 +219,6 @@ static uae_u32 get_leds (void)
        if (currprefs.win32_kbledmode) {
                oldleds = led;
        } else if (!currprefs.win32_kbledmode && kbhandle != INVALID_HANDLE_VALUE) {
-#ifdef WINDDK
                KEYBOARD_INDICATOR_PARAMETERS InputBuffer;
                KEYBOARD_INDICATOR_PARAMETERS OutputBuffer;
                ULONG DataLength = sizeof(KEYBOARD_INDICATOR_PARAMETERS);
@@ -237,7 +236,6 @@ static uae_u32 get_leds (void)
                        led |= KBLED_CAPSLOCKM;
                if (OutputBuffer.LedFlags & KEYBOARD_SCROLL_LOCK_ON)
                        led |= KBLED_SCROLLLOCKM;
-#endif
        }
        return led;
 }
@@ -264,7 +262,6 @@ static void set_leds (uae_u32 led)
                        oldleds ^= KBLED_SCROLLLOCKM;
                }
        } else if (kbhandle != INVALID_HANDLE_VALUE) {
-#ifdef WINDDK
                KEYBOARD_INDICATOR_PARAMETERS InputBuffer;
                ULONG DataLength = sizeof(KEYBOARD_INDICATOR_PARAMETERS);
                ULONG ReturnedLength;
@@ -279,7 +276,6 @@ static void set_leds (uae_u32 led)
                if (!DeviceIoControl (kbhandle, IOCTL_KEYBOARD_SET_INDICATORS,
                        &InputBuffer, DataLength, NULL, 0, &ReturnedLength, NULL))
                        write_log (_T("kbleds: DeviceIoControl() failed %d\n"), GetLastError());
-#endif
        }
 }
 
@@ -3144,7 +3140,6 @@ static int acquire_kb (int num, int flags)
        lpdi = di_keyboard[num].lpdi;
        unacquire (lpdi, _T("keyboard"));
        if (currprefs.keyboard_leds_in_use) {
-#ifdef WINDDK
                if (!currprefs.win32_kbledmode) {
                        if (DefineDosDevice (DDD_RAW_TARGET_PATH, _T("Kbd"), _T("\\Device\\KeyboardClass0"))) {
                                kbhandle = CreateFile (_T("\\\\.\\Kbd"), GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
@@ -3157,9 +3152,6 @@ static int acquire_kb (int num, int flags)
                                write_log (_T("kbled: DefineDosDevice failed, error %d\n"), GetLastError());
                        }
                }
-#else
-               currprefs.kbledmode = 1;
-#endif
                oldleds = get_leds ();
                if (oldusedleds < 0)
                        oldusedleds = newleds = oldleds;
@@ -3206,13 +3198,11 @@ static void unacquire_kb (int num)
                        set_leds (oldleds);
                        oldusedleds = oldleds;
                }
-#ifdef WINDDK
                if (kbhandle != INVALID_HANDLE_VALUE) {
                        CloseHandle (kbhandle);
                        DefineDosDevice (DDD_REMOVE_DEFINITION, _T("Kbd"), NULL);
                        kbhandle = INVALID_HANDLE_VALUE;
                }
-#endif
        }
        //unlock_kb ();
 }
index b809cd2ad29d162c6ef8847bf168544c4c5a231b..25ad4fc5b81e6a5ce340152aeee8c659a64c97b4 100644 (file)
@@ -49,7 +49,7 @@
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Test|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
index 9bb893f181f4c114a1a6309ef65f8911af5cab3f..814ab7172c73b3434d40fec450ef40d0490e993d 100644 (file)
Binary files a/od-win32/lib/prowizard.lib and b/od-win32/lib/prowizard.lib differ
index 7b22e7ac3631d557aae14a5ac81f08a0ecb6d2c3..152760161015438243f249ab70f3b7fb46351ff5 100644 (file)
@@ -36,7 +36,7 @@
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>false</WholeProgramOptimization>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Test|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
index f3a27172f6cf8ca9325c48e6209e7ecec329a189..103398c9c2f0eeda315d180dc237982bdd588aeb 100644 (file)
@@ -167,7 +167,11 @@ rm -rf release
 rm -rf fullrelease
 cd ..
 
-rm -rf lib
+cd wix
+rm -rf bin
+rm -rf obj
+cd ..
+
 
 cd ..
 
index 2124ae26a3d427173f2535491e98787d2d37d77d..759de7b56532a2d36013b04b7c9e3dfb73518ea6 100644 (file)
@@ -35,7 +35,7 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
index c10ff8ea1198bbae6c80099e855365557355a2a0..71634aeca0abe15390d9167b54e332a3fecae3e5 100644 (file)
@@ -49,7 +49,7 @@
     <UseDebugLibraries>false</UseDebugLibraries>
     <WholeProgramOptimization>false</WholeProgramOptimization>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v120_xp</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Test|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
index 91cd0c65e6d52bc433cf3bbf34047bf9d95a93eb..b31745deb188ef565e8931e398829ccefef34c8c 100644 (file)
 #define LANG_DLL 1
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("10")
+#define WINUAEBETA _T("11")
 #else
 #define WINUAEBETA _T("")
 #endif
-#define WINUAEDATE MAKEBD(2013, 10, 26)
+#define WINUAEDATE MAKEBD(2013, 11, 2)
 #define WINUAEEXTRA _T("")
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
index 881810a87b707b90880729228d7ca784d3739663..efeaeae35a1a6758b96cf72a0557097a0ab96a25 100644 (file)
@@ -14719,7 +14719,7 @@ static INT_PTR CALLBACK hw3dDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
                        }
                case IDC_FILTERKEEPAUTOSCALEASPECT:
                        {
-                               workprefs.gfx_filter_keep_autoscale_aspect = currprefs.gfx_filter_keep_autoscale_aspect = ischecked (hDlg, IDC_FILTERKEEPAUTOSCALEASPECT) ? 10 : 0;
+                               workprefs.gfx_filter_keep_autoscale_aspect = currprefs.gfx_filter_keep_autoscale_aspect = ischecked (hDlg, IDC_FILTERKEEPAUTOSCALEASPECT) ? 1 : 0;
                                enable_for_hw3ddlg (hDlg);
                                values_to_hw3ddlg (hDlg);
                                updatedisplayarea ();
index 81261be79fc90b7eee20e3d8c67463fd952202db..ff3b658729ac1f4a5a176a5ebb8920ccc6377d9c 100644 (file)
@@ -1,5 +1,7 @@
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winuae", "winuae_msvc.vcxproj", "{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencpu", "..\gencpu_msvc\gencpu_msvc.vcxproj", "{DEF7ACF7-050E-4069-BB99-5B5D93F60521}"
@@ -30,146 +32,422 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "prowizard", "..\prowizard\p
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unpackers", "..\unpackers\unpackers.vcxproj", "{98BA115B-829F-4085-9729-ABD0D779A60A}"
 EndProject
+Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "wix", "..\wix\wix.wixproj", "{BE211CE1-3955-4674-A664-5038FC791980}"
+EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Mixed Platforms = Debug|Mixed Platforms
                Debug|Win32 = Debug|Win32
                Debug|x64 = Debug|x64
+               Debug|x86 = Debug|x86
+               FullRelease|Mixed Platforms = FullRelease|Mixed Platforms
                FullRelease|Win32 = FullRelease|Win32
                FullRelease|x64 = FullRelease|x64
+               FullRelease|x86 = FullRelease|x86
+               Release|Mixed Platforms = Release|Mixed Platforms
                Release|Win32 = Release|Win32
                Release|x64 = Release|x64
+               Release|x86 = Release|x86
+               Test|Mixed Platforms = Test|Mixed Platforms
                Test|Win32 = Test|Win32
                Test|x64 = Test|x64
+               Test|x86 = Test|x86
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|Win32.ActiveCfg = Debug|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|Win32.Build.0 = Debug|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|x64.ActiveCfg = Debug|x64
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|x64.Build.0 = Debug|x64
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|x86.ActiveCfg = Debug|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|x86.Build.0 = Debug|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|Win32.Build.0 = FullRelease|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|x64.ActiveCfg = FullRelease|x64
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|x64.Build.0 = FullRelease|x64
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|x86.Build.0 = FullRelease|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|Mixed Platforms.Build.0 = Release|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|Win32.ActiveCfg = Release|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|Win32.Build.0 = Release|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|x64.ActiveCfg = Release|x64
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|x64.Build.0 = Release|x64
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|x86.ActiveCfg = Release|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|x86.Build.0 = Release|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|Mixed Platforms.Build.0 = Test|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|Win32.ActiveCfg = Test|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|Win32.Build.0 = Test|Win32
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|x64.ActiveCfg = Test|x64
                {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|x64.Build.0 = Test|x64
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|x86.ActiveCfg = Test|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|x86.Build.0 = Test|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|Win32.ActiveCfg = Debug|Win32
                {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|x64.ActiveCfg = Debug|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|x86.ActiveCfg = Debug|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|x86.Build.0 = Debug|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
                {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
                {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|x86.Build.0 = FullRelease|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|Mixed Platforms.Build.0 = Release|Win32
                {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|Win32.ActiveCfg = Release|Win32
                {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|x64.ActiveCfg = Release|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|x86.ActiveCfg = Release|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|x86.Build.0 = Release|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|Mixed Platforms.Build.0 = Test|Win32
                {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|Win32.ActiveCfg = Test|Win32
                {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|x64.ActiveCfg = Test|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|x86.ActiveCfg = Test|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|x86.Build.0 = Test|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|Win32.ActiveCfg = Debug|Win32
                {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|x64.ActiveCfg = Debug|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|x86.ActiveCfg = Debug|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|x86.Build.0 = Debug|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
                {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
                {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|x86.Build.0 = FullRelease|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|Mixed Platforms.Build.0 = Release|Win32
                {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|Win32.ActiveCfg = Release|Win32
                {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|x64.ActiveCfg = Release|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|x86.ActiveCfg = Release|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|x86.Build.0 = Release|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|Mixed Platforms.Build.0 = Test|Win32
                {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|Win32.ActiveCfg = Test|Win32
                {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|x64.ActiveCfg = Test|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|x86.ActiveCfg = Test|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|x86.Build.0 = Test|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|Win32.ActiveCfg = Debug|Win32
                {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|x64.ActiveCfg = Debug|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|x86.ActiveCfg = Debug|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|x86.Build.0 = Debug|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
                {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
                {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|x86.Build.0 = FullRelease|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|Mixed Platforms.Build.0 = Release|Win32
                {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|Win32.ActiveCfg = Release|Win32
                {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|x64.ActiveCfg = Release|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|x86.ActiveCfg = Release|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|x86.Build.0 = Release|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|Mixed Platforms.Build.0 = Test|Win32
                {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|Win32.ActiveCfg = Test|Win32
                {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|x64.ActiveCfg = Test|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|x86.ActiveCfg = Test|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|x86.Build.0 = Test|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|Win32.ActiveCfg = Debug|Win32
                {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|x64.ActiveCfg = Debug|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|x86.ActiveCfg = Debug|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|x86.Build.0 = Debug|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
                {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
                {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|x86.Build.0 = FullRelease|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|Mixed Platforms.Build.0 = Release|Win32
                {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|Win32.ActiveCfg = Release|Win32
                {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|x64.ActiveCfg = Release|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|x86.ActiveCfg = Release|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|x86.Build.0 = Release|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|Mixed Platforms.Build.0 = Test|Win32
                {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|Win32.ActiveCfg = Test|Win32
                {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|x64.ActiveCfg = Test|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|x86.ActiveCfg = Test|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|x86.Build.0 = Test|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|Win32.ActiveCfg = Debug|Win32
                {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|x64.ActiveCfg = Debug|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|x86.ActiveCfg = Debug|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|x86.Build.0 = Debug|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
                {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
                {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|x86.Build.0 = FullRelease|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|Mixed Platforms.Build.0 = Release|Win32
                {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|Win32.ActiveCfg = Release|Win32
                {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|x64.ActiveCfg = Release|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|x86.ActiveCfg = Release|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|x86.Build.0 = Release|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|Mixed Platforms.Build.0 = Test|Win32
                {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|Win32.ActiveCfg = Test|Win32
                {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|x64.ActiveCfg = Test|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|x86.ActiveCfg = Test|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|x86.Build.0 = Test|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|Win32.ActiveCfg = Debug|Win32
                {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|x64.ActiveCfg = Debug|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|x86.ActiveCfg = Debug|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|x86.Build.0 = Debug|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
                {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
                {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|x86.Build.0 = FullRelease|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|Mixed Platforms.Build.0 = Release|Win32
                {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|Win32.ActiveCfg = Release|Win32
                {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|x64.ActiveCfg = Release|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|x86.ActiveCfg = Release|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|x86.Build.0 = Release|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|Mixed Platforms.Build.0 = Test|Win32
                {C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|Win32.ActiveCfg = Test|Win32
                {C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|x64.ActiveCfg = Test|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|x86.ActiveCfg = Test|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|x86.Build.0 = Test|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|Win32.ActiveCfg = Debug|Win32
                {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|x64.ActiveCfg = Debug|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|x86.ActiveCfg = Debug|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|x86.Build.0 = Debug|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
                {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
                {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|x86.Build.0 = FullRelease|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|Mixed Platforms.Build.0 = Release|Win32
                {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|Win32.ActiveCfg = Release|Win32
                {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|x64.ActiveCfg = Release|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|x86.ActiveCfg = Release|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|x86.Build.0 = Release|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|Mixed Platforms.Build.0 = Test|Win32
                {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|Win32.ActiveCfg = Test|Win32
                {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|x64.ActiveCfg = Test|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|x86.ActiveCfg = Test|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|x86.Build.0 = Test|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|Win32.ActiveCfg = Debug|Win32
                {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|x64.ActiveCfg = Debug|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|x86.ActiveCfg = Debug|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|x86.Build.0 = Debug|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
                {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
                {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|x86.Build.0 = FullRelease|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|Mixed Platforms.Build.0 = Release|Win32
                {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|Win32.ActiveCfg = Release|Win32
                {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|x64.ActiveCfg = Release|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|x86.ActiveCfg = Release|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|x86.Build.0 = Release|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|Mixed Platforms.Build.0 = Test|Win32
                {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|Win32.ActiveCfg = Test|Win32
                {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|x64.ActiveCfg = Test|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|x86.ActiveCfg = Test|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|x86.Build.0 = Test|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|Win32.ActiveCfg = Debug|Win32
                {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|x64.ActiveCfg = Debug|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|x86.ActiveCfg = Debug|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|x86.Build.0 = Debug|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
                {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
                {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|x86.Build.0 = FullRelease|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|Mixed Platforms.Build.0 = Release|Win32
                {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|Win32.ActiveCfg = Release|Win32
                {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|x64.ActiveCfg = Release|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|x86.ActiveCfg = Release|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|x86.Build.0 = Release|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|Mixed Platforms.Build.0 = Test|Win32
                {E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|Win32.ActiveCfg = Test|Win32
                {E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|x64.ActiveCfg = Test|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|x86.ActiveCfg = Test|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|x86.Build.0 = Test|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|Win32.ActiveCfg = Debug|Win32
                {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|x64.ActiveCfg = Debug|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|x86.ActiveCfg = Debug|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|x86.Build.0 = Debug|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|Mixed Platforms.ActiveCfg = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|Mixed Platforms.Build.0 = Release|Win32
                {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|Win32.ActiveCfg = Release|Win32
                {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|x64.ActiveCfg = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|x86.ActiveCfg = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|x86.Build.0 = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|Mixed Platforms.Build.0 = Release|Win32
                {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|Win32.ActiveCfg = Release|Win32
                {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|x64.ActiveCfg = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|x86.ActiveCfg = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|x86.Build.0 = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|Mixed Platforms.Build.0 = Test|Win32
                {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|Win32.ActiveCfg = Test|Win32
                {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|x64.ActiveCfg = Test|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|x86.ActiveCfg = Test|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|x86.Build.0 = Test|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|Win32.ActiveCfg = Debug|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|x64.ActiveCfg = Debug|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|x86.ActiveCfg = Debug|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|x86.Build.0 = Debug|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|Mixed Platforms.ActiveCfg = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|Mixed Platforms.Build.0 = Release|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|Win32.ActiveCfg = Release|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|x64.ActiveCfg = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|x86.ActiveCfg = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|x86.Build.0 = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|Mixed Platforms.Build.0 = Release|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|Win32.ActiveCfg = Release|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|x64.ActiveCfg = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|x86.ActiveCfg = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|x86.Build.0 = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|Mixed Platforms.Build.0 = Test|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|Win32.ActiveCfg = Test|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|x64.ActiveCfg = Test|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|x86.ActiveCfg = Test|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|x86.Build.0 = Test|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|Win32.ActiveCfg = Debug|Win32
                {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|x64.ActiveCfg = Debug|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|x86.ActiveCfg = Debug|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|x86.Build.0 = Debug|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|Mixed Platforms.ActiveCfg = Release|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|Mixed Platforms.Build.0 = Release|Win32
                {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|Win32.ActiveCfg = Release|Win32
                {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|x64.ActiveCfg = Release|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|x86.ActiveCfg = Release|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|x86.Build.0 = Release|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|Mixed Platforms.Build.0 = Release|Win32
                {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|Win32.ActiveCfg = Release|Win32
                {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|x64.ActiveCfg = Release|x64
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|x86.ActiveCfg = Release|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|x86.Build.0 = Release|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|Mixed Platforms.Build.0 = Test|Win32
                {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|Win32.ActiveCfg = Test|Win32
                {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|x64.ActiveCfg = Test|x64
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|x86.ActiveCfg = Test|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|x86.Build.0 = Test|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|Win32.ActiveCfg = Debug|Win32
                {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|x64.ActiveCfg = Debug|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|x86.ActiveCfg = Debug|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|x86.Build.0 = Debug|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|Mixed Platforms.ActiveCfg = Release|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|Mixed Platforms.Build.0 = Release|Win32
                {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|Win32.ActiveCfg = Release|Win32
                {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|x64.ActiveCfg = Release|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|x86.ActiveCfg = Release|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|x86.Build.0 = Release|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|Mixed Platforms.Build.0 = Release|Win32
                {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|Win32.ActiveCfg = Release|Win32
                {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|x64.ActiveCfg = Release|x64
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|x86.ActiveCfg = Release|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|x86.Build.0 = Release|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|Mixed Platforms.Build.0 = Test|Win32
                {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|Win32.ActiveCfg = Test|Win32
                {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|x64.ActiveCfg = Test|x64
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|x86.ActiveCfg = Test|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|x86.Build.0 = Test|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|Mixed Platforms.Build.0 = Debug|Win32
                {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|Win32.ActiveCfg = Debug|Win32
                {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|x64.ActiveCfg = Debug|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|x86.ActiveCfg = Debug|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|x86.Build.0 = Debug|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|Mixed Platforms.ActiveCfg = Release|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|Mixed Platforms.Build.0 = Release|Win32
                {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|Win32.ActiveCfg = Release|Win32
                {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|x64.ActiveCfg = Release|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|x86.ActiveCfg = Release|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|x86.Build.0 = Release|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|Mixed Platforms.Build.0 = Release|Win32
                {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|Win32.ActiveCfg = Release|Win32
                {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|x64.ActiveCfg = Release|x64
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|x86.ActiveCfg = Release|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|x86.Build.0 = Release|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Test|Mixed Platforms.Build.0 = Test|Win32
                {98BA115B-829F-4085-9729-ABD0D779A60A}.Test|Win32.ActiveCfg = Test|Win32
                {98BA115B-829F-4085-9729-ABD0D779A60A}.Test|x64.ActiveCfg = Test|x64
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Test|x86.ActiveCfg = Test|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Test|x86.Build.0 = Test|Win32
+               {BE211CE1-3955-4674-A664-5038FC791980}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Debug|Mixed Platforms.Build.0 = Debug|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Debug|Win32.ActiveCfg = Debug|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Debug|Win32.Build.0 = Debug|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Debug|x64.ActiveCfg = Debug|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Debug|x86.ActiveCfg = Debug|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Debug|x86.Build.0 = Debug|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|Mixed Platforms.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|Mixed Platforms.Build.0 = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|Win32.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|Win32.Build.0 = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|x64.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|x86.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|x86.Build.0 = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Release|Mixed Platforms.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Release|Mixed Platforms.Build.0 = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Release|Win32.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Release|x64.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Release|x86.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Release|x86.Build.0 = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Test|Mixed Platforms.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Test|Mixed Platforms.Build.0 = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Test|Win32.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Test|x64.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Test|x86.ActiveCfg = Release|x86
+               {BE211CE1-3955-4674-A664-5038FC791980}.Test|x86.Build.0 = Release|x86
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
index 00099a4aec0a2eb047112746d1bf111c647b7284..51cdf1e0bb044f13c82abdb167365dc77428f457 100644 (file)
@@ -1,9 +1,60 @@
 
+
 - restore only single input target to default.
 
+Beta 11:
+
+- 68000/010 CPU core merge accidentally removed 68000 CLR to memory and Scc to memory dummy read
+  -modify-write behavior.
+- Sometimes after autoswitch (unconfigured mouse left button press) mouse was configured correctly
+  but mouse input was kept disabled.
+- Using stick/dpad to autoswitch now requires move, release, move inside 0.5s window to prevent
+  accidental switches.
+- Some more autoswitch bugs fixed.
+- Switching bitplane DMA on just before DDFSTRT handling improved. (Saigon Megademo "Shir Khan" part)
+- 68030 + more compatible without cycle-exact was unstable.
+- Flush 68020/030 caches and refill prefetch buffers when switching CPU modes (cycle-exact/more compatible)
+  on the fly.
+- 68020 cycle-exact improvements.
+- Bitplane graphics was horizontally shifted if program switched from lores to hires less than 4 cycles
+  before bitplane DMA starts. (Chipset emulation was correct but drawing code saw invalid lores to hires
+  switch)
+- Stupid code fixed in CD image audio code that coud cause random crashes.
+- CD image audio start was delayed if audio was compressed (zip/mp3/flac/whatever) and start position
+  was at the very end of previous track.
+
+Beta 10:
+
+- B8 Blerkenwiegel workaround caused buffer overflows in some situations. Fix improved.
+- MoreNewStuffy fix (231b11) was not complete, non-modulo bitplane DMA fetches work
+  differently than modulo adding DMA fetches. (Alpha and Omega / PMC)
+- Also above behavior seems to only happen with first plane fetch. (New and Better Routines / Cult)
+  This needs more testing, someday.. 
+- '?' disk info button now opens normal dialog window, disk label also included (if dos disk) and
+  type of bootblock (1.x standard, 2.x+ standard, custom)
+- When loading config that has 2 identical game controllers configured in both ports and only one
+  controller is connected, connected controller was inserted in both ports.
+- GamePorts panel port change behavior improved, if new device is already inserted in other port,
+  device in other port is now always automatically changed, not the one you just changed.
+- When clicking mouse that is not inserted in either Amiga port and host system has only one mouse
+  connected, "Windows mouse" is inserted, not HID mouse.
+- 68020 more compatible without cycle-exact works again and also uses new 68020 CE prefetch method.
+- 68010 is now supported in more compatible and cycle-exact modes. New instructions supported and
+  new stack frames emulated but timing is same as 68000, 68010 special timing improvements and loop
+  mode is not emulated. At least not yet.
+- 68010 emulation used some 68020+ only exception stack frames.
+- FPU emulator now properly uses prefetch buffer emulation if more compatible or cycle-exact is
+  enabled. Emulated program crashed in older versions with some FPU instructions.
+- On the fly switching from fastest possible to prefetch ("more compatible") or CE didn't fill
+  prefetch buffers and usually caused emulated program to crash.
+- Added "Log window" checkbox to Paths panel, easier non-command line method to open log window.
+- On the fly change of A1000 Agnus or No-EHB Denise Advanced chipset didn't do anything.
+- A1000 Agnus and vertical bitplane start (DIWSTRT) of zero: nothing happens, bitplanes are
+  only enabled if it is 1 or larger.
+
 Beta 9:
 
-NOTE: 68020 CE mode can be used now.
+NOTE: 68020 CE mode should be usable again.
 
 - Added CIA tod bug option to Advanced chipset. Demo The end / Trilobit running under
   KS 1.3 has corruption in "photos" part if tod alarm bug is not emulated. KS 1.3 + real A500
@@ -43,6 +94,9 @@ all required hardware yet)
 Lots of work left to do but at least it should not be any worse than old code and it also should be
 much more accurate now when code has small loops (for example stupid CPU delays).
 
+If there are no demos or games that break or run really badly compared to 2.6.1, this is not anymore
+showstopper for 2.7.0 release.
+
 NOTE: 68030 can queue data memory accesses, this is not yet emulated.
 
 Beta 8:
index b8f016b503cb553bb8aa9863b393941aab0c1d59..ff9aa868de7392c6256317941f6c2ec696d978d3 100644 (file)
--- a/table68k
+++ b/table68k
 0100 1010 1111 1100:000:?????:?????:00: ILLEGAL
 
 0100 1100 00ss sSSS:200:-NZVC:-----:13: MULL.L  #1,s[!Areg]
+- 2 0 30 fiea
 0100 1100 01ss sSSS:200:?????:?????:13: DIVL.L  #1,s[!Areg]
+- 0 0 50 fiea
+
 0100 1100 10ss sSSS:000:-----:-----:01: MVMEL.W #1,s[!Dreg,Areg,Apdi,Immd]
 0100 1100 11ss sSSS:000:-----:-----:01: MVMEL.L #1,s[!Dreg,Areg,Apdi,Immd]
 0100 1110 0100 JJJJ:000:-----:XNZVC:10: TRAP    #J
 - 0 0 2 fea
 
 1000 rrr0 11ss sSSS:000:?????:?????:13: DIVU.W  s[Dreg],Dr
-- 2 0 30
+- 2 0 54
 1000 rrr0 11ss sSSS:000:?????:?????:13: DIVU.W  s[!Areg,Dreg],Dr
-- 0 0 30 fea
+- 0 0 54 fea
 
 1000 rrr1 00dd dDDD:000:XxZxC:X-Z--:13: SBCD.B  d[Dreg],Dr
 - 0 0 4
 - 2 1 11
 
 1000 rrr1 11ss sSSS:000:?????:?????:13: DIVS.W  s[Dreg],Dr
-- 2 0 40
+- 2 0 54
 1000 rrr1 11ss sSSS:000:?????:?????:13: DIVS.W  s[!Areg,Dreg],Dr
-- 0 0 40 fea
+- 0 0 54 fea
 
 1001 rrr0 zzss sSSS:000:XNZVC:-----:13: SUB.z   s[Areg,Dreg],Dr
 - 2 0 2
 1100 rrr0 zzss sSSS:000:-NZ00:-----:13: AND.z   s[!Areg,Dreg],Dr
 - 0 1 3 fea
 1100 rrr0 11ss sSSS:000:-NZ00:-----:13: MULU.W  s[!Areg],Dr
-- 2 0 20 fea
+- 2 0 25 fea
 
 1100 rrr1 00dd dDDD:000:XxZxC:X-Z--:13: ABCD.B  d[Dreg],Dr
 - 0 0 4
 1100 rrr1 10dd dDDD:000:-----:-----:33: EXG.L   Dr,d[Areg]      
 - 4 0 4
 1100 rrr1 11ss sSSS:000:-NZ00:-----:13: MULS.W  s[!Areg],Dr
-- 2 0 20 fea
+- 2 0 25 fea
 
 1101 rrr0 zzss sSSS:000:XNZVC:-----:13: ADD.z   s[Areg,Dreg],Dr
 - 2 0 2