]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc1200b1.zip
authorToni Wilen <twilen@winuae.net>
Sun, 27 Nov 2005 12:49:31 +0000 (14:49 +0200)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:27:19 +0000 (21:27 +0200)
34 files changed:
cfgfile.c
compemu_fpp.c
compemu_raw_x86.c
compemu_support.c
custom.c
disk.c
drawing.c
filesys.c
fpp.c
gfxutil.c
include/custom.h
include/options.h
inputdevice.c
memory.c
od-win32/avioutput.c
od-win32/build68k_msvc/build68k.rc [new file with mode: 0755]
od-win32/build68k_msvc/build68k_msvc.vcproj
od-win32/build68k_msvc/resource.h [new file with mode: 0755]
od-win32/direct3d.c
od-win32/dxwrap.c
od-win32/hardfile_win32.c
od-win32/lcd.c [new file with mode: 0755]
od-win32/lcd.h [new file with mode: 0755]
od-win32/md-fpp.h
od-win32/mman.c
od-win32/resources/resource.h
od-win32/resources/resource.hm
od-win32/resources/winuae.rc
od-win32/sysconfig.h
od-win32/win32.c
od-win32/win32.h
od-win32/win32gfx.c
od-win32/win32gui.c
od-win32/winuae_msvc/winuae_msvc.vcproj

index 796a4a85ae36bcec048e65aff045a69b28d8ba3b..780e5e8920754a636e3f368b7e2dca6a10a81cd4 100755 (executable)
--- a/cfgfile.c
+++ b/cfgfile.c
@@ -352,6 +352,7 @@ static void save_options (struct zfile *f, struct uae_prefs *p, int type)
     cfgfile_write (f, "gfx_refreshrate=%d\n", p->gfx_refreshrate);
     cfgfile_write (f, "gfx_vsync=%s\n", p->gfx_vsync ? "true" : "false");
     cfgfile_write (f, "gfx_lores=%s\n", p->gfx_lores ? "true" : "false");
+    cfgfile_write (f, "gfx_lores_mode=%s\n", p->gfx_lores_mode ? 1 : 0);
     cfgfile_write (f, "gfx_linemode=%s\n", linemode1[p->gfx_linedbl]);
     cfgfile_write (f, "gfx_correct_aspect=%s\n", p->gfx_correct_aspect ? "true" : "false");
     cfgfile_write (f, "gfx_fullscreen_amiga=%s\n", p->gfx_afullscreen ? "true" : "false");
@@ -677,6 +678,7 @@ static int cfgfile_parse_host (struct uae_prefs *p, char *option, char *value)
        || cfgfile_yesno (option, value, "filesys_no_fsdb", &p->filesys_no_uaefsdb)
        || cfgfile_yesno (option, value, "gfx_vsync", &p->gfx_vsync)
        || cfgfile_yesno (option, value, "gfx_lores", &p->gfx_lores)
+       || cfgfile_yesno (option, value, "gfx_lores_mode", &p->gfx_lores_mode)
        || cfgfile_yesno (option, value, "gfx_correct_aspect", &p->gfx_correct_aspect)
        || cfgfile_yesno (option, value, "gfx_fullscreen_amiga", &p->gfx_afullscreen)
        || cfgfile_yesno (option, value, "gfx_fullscreen_picasso", &p->gfx_pfullscreen)
index 795805e14ef89821b5c6f5c9e15a7d8fc6124cac..82e96df27c5fdef7cdb195ad99c6354828e45f40 100755 (executable)
@@ -5,7 +5,8 @@
   *
   * Copyright 1996 Herman ten Brugge
   * Adapted for JIT compilation (c) Bernd Meyer, 2000
-  */
+  * Modified 2005 Peter Keunecke
+ */
 
 #include <math.h>
 
 
 #define MAKE_FPSR(r) do { fmov_rr(FP_RESULT,r); } while (0)
 
-#define delay   //nop() ;nop()  
-#define delay2  //nop() ;nop()   
+#define delay   //nop() ;nop() /* Who tried this with the JIT ? */
+#define delay2  //nop() ;nop() /* the delays will have to emit( ;-) */
 
 uae_s32 temp_fp[3];  /* To convert between FP/integer */
 
+/* 128 words, indexed through the low byte of the 68k fpu control word */
+static uae_u16 x86_fpucw[]={
+    0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, /* p0r0 */
+    0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, /* p0r1 */
+    0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, /* p0r2 */
+    0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, /* p0r3 */
+
+    0x107f, 0x107f, 0x107f, 0x107f, 0x107f, 0x107f, 0x107f, 0x107f, /* p1r0 */
+    0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, /* p1r1 */
+    0x147f, 0x147f, 0x147f, 0x147f, 0x147f, 0x147f, 0x147f, 0x147f, /* p1r2 */
+    0x187f, 0x187f, 0x187f, 0x187f, 0x187f, 0x187f, 0x187f, 0x187f, /* p1r3 */
+
+    0x127f, 0x127f, 0x127f, 0x127f, 0x127f, 0x127f, 0x127f, 0x127f, /* p2r0 */
+    0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, /* p2r1 */
+    0x167f, 0x167f, 0x167f, 0x167f, 0x167f, 0x167f, 0x167f, 0x167f, /* p2r2 */
+    0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, /* p2r3 */
+
+    0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, /* p3r0 */
+    0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, /* p3r1 */
+    0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, /* p3r2 */
+    0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f  /* p3r3 */
+};
+
 /* return register number, or -1 for failure */
 STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra)
 {
@@ -97,7 +121,7 @@ STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra)
      case 4:
      case 5:
      case 6:
-       break; 
+       break;
      default:
        return -1;
     }
@@ -114,7 +138,7 @@ STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra)
        break;
      case 4:
        ad=S1;
-       
+
        lea_l_brr(reg+8,reg+8,-(reg == 7?sz2[size]:sz1[size]));
        mov_l_rr(ad,reg+8);
        break;
@@ -164,7 +188,7 @@ STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra)
            tmp = next_iword ();
            ad = get_disp_ea_020 (tmppc, tmp);
            break;
-        case 4: 
+        case 4:
         {
             uae_u32 address=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+
                 m68k_pc_offset;
@@ -260,24 +284,56 @@ STATIC_INLINE int put_fp_value (int val, uae_u32 opcode, uae_u16 extra)
     switch (mode) {
      case 0:
        switch (size) {
-        case 6:
+        case 6: /* FMOVE.B FPx, reg */
+#if USE_X86_FPUCW
+           if (!(regs.fpcr & 0xf0)) { /* if extended round to nearest */
+               mov_l_ri(S1,0x10); /* use extended round to zero mode */
+               fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
+               fmovi_mr((uae_u32)temp_fp,val);
+               mov_b_rm(reg,(uae_u32)temp_fp);
+               mov_l_rm(S1,(uae_u32)&regs.fpcr);
+               and_l_ri(S1,0xf0); /* restore control word */
+               fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
+               return 0;
+           }
+#endif
            fmovi_mr((uae_u32)temp_fp,val);
-           delay;
            mov_b_rm(reg,(uae_u32)temp_fp);
            return 0;
-        case 4:
+        case 4: /* FMOVE.W FPx, reg */
+#if USE_X86_FPUCW
+           if (!(regs.fpcr & 0xf0)) { /* if extended round to nearest */
+               mov_l_ri(S1,0x10); /* use extended round to zero mode */
+               fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
+               fmovi_mr((uae_u32)temp_fp,val);
+               mov_w_rm(reg,(uae_u32)temp_fp);
+               mov_l_rm(S1,(uae_u32)&regs.fpcr);
+               and_l_ri(S1,0xf0); /* restore control word */
+               fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
+               return 0;
+           }
+#endif
            fmovi_mr((uae_u32)temp_fp,val);
-           delay;
            mov_w_rm(reg,(uae_u32)temp_fp);
            return 0;
-        case 0:
+        case 0: /* FMOVE.L FPx, reg */
+#if USE_X86_FPUCW
+           if (!(regs.fpcr & 0xf0)) { /* if extended round to nearest */
+               mov_l_ri(S1,0x10); /* use extended round to zero mode */
+               fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
+               fmovi_mr((uae_u32)temp_fp,val);
+               mov_l_rm(reg,(uae_u32)temp_fp);
+               mov_l_rm(S1,(uae_u32)&regs.fpcr);
+               and_l_ri(S1,0xf0); /* restore control word */
+               fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
+               return 0;
+           }
+#endif
            fmovi_mr((uae_u32)temp_fp,val);
-           delay;
            mov_l_rm(reg,(uae_u32)temp_fp);
            return 0;
         case 1:
            fmovs_mr((uae_u32)temp_fp,val);
-           delay;
            mov_l_rm(reg,(uae_u32)temp_fp);
            return 0;
         default:
@@ -302,7 +358,7 @@ STATIC_INLINE int put_fp_value (int val, uae_u32 opcode, uae_u16 extra)
      default:
        return -1;
     }
-    
+
     switch (mode) {
      case 2:
        ad=S1;
@@ -523,28 +579,27 @@ void comp_fscc_opp (uae_u32 opcode, uae_u16 extra)
        return;
     }
     if ((opcode & 0x38) != 0) { /* We can only do to integer register */
-       FAIL(1); 
+       FAIL(1);
        return;
     }
 
     fflags_into_flags(S2);
     reg=(opcode&7);
-    
+
     mov_l_ri(S1,255);
     mov_l_ri(S4,0);
-    switch(extra&0x0f) {  /* according to fpp.c, the 0x10 bit is ignored
-                           */
+    switch(extra&0x0f) { /* according to fpp.c, the 0x10 bit is ignored */
      case 0: break;  /* set never */
-     case 1: mov_l_rr(S2,S4); 
-       cmov_l_rr(S4,S1,4); 
+     case 1: mov_l_rr(S2,S4);
+       cmov_l_rr(S4,S1,4);
        cmov_l_rr(S4,S2,10); break;
      case 2: cmov_l_rr(S4,S1,7); break;
      case 3: cmov_l_rr(S4,S1,3); break;
-     case 4: mov_l_rr(S2,S4); 
-       cmov_l_rr(S4,S1,2); 
+     case 4: mov_l_rr(S2,S4);
+       cmov_l_rr(S4,S1,2);
        cmov_l_rr(S4,S2,10); break;
-     case 5: mov_l_rr(S2,S4); 
-       cmov_l_rr(S4,S1,6); 
+     case 5: mov_l_rr(S2,S4);
+       cmov_l_rr(S4,S1,6);
        cmov_l_rr(S4,S2,10); break;
      case 6: cmov_l_rr(S4,S1,5); break;
      case 7: cmov_l_rr(S4,S1,11); break;
@@ -622,49 +677,49 @@ void comp_fbcc_opp (uae_u32 opcode)
     fflags_into_flags(S2);
 
     // mov_l_mi((uae_u32)&foink3,cc);
-    switch(cc) {  
+    switch(cc) {
      case 0: break;  /* jump never */
-     case 1: 
-       mov_l_rr(S2,PC_P); 
-       cmov_l_rr(PC_P,S1,4); 
+     case 1:
+       mov_l_rr(S2,PC_P);
+       cmov_l_rr(PC_P,S1,4);
        cmov_l_rr(PC_P,S2,10); break;
      case 2: register_branch(v1,v2,7); break;
      case 3: register_branch(v1,v2,3); break;
-     case 4: 
-       mov_l_rr(S2,PC_P); 
-       cmov_l_rr(PC_P,S1,2); 
+     case 4:
+       mov_l_rr(S2,PC_P);
+       cmov_l_rr(PC_P,S1,2);
        cmov_l_rr(PC_P,S2,10); break;
      case 5:
-       mov_l_rr(S2,PC_P); 
-       cmov_l_rr(PC_P,S1,6); 
+       mov_l_rr(S2,PC_P);
+       cmov_l_rr(PC_P,S1,6);
        cmov_l_rr(PC_P,S2,10); break;
      case 6: register_branch(v1,v2,5); break;
      case 7: register_branch(v1,v2,11); break;
      case 8: register_branch(v1,v2,10); break;
      case 9: register_branch(v1,v2,4); break;
-     case 10: 
-       cmov_l_rr(PC_P,S1,10); 
+     case 10:
+       cmov_l_rr(PC_P,S1,10);
        cmov_l_rr(PC_P,S1,7); break;
-     case 11: 
-       cmov_l_rr(PC_P,S1,4); 
+     case 11:
+       cmov_l_rr(PC_P,S1,4);
        cmov_l_rr(PC_P,S1,3); break;
      case 12: register_branch(v1,v2,2); break;
      case 13: register_branch(v1,v2,6); break;
-     case 14: 
-       cmov_l_rr(PC_P,S1,5); 
+     case 14:
+       cmov_l_rr(PC_P,S1,5);
        cmov_l_rr(PC_P,S1,10); break;
      case 15: mov_l_rr(PC_P,S1); break;
     }
 }
 
-    /* Floating point conditions 
+    /* Floating point conditions
        The "NotANumber" part could be problematic; Howver, when NaN is
        encountered, the ftst instruction sets bot N and Z to 1 on the x87,
        so quite often things just fall into place. This is probably not
        accurate wrt the 68k FPU, but it is *as* accurate as this was before.
        However, some more thought should go into fixing this stuff up so
        it accurately emulates the 68k FPU.
->=<U 
+>=<U
 0000    0x00: 0                        ---   Never jump
 0101    0x01: Z                        ---   jump if zero (x86: 4)
 1000    0x02: !(NotANumber || Z || N)  --- Neither Z nor N set (x86: 7)
@@ -686,7 +741,7 @@ This is not how the 68k handles things, though --- it sets Z to 0 and N
 to the NaN's sign.... ('o' and 'i' denote differences from the above
 table)
 
->=<U 
+>=<U
 0000    0x00: 0                        ---   Never jump
 010o    0x01: Z                        ---   jump if zero (x86: 4, not 10)
 1000    0x02: !(NotANumber || Z || N)  --- Neither Z nor N set (x86: 7)
@@ -708,7 +763,7 @@ Of course, this *still* doesn't mean that the x86 and 68k conditions are
 equivalent --- the handling of infinities is different, for one thing.
 On the 68k, +infinity minus +infinity is NotANumber (as it should be). On
 the x86, it is +infinity, and some exception is raised (which I suspect
-is promptly ignored) STUPID! 
+is promptly ignored) STUPID!
 The more I learn about their CPUs, the more I detest Intel....
 
 You can see this in action if you have "Benoit" (see Aminet) and
@@ -867,43 +922,18 @@ void comp_frestore_opp (uae_u32 opcode)
        m68k_areg (regs, opcode & 7) = ad;
 }
 
-static fptype       const_e=2.718281828459045235360;
-static fptype const_log10_e=0.434294481903251827651;
-static fptype const_loge_10=2.302585092994045684018;
-static fptype power10[]={1e0,1e1,1e2,1e4,1e8,1e16,1e32,1e64,1e128,1e256
-#if USE_LONG_DOUBLE
-,       1e512, 1e1024, 1e2048, 1e4096
-#endif
-};
-
-/* 128 words, indexed through the low byte of the 68k fpu control word */
-static uae_u16 x86_fpucw[]={
-    0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, /* p0r0 */
-    0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, /* p0r1 */
-    0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, /* p0r2 */
-    0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, /* p0r3 */
-
-    0x107f, 0x107f, 0x107f, 0x107f, 0x107f, 0x107f, 0x107f, 0x107f, /* p1r0 */
-    0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, /* p1r1 */
-    0x147f, 0x147f, 0x147f, 0x147f, 0x147f, 0x147f, 0x147f, 0x147f, /* p1r2 */
-    0x187f, 0x187f, 0x187f, 0x187f, 0x187f, 0x187f, 0x187f, 0x187f, /* p1r3 */
-
-    0x127f, 0x127f, 0x127f, 0x127f, 0x127f, 0x127f, 0x127f, 0x127f, /* p2r0 */
-    0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, /* p2r1 */
-    0x167f, 0x167f, 0x167f, 0x167f, 0x167f, 0x167f, 0x167f, 0x167f, /* p2r2 */
-    0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, /* p2r3 */
-
-    0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, /* p3r0 */
-    0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, /* p3r1 */
-    0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, /* p3r2 */
-    0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f  /* p3r3 */
-};
+extern uae_u32 *xhex_pi, *xhex_exp_1, *xhex_l2_e, *xhex_ln_2, *xhex_ln_10;
+extern uae_u32 *xhex_l10_2, *xhex_l10_e, *xhex_1e16, *xhex_1e32, *xhex_1e64;
+extern uae_u32 *xhex_1e128, *xhex_1e256, *xhex_1e512, *xhex_1e1024;
+extern uae_u32 *xhex_1e2048, *xhex_1e4096;
+extern double fp_1e8;
+extern float  fp_1e1, fp_1e2, fp_1e4;
 
 void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
 {
-    int reg;
-    int src;
-    
+    int dreg;
+    int sreg;
+
     if (!currprefs.compfpu) {
        FAIL(1);
        return;
@@ -916,7 +946,7 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
        }
        return;
      case 6:
-     case 7: 
+     case 7:
        {
            uae_u32 ad, list = 0;
            int incr = 0;
@@ -929,7 +959,7 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
                 case 2:
                    break;
                 case 1:
-                case 3: 
+                case 3:
                 default:
                    FAIL(1); return;
                }
@@ -943,16 +973,16 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
                    return;
                }
                switch ((extra >> 11) & 3) {
-               case 0: /* static pred */
+               case 0: /* static pred */
                    list = extra & 0xff;
                    incr = -1;
                    break;
-               case 2: /* static postinc */
+               case 2: /* static postinc */
                    list = extra & 0xff;
                    incr = 1;
                    break;
-               case 1: /* dynamic pred */
-               case 3: /* dynamic postinc */
+               case 1: /* dynamic pred */
+               case 3: /* dynamic postinc */
                   abort();
                }
                while (list) {
@@ -960,13 +990,13 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
                    if (incr < 0) { /* Predecrement */
                        fmov_ext_mr((uae_u32)temp_fp,fpp_movem_index2[list]);
                        delay;
-                       sub_l_ri(ad,4); 
+                       sub_l_ri(ad,4);
                        mov_l_rm(S2,(uae_u32)temp_fp);
                        writelong_clobber(ad,S2,S3);
-                       sub_l_ri(ad,4); 
+                       sub_l_ri(ad,4);
                        mov_l_rm(S2,(uae_u32)temp_fp+4);
                        writelong_clobber(ad,S2,S3);
-                       sub_l_ri(ad,4); 
+                       sub_l_ri(ad,4);
                        mov_w_rm(S2,(uae_u32)temp_fp+8);
                        writeword_clobber(ad,S2,S3);
                    } else { /* postinc */
@@ -997,7 +1027,7 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
                 case 2:
                    break;
                 case 1:
-                case 3: 
+                case 3:
                 default:
                    FAIL(1); return;
                }
@@ -1011,16 +1041,16 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
                    return;
                }
                switch ((extra >> 11) & 3) {
-               case 0: /* static pred */
+               case 0: /* static pred */
                    list = extra & 0xff;
                    incr = -1;
                    break;
-               case 2: /* static postinc */
+               case 2: /* static postinc */
                    list = extra & 0xff;
                    incr = 1;
                    break;
-               case 1: /* dynamic pred */
-               case 3: /* dynamic postinc */
+               case 1: /* dynamic pred */
+               case 3: /* dynamic postinc */
                   abort();
                }
 
@@ -1077,12 +1107,12 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
                }
            } else {
                if (extra & 0x1000) {
-                   mov_l_mr((uae_u32)&regs.fpcr,opcode & 15); 
+                   mov_l_mr((uae_u32)&regs.fpcr,opcode & 15);
 #if USE_X86_FPUCW
                    mov_l_rr(S1,opcode & 15);
-                   and_l_ri(S1,0x000000f0);
+                   and_l_ri(S1,0xf0);
                    fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
-#endif             
+#endif
                    return;
                }
                if (extra & 0x0800) {
@@ -1100,9 +1130,9 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
                    uae_u32 val=comp_get_ilong((m68k_pc_offset+=4)-4);
                    mov_l_mi((uae_u32)&regs.fpcr,val);
 #if USE_X86_FPUCW
-                   mov_l_ri(S1,val&0x000000f0);
+                   mov_l_ri(S1,val&0xf0);
                    fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
-#endif             
+#endif
                    return;
                }
                if (extra & 0x0800) {
@@ -1129,443 +1159,303 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
 
      case 0:
      case 2: /* Extremely common */
-       reg = (extra >> 7) & 7;
+       dreg = (extra >> 7) & 7;
        if ((extra & 0xfc00) == 0x5c00) {
-           switch (extra & 0x7f) {
+          //write_log ("JIT FMOVECR %x\n", extra & 0x7f);
+          dont_care_fflags();
+          switch (extra & 0x7f) {
             case 0x00:
-               fmov_pi(reg);
+               fmov_pi(dreg);
                break;
             case 0x0b:
-               fmov_log10_2(reg);
+               fmov_log10_2(dreg);
                break;
             case 0x0c:
-               fmov_rm(reg,(uae_u32)&const_e);
+               fmov_ext_rm(dreg,&xhex_exp_1);
                break;
             case 0x0d:
-               fmov_log2_e(reg);
+               fmov_log2_e(dreg);
                break;
             case 0x0e:
-               fmov_rm(reg,(uae_u32)&const_log10_e);
+               fmov_ext_rm(dreg,&xhex_l10_e);
                break;
             case 0x0f:
-               fmov_0(reg);
+               fmov_0(dreg);
                break;
             case 0x30:
-               fmov_loge_2(reg);
+               fmov_loge_2(dreg);
                break;
             case 0x31:
-               fmov_rm(reg,(uae_u32)&const_loge_10);
+               fmov_ext_rm(dreg,&xhex_ln_10);
                break;
             case 0x32:
-               fmov_1(reg);
+               fmov_1(dreg);
                break;
             case 0x33:
+               fmovs_rm(dreg,&fp_1e1);
+               break;
             case 0x34:
+               fmovs_rm(dreg,&fp_1e2);
+               break;
             case 0x35:
+               fmovs_rm(dreg,&fp_1e4);
+               break;
             case 0x36:
+               fmov_rm(dreg,&fp_1e8);
+               break;
             case 0x37:
+               fmov_ext_rm(dreg,&xhex_1e16);
+               break;
             case 0x38:
+               fmov_ext_rm(dreg,&xhex_1e32);
+               break;
             case 0x39:
+               fmov_ext_rm(dreg,&xhex_1e64);
+               break;
             case 0x3a:
+               fmov_ext_rm(dreg,&xhex_1e128);
+               break;
             case 0x3b:
-               fmov_rm(reg,(uae_u32)(power10+(extra & 0x7f)-0x32));
+               fmov_ext_rm(dreg,&xhex_1e256);
+               break;
+            case 0x3c:
+               fmov_ext_rm(dreg,&xhex_1e512);
+               break;
+            case 0x3d:
+               fmov_ext_rm(dreg,&xhex_1e1024);
+               break;
+            case 0x3e:
+               fmov_ext_rm(dreg,&xhex_1e2048);
+               break;
+            case 0x3f:
+               fmov_ext_rm(dreg,&xhex_1e4096);
                break;
             default:
-               /* This is not valid, so we fail */
                FAIL(1);
                return;
            }
+           MAKE_FPSR (dreg);
            return;
        }
-       
+
        switch (extra & 0x7f) {
-        case 0x00:             /* FMOVE */
-        case 0x40:  /* Explicit rounding. This is just a quick fix. Same
-                     * for all other cases that have three choices */
-        case 0x44:   
+        case 0x00: /* FMOVE */
+        case 0x40:
+        case 0x44:
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fmov_rr(reg,src);
-           MAKE_FPSR (src);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fmov_rr(dreg,sreg);
            break;
-        case 0x01:             /* FINT */
+        case 0x01: /* FINT */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           frndint_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           frndint_rr(dreg,sreg);
            break;
-        case 0x02:             /* FSINH */
+        case 0x02: /* FSINH */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fsinh_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fsinh_rr(dreg,sreg);
            break;
-        case 0x03:             /* FINTRZ */
-#if USE_X86_FPUCW 
+        case 0x03: /* FINTRZ */
+#if USE_X86_FPUCW
            /* If we have control over the CW, we can do this */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           if ((regs.fpcr & 0x30) == 0x10) /* maybe unsafe, because this test is done */
+               frndint_rr(dreg,sreg); /* during the JIT compilation and not at runtime */
+           else {
+               mov_l_ri(S1,(regs.fpcr & 0xC0) | 0x10); /* use round to zero */
+               fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
+               frndint_rr(dreg,sreg);
+               mov_l_rm(S1,(uae_u32)&regs.fpcr);
+               and_l_ri(S1,0xf0); /* restore control word */
+               fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
            }
-           mov_l_ri(S1,16);  /* Switch to "round to zero" mode */
-           fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
-           
-           frndint_rr(reg,src);
-
-           /* restore control word */
-           mov_l_rm(S1,(uae_u32)&regs.fpcr); 
-           and_l_ri(S1,0x000000f0);
-           fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
-
-           MAKE_FPSR (reg);
            break;
-#endif             
-           FAIL(1);  
+#endif
+           FAIL(1);
            return;
-           regs.fp[reg] = (int) src;
-           MAKE_FPSR (regs.fp[reg]);
-           break;
-        case 0x04:             /* FSQRT */
+        case 0x04: /* FSQRT */
         case 0x41:
         case 0x45:
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fsqrt_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fsqrt_rr(dreg,sreg);
            break;
-        case 0x06:             /* FLOGNP1 */
+        case 0x06: /* FLOGNP1 */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           flogNP1_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           flogNP1_rr(dreg,sreg);
            break;
-        case 0x08:             /* FETOXM1 */
+        case 0x08: /* FETOXM1 */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fetoxM1_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fetoxM1_rr(dreg,sreg);
            break;
-        case 0x09:             /* FTANH */
+        case 0x09: /* FTANH */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           ftanh_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           ftanh_rr(dreg,sreg);
            break;
-        case 0x0a:             /* FATAN */
+        case 0x0a: /* FATAN */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fatan_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fatan_rr(dreg,sreg);
            break;
-        case 0x0c:             /* FASIN */
+        case 0x0c: /* FASIN */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fasin_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fasin_rr(dreg,sreg);
            break;
-        case 0x0d:             /* FATANH */
+        case 0x0d: /* FATANH */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fatanh_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fatanh_rr(dreg,sreg);
            break;
-        case 0x0e:             /* FSIN */
+        case 0x0e: /* FSIN */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fsin_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fsin_rr(dreg,sreg);
            break;
-        case 0x0f:             /* FTAN */
+        case 0x0f: /* FTAN */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           ftan_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           ftan_rr(dreg,sreg);
            break;
-        case 0x10:             /* FETOX */
+        case 0x10: /* FETOX */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fetox_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fetox_rr(dreg,sreg);
            break;
-        case 0x11:             /* FTWOTOX */
+        case 0x11: /* FTWOTOX */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           ftwotox_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           ftwotox_rr(dreg,sreg);
            break;
-        case 0x12:             /* FTENTOX */
+        case 0x12: /* FTENTOX */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           ftentox_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           ftentox_rr(dreg,sreg);
            break;
-        case 0x14:             /* FLOGN */
+        case 0x14: /* FLOGN */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           flogN_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           flogN_rr(dreg,sreg);
            break;
-
-        case 0x15:             /* FLOG10 */
+        case 0x15: /* FLOG10 */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           flog10_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           flog10_rr(dreg,sreg);
            break;
-
-        case 0x16:             /* FLOG2 */
+        case 0x16: /* FLOG2 */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           flog2_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           flog2_rr(dreg,sreg);
            break;
-        case 0x18:             /* FABS */
+        case 0x18: /* FABS */
         case 0x58:
         case 0x5c:
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fabs_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fabs_rr(dreg,sreg);
            break;
-        case 0x19:             /* FCOSH */
+        case 0x19: /* FCOSH */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fcosh_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fcosh_rr(dreg,sreg);
            break;
-        case 0x1a:             /* FNEG */
+        case 0x1a: /* FNEG */
         case 0x5a:
         case 0x5e:
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fneg_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fneg_rr(dreg,sreg);
            break;
-        case 0x1c:             /* FACOS */
+        case 0x1c: /* FACOS */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+#if USE_X86_FPUCW
+           if ((regs.fpcr & 0x30) != 0x10) {
+               mov_l_ri(S1,(regs.fpcr & 0xC0) | 0x10); /* use round to zero */
+               fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
+               facos_rr(dreg,sreg);
+               mov_l_rm(S1,(uae_u32)&regs.fpcr);
+               and_l_ri(S1,0xf0); /* restore control word */
+               fldcw_m_indexed(S1,(uae_u32)x86_fpucw);
+               break;
            }
-           facos_rr(reg,src);
-           MAKE_FPSR (reg);
+#endif
+           facos_rr(dreg,sreg);
            break;
-        case 0x1d:             /* FCOS */
+        case 0x1d: /* FCOS */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fcos_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fcos_rr(dreg,sreg);
            break;
-        case 0x1e:             /* FGETEXP */
+        case 0x1e: /* FGETEXP */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fgetexp_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fgetexp_rr(dreg,sreg);
            break;
-        case 0x1f:             /* FGETMAN */
+        case 0x1f: /* FGETMAN */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fgetman_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fgetman_rr(dreg,sreg);
            break;
-        case 0x20:             /* FDIV */
+        case 0x20: /* FDIV */
         case 0x60:
         case 0x64:
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fdiv_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fdiv_rr(dreg,sreg);
            break;
-        case 0x21:             /* FMOD */
+        case 0x21: /* FMOD */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           frem_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           frem_rr(dreg,sreg);
            break;
-        case 0x22:             /* FADD */
+        case 0x22: /* FADD */
         case 0x62:
         case 0x66:
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fadd_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fadd_rr(dreg,sreg);
            break;
-        case 0x23:             /* FMUL */
+        case 0x23: /* FMUL */
         case 0x63:
         case 0x67:
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fmul_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fmul_rr(dreg,sreg);
            break;
-        case 0x24:             /* FSGLDIV */
+        case 0x24: /* FSGLDIV */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fdiv_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fdiv_rr(dreg,sreg);
            break;
-        case 0x25:             /* FREM */
+        case 0x25: /* FREM */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           frem1_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           frem1_rr(dreg,sreg);
            break;
-        case 0x26:             /* FSCALE */
+        case 0x26: /* FSCALE */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fscale_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fscale_rr(dreg,sreg);
            break;
-        case 0x27:             /* FSGLMUL */
+        case 0x27: /* FSGLMUL */
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fmul_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fmul_rr(dreg,sreg);
            break;
-        case 0x28:             /* FSUB */
+        case 0x28: /* FSUB */
         case 0x68:
         case 0x6c:
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fsub_rr(reg,src);
-           MAKE_FPSR (reg);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fsub_rr(dreg,sreg);
            break;
-        case 0x30:             /* FSINCOS */
+        case 0x30: /* FSINCOS */
         case 0x31:
         case 0x32:
         case 0x33:
@@ -1574,43 +1464,29 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
         case 0x36:
         case 0x37:
            dont_care_fflags();
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           if (reg == (extra & 7))
-               fsin_rr(reg, src);
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           if (dreg == (extra & 7))
+               fsin_rr(dreg, sreg);
            else
-               fsincos_rr(reg, extra & 7, src);
-           MAKE_FPSR (reg);
-           break;
-        case 0x38:             /* FCMP */
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fmov_rr(FP_RESULT,reg);
-           fsub_rr(FP_RESULT,src); /* Right way? */
-           break;
-        case 0x3a:             /* FTST */
-           src=get_fp_value (opcode, extra);
-           if (src < 0) {
-               FAIL(1);  /* Illegal instruction */
-               return;
-           }
-           fmov_rr(FP_RESULT,src);
+               fsincos_rr(dreg, extra & 7, sreg);
            break;
+        case 0x38: /* FCMP */
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fmov_rr(FP_RESULT,dreg);
+           fsub_rr(FP_RESULT,sreg); /* Right way? */
+           return;
+        case 0x3a: /* FTST */
+           if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;}
+           fmov_rr(FP_RESULT,sreg);
+           return;
         default:
-           FAIL(1);  
+           FAIL(1);
            return;
-           break;
        }
+       MAKE_FPSR (dreg);
        return;
     }
     m68k_setpc (m68k_getpc () - 4);
     op_illg (opcode);
 }
-
 #endif
index 049f8eebe7f401553b63c705a7b7ea15e14ac45b..e06cc39dc918fe9a193966363c721ca9b9e74854 100755 (executable)
@@ -2526,7 +2526,7 @@ static void raw_init_cpu(void)
   c->x86_model = c->x86_mask = 0;      /* So far unknown... */
   c->x86_vendor_id[0] = '\0';          /* Unset */
   c->x86_hwcap = 0;
-  
+
   /* Get vendor name */
   c->x86_vendor_id[12] = '\0';
   cpuid(0x00000000,
@@ -2568,7 +2568,7 @@ static void raw_init_cpu(void)
          }
        }
   }
-         
+
   /* Canonicalize processor ID */
   switch (c->x86) {
   case 3:
@@ -3049,14 +3049,13 @@ LOWFUNC(NONE,NONE,2,raw_fmov_rr,(FW d, FR s))
 }
 LENDFUNC(NONE,NONE,2,raw_fmov_rr,(FW d, FR s))
 
-LOWFUNC(NONE,READ,4,raw_fldcw_m_indexed,(R4 index, IMM base))
+LOWFUNC(NONE,READ,2,raw_fldcw_m_indexed,(R4 index, IMM base))
 {
     emit_byte(0xd9);
     emit_byte(0xa8+index);
     emit_long(base);
 }
-LENDFUNC(NONE,READ,4,raw_fldcw_m_indexed,(R4 index, IMM base))
-
+LENDFUNC(NONE,READ,2,raw_fldcw_m_indexed,(R4 index, IMM base))
 
 LOWFUNC(NONE,NONE,2,raw_fsqrt_rr,(FW d, FR s))
 {
@@ -3500,29 +3499,33 @@ LOWFUNC(NONE,NONE,2,raw_fasin_rr,(FW d, FR s))
 }
 LENDFUNC(NONE,NONE,2,raw_fasin_rr,(FW d, FR s))
 
+static uae_u32 pihalf[] = {0x2168c234, 0xc90fdaa2, 0x3fff}; // LSB=0 to get acos(1)=0
 LOWFUNC(NONE,NONE,2,raw_facos_rr,(FW d, FR s))
 {
     int ds;
 
     ds=stackpos(s);
     emit_byte(0xd9);
-    emit_byte(0xe8);    /* fld 1.0 */
-    emit_byte(0xd9);
-    emit_byte(0xc1+ds); /* fld x */
+    emit_byte(0xc0+ds); /* fld x */
     emit_byte(0xd8);
     emit_byte(0xc8);    /* fmul x*x */
-    emit_byte(0xd8);
-    emit_byte(0xe9);    /* fsubr 1 - (x^2) */
+    emit_byte(0xd9);
+    emit_byte(0xe8);    /* fld 1.0 */
+    emit_byte(0xde);
+    emit_byte(0xe1);    /* fsubrp 1 - (x^2) */
     emit_byte(0xd9);
     emit_byte(0xfa);    /* fsqrt sqrt(1-(x^2)) */
     emit_byte(0xd9);
-    emit_byte(0xc9);    /* fxch swap with 1.0 */
-    emit_byte(0xd8);
-    emit_byte(0xc2+ds); /* fadd 1 + x */
+    emit_byte(0xc1+ds); /* fld x again */
     emit_byte(0xd9);
-    emit_byte(0xf3);    /* fpatan atan(sqrt(1-(x^2))/(1+x))  & pop */
-    emit_byte(0xd8);
-    emit_byte(0xc0);    /* fadd  2*atan(sqrt(1-(x^2))/(1+x)) */
+    emit_byte(0xc9);    /* fxch swap x with sqrt(1-(x^2))  */
+    emit_byte(0xd9);
+    emit_byte(0xf3);    /* fpatan atan(x/sqrt(1-(x^2))) & pop */
+    emit_byte(0xdb);
+    emit_byte(0x2d);
+    emit_long((uae_u32)&pihalf); /* fld load pi/2 from pihalf */
+    emit_byte(0xde);
+    emit_byte(0xe1);    /* fsubrp pi/2 - asin(x) & pop */
     tos_make(d);        /* store y=acos(x) */
 }
 LENDFUNC(NONE,NONE,2,raw_facos_rr,(FW d, FR s))
index 88af2db471cb5901dd8bfa160d848dcc7b43222e..343e823eb668c632952bd66423beefbed586995b 100755 (executable)
@@ -4502,7 +4502,6 @@ MIDFUNC(2,fmul_rr,(FRW d, FR s))
 }
 MENDFUNC(2,fmul_rr,(FRW d, FR s))
 
-
 /********************************************************************
  * Support functions exposed to gencomp. CREATE time                *
  ********************************************************************/
index 579c90f7f6f15ec65a6fe78eadaf628df55aa62a..9d186c9b61f16ae435541ca55c5883d7d7990258 100755 (executable)
--- a/custom.c
+++ b/custom.c
@@ -10,9 +10,9 @@
 
 //#define CUSTOM_DEBUG
 #define SPRITE_DEBUG 0
-#define SPRITE_DEBUG_MINY 0
-#define SPRITE_DEBUG_MAXY 100
-//#define SPRITE_MASK 0
+#define SPRITE_DEBUG_MINY 0x6a
+#define SPRITE_DEBUG_MAXY 0x70
+//#define SPRITE_MASK 128
 #define SPRITE_MASK (1|2|4|8|16|32|64|128)
 #define SPR0_HPOS 0x15
 #define MAX_SPRITES 8
diff --git a/disk.c b/disk.c
index 4c3dfdca517037dcb7be20fab76cc4edf9c03bf7..767b9f6988258a7fc17dfdb5a9cdab97bc959374 100755 (executable)
--- a/disk.c
+++ b/disk.c
@@ -2032,7 +2032,7 @@ static int disk_sync_cycle;
 
 void DISK_handler (void)
 {
-    int i, flag = diskevent_flag;
+    int flag = diskevent_flag;
     eventtab[ev_disk].active = 0;
     DISK_update (disk_sync_cycle);
     if (flag & (DISK_REVOLUTION << 0))
@@ -2049,6 +2049,8 @@ void DISK_handler (void)
     if (flag & DISK_INDEXSYNC) {
        cia_diskindex ();
 #if 0
+       {   
+       int i;
        for (i = 0; i < MAX_FLOPPY_DRIVES; i++) {
            drive *drv = &floppy[i];
            if (drv->dskready_time) {
@@ -2060,6 +2062,7 @@ void DISK_handler (void)
                }
            }
        }
+       }
 #endif
     }
 }
index 7e9b2be17ab8582fcdb38e442a30c4edda9ac074..9074333985badac701a069af532675cbac9f7399 100755 (executable)
--- a/drawing.c
+++ b/drawing.c
@@ -97,6 +97,9 @@ static int dblpf_ind1_aga[256], dblpf_ind2_aga[256];
 static uae_u8 spriteagadpfpixels[1];
 static int dblpf_ind1_aga[1], dblpf_ind2_aga[1];
 #endif
+int xredcolor_s, xredcolor_b, xredcolor_m;
+int xgreencolor_s, xgreencolor_b, xgreencolor_m;
+int xbluecolor_s, xbluecolor_b, xbluecolor_m;
 
 struct color_entry colors_for_drawing;
 
@@ -353,23 +356,53 @@ static void pfield_init_linetoscr (void)
     }
 }
 
+static uae_u8 merge_2pixel8(uae_u8 p1, uae_u8 p2)
+{
+    return p1;
+}
+static uae_u16 merge_2pixel16(uae_u16 p1, uae_u16 p2)
+{
+    uae_u16 v = ((((p1 >> xredcolor_s) & xredcolor_m) + ((p2 >> xredcolor_s) & xredcolor_m)) / 2) << xredcolor_s;
+    v |= ((((p1 >> xbluecolor_s) & xbluecolor_m) + ((p2 >> xbluecolor_s) & xbluecolor_m)) / 2) << xbluecolor_s;
+    v |= ((((p1 >> xgreencolor_s) & xgreencolor_m) + ((p2 >> xgreencolor_s) & xgreencolor_m)) / 2) << xgreencolor_s;
+    return v;
+}
+static uae_u32 merge_2pixel32(uae_u32 p1, uae_u32 p2)
+{
+    uae_u32 v = ((((p1 >> 16) & 0xff) + ((p2 >> 16) & 0xff)) / 2) << 16;
+    v |= ((((p1 >> 8) & 0xff) + ((p2 >> 8) & 0xff)) / 2) << 8;
+    v |= ((((p1 >> 0) & 0xff) + ((p2 >> 0) & 0xff)) / 2) << 0;
+    return v;
+}
+
 /* If C++ compilers didn't suck, we'd use templates.  */
 
 #define TYPE uae_u8
+#define PMERGE merge_2pixel8
+
 #define LNAME linetoscr_8
 #define SRC_INC 1
 #define HDOUBLE 0
 #define AGAC 0
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_8_stretch1
 #define SRC_INC 1
 #define HDOUBLE 1
 #define AGAC 0
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_8_shrink1
 #define SRC_INC 2
 #define HDOUBLE 0
 #define AGAC 0
+#define HMERGE 0
+#include "linetoscr.c"
+#define LNAME linetoscr_8_shrink2
+#define SRC_INC 2
+#define HDOUBLE 0
+#define AGAC 0
+#define HMERGE 1
 #include "linetoscr.c"
 
 #ifdef AGA
@@ -377,36 +410,56 @@ static void pfield_init_linetoscr (void)
 #define SRC_INC 1
 #define HDOUBLE 0
 #define AGAC 1
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_8_stretch1_aga
 #define SRC_INC 1
 #define HDOUBLE 1
 #define AGAC 1
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_8_shrink1_aga
 #define SRC_INC 2
 #define HDOUBLE 0
 #define AGAC 1
+#define HMERGE 0
+#include "linetoscr.c"
+#define LNAME linetoscr_8_shrink2_aga
+#define SRC_INC 2
+#define HDOUBLE 0
+#define AGAC 1
+#define HMERGE 1
 #include "linetoscr.c"
 #endif
 
 #undef TYPE
-
+#undef PMERGE
 #define TYPE uae_u16
+#define PMERGE merge_2pixel16
+
 #define LNAME linetoscr_16
 #define SRC_INC 1
 #define HDOUBLE 0
 #define AGAC 0
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_16_stretch1
 #define SRC_INC 1
 #define HDOUBLE 1
 #define AGAC 0
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_16_shrink1
 #define SRC_INC 2
 #define HDOUBLE 0
 #define AGAC 0
+#define HMERGE 0
+#include "linetoscr.c"
+#define LNAME linetoscr_16_shrink2
+#define SRC_INC 2
+#define HDOUBLE 0
+#define AGAC 0
+#define HMERGE 1
 #include "linetoscr.c"
 
 #ifdef AGA
@@ -414,36 +467,56 @@ static void pfield_init_linetoscr (void)
 #define SRC_INC 1
 #define HDOUBLE 0
 #define AGAC 1
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_16_stretch1_aga
 #define SRC_INC 1
 #define HDOUBLE 1
 #define AGAC 1
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_16_shrink1_aga
 #define SRC_INC 2
 #define HDOUBLE 0
 #define AGAC 1
+#define HMERGE 0
+#include "linetoscr.c"
+#define LNAME linetoscr_16_shrink2_aga
+#define SRC_INC 2
+#define HDOUBLE 0
+#define AGAC 1
+#define HMERGE 1
 #include "linetoscr.c"
 #endif
 
 #undef TYPE
-
+#undef PMERGE
 #define TYPE uae_u32
+#define PMERGE merge_2pixel32
+
 #define LNAME linetoscr_32
 #define SRC_INC 1
 #define HDOUBLE 0
 #define AGAC 0
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_32_stretch1
 #define SRC_INC 1
 #define HDOUBLE 1
 #define AGAC 0
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_32_shrink1
 #define SRC_INC 2
 #define HDOUBLE 0
 #define AGAC 0
+#define HMERGE 0
+#include "linetoscr.c"
+#define LNAME linetoscr_32_shrink2
+#define SRC_INC 2
+#define HDOUBLE 0
+#define AGAC 0
+#define HMERGE 1
 #include "linetoscr.c"
 
 #ifdef AGA
@@ -451,16 +524,25 @@ static void pfield_init_linetoscr (void)
 #define SRC_INC 1
 #define HDOUBLE 0
 #define AGAC 1
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_32_stretch1_aga
 #define SRC_INC 1
 #define HDOUBLE 1
 #define AGAC 1
+#define HMERGE 0
 #include "linetoscr.c"
 #define LNAME linetoscr_32_shrink1_aga
 #define SRC_INC 2
 #define HDOUBLE 0
 #define AGAC 1
+#define HMERGE 0
+#include "linetoscr.c"
+#define LNAME linetoscr_32_shrink2_aga
+#define SRC_INC 2
+#define HDOUBLE 0
+#define AGAC 1
+#define HMERGE 1
 #include "linetoscr.c"
 #endif
 
@@ -563,10 +645,18 @@ static void pfield_do_linetoscr (int start, int stop)
            case 4: src_pixel = linetoscr_32_stretch1_aga (src_pixel, start, stop); break;
            }
        else if (res_shift < 0)
-           switch (gfxvidinfo.pixbytes) {
-           case 1: src_pixel = linetoscr_8_shrink1_aga (src_pixel, start, stop); break;
-           case 2: src_pixel = linetoscr_16_shrink1_aga (src_pixel, start, stop); break;
-           case 4: src_pixel = linetoscr_32_shrink1_aga (src_pixel, start, stop); break;
+           if (currprefs.gfx_lores_mode) {
+               switch (gfxvidinfo.pixbytes) {
+               case 1: src_pixel = linetoscr_8_shrink2_aga (src_pixel, start, stop); break;
+               case 2: src_pixel = linetoscr_16_shrink2_aga (src_pixel, start, stop); break;
+               case 4: src_pixel = linetoscr_32_shrink2_aga (src_pixel, start, stop); break;
+               }
+           } else {
+               switch (gfxvidinfo.pixbytes) {
+               case 1: src_pixel = linetoscr_8_shrink1_aga (src_pixel, start, stop); break;
+               case 2: src_pixel = linetoscr_16_shrink1_aga (src_pixel, start, stop); break;
+               case 4: src_pixel = linetoscr_32_shrink1_aga (src_pixel, start, stop); break;
+               }
            }
     } else {
 #endif
@@ -583,10 +673,18 @@ static void pfield_do_linetoscr (int start, int stop)
            case 4: src_pixel = linetoscr_32_stretch1 (src_pixel, start, stop); break;
            }
        else if (res_shift < 0)
-           switch (gfxvidinfo.pixbytes) {
-           case 1: src_pixel = linetoscr_8_shrink1 (src_pixel, start, stop); break;
-           case 2: src_pixel = linetoscr_16_shrink1 (src_pixel, start, stop); break;
-           case 4: src_pixel = linetoscr_32_shrink1 (src_pixel, start, stop); break;
+           if (currprefs.gfx_lores_mode) {
+               switch (gfxvidinfo.pixbytes) {
+               case 1: src_pixel = linetoscr_8_shrink2 (src_pixel, start, stop); break;
+               case 2: src_pixel = linetoscr_16_shrink2 (src_pixel, start, stop); break;
+               case 4: src_pixel = linetoscr_32_shrink2 (src_pixel, start, stop); break;
+               }
+           } else {
+               switch (gfxvidinfo.pixbytes) {
+               case 1: src_pixel = linetoscr_8_shrink1 (src_pixel, start, stop); break;
+               case 2: src_pixel = linetoscr_16_shrink1 (src_pixel, start, stop); break;
+               case 4: src_pixel = linetoscr_32_shrink1 (src_pixel, start, stop); break;
+               }
            }
 #ifdef AGA
     }
index 9b3447f7f19dc9562621923e889fcd0307916f03..ccce418807e24ba18de609c144e2d3bd18faccf3 100755 (executable)
--- a/filesys.c
+++ b/filesys.c
@@ -3871,14 +3871,14 @@ static int rdb_mount (UnitInfo *uip, int unit_no, int partnum, uaecptr parmpacke
     int oldversion, oldrevision;
     int newversion, newrevision;
 
-    if (lastblock * hfd->blocksize > hfd->size) {
-       rdbmnt
-       write_log("failed, too small (%d*%d > %I64u)\n", lastblock, hfd->blocksize, hfd->size);
-       return -2;
-    }
     if (hfd->blocksize == 0) {
        rdbmnt
        write_log("failed, blocksize == 0\n");
+       return -1;
+    }
+    if (lastblock * hfd->blocksize > hfd->size) {
+       rdbmnt
+       write_log("failed, too small (%d*%d > %I64u)\n", lastblock, hfd->blocksize, hfd->size);
        return -2;
     }
     for (rdblock = 0; rdblock < lastblock; rdblock++) {
diff --git a/fpp.c b/fpp.c
index 31c0560ae725346bb9f77f93a09c31a25c3d9544..78bce48e3f03384e090c6a75588140e90c28861a 100755 (executable)
--- a/fpp.c
+++ b/fpp.c
@@ -4,7 +4,8 @@
   * MC68881 emulation
   *
   * Copyright 1996 Herman ten Brugge
-  */
+  * Modified 2005 Peter Keunecke
+   */
 
 #define __USE_ISOC9X  /* We might be able to pick up a NaN */
 #include <math.h>
 #include "md-fpp.h"
 #include "savestate.h"
 
+uae_u32 xhex_pi[]    ={0x2168c235, 0xc90fdaa2, 0x4000};
+uae_u32 xhex_exp_1[] ={0xa2bb4a9a, 0xadf85458, 0x4000};
+uae_u32 xhex_l2_e[]  ={0x5c17f0bc, 0xb8aa3b29, 0x3fff};
+uae_u32 xhex_ln_2[]  ={0xd1cf79ac, 0xb17217f7, 0x3ffe};
+uae_u32 xhex_ln_10[] ={0xaaa8ac17, 0x935d8ddd, 0x4000};
+uae_u32 xhex_l10_2[] ={0xfbcff798, 0x9a209a84, 0x3ffd};
+uae_u32 xhex_l10_e[] ={0x37287195, 0xde5bd8a9, 0x3ffd};
+uae_u32 xhex_1e16[]  ={0x04000000, 0x8e1bc9bf, 0x4034};
+uae_u32 xhex_1e32[]  ={0x2b70b59e, 0x9dc5ada8, 0x4069};
+uae_u32 xhex_1e64[]  ={0xffcfa6d5, 0xc2781f49, 0x40d3};
+uae_u32 xhex_1e128[] ={0x80e98ce0, 0x93ba47c9, 0x41a8};
+uae_u32 xhex_1e256[] ={0x9df9de8e, 0xaa7eebfb, 0x4351};
+uae_u32 xhex_1e512[] ={0xa60e91c7, 0xe319a0ae, 0x46a3};
+uae_u32 xhex_1e1024[]={0x81750c17, 0xc9767586, 0x4d48};
+uae_u32 xhex_1e2048[]={0xc53d5de5, 0x9e8b3b5d, 0x5a92};
+uae_u32 xhex_1e4096[]={0x8a20979b, 0xc4605202, 0x7525};
+uae_u32 xhex_inf[]   ={0x00000000, 0x00000000, 0x7fff};
+uae_u32 xhex_nan[]   ={0xffffffff, 0xffffffff, 0x7fff};
+#if USE_LONG_DOUBLE
+static long double *fp_pi     = (long double *)xhex_pi;
+static long double *fp_exp_1  = (long double *)xhex_exp_1;
+static long double *fp_l2_e   = (long double *)xhex_l2_e;
+static long double *fp_ln_2   = (long double *)xhex_ln_2;
+static long double *fp_ln_10  = (long double *)xhex_ln_10;
+static long double *fp_l10_2  = (long double *)xhex_l10_2;
+static long double *fp_l10_e  = (long double *)xhex_l10_e;
+static long double *fp_1e16   = (long double *)xhex_1e16;
+static long double *fp_1e32   = (long double *)xhex_1e32;
+static long double *fp_1e64   = (long double *)xhex_1e64;
+static long double *fp_1e128  = (long double *)xhex_1e128;
+static long double *fp_1e256  = (long double *)xhex_1e256;
+static long double *fp_1e512  = (long double *)xhex_1e512;
+static long double *fp_1e1024 = (long double *)xhex_1e1024;
+static long double *fp_1e2048 = (long double *)xhex_1e2048;
+static long double *fp_1e4096 = (long double *)xhex_1e4096;
+static long double *fp_inf    = (long double *)xhex_inf;
+static long double *fp_nan    = (long double *)xhex_nan;
+#else
+static uae_u32 dhex_pi[]    ={0x54442D18, 0x400921FB};
+static uae_u32 dhex_exp_1[] ={0x8B145769, 0x4005BF0A};
+static uae_u32 dhex_l2_e[]  ={0x652B82FE, 0x3FF71547};
+static uae_u32 dhex_ln_2[]  ={0xFEFA39EF, 0x3FE62E42};
+static uae_u32 dhex_ln_10[] ={0xBBB55516, 0x40026BB1};
+static uae_u32 dhex_l10_2[] ={0x509F79FF, 0x3FD34413};
+static uae_u32 dhex_l10_e[] ={0x1526E50E, 0x3FDBCB7B};
+static uae_u32 dhex_1e16[]  ={0x37E08000, 0x4341C379};
+static uae_u32 dhex_1e32[]  ={0xB5056E17, 0x4693B8B5};
+static uae_u32 dhex_1e64[]  ={0xE93FF9F5, 0x4D384F03};
+static uae_u32 dhex_1e128[] ={0xF9301D32, 0x5A827748};
+static uae_u32 dhex_1e256[] ={0x7F73BF3C, 0x75154FDD};
+static uae_u32 dhex_inf[]   ={0x00000000, 0x7ff00000};
+static uae_u32 dhex_nan[]   ={0xffffffff, 0x7fffffff};
+static double *fp_pi     = (double *)dhex_pi;
+static double *fp_exp_1  = (double *)dhex_exp_1;
+static double *fp_l2_e   = (double *)dhex_l2_e;
+static double *fp_ln_2   = (double *)dhex_ln_2;
+static double *fp_ln_10  = (double *)dhex_ln_10;
+static double *fp_l10_2  = (double *)dhex_l10_2;
+static double *fp_l10_e  = (double *)dhex_l10_e;
+static double *fp_1e16   = (double *)dhex_1e16;
+static double *fp_1e32   = (double *)dhex_1e32;
+static double *fp_1e64   = (double *)dhex_1e64;
+static double *fp_1e128  = (double *)dhex_1e128;
+static double *fp_1e256  = (double *)dhex_1e256;
+static double *fp_1e512  = (double *)dhex_inf;
+static double *fp_1e1024 = (double *)dhex_inf;
+static double *fp_1e2048 = (double *)dhex_inf;
+static double *fp_1e4096 = (double *)dhex_inf;
+static double *fp_inf    = (double *)dhex_inf;
+static double *fp_nan    = (double *)dhex_nan;
+#endif
+double fp_1e8 = 1.0e8;
+float  fp_1e0 = 1, fp_1e1 = 10, fp_1e2 = 100, fp_1e4 = 10000;
+
 #if 1
 
 STATIC_INLINE int isinrom (void)
@@ -37,37 +112,23 @@ STATIC_INLINE int isinrom (void)
 
 #define MAKE_FPSR(r)  regs.fp_result=(r)
 
+static uae_u16 x87_cw_tab[] = {
+  0x137f, 0x1f7f, 0x177f, 0x1b7f,  /* Extended */
+  0x107f, 0x1c7f, 0x147f, 0x187f,  /* Single */
+  0x127f, 0x1e7f, 0x167f, 0x1a7f,  /* Double */
+  0x137f, 0x1f7f, 0x177f, 0x1b7f}; /* undefined */
+  /* Nearest, toZero, Down, Up */
 static __inline__ void native_set_fpucw (uae_u32 m68k_cw)
 {
 #if USE_X86_FPUCW
-  int mprec=(m68k_cw>>6)&3;
-  int mround=(m68k_cw>>4)&3;
-  uae_u16 x;
-
-  int iprec=0;
-  int iround=0;
+  uae_u16 x87_cw = x87_cw_tab[(m68k_cw>>4)&0xf];
 
-  switch(mprec) {
-  case 0: /* extend */ iprec=3; break;
-  case 1: /* single */ iprec=0; break;
-  case 2: /* double */ iprec=2; break;
-  case 3: /* undef  */ iprec=3; break;
-  }
-
-  switch(mround) {
-  case 0: /* nearest */ iround=0; break;
-  case 1: /* zero    */ iround=3; break;
-  case 2: /* down    */ iround=1; break;
-  case 3: /* up      */ iround=2; break;
-  }
-
-  x=0x107f + (iprec<<8) + (iround<<10);
 #if defined(X86_MSVC_ASSEMBLY)
   __asm {
-  fldcw x
+    fldcw word ptr x87_cw
   }
 #elif defined(X86_ASSEMBLY)
-  __asm__ ("fldcw %0" : : "m" (*&x));
+  __asm__ ("fldcw %0" : : "m" (*&x87_cw));
 #endif
 #endif
 }
@@ -80,21 +141,18 @@ typedef uae_s32 tointtype;
 
 static __inline__ tointtype toint(fptype src)
 {
-    switch ((regs.fpcr >> 4) & 0x3) {
-    case 0:
-#if USE_X86_FPUCW
-       return (tointtype) (src);
-#else
-       return (tointtype) (src + 0.5);
-#endif
-    case 1:
+  switch ((regs.fpcr >> 4) & 3) {
+    case 0: /* to nearest */
+       if (regs.fpcr & 0xf0) /* if not Extended RN */
+           return (tointtype)floor (src + 0.5);
+    case 1: /* to zero */
        return (tointtype) src;
-    case 2:
+    case 2: /* down */
        return (tointtype)floor (src);
-    case 3:
+    case 3: /* up */
        return (tointtype)ceil (src);
-    }
-    return (tointtype)src; /* Should never be reached */
+  }
+  return (tointtype)src; /* never reached */
 }
 
 uae_u32 get_fpsr (void)
@@ -123,11 +181,7 @@ STATIC_INLINE void set_fpsr (uae_u32 x)
     regs.fpsr = x;
 
     if (x & 0x01000000) {
-#ifdef NAN
-       regs.fp_result = NAN;
-#else
-       regs.fp_result = pow (1e100, 10) - pow(1e100, 10);  /* Any better way? */
-#endif
+       regs.fp_result = *fp_nan;
     }
     else if (x & 0x04000000)
        regs.fp_result = 0;
@@ -137,7 +191,6 @@ STATIC_INLINE void set_fpsr (uae_u32 x)
        regs.fp_result = 1;
 }
 
-
 /* single   : S  8*E 23*F */
 /* double   : S 11*E 52*F */
 /* extended : S 15*E 64*F */
@@ -1097,78 +1150,77 @@ void fpp_opp (uae_u32 opcode, uae_u16 extra)
        if ((extra & 0xfc00) == 0x5c00) {
            switch (extra & 0x7f) {
            case 0x00:
-               regs.fp[reg] = 4.0 * atan (1.0);
+               regs.fp[reg] = *fp_pi;
                break;
            case 0x0b:
-               regs.fp[reg] = log10 (2.0);
+               regs.fp[reg] = *fp_l10_2;
                break;
            case 0x0c:
-               regs.fp[reg] = exp (1.0);
+               regs.fp[reg] = *fp_exp_1;
                break;
            case 0x0d:
-               regs.fp[reg] = log (exp (1.0)) / log (2.0);
+               regs.fp[reg] = *fp_l2_e;
                break;
            case 0x0e:
-               regs.fp[reg] = log (exp (1.0)) / log (10.0);
+               regs.fp[reg] = *fp_l10_e;
                break;
            case 0x0f:
                regs.fp[reg] = 0.0;
                break;
            case 0x30:
-               regs.fp[reg] = log (2.0);
+               regs.fp[reg] = *fp_ln_2;
                break;
            case 0x31:
-               regs.fp[reg] = log (10.0);
+               regs.fp[reg] = *fp_ln_10;
                break;
            case 0x32:
-               regs.fp[reg] = 1.0e0;
+               regs.fp[reg] = (fptype)fp_1e0;
                break;
            case 0x33:
-               regs.fp[reg] = 1.0e1;
+               regs.fp[reg] = (fptype)fp_1e1;
                break;
            case 0x34:
-               regs.fp[reg] = 1.0e2;
+               regs.fp[reg] = (fptype)fp_1e2;
                break;
            case 0x35:
-               regs.fp[reg] = 1.0e4;
+               regs.fp[reg] = (fptype)fp_1e4;
                break;
            case 0x36:
-               regs.fp[reg] = 1.0e8;
+               regs.fp[reg] = (fptype)fp_1e8;
                break;
            case 0x37:
-               regs.fp[reg] = 1.0e16;
+               regs.fp[reg] = *fp_1e16;
                break;
            case 0x38:
-               regs.fp[reg] = 1.0e32;
+               regs.fp[reg] = *fp_1e32;
                break;
            case 0x39:
-               regs.fp[reg] = 1.0e64;
+               regs.fp[reg] = *fp_1e64;
                break;
            case 0x3a:
-               regs.fp[reg] = 1.0e128;
+               regs.fp[reg] = *fp_1e128;
                break;
            case 0x3b:
-               regs.fp[reg] = 1.0e256;
+               regs.fp[reg] = *fp_1e256;
                break;
-#if 0
            case 0x3c:
-               regs.fp[reg] = 1.0e512;
+               regs.fp[reg] = *fp_1e512;
                break;
            case 0x3d:
-               regs.fp[reg] = 1.0e1024;
+               regs.fp[reg] = *fp_1e1024;
                break;
            case 0x3e:
-               regs.fp[reg] = 1.0e2048;
+               regs.fp[reg] = *fp_1e2048;
                break;
            case 0x3f:
-               regs.fp[reg] = 1.0e4096;
+               regs.fp[reg] = *fp_1e4096;
                break;
-#endif
            default:
                m68k_setpc (m68k_getpc () - 4);
                op_illg (opcode);
-               break;
+               return;
            }
+           MAKE_FPSR (regs.fp[reg]); /* see Motorola 68k Manual */
            return;
        }
        if (get_fp_value (opcode, extra, &src) == 0) {
@@ -1177,194 +1229,194 @@ void fpp_opp (uae_u32 opcode, uae_u16 extra)
            return;
        }
        switch (extra & 0x7f) {
-       case 0x00:              /* FMOVE */
-       case 0x40:  /* Explicit rounding. This is just a quick fix. Same
-                    * for all other cases that have three choices */
-       case 0x44:
-           regs.fp[reg] = src;
-           /* Brian King was here.  <ea> to register needs FPSR updated.
-            * See page 3-73 in Motorola 68K programmers reference manual.
-            * %%%FPU */
+       case 0x00: /* FMOVE */
+       case 0x40: /* Explicit rounding. This is just a quick fix. */
+       case 0x44: /* Same for all other cases that have three choices */
+           regs.fp[reg] = src;        /* Brian King was here. */
+           /*<ea> to register needs FPSR updated. See Motorola 68K Manual. */
            if ((extra & 0x44) == 0x40)
                fround (reg);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x01:              /* FINT */
+       case 0x01: /* FINT */
            /* need to take the current rounding mode into account */
-           regs.fp[reg] = (fptype)toint(src);
+#if defined(X86_MSVC_ASSEMBLY)
+            {
+             fptype tmp_fp;
+
+             __asm {
+#if USE_LONG_DOUBLE
+               fld  tbyte ptr  src
+               frndint
+               fstp tbyte ptr  tmp_fp
+#else
+               fld  qword ptr  src
+               frndint
+               fstp qword ptr  tmp_fp
+#endif
+             }
+             regs.fp[reg] = tmp_fp;
+           }
+#else /* no X86_MSVC */
+           switch ((regs.fpcr >> 4) & 3) {
+               case 0: /* to nearest */
+                   regs.fp[reg] = floor (src + 0.5);
+                   break;
+               case 1: /* to zero */
+                   if (src >= 0.0)
+                       regs.fp[reg] = floor (src);
+                   else
+                       regs.fp[reg] = ceil (src);
+                   break;
+               case 2: /* down */
+                   regs.fp[reg] = floor (src);
+                   break;
+               case 3: /* up */
+                   regs.fp[reg] = ceil (src);
+                   break;
+               default: /* never reached */
+                   regs.fp[reg] = src;
+           }
+#endif /* X86_MSVC */
            break;
-       case 0x02:              /* FSINH */
+       case 0x02: /* FSINH */
            regs.fp[reg] = sinh (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x03:              /* FINTRZ */
+       case 0x03: /* FINTRZ */
            regs.fp[reg] = (int) src;
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x04:              /* FSQRT */
+       case 0x04: /* FSQRT */
        case 0x41:
        case 0x45:
            regs.fp[reg] = sqrt (src);
            if ((extra & 0x44) == 0x40)
                fround (reg);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x06:              /* FLOGNP1 */
+       case 0x06: /* FLOGNP1 */
            regs.fp[reg] = log (src + 1.0);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x08:              /* FETOXM1 */
+       case 0x08: /* FETOXM1 */
            regs.fp[reg] = exp (src) - 1.0;
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x09:              /* FTANH */
+       case 0x09: /* FTANH */
            regs.fp[reg] = tanh (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x0a:              /* FATAN */
+       case 0x0a: /* FATAN */
            regs.fp[reg] = atan (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x0c:              /* FASIN */
+       case 0x0c: /* FASIN */
            regs.fp[reg] = asin (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x0d:              /* FATANH */
-#if 1                          /* The BeBox doesn't have atanh, and it isn't in the HPUX libm either */
+       case 0x0d: /* FATANH */
+#if 1  /* The BeBox doesn't have atanh, and it isn't in the HPUX libm either */
            regs.fp[reg] = log ((1 + src) / (1 - src)) / 2;
 #else
            regs.fp[reg] = atanh (src);
 #endif
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x0e:              /* FSIN */
+       case 0x0e: /* FSIN */
            regs.fp[reg] = sin (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x0f:              /* FTAN */
+       case 0x0f: /* FTAN */
            regs.fp[reg] = tan (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x10:              /* FETOX */
+       case 0x10: /* FETOX */
            regs.fp[reg] = exp (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x11:              /* FTWOTOX */
+       case 0x11: /* FTWOTOX */
            regs.fp[reg] = pow (2.0, src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x12:              /* FTENTOX */
+       case 0x12: /* FTENTOX */
            regs.fp[reg] = pow (10.0, src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x14:              /* FLOGN */
+       case 0x14: /* FLOGN */
            regs.fp[reg] = log (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x15:              /* FLOG10 */
+       case 0x15: /* FLOG10 */
            regs.fp[reg] = log10 (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x16:              /* FLOG2 */
-           regs.fp[reg] = log (src) / log (2.0);
-           MAKE_FPSR (regs.fp[reg]);
+       case 0x16: /* FLOG2 */
+           regs.fp[reg] = *fp_l2_e * log (src);
            break;
-       case 0x18:              /* FABS */
+       case 0x18: /* FABS */
        case 0x58:
        case 0x5c:
            regs.fp[reg] = src < 0 ? -src : src;
            if ((extra & 0x44) == 0x40)
                fround (reg);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x19:              /* FCOSH */
+       case 0x19: /* FCOSH */
            regs.fp[reg] = cosh (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x1a:              /* FNEG */
+       case 0x1a: /* FNEG */
        case 0x5a:
        case 0x5e:
            regs.fp[reg] = -src;
            if ((extra & 0x44) == 0x40)
                fround (reg);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x1c:              /* FACOS */
+       case 0x1c: /* FACOS */
            regs.fp[reg] = acos (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x1d:              /* FCOS */
+       case 0x1d: /* FCOS */
            regs.fp[reg] = cos (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x1e:              /* FGETEXP */
-       {
-           int expon;
-           frexp (src, &expon);
-           regs.fp[reg] = (double) (expon - 1);
-           MAKE_FPSR (regs.fp[reg]);
-       }
-       break;
-       case 0x1f:              /* FGETMAN */
-       {
-           int expon;
-           regs.fp[reg] = frexp (src, &expon) * 2.0;
-           MAKE_FPSR (regs.fp[reg]);
-       }
-       break;
-       case 0x20:              /* FDIV */
+       case 0x1e: /* FGETEXP */
+           {
+             int expon;
+             frexp (src, &expon);
+             regs.fp[reg] = (double) (expon - 1);
+           }
+           break;
+       case 0x1f: /* FGETMAN */
+           {
+             int expon;
+             regs.fp[reg] = frexp (src, &expon) * 2.0;
+           }
+           break;
+       case 0x20: /* FDIV */
        case 0x60:
        case 0x64:
            regs.fp[reg] /= src;
            if ((extra & 0x44) == 0x40)
                fround (reg);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x21:              /* FMOD */
+       case 0x21: /* FMOD */
            regs.fp[reg] = regs.fp[reg] - (double) ((int) (regs.fp[reg] / src)) * src;
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x22:              /* FADD */
+       case 0x22: /* FADD */
        case 0x62:
        case 0x66:
            regs.fp[reg] += src;
            if ((extra & 0x44) == 0x40)
                fround (reg);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x23:              /* FMUL */
+       case 0x23: /* FMUL */
        case 0x63:
        case 0x67:
            regs.fp[reg] *= src;
            if ((extra & 0x44) == 0x40)
                fround (reg);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x24:              /* FSGLDIV */
+       case 0x24: /* FSGLDIV */
            regs.fp[reg] /= src;
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x25:              /* FREM */
+       case 0x25: /* FREM */
            regs.fp[reg] = regs.fp[reg] - (double) ((int) (regs.fp[reg] / src + 0.5)) * src;
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x26:              /* FSCALE */
-           regs.fp[reg] *= exp (log (2.0) * src);
-           MAKE_FPSR (regs.fp[reg]);
+       case 0x26: /* FSCALE */
+           regs.fp[reg] *= exp (*fp_ln_2 * (int) src);
            break;
-       case 0x27:              /* FSGLMUL */
+       case 0x27: /* FSGLMUL */
            regs.fp[reg] *= src;
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x28:              /* FSUB */
+       case 0x28: /* FSUB */
        case 0x68:
        case 0x6c:
            regs.fp[reg] -= src;
            if ((extra & 0x44) == 0x40)
                fround (reg);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x30:              /* FSINCOS */
+       case 0x30: /* FSINCOS */
        case 0x31:
        case 0x32:
        case 0x33:
@@ -1374,24 +1426,24 @@ void fpp_opp (uae_u32 opcode, uae_u16 extra)
        case 0x37:
            regs.fp[extra & 7] = cos (src);
            regs.fp[reg] = sin (src);
-           MAKE_FPSR (regs.fp[reg]);
            break;
-       case 0x38:              /* FCMP */
-       {
-           fptype tmp = regs.fp[reg] - src;
-           regs.fpsr = 0;
-           MAKE_FPSR (tmp);
-       }
-       break;
-       case 0x3a:              /* FTST */
+       case 0x38: /* FCMP */
+           {
+             fptype tmp = regs.fp[reg] - src;
+             regs.fpsr = 0;
+             MAKE_FPSR (tmp);
+           }
+           return;
+       case 0x3a: /* FTST */
            regs.fpsr = 0;
            MAKE_FPSR (src);
-           break;
+           return;
        default:
            m68k_setpc (m68k_getpc () - 4);
            op_illg (opcode);
-           break;
+           return;
        }
+       MAKE_FPSR (regs.fp[reg]);
        return;
     }
     m68k_setpc (m68k_getpc () - 4);
index 8e7f981de5c16a8f643fecdb7beb0124b0d91ba3..ef585d2b633f58b793d832becd039047cbdd3c0d 100755 (executable)
--- a/gfxutil.c
+++ b/gfxutil.c
@@ -147,6 +147,15 @@ void alloc_colors64k (int rw, int gw, int bw, int rs, int gs, int bs, int aw, in
        xbluecolors[i] = greyscale (doColor (i, bw, bs)) | doAlpha (alpha, aw, as);
     }
 #endif
+    xredcolor_b = rw;
+    xgreencolor_b = gw;
+    xbluecolor_b = bw;
+    xredcolor_s = rs;
+    xgreencolor_s = gs;
+    xbluecolor_s = bs;
+    xredcolor_m = (1 << rw) - 1;
+    xgreencolor_m = (1 << gw) - 1;
+    xbluecolor_m = (1 << bw) - 1;
 }
 
 static int allocated[4096];
index 3f4f526a24ded78fdf0cf885e764b4f69c79023b..0185064c1e268d2732cd289f2ea6cd7526f18f92 100755 (executable)
@@ -147,6 +147,9 @@ extern uae_u32 lorestab_l[256][2];
 /* AGA mode color lookup tables */
 extern unsigned int xredcolors[256], xgreencolors[256], xbluecolors[256];
 #endif
+extern int xredcolor_s, xredcolor_b, xredcolor_m;
+extern int xgreencolor_s, xgreencolor_b, xgreencolor_m;
+extern int xbluecolor_s, xbluecolor_b, xbluecolor_m;
 
 extern int bpl_off[8];
 
index 8df33db439945a839e29e0fc60c26c568123b2b2..376e26dbbc6a2d07ce9f41ac84ccaa451b8bca83 100755 (executable)
@@ -8,8 +8,8 @@
   */
 
 #define UAEMAJOR 1
-#define UAEMINOR 1
-#define UAESUBREV 1
+#define UAEMINOR 2
+#define UAESUBREV 0
 
 typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang;
 
@@ -120,6 +120,7 @@ struct uae_prefs {
     int gfx_refreshrate;
     int gfx_vsync;
     int gfx_lores;
+    int gfx_lores_mode;
     int gfx_linedbl;
     int gfx_correct_aspect;
     int gfx_afullscreen;
@@ -220,6 +221,7 @@ struct uae_prefs {
     int win32_iconified_nosound;
 
     int win32_no_overlay; /* If this is set, we won't try and use any RGB overlays */
+    int win32_borderless;
     int win32_ctrl_F11_is_quit;
     int win32_automount_drives;
     int win32_automount_netdrives;
index 8dd7d989a1a1ae5618f2eabdd85d86e19e488b4a..e28130e8a0c2ec765ca0a73e0d6adcf8b1fec708 100755 (executable)
@@ -43,6 +43,8 @@
 #include "savestate.h"
 #include "arcadia.h"
 
+int inputdevice_logging = 0;
+
 #define DIR_LEFT 1
 #define DIR_RIGHT 2
 #define DIR_UP 4
@@ -1008,7 +1010,8 @@ void inputdevice_do_keyboard (int code, int state)
            uae_reset (r);
        }
        record_key ((uae_u8)((key << 1) | (key >> 7)));
-       //write_log("Amiga key %02.2X %d\n", key & 0x7f, key >> 7);
+       if (inputdevice_logging > 0)
+           write_log("Amiga key %02.2X %d\n", key & 0x7f, key >> 7);
        return;
     }
     inputdevice_add_inputcode (code, state);
@@ -1185,7 +1188,8 @@ int handle_input_event (int nr, int state, int max, int autofire)
     if (nr <= 0)
        return 0;
     ie = &events[nr];
-    //write_log("'%s' %d %d\n", ie->name, state, max);
+    if (inputdevice_logging > 0)
+       write_log("'%s' %d %d\n", ie->name, state, max);
     if (autofire) {
        if (state)
            queue_input_event (nr, state, max, currprefs.input_autofire_framecnt, 1);
@@ -1722,7 +1726,6 @@ static int inputdevice_translatekeycode_2 (int keyboard, int scancode, int state
                int event = na->eventid[j][sublevdir[state == 0 ? 1 : 0][k]];
                char *custom = na->custom[j][sublevdir[state == 0 ? 1 : 0][k]];
                handled |= handle_input_event (event, state, 1, autofire);
-               //write_log ("'%s' %d ('%s') %d\n", na->name, event, events[event].name,  state);
            }
            return handled;
        }
index d6124d0b578770c0a8014de8bf44591748eeb5b8..8938d630ea1c23db2e495d7b9b799c8b80e6bc1b 100755 (executable)
--- a/memory.c
+++ b/memory.c
@@ -1871,10 +1871,8 @@ static void allocate_memory (void)
 
        memsize = allocated_chipmem = currprefs.chipmem_size;
        chipmem_full_mask = chipmem_mask = allocated_chipmem - 1;
-       if ((currprefs.chipset_mask & CSMASK_ECS_AGNUS) && allocated_chipmem < 0x100000) {
-           chipmem_full_mask = 0x100000 - 1;
-           memsize *= 2;
-       }
+       if (memsize < 0x100000)
+           memsize = 0x100000;
        chipmemory = mapped_malloc (memsize, "chip");
        if (chipmemory == 0) {
            write_log ("Fatal error: out of memory for chipmem.\n");
@@ -1886,6 +1884,11 @@ static void allocate_memory (void)
        }
     }
 
+    currprefs.chipset_mask = changed_prefs.chipset_mask;
+    chipmem_full_mask = allocated_chipmem - 1;
+    if ((currprefs.chipset_mask & CSMASK_ECS_AGNUS) && allocated_chipmem < 0x100000)
+        chipmem_full_mask = 0x100000 - 1;
+
     if (allocated_bogomem != currprefs.bogomem_size) {
        if (bogomemory)
            mapped_free (bogomemory);
index e8889bd413ec747048230bdf0c63a54c6f100623..98181b62e70eccc79db9509283be6827561f8246 100755 (executable)
@@ -171,7 +171,7 @@ LPSTR AVIOutput_ChooseAudioCodec(HWND hwnd)
 
        // set the source format
        wfxSrc.wFormatTag = WAVE_FORMAT_PCM;
-       wfxSrc.nChannels = workprefs.sound_stereo ? 2 : 1;
+       wfxSrc.nChannels = currprefs.sound_stereo == 2 ? 4 : (currprefs.sound_stereo ? 2 : 1);
        wfxSrc.nSamplesPerSec = workprefs.sound_freq;
        wfxSrc.nBlockAlign = wfxSrc.nChannels * (workprefs.sound_bits / 8);
        wfxSrc.nAvgBytesPerSec = wfxSrc.nBlockAlign * wfxSrc.nSamplesPerSec;
@@ -605,7 +605,8 @@ static void writewavheader (uae_u32 size)
 {
     uae_u16 tw;
     uae_u32 tl;
-    int bits = 16, channels = currprefs.sound_stereo ? 2 : 1;
+    int bits = 16;
+    int channels = currprefs.sound_stereo == 2 ? 4 : (currprefs.sound_stereo ? 2 : 1);
 
     fseek (wavfile, 0, SEEK_SET);
     fwrite ("RIFF", 1, 4, wavfile);
diff --git a/od-win32/build68k_msvc/build68k.rc b/od-win32/build68k_msvc/build68k.rc
new file mode 100755 (executable)
index 0000000..c1017f8
--- /dev/null
@@ -0,0 +1,61 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+LANGUAGE 11, 1
+#pragma code_page(1252)
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE  
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE  
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE  
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
index 897949fe15bf38b085323867a16a6c62d71b18c5..ff903fe5e4af6ad7d6fbffa1c87be60800cb0edc 100755 (executable)
@@ -4,7 +4,6 @@
        Version="8,00"
        Name="build68k"
        ProjectGUID="{AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}"
-       SignManifests="true"
        >
        <Platforms>
                <Platform
@@ -19,7 +18,7 @@
                        OutputDirectory=".\Release"
                        IntermediateDirectory=".\Release"
                        ConfigurationType="1"
-                       InheritedPropertySheets="UpgradeFromVC71.vsprops"
+                       InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                        OutputDirectory=".\Debug"
                        IntermediateDirectory=".\Debug"
                        ConfigurationType="1"
-                       InheritedPropertySheets="UpgradeFromVC71.vsprops"
+                       InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                        OutputDirectory="$(ConfigurationName)"
                        IntermediateDirectory="$(ConfigurationName)"
                        ConfigurationType="1"
-                       InheritedPropertySheets="UpgradeFromVC71.vsprops"
+                       InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                                RelativePath="..\..\build68k.c"
                                >
                        </File>
+                       <File
+                               RelativePath=".\build68k.rc"
+                               >
+                       </File>
                </Filter>
+               <File
+                       RelativePath=".\resource.h"
+                       >
+               </File>
        </Files>
        <Globals>
        </Globals>
diff --git a/od-win32/build68k_msvc/resource.h b/od-win32/build68k_msvc/resource.h
new file mode 100755 (executable)
index 0000000..0a253e1
--- /dev/null
@@ -0,0 +1,14 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by build68k.rc
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        101
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1001
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
index a7b5606173cda5bdc15472e7367e99d9ef58d532..dc5dc09bd078b4d7eebe4b0382f85b0d87ede5c6 100755 (executable)
 
 #include "direct3d.h"
 
+typedef D3DXMATRIX (CALLBACK* D3DXMATRIXPERSPECTIVEFOVLH)
+    (D3DXMATRIX *pOut,FLOAT fovy,FLOAT Aspect,FLOAT zn,FLOAT zf);
+static D3DXMATRIXPERSPECTIVEFOVLH pD3DXMatrixPerspectiveFovLH;
+typedef HRESULT (CALLBACK* D3DXCREATETEXTURE)
+    (LPDIRECT3DDEVICE9 pDevice,UINT Width,UINT Height,UINT MipLevels,DWORD Usage,
+    D3DFORMAT Format,D3DPOOL Pool,LPDIRECT3DTEXTURE9 *ppTexture);
+static D3DXCREATETEXTURE pD3DXCreateTexture;
+typedef HRESULT (CALLBACK* D3DXCHECKTEXTUREREQUIREMENTS)
+    (LPDIRECT3DDEVICE9 pDevice,UINT *pWidth,UINT *pHeight,UINT *pNumMipLevels,
+    DWORD Usage,D3DFORMAT *pFormat,D3DPOOL Pool);
+static D3DXCHECKTEXTUREREQUIREMENTS pD3DXCheckTextureRequirements;
+
 static int tformat;
 static int d3d_enabled, scanlines_ok;
 static HINSTANCE d3dDLL;
@@ -101,7 +113,7 @@ static int restoredeviceobjects(void)
 
     // Set the projection matrix
     aspect = ((FLOAT)dsdbb.Width) / dsdbb.Height;
-    D3DXMatrixPerspectiveFovLH (&matrix, D3DX_PI/4, aspect, 1.0f, 100.0f);
+    pD3DXMatrixPerspectiveFovLH (&matrix, D3DX_PI/4, aspect, 1.0f, 100.0f);
     hr = IDirect3DDevice9_SetTransform(d3ddev, D3DTS_PROJECTION, &matrix);
 
     // turn off lighting
@@ -129,11 +141,11 @@ static int createtexture (int w, int h)
     UINT hh = h;
     D3DFORMAT format = tformat;
 
-    hr = D3DXCheckTextureRequirements(d3ddev, &ww, &hh, NULL, 0, &format, D3DPOOL_MANAGED);
+    hr = pD3DXCheckTextureRequirements(d3ddev, &ww, &hh, NULL, 0, &format, D3DPOOL_MANAGED);
     if (FAILED (hr)) {
        write_log ("D3DXCheckTextureRequirements failed: %s\n", D3D_ErrorString (hr));
     }
-    hr = D3DXCreateTexture(d3ddev, ww, hh, 0, 0, format, D3DPOOL_MANAGED, &texture);
+    hr = pD3DXCreateTexture(d3ddev, ww, hh, 0, 0, format, D3DPOOL_MANAGED, &texture);
     if (FAILED (hr)) {
        write_log ("D3DXCreateTexture failed: %s\n", D3D_ErrorString (hr));
     }
@@ -149,12 +161,12 @@ static int createsltexture (void)
     UINT hh = required_sl_texture_h;
     D3DFORMAT format = D3DFMT_A4R4G4B4;
 
-    hr = D3DXCheckTextureRequirements(d3ddev, &ww, &hh, NULL, 0, &format, D3DPOOL_MANAGED);
+    hr = pD3DXCheckTextureRequirements(d3ddev, &ww, &hh, NULL, 0, &format, D3DPOOL_MANAGED);
     if (FAILED (hr)) {
        write_log ("SL D3DXCheckTextureRequirements failed: %s\n", D3D_ErrorString (hr));
        return 0;
     }
-    hr = D3DXCreateTexture(d3ddev, ww, hh, 0, 0, format, D3DPOOL_MANAGED, &sltexture);
+    hr = pD3DXCreateTexture(d3ddev, ww, hh, 0, 0, format, D3DPOOL_MANAGED, &sltexture);
     if (FAILED (hr)) {
        write_log ("SL D3DXCreateTexture failed: %s\n", D3D_ErrorString (hr));
        return 0;
@@ -229,6 +241,8 @@ const char *D3D_init (HWND ahwnd, int w_w, int w_h, int t_w, int t_h, int depth)
     LPDIRECT3D9 (WINAPI *D3DCreate)(UINT);
     D3DDISPLAYMODE mode;
     D3DCAPS9 d3dCaps;
+    char d3dxdlls[100];
+    HINSTANCE d3dxDLL;
 
     d3d_enabled = 0;
     scanlines_ok = 0;
@@ -242,6 +256,16 @@ const char *D3D_init (HWND ahwnd, int w_w, int w_h, int t_w, int t_h, int depth)
        strcpy (errmsg, "Direct3D: DirectX 9 or newer required");
        return errmsg;
     }
+
+    sprintf (d3dxdlls, "d3dx9_%d.dll", 27);
+    d3dxDLL = LoadLibrary(d3dxdlls);
+    pD3DXMatrixPerspectiveFovLH = (D3DXMATRIXPERSPECTIVEFOVLH)GetProcAddress(
+       d3dxDLL, "D3DXMatrixPerspectiveFovLH");
+    pD3DXCreateTexture = (D3DXCREATETEXTURE)GetProcAddress(
+       d3dxDLL, "D3DXCreateTexture");
+    pD3DXCheckTextureRequirements = (D3DXCHECKTEXTUREREQUIREMENTS)GetProcAddress(
+       d3dxDLL, "D3DXCheckTextureRequirements");
+
     D3DCreate = (LPDIRECT3D9 (WINAPI *)(UINT))
        GetProcAddress(d3dDLL, "Direct3DCreate9");
     if(D3DCreate == NULL) {
index 2517500bb2b6b3beaf4dd31f56d335413b00add6..f9d223868832e3bed9357f28331c7c827599757e 100755 (executable)
@@ -677,16 +677,14 @@ void ddraw_unlockscr( void )
 int DirectDraw_Start( GUID *guid )
 {
     HRESULT ddrval;
-    DDCAPS_DX7 drivercaps, helcaps;
-
     /* Prepare our DirectDrawState structure */
-    ZeroMemory( &DirectDrawState, sizeof( DirectDrawState ) );
-    ZeroMemory( &drivercaps, sizeof( drivercaps ) );
-    ZeroMemory( &helcaps, sizeof( helcaps ) );
-    drivercaps.dwSize = sizeof( drivercaps );
-    helcaps.dwSize = sizeof( helcaps );
+    ZeroMemory(&DirectDrawState, sizeof(DirectDrawState));
+    ZeroMemory(&drivercaps, sizeof(drivercaps));
+    ZeroMemory(&helcaps, sizeof(helcaps));
+    drivercaps.dwSize = sizeof(drivercaps);
+    helcaps.dwSize = sizeof(helcaps);
 
-    ddrval = DirectDrawCreate( guid, &DirectDrawState.directdraw.ddx, NULL );
+    ddrval = DirectDrawCreate(guid, &DirectDrawState.directdraw.ddx, NULL);
     if (FAILED(ddrval)) {
        if (guid != NULL)
            return 0;
@@ -695,19 +693,18 @@ int DirectDraw_Start( GUID *guid )
 
     DirectDrawState.initialized = TRUE;
 
-    ddrval = IDirectDraw_QueryInterface( DirectDrawState.directdraw.ddx,
+    ddrval = IDirectDraw_QueryInterface(DirectDrawState.directdraw.ddx,
                                         &IID_IDirectDraw7,
-                                        (LPVOID *)&DirectDrawState.directdraw.dd );
-    if(FAILED(ddrval))
-    {
+                                        (LPVOID *)&DirectDrawState.directdraw.dd);
+    if(FAILED(ddrval)) {
        gui_message("start_ddraw(): DirectX 7 or newer required");
        DirectDraw_Release();
        return 0;
     }
 
-    DirectDraw_GetCaps( &drivercaps, &helcaps );
-    ShowDDCaps( drivercaps, 1 );
-    ShowDDCaps( helcaps, 0 );
+    DirectDraw_GetCaps(&drivercaps, &helcaps);
+    ShowDDCaps(drivercaps, 1);
+    ShowDDCaps(helcaps, 0);
     if (SUCCEEDED(DirectDraw_GetDisplayMode ()))
        return 1;
     if (guid != NULL) {
@@ -2025,26 +2022,25 @@ HRESULT DirectDraw_GetDC( HDC *hdc, surface_type_e surface )
  *   1999.08.02  Brian King             Creation
  *
  */
-HRESULT DirectDraw_ReleaseDC( HDC hdc, surface_type_e surface )
+HRESULT DirectDraw_ReleaseDC (HDC hdc, surface_type_e surface)
 {
     HRESULT result;
-    if( surface == primary_surface )
-       result = IDirectDrawSurface7_ReleaseDC( DirectDrawState.primary.surface, hdc );
+    if (surface == primary_surface)
+       result = IDirectDrawSurface7_ReleaseDC(DirectDrawState.primary.surface, hdc);
     else if (surface == overlay_surface)
-       result = IDirectDrawSurface7_ReleaseDC( DirectDrawState.overlay.surface, hdc );
+       result = IDirectDrawSurface7_ReleaseDC(DirectDrawState.overlay.surface, hdc);
     else
-       result = IDirectDrawSurface7_ReleaseDC( DirectDrawState.secondary.surface, hdc );
+       result = IDirectDrawSurface7_ReleaseDC(DirectDrawState.secondary.surface, hdc);
     return result;
 }
 
 extern int display_change_requested;
 
-HRESULT DirectDraw_UpdateOverlay( RECT sr, RECT dr )
+HRESULT DirectDraw_UpdateOverlay(RECT sr, RECT dr)
 {
     HRESULT result = DD_OK;
 
-    if (DirectDrawState.isoverlay && DirectDrawState.overlay.surface)
-    {
+    if (DirectDrawState.isoverlay && DirectDrawState.overlay.surface) {
        if ((drivercaps.dwCaps & DDCAPS_ALIGNBOUNDARYSRC) && drivercaps.dwAlignBoundarySrc)
            sr.left = (sr.left + drivercaps.dwAlignBoundarySrc / 2) & ~(drivercaps.dwAlignBoundarySrc - 1);
        if ((drivercaps.dwCaps & DDCAPS_ALIGNSIZESRC) && drivercaps.dwAlignSizeSrc)
index ea78d60f0d2404e2c2c13a0f80f3ad972126f0cc..d5b3314a199e9b1827125181627090cff249e556 100755 (executable)
@@ -819,7 +819,7 @@ int hdf_init (void)
     done = 1;
     num_drives = 0;
 #ifdef WINDDK
-    buffer = VirtualAlloc (NULL, 512, MEM_COMMIT, PAGE_READWRITE);
+    buffer = VirtualAlloc (NULL, 65536, MEM_COMMIT, PAGE_READWRITE);
     if (buffer) {
        memset (uae_drives, 0, sizeof (uae_drives));
        num_drives = 0;
@@ -861,7 +861,159 @@ char *hdf_getnameharddrive (int index, int flags)
        sprintf (name, "%s (%s)", uae_drives[index].device_name, tmp);
        return name;
     }
+    if (flags & 2)
+       return uae_drives[index].device_path;
     return uae_drives[index].device_name;
 }
 
 
+static int progressdialogreturn;
+static int progressdialogactive;
+
+static INT_PTR CALLBACK ProgressDialogProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+    switch(msg)
+    {
+       case WM_DESTROY:
+       PostQuitMessage (0);
+       progressdialogactive = 0;
+       return TRUE;
+       case WM_CLOSE:
+       DestroyWindow(hDlg);
+       if (progressdialogreturn < 0)
+           progressdialogreturn = 0;
+       return TRUE;
+       case WM_INITDIALOG:
+           return TRUE;
+       case WM_COMMAND:
+           switch (LOWORD(wParam))
+           {
+               case IDCANCEL:
+                   progressdialogreturn = 0;
+                   DestroyWindow (hDlg);
+               return TRUE;
+           }
+       break;
+    }
+    return FALSE;
+}
+
+extern HMODULE hUIDLL;
+extern HINSTANCE hInst;
+
+#define COPY_CACHE_SIZE 1024*1024
+int harddrive_to_hdf(HWND hDlg, struct uae_prefs *p, int idx)
+{
+    HANDLE h = INVALID_HANDLE_VALUE, hdst = INVALID_HANDLE_VALUE;
+    void *cache = NULL;
+    DWORD ret, high, low, got, gotdst;
+    uae_u64 size, sizecnt, written;
+    char path[MAX_DPATH], tmp[MAX_DPATH], tmp2[MAX_DPATH];
+    DWORD retcode = 0;
+    HWND hwnd, hwndprogress, hwndprogresstxt;
+    MSG msg;
+    int pct, cnt;
+    cache = VirtualAlloc (NULL, COPY_CACHE_SIZE, MEM_COMMIT, PAGE_READWRITE);
+    if (!cache)
+       goto err;
+    h = CreateFile (uae_drives[idx].device_path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+       OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS | FILE_FLAG_NO_BUFFERING, NULL);
+    if (h == INVALID_HANDLE_VALUE)
+       goto err;
+    size = uae_drives[idx].size;
+    path[0] = 0;
+    DiskSelection (hDlg, IDC_PATH_NAME, 3, p, 0);
+    GetDlgItemText (hDlg, IDC_PATH_NAME, path, MAX_DPATH);
+    if (*path == 0)
+       goto err;
+    hdst = CreateFile (path, GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
+       CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN | FILE_FLAG_NO_BUFFERING, NULL);
+    if (hdst == INVALID_HANDLE_VALUE)
+       goto err;
+    low = (DWORD)size;
+    high = size >> 32;
+    ret = SetFilePointer(hdst, low, &high, FILE_BEGIN);
+    if (ret == INVALID_FILE_SIZE && GetLastError() != NO_ERROR)
+       goto err;
+    if (!SetEndOfFile(hdst))
+       goto err;
+    high = 0;
+    SetFilePointer(hdst, 0, &high, FILE_BEGIN);
+    SetFilePointer(h, 0, &high, FILE_BEGIN);
+    progressdialogreturn = -1;
+    progressdialogactive = 1;
+    hwnd = CreateDialog (hUIDLL ? hUIDLL : hInst, MAKEINTRESOURCE (IDD_PROGRESSBAR), hDlg, ProgressDialogProc);
+    if (hwnd == NULL)
+       goto err;
+    hwndprogress = GetDlgItem(hwnd, IDC_PROGRESSBAR);
+    hwndprogresstxt = GetDlgItem(hwnd, IDC_PROGRESSBAR_TEXT);
+    ShowWindow (hwnd, SW_SHOW);
+    pct = 0;
+    cnt = 1000;
+    sizecnt = 0;
+    written = 0;
+    for (;;) {
+       if (progressdialogreturn >= 0)
+           break;
+       if (cnt > 0) {
+           SendMessage(hwndprogress, PBM_SETPOS, (WPARAM)pct, 0);
+           sprintf (tmp, "%dM / %dM (%d%%)", (int)(written >> 20), (int)(size >> 20), pct);
+           SendMessage(hwndprogresstxt, WM_SETTEXT, 0, (LPARAM)tmp);
+           while (PeekMessage (&msg, 0, 0, 0, PM_REMOVE)) {
+               TranslateMessage (&msg);
+               DispatchMessage (&msg);
+           }
+           cnt = 0;
+       }
+       got = gotdst = 0;
+       ReadFile(h, cache, COPY_CACHE_SIZE, &got, NULL);
+       if (got > 0) {
+           if (written + got > size)
+               got = size - written;
+           WriteFile(hdst, cache, got, &gotdst, NULL);
+           written += gotdst;
+           if (written == size)
+               break;
+       }
+       if (got != COPY_CACHE_SIZE) {
+           progressdialogreturn = 1;
+           break;
+       }
+       if (got != gotdst) {
+           progressdialogreturn = 2;
+           break;
+       }
+       cnt++;
+       sizecnt += got;
+       pct = (int)(sizecnt * 100 / size);
+    }
+    if (progressdialogactive) {
+       DestroyWindow (hwnd);
+       while (PeekMessage (&msg, 0, 0, 0, PM_REMOVE)) {
+           TranslateMessage (&msg);
+           DispatchMessage (&msg);
+       }
+    }
+    if (progressdialogreturn >= 0)
+       goto err;
+    retcode = 1;
+    WIN32GUI_LoadUIString (IDS_HDCLONE_OK, tmp, MAX_DPATH);
+    gui_message (tmp);
+    goto ok;
+
+err:
+    WIN32GUI_LoadUIString (IDS_HDCLONE_FAIL, tmp, MAX_DPATH);
+    sprintf (tmp2, tmp, GetLastError());
+    gui_message (tmp2);
+    
+ok:
+    if (h != INVALID_HANDLE_VALUE)
+       CloseHandle(h);
+    if (cache)
+       VirtualFree(cache, 0, MEM_RELEASE);
+    if (hdst != INVALID_HANDLE_VALUE)
+       CloseHandle(hdst);
+    return retcode;
+}
+
diff --git a/od-win32/lcd.c b/od-win32/lcd.c
new file mode 100755 (executable)
index 0000000..714b0b6
--- /dev/null
@@ -0,0 +1,166 @@
+
+#include "sysconfig.h"
+#include "sysdeps.h"
+
+#if defined(LOGITECHLCD)
+
+#include "gui.h"
+#include "lcd.h"
+
+#include <lglcd.h>
+
+static int inited;
+static lgLcdConnectContext cctx;
+static lgLcdDeviceDesc desc;
+static int device;
+static lgLcdBitmapHeader *lbh;
+static uae_u8 *bitmap;
+
+#define TD_NUM_WIDTH 7
+#define TD_NUM_HEIGHT 7
+#define NUMBERS_NUM 16
+#define TD_LED_WIDTH 24
+
+static char *numbers = { /* ugly  0123456789CHD%x */
+"+++++++--++++-+++++++++++++++++-++++++++++++++++++++++++++++++++++++++++++++-++++++-++++----++---+++++++++++++++"
+"+xxxxx+--+xx+-+xxxxx++xxxxx++x+-+x++xxxxx++xxxxx++xxxxx++xxxxx++xxxxx++xxxx+-+x++x+-+xxx++-+xx+-+x+xxxxxxxxxxxx+"
+"+x+++x+--++x+-+++++x++++++x++x+++x++x++++++x++++++++++x++x+++x++x+++x++x++++-+x++x+-+x++x+--+x++x++xxxxxxxxxxxx+"
+"+x+-+x+---+x+-+xxxxx++xxxxx++xxxxx++xxxxx++xxxxx+--++x+-+xxxxx++xxxxx++x+----+xxxx+-+x++x+----+x+++xxxxxxxxxxxx+"
+"+x+++x+---+x+-+x++++++++++x++++++x++++++x++x+++x+--+x+--+x+++x++++++x++x++++-+x++x+-+x++x+---+x+x++xxxxxxxxxxxx+"
+"+xxxxx+---+x+-+xxxxx++xxxxx+----+x++xxxxx++xxxxx+--+x+--+xxxxx++xxxxx++xxxx+-+x++x+-+xxx+---+x++xx+xxxxxxxxxxxx+"
+"+++++++---+++-++++++++++++++----+++++++++++++++++--+++--++++++++++++++++++++-++++++-++++----------++++++++++++++"
+};
+static char *one = { "x" };
+
+void lcd_close(void)
+{
+    lgLcdDeInit();
+    xfree(lbh);
+    lbh = NULL;
+    bitmap = NULL;
+    inited = 0;
+}
+
+static int lcd_init(void)
+{
+    DWORD ret;
+    lgLcdOpenContext octx;
+
+    ret = lgLcdInit();
+    if (ret != ERROR_SUCCESS) {
+       if (ret == RPC_S_SERVER_UNAVAILABLE || ret == ERROR_OLD_WIN_VERSION) {
+           write_log ("LCD: Logitech LCD system not detected\n");
+           return 0;
+       }
+       write_log ("LCD: lgLcdInit() returned %d\n", ret);
+       return 0;
+    }
+    memset (&cctx, 0, sizeof (cctx));
+    cctx.appFriendlyName = "WinUAE";
+    cctx.isPersistent = TRUE;
+    cctx.isAutostartable = FALSE;
+    ret = lgLcdConnect(&cctx);
+    if (ret != ERROR_SUCCESS) {
+       write_log ("LCD: lgLcdConnect() returned %d\n", ret);
+       lcd_close();
+       return 0;
+    }
+    ret = lgLcdEnumerate(cctx.connection, 0, &desc);
+    if (ret != ERROR_SUCCESS) {
+       write_log ("LCD: lgLcdEnumerate() returned %d\n", ret);
+       lcd_close();
+       return 0;
+    }
+    lbh = xcalloc (1, sizeof (lgLcdBitmapHeader) + desc.Width * desc.Height);
+    lbh->Format = LGLCD_BMP_FORMAT_160x43x1;
+    bitmap = (uae_u8*)lbh + sizeof (lgLcdBitmapHeader);
+    memset (&octx, 0, sizeof (octx));
+    octx.connection = cctx.connection;
+    octx.index = 0;
+    ret = lgLcdOpen(&octx);
+    if (ret != ERROR_SUCCESS) {
+       write_log("LCD: lgLcdOpen() returned %d\n", ret);
+       lcd_close();
+       return 0;
+    }
+    device = octx.device;
+    write_log("LCD: Logitech LCD system initialized\n");
+    return 1;
+}
+
+static void putnumber(int x, int y, int n, int inv)
+{
+    int xx, yy;
+    uae_u8 *dst, *src;
+    for (yy = 0; yy < TD_NUM_HEIGHT; yy++) {
+       for (xx = 0; xx < TD_NUM_WIDTH; xx++) {
+           dst = bitmap + (yy + y) * desc.Width + (xx + x);
+           src = numbers + n * TD_NUM_WIDTH + yy * TD_NUM_WIDTH * NUMBERS_NUM + xx;
+           *dst = 0;
+           if (*src == 'x')
+               *dst = 0xff;
+           if (inv)
+               *dst ^= 0xff;
+       }
+    }
+}
+
+static void putnumbers(int x, int y, int num, int inv)
+{
+    putnumber(x, y, num / 10, inv);
+    putnumber(x + TD_NUM_WIDTH, y, num % 10, inv);
+}
+
+void lcd_update(int led, int on)
+{
+    int track, x, y, y1, y2;
+
+    if (!inited)
+       return;
+
+    x = 10;
+    y1 = desc.Height - TD_NUM_HEIGHT - 2;
+    y2 = y1 - TD_NUM_HEIGHT - 4;
+    if (led >= 1 && led <= 4) {
+       x += (led - 1) * TD_LED_WIDTH;
+       y = y1;
+        track = gui_data.drive_track[led - 1];
+       putnumbers(x, y, track, on);
+    } else if (led == 0) {
+       y = y2;
+       x += 2 * TD_LED_WIDTH;
+       putnumber(x, y, 14, on);
+       putnumber(x + TD_NUM_WIDTH, y, 15, on);
+    } else if (led == 5) {
+       y = y2;
+       x += 3 * TD_LED_WIDTH;
+       putnumber(x, y, 11, on);
+       putnumber(x + TD_NUM_WIDTH, y, 12, on);
+    } else if (led == 6) {
+       y = y2;
+       x += 4 * TD_LED_WIDTH;
+       putnumber(x, y, 10, on);
+       putnumber(x + TD_NUM_WIDTH, y, 12, on);
+    } else if (led == 7) {
+       y = y2;
+       x += 1 * TD_LED_WIDTH;
+       putnumbers(x, y, gui_data.fps <= 999 ? gui_data.fps / 10 : 99, 0);
+    } else if (led == 8) {
+       y = y2;
+       x += 0 * TD_LED_WIDTH;
+       putnumbers(x, y, gui_data.idle <= 999 ? gui_data.idle / 10 : 99, 0);
+    }
+    lgLcdUpdateBitmap(device, lbh, LGLCD_ASYNC_UPDATE(LGLCD_PRIORITY_NORMAL));
+}
+
+int lcd_open(void)
+{
+    if (!inited) {
+       if (!lcd_init())
+           return 0;
+       inited = 1;
+    }
+    return 1;
+}
+
+#endif
diff --git a/od-win32/lcd.h b/od-win32/lcd.h
new file mode 100755 (executable)
index 0000000..087b6d3
--- /dev/null
@@ -0,0 +1,3 @@
+extern int lcd_open(void);
+extern void lcd_close(void);
+extern void lcd_update(int, int);
index 82cd75da4d2e7be95e6ce62525ce3ad52526c9de..45ff78fb65858792858cb6d7d885dce01cfffa39 100755 (executable)
   *
   * MC68881 emulation
   *
-  * Conversion routines for hosts with unknown floating point format.
+  * Conversion routines for hosts knowing floating point format.
   *
   * Copyright 1996 Herman ten Brugge
+  * Modified 2005 Peter Keunecke
   */
 
+#if USE_LONG_DOUBLE
+STATIC_INLINE long double to_exten(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3)
+{
+    uae_u32 longarray[] = {wrd3,wrd2,((wrd1>>16)&0xffff)}; // little endian
+    register long double *longdoublewords = longarray;
+
+    return(*longdoublewords);
+}
+#define HAVE_to_exten
+
+STATIC_INLINE void from_exten(long double src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3)
+{
+    register uae_u32 *longarray = &src;
+    register uae_u16 *finalword = &src + 8;
+
+    *wrd1 = ((uae_u32)*finalword)<<16;
+    *wrd2 = longarray[1];
+    *wrd3 = longarray[0]; // little endian
+}
+#define HAVE_from_exten
+#endif /* USE_LONG_DOUBLE */
+
+#if defined(X86_MSVC_ASSEMBLY)
 #ifndef HAVE_to_single
-STATIC_INLINE double to_single (uae_u32 value)
+#define HAVE_to_single
+STATIC_INLINE double to_single (uae_u32 longvalue)
 {
-    double frac;
+    double floatfake;
 
-    if ((value & 0x7fffffff) == 0)
-        return (0.0);
-    frac = (double) ((value & 0x7fffff) | 0x800000) / 8388608.0;
-    if (value & 0x80000000)
-        frac = -frac;
-    return (ldexp (frac, ((value >> 23) & 0xff) - 127));
+    __asm {
+    fld     dword ptr   longvalue;
+    fstp    qword ptr   floatfake;
+    }
+    return(floatfake);
 }
 #endif
 
 #ifndef HAVE_from_single
-STATIC_INLINE uae_u32 from_single (double src)
+#define HAVE_from_single
+STATIC_INLINE uae_u32 from_single (double floatfake)
 {
-    int expon;
-    uae_u32 tmp;
-    double frac;
+    uae_u32 longvalue;
 
-    if (src == 0.0)
-        return 0;
-    if (src < 0) {
-        tmp = 0x80000000;
-        src = -src;
-    } else {
-        tmp = 0;
+    __asm {
+    fld     qword ptr   floatfake;
+    fstp    dword ptr   longvalue;
     }
-    frac = frexp (src, &expon);
-    frac += 0.5 / 16777216.0;
-    if (frac >= 1.0) {
-        frac /= 2.0;
-        expon++;
-    }
-    if (expon <= -127) return 0;
-    if (expon >= 127) expon = 127;
-    return (tmp | (((expon + 127 - 1) & 0xff) << 23) |
-            (((int) (frac * 16777216.0)) & 0x7fffff));
+    return(longvalue);
 }
 #endif
 
 #ifndef HAVE_to_exten
+#define HAVE_to_exten
 STATIC_INLINE double to_exten(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3)
 {
-    double frac;
+    uae_u32 longarray[] = {wrd3,wrd2,((wrd1>>16)&0xffff)}; // little endian
+    double  extenfake;
 
-    if ((wrd1 & 0x7fff0000) == 0 && wrd2 == 0 && wrd3 == 0)
-        return 0.0;
-    frac = (double) wrd2 / 2147483648.0 +
-        (double) wrd3 / 9223372036854775808.0;
-    if (wrd1 & 0x80000000)
-        frac = -frac;
-    return ldexp (frac, ((wrd1 >> 16) & 0x7fff) - 16383);
+    __asm {
+    fld     tbyte ptr   longarray;
+    fstp    qword ptr   extenfake;
+    }
+    return(extenfake);
 }
 #endif
 
 #ifndef HAVE_from_exten
+#define HAVE_from_exten
 STATIC_INLINE void from_exten(double src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3)
 {
-    int expon;
-    double frac;
+    uae_u32 longarray[3], *srcarray = (uae_u32 *)&src;
 
-    if (src == 0.0) {
-        *wrd1 = 0;
-        *wrd2 = 0;
-        *wrd3 = 0;
-        return;
-    }
-    if (src < 0) {
-        *wrd1 = 0x80000000;
-        src = -src;
-    } else {
-        *wrd1 = 0;
+    __asm {
+    fld     qword ptr   src;
+    fstp    tbyte ptr   longarray;
     }
-    frac = frexp (src, &expon);
-    frac += 0.5 / 18446744073709551616.0;
-    if (frac >= 1.0) {
-        frac /= 2.0;
-        expon++;
-    }
-    *wrd1 |= (((expon + 16383 - 1) & 0x7fff) << 16);
-    *wrd2 = (uae_u32) (frac * 4294967296.0);
-    *wrd3 = (uae_u32) (frac * 18446744073709551616.0 - *wrd2 * 4294967296.0);
+    *wrd1 = (longarray[2] & 0xffff) <<16;
+    *wrd2 =  longarray[1];
+    *wrd3 =  longarray[0]; // little endian
+    if (!srcarray[0] && (srcarray[1]==0x7ff00000 || srcarray[1]==0xfff00000))
+        *wrd2 = 0; // The MSB of the mantissa was set wrongly for infinity, causing a NaN
+}
+#endif
+#endif /* X86_MSVC_ASSEMBLY */
+
+#ifndef HAVE_to_single
+#define HAVE_to_single
+STATIC_INLINE double to_single (uae_u32 value)
+{
+    union {
+    float f;
+    uae_u32 u;
+    } val;
+
+    val.u = value;
+    return val.f;
+}
+#endif
+
+#ifndef HAVE_from_single
+#define HAVE_from_single
+STATIC_INLINE uae_u32 from_single (double src)
+{
+    union {
+    float f;
+    uae_u32 u;
+    } val;
+
+    val.f = (float) src;
+    return val.u;
 }
 #endif
 
 #ifndef HAVE_to_double
+#define HAVE_to_double
 STATIC_INLINE double to_double(uae_u32 wrd1, uae_u32 wrd2)
+{
+    union {
+    double d;
+    uae_u32 u[2];
+    } val;
+
+    val.u[0] = wrd2; // little endian
+    val.u[1] = wrd1;
+    return val.d;
+}
+#endif
+
+#ifndef HAVE_from_double
+#define HAVE_from_double
+STATIC_INLINE void from_double(double src, uae_u32 * wrd1, uae_u32 * wrd2)
+{
+    register uae_u32 *longarray = (uae_u32 *)&src;
+
+    *wrd1 = longarray[1]; // little endian
+    *wrd2 = longarray[0];
+}
+#endif
+
+static double twoto32 = 4294967296.0;
+#ifndef HAVE_to_exten
+#define HAVE_to_exten
+STATIC_INLINE double to_exten(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3)
 {
     double frac;
 
-    if ((wrd1 & 0x7fffffff) == 0 && wrd2 == 0)
+    if ((wrd1 & 0x7fff0000) == 0 && wrd2 == 0 && wrd3 == 0)
         return 0.0;
-    frac = (double) ((wrd1 & 0xfffff) | 0x100000) / 1048576.0 +
-        (double) wrd2 / 4503599627370496.0;
+    frac = ((double)wrd2 + ((double)wrd3 / twoto32)) / 2147483648.0;
     if (wrd1 & 0x80000000)
         frac = -frac;
-    return ldexp (frac, ((wrd1 >> 20) & 0x7ff) - 1023);
+    return ldexp (frac, ((wrd1 >> 16) & 0x7fff) - 16383);
 }
 #endif
 
-#ifndef HAVE_from_double
-STATIC_INLINE void from_double(double src, uae_u32 * wrd1, uae_u32 * wrd2)
+#ifndef HAVE_from_exten
+#define HAVE_from_exten
+STATIC_INLINE void from_exten(double src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3)
 {
     int expon;
-    int tmp;
     double frac;
 
     if (src == 0.0) {
         *wrd1 = 0;
         *wrd2 = 0;
+        *wrd3 = 0;
         return;
     }
     if (src < 0) {
@@ -129,13 +184,13 @@ STATIC_INLINE void from_double(double src, uae_u32 * wrd1, uae_u32 * wrd2)
         *wrd1 = 0;
     }
     frac = frexp (src, &expon);
-    frac += 0.5 / 9007199254740992.0;
+    frac += 0.5 / (twoto32 * twoto32);
     if (frac >= 1.0) {
         frac /= 2.0;
         expon++;
     }
-    tmp = (uae_u32) (frac * 2097152.0);
-    *wrd1 |= (((expon + 1023 - 1) & 0x7ff) << 20) | (tmp & 0xfffff);
-    *wrd2 = (uae_u32) (frac * 9007199254740992.0 - tmp * 4294967296.0);
+    *wrd1 |= (((expon + 16383 - 1) & 0x7fff) << 16);
+    *wrd2 = (uae_u32) (frac * twoto32);
+    *wrd3 = (uae_u32) ((frac * twoto32 - *wrd2) * twoto32);
 }
 #endif
index 9fc7573488c40517783d3e1c2a37ef61bbe44858..4dbe645873f701735be55ae703d65f41d969e8d0 100755 (executable)
@@ -132,9 +132,6 @@ void init_shm(void)
        allocated = 1;
     }
 
-    while (memstats.dwAvailPageFile + memstats.dwAvailPhys < max_z3fastmem)
-       max_z3fastmem <<= 1;
-
     write_log("Max Z3FastRAM %dM. Total physical RAM %uM\n", max_z3fastmem >> 20, totalphys64 >> 20);
 }
 
index b3bd85c2851bea4be91349fd847155cbc97ede77..91107bb443f3abaae5898c4b1c4245a39e9fabb5 100755 (executable)
@@ -5,6 +5,7 @@
 #define IDS_KICKSTART                   1
 #define IDS_DISK                        2
 #define IDS_DISPLAY                     3
+#define IDC_HARDDRIVE_IMAGE             3
 #define IDS_HARDDISK                    4
 #define IDS_FLOPPY                      5
 #define IDS_ABOUT                       6
 #define IDD_FRONTEND                    249
 #define IDS_SOUND_SWAP_PAULA            249
 #define IDS_SOUND_SWAP_AHI              250
+#define IDD_PROGRESSBAR                 250
 #define IDS_SOUND_SWAP_BOTH             251
 #define IDS_NUMSG_NEEDEXT2              300
 #define IDS_NUMSG_NOROMKEY              301
 #define IDS_NUMSG_KICKREP               325
 #define IDS_NUMSG_KICKREPNO             326
 #define IDS_NUMSG_NOROM                 327
+#define IDS_HDCLONE_OK                  328
+#define IDS_HDCLONE_FAIL                329
 #define IDS_QS_MODELS                   1000
 #define IDS_QS_MODEL_A500               1001
 #define IDS_QS_MODEL_A500P              1002
 #define IDC_LORES                       1176
 #define IDC_VSYNC                       1177
 #define IDC_AFULLSCREEN                 1178
+#define IDC_LORES_SMOOTHED              1179
 #define IDC_FRAMERATE                   1185
 #define IDC_RATETEXT                    1186
 #define IDC_XSIZE                       1187
 #define IDC_CATWEASEL                   1611
 #define IDC_AVIOUTPUT_FPS_STATIC        1612
 #define IDC_INPUTAMIGA                  1612
+#define IDC_ALWAYSONTOP2                1612
+#define IDC_BORDERLESS                  1612
 #define IDC_AVIOUTPUT_VIDEO             1613
 #define IDC_INPUTAUTOFIRE               1613
 #define IDC_AVIOUTPUT_AUDIO             1614
 #define IDC_FE_SCREENSHOT               1702
 #define IDC_PATHS_DEFAULTTYPE           1704
 #define IDC_SCSIMODE                    1705
+#define IDC_PROGRESS1                   1705
+#define IDC_PROGRESSBAR                 1705
+#define IDC_PROGRESSBAR_TEXT            1706
 #define ID__FLOPPYDRIVES                40004
 #define ID_FLOPPYDRIVES_DF0             40005
 #define ID_ST_CONFIGURATION             40010
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NO_MFC                     1
 #define _APS_3D_CONTROLS                     1
-#define _APS_NEXT_RESOURCE_VALUE        249
+#define _APS_NEXT_RESOURCE_VALUE        251
 #define _APS_NEXT_COMMAND_VALUE         40021
-#define _APS_NEXT_CONTROL_VALUE         1705
+#define _APS_NEXT_CONTROL_VALUE         1707
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif
index 55d14238eb3380d137d0f42b83cd8823c077ab34..732d96962d7eb64057562c235fcbf2bd88dcb150 100755 (executable)
@@ -5,8 +5,5 @@
 #define HIDC_EDITDESCRIPTION            0x8087057e    // IDD_LOADSAVE [English (United States)]
 #define HIDC_EDITNAME                   0x8087057d    // IDD_LOADSAVE [English (United States)]
 #define HIDC_EDITPATH                   0x80870582    // IDD_LOADSAVE [English (United States)]
-#define HIDC_LORES                      0x806c0498    // IDD_DISPLAY [English (United States)]
 #define HIDC_MAPDRIVES                  0x807105e3    // IDD_HARDDISK [English (United States)]
 #define HIDC_MAPDRIVES_NET              0x807105e4    // IDD_HARDDISK [English (United States)]
-#define HIDC_PFULLSCREEN                0x806c04a8    // IDD_DISPLAY [English (United States)]
-#define HIDC_TEST16BIT                  0x806c05e2    // IDD_DISPLAY [English (United States)]
index 7e6b45502a1d6ce23e67863f9bda73d990aed563..9456e0126072d48de54ed16e5b09c8019d5dbe58 100755 (executable)
@@ -36,18 +36,18 @@ STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 EXSTYLE WS_EX_CONTEXTHELP
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "ROM Settings:",-1,5,0,290,74
-    RTEXT           "Boot ROM File:",IDC_ROMTEXT,10,15,75,10
+    GROUPBOX        "System ROM settings",-1,5,0,290,74
+    RTEXT           "Main ROM File:",IDC_ROMTEXT,10,15,75,10
     COMBOBOX        IDC_ROMFILE,89,12,186,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON      "...",IDC_KICKCHOOSER,280,10,10,15
     RTEXT           "Extended ROM File:",IDC_ROMFILE2TEXT,10,35,75,10
     COMBOBOX        IDC_ROMFILE2,89,31,186,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON      "...",IDC_ROMCHOOSER2,280,30,10,15
-    CONTROL         "MAPROM emulation [] Creates BlizKick-compatible memory area.",IDC_MAPROM,
+    CONTROL         "MapROM emulation [] Creates BlizKick-compatible memory area.",IDC_MAPROM,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,95,54,82,10
-    CONTROL         "ShapeShifter support [] Patches Kickstart ROM for ShapeShifter compatibility.",IDC_KICKSHIFTER,
+    CONTROL         "ShapeShifter support [] Patches the system ROM for ShapeShifter compatibility.",IDC_KICKSHIFTER,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,54,80,10
-    GROUPBOX        "Misc settings:",-1,5,76,290,57
+    GROUPBOX        "Miscellaneous",-1,5,76,290,57
     RTEXT           "Cartridge ROM File:",IDC_FLASHTEXT2,8,93,75,10
     COMBOBOX        IDC_CARTFILE,89,90,186,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON      "...",IDC_CARTCHOOSER,280,90,10,15
@@ -61,36 +61,37 @@ STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
     GROUPBOX        "Screen",IDC_SCREENRESTEXT,12,0,199,67,BS_LEFT
-    RTEXT           "Fullscreen",IDC_SELECTRESTEXT,17,17,34,15,SS_CENTERIMAGE
-    COMBOBOX        IDC_DISPLAYSELECT,57,10,147,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_RESOLUTION,57,27,52,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_REFRESHRATE,143,27,61,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Windowed",IDC_WINDOWEDTEXT,18,51,35,8
-    EDITTEXT        IDC_XSIZE,57,48,35,12,ES_NUMBER
-    EDITTEXT        IDC_YSIZE,101,48,35,12,ES_NUMBER
-    CONTROL         "VSync",IDC_VSYNC,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,145,49,54,10
-    GROUPBOX        "Settings",IDC_SETTINGSTEXT,12,77,199,89
-    CONTROL         "Full Screen",IDC_AFULLSCREEN,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,35,89,90,10
-    CONTROL         "Full Screen RTG",IDC_PFULLSCREEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,131,89,70,10,0,HIDC_PFULLSCREEN
-    CONTROL         "Correct aspect ratio",IDC_ASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,35,106,90,10
-    CONTROL         "Lo-res",IDC_LORES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,131,106,70,10,0,HIDC_LORES
+    RTEXT           "Full screen:",IDC_SELECTRESTEXT,17,17,38,15,SS_CENTERIMAGE
+    COMBOBOX        IDC_DISPLAYSELECT,59,10,147,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_RESOLUTION,59,27,52,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_REFRESHRATE,145,27,61,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Windowed:",IDC_WINDOWEDTEXT,18,51,37,8
+    EDITTEXT        IDC_XSIZE,59,48,35,12,ES_NUMBER
+    EDITTEXT        IDC_YSIZE,103,48,35,12,ES_NUMBER
+    CONTROL         "Vertical sync",IDC_VSYNC,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,147,49,54,10
+    GROUPBOX        "Settings",IDC_SETTINGSTEXT,12,73,199,93
+    CONTROL         "Full-screen native modes",IDC_AFULLSCREEN,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,21,85,92,10
+    CONTROL         "Full-screen RTG modes",IDC_PFULLSCREEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,85,87,10
+    CONTROL         "Correct aspect ratio",IDC_ASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,21,99,92,10
+    CONTROL         "Force low resolution",IDC_LORES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,99,85,10
     LTEXT           "Refresh:",IDC_REFRESHTEXT,18,129,28,8
-    CONTROL         "Slider1",IDC_FRAMERATE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,46,124,75,20
-    EDITTEXT        IDC_RATETEXT,126,128,77,12,ES_CENTER | ES_READONLY
+    CONTROL         "Slider1",IDC_FRAMERATE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,47,124,75,20
+    EDITTEXT        IDC_RATETEXT,127,128,77,12,ES_CENTER | ES_READONLY
     GROUPBOX        "Centering",IDC_STATIC,221,0,61,67
     CONTROL         "Horizontal",IDC_XCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,229,16,45,10
     CONTROL         "Vertical",IDC_YCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,229,32,39,10
-    GROUPBOX        "Line mode",IDC_LINEMODE,222,77,61,74
+    GROUPBOX        "Line mode",IDC_LINEMODE,222,73,61,73
     CONTROL         "Normal",IDC_LM_NORMAL,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,233,89,38,10
-    CONTROL         "Doubled",IDC_LM_DOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,233,105,41,10
-    CONTROL         "Scanline",IDC_LM_SCANLINES,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,233,121,40,10
+    CONTROL         "Double",IDC_LM_DOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,233,105,41,10
+    CONTROL         "Scanlines",IDC_LM_SCANLINES,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,233,121,40,10
     COMBOBOX        IDC_DA_MODE,35,183,58,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | NOT WS_VISIBLE | WS_VSCROLL | WS_TABSTOP
     CONTROL         "",IDC_DA_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | NOT WS_VISIBLE | WS_TABSTOP,99,179,101,20
-    PUSHBUTTON      "Detect pixel format",IDC_TEST16BIT,210,181,73,14,0,0,HIDC_TEST16BIT
-    LTEXT           "FPS Adj.",IDC_REFRESH2TEXT,18,149,28,8
-    CONTROL         "",IDC_FRAMERATE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,46,144,127,20
-    EDITTEXT        IDC_RATE2TEXT,177,148,26,12,ES_CENTER | ES_READONLY
-    COMBOBOX        IDC_RESOLUTIONDEPTH,110,27,32,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "Detect Pixel Format",IDC_TEST16BIT,210,181,73,14
+    LTEXT           "FPS Adj.:",IDC_REFRESH2TEXT,17,149,30,8
+    CONTROL         "",IDC_FRAMERATE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,47,144,127,20
+    EDITTEXT        IDC_RATE2TEXT,178,148,26,12,ES_CENTER | ES_READONLY
+    COMBOBOX        IDC_RESOLUTIONDEPTH,112,27,32,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Filtered low resolution",IDC_LORES_SMOOTHED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,113,85,10
 END
 
 IDD_MEMORY DIALOGEX 0, 0, 300, 175
@@ -98,16 +99,16 @@ STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 EXSTYLE WS_EX_CONTEXTHELP
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Memory Settings:",-1,14,40,274,93
+    GROUPBOX        "Memory settings",-1,14,40,274,93
     RTEXT           "Chip:",-1,24,60,20,10,SS_CENTERIMAGE
     CONTROL         "Slider1",IDC_CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,55,50,20
     RTEXT           "Fast:",IDC_FASTTEXT,24,85,20,10,SS_CENTERIMAGE
     CONTROL         "Slider1",IDC_FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,80,50,20
     RTEXT           "Slow:",-1,149,60,20,10,SS_CENTERIMAGE
     CONTROL         "Slider1",IDC_SLOWMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,55,50,20
-    RTEXT           "Z3-Fast:",IDC_Z3TEXT,139,85,30,10,SS_CENTERIMAGE
+    RTEXT           "Z3 Fast:",IDC_Z3TEXT,139,85,30,10,SS_CENTERIMAGE
     CONTROL         "Slider1",IDC_Z3FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,80,60,20
-    RTEXT           "RTG: [] Graphics card memory. Required for Picasso96 emulation.",IDC_GFXCARDTEXT,96,110,76,10,SS_NOTIFY | SS_CENTERIMAGE
+    RTEXT           "RTG: [] Graphics card memory. Required for RTG (Picasso96) emulation.",IDC_GFXCARDTEXT,81,110,90,10,SS_NOTIFY | SS_CENTERIMAGE
     CONTROL         "Slider1",IDC_P96MEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,105,60,20
     EDITTEXT        IDC_CHIPRAM,105,59,30,12,ES_CENTER | ES_READONLY
     EDITTEXT        IDC_FASTRAM,105,86,30,12,ES_CENTER | ES_READONLY
@@ -120,7 +121,7 @@ IDD_CPU DIALOGEX 0, 0, 300, 177
 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    GROUPBOX        "CPU Type:",IDC_STATIC,5,5,81,166,BS_LEFT
+    GROUPBOX        "CPU",IDC_STATIC,5,5,81,166,BS_LEFT
     CONTROL         "68000",IDC_CPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,10,18,63,10
     CONTROL         "68010",IDC_CPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,10,33,65,10
     CONTROL         "68EC020",IDC_CPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,10,48,65,10
@@ -130,9 +131,9 @@ BEGIN
     CONTROL         "68040",IDC_CPU6,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,10,108,66,10
     CONTROL         "More compatible [] Emulate 68000's prefetch registers. More compatible but slower.",IDC_COMPATIBLE,
                     "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,10,130,70,10
-    CONTROL         "JIT [] Enable Just-In-Time CPU emulator. Increases the speed of CPU emulation 10-100x. Requires 68020 or 68040 CPU.",IDC_JITENABLE,
+    CONTROL         "JIT [] Enable just-in-time CPU emulator. Significantly increases the speed of CPU emulation. Requires 68020 or 68040 CPU.",IDC_JITENABLE,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,145,64,10
-    GROUPBOX        "CPU Emulation Speed:",IDC_STATIC,90,5,205,86
+    GROUPBOX        "CPU emulation speed",IDC_STATIC,90,5,205,86
     CONTROL         "Fastest possible, but maintain chipset timing",IDC_CS_HOST,
                     "Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,95,18,195,10
     CONTROL         "Match A500 speed",IDC_CS_68000,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,95,32,195,10
@@ -141,20 +142,20 @@ BEGIN
     RTEXT           "CPU",IDC_CS_CPU_TEXT,96,71,15,10,SS_CENTERIMAGE | WS_TABSTOP
     CONTROL         "Slider1",IDC_SPEED,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,114,66,67,20
     LTEXT           "Chipset",IDC_CS_CHIPSET_TEXT,182,71,25,10,SS_CENTERIMAGE | NOT WS_GROUP | WS_TABSTOP
-    RTEXT           "CPU Idle",IDC_CS_CPU_TEXT2,236,56,32,10,SS_CENTERIMAGE | WS_TABSTOP
+    RTEXT           "CPU idle",IDC_CS_CPU_TEXT2,236,56,32,10,SS_CENTERIMAGE | WS_TABSTOP
     CONTROL         "",IDC_CPUIDLE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,219,66,69,20
-    GROUPBOX        "Advanced JIT settings:",IDC_STATIC,90,92,205,79
-    RTEXT           "Cache Size:",IDC_CS_CACHE_TEXT,95,109,45,10,SS_CENTERIMAGE | WS_TABSTOP
+    GROUPBOX        "Advanced JIT settings",IDC_STATIC,90,92,205,79
+    RTEXT           "Cache size:",IDC_CS_CACHE_TEXT,95,109,45,10,SS_CENTERIMAGE | WS_TABSTOP
     CONTROL         "Slider1",IDC_CACHE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,140,104,115,20
     EDITTEXT        IDC_CACHETEXT,255,109,30,12,ES_CENTER | ES_READONLY
-    CONTROL         "Hard Flush",IDC_HARDFLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,128,60,10
-    CONTROL         "Const Jump",IDC_CONSTJUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,142,60,10
-    CONTROL         "FPU Support",IDC_JITFPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,155,60,10
-    CONTROL         "Force Settings",IDC_FORCE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,165,128,61,10
-    CONTROL         "No Flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,165,142,60,10
+    CONTROL         "Hard flush",IDC_HARDFLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,128,60,10
+    CONTROL         "Constant jump",IDC_CONSTJUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,142,60,10
+    CONTROL         "FPU support",IDC_JITFPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,155,60,10
+    CONTROL         "Force settings",IDC_FORCE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,165,128,61,10
+    CONTROL         "No flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,165,142,60,10
     CONTROL         "Direct",IDC_TRUST0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,230,128,34,10
     CONTROL         "Indirect",IDC_TRUST1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,230,142,45,10
-    CONTROL         "After Picasso96",IDC_TRUST2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,230,155,64,10
+    CONTROL         "After RTG",IDC_TRUST2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,230,155,64,10
 END
 
 IDD_FLOPPY DIALOGEX 0, 0, 300, 224
@@ -164,42 +165,42 @@ BEGIN
     RTEXT           "DF0:",IDC_STATIC,10,7,20,10,SS_CENTERIMAGE
     COMBOBOX        IDC_DF0TEXT,2,22,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
     COMBOBOX        IDC_DF0TYPE,123,6,49,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Write Protected",IDC_STATIC,174,8,59,10,SS_CENTERIMAGE
+    RTEXT           "Write-protected",IDC_STATIC,174,8,59,10,SS_CENTERIMAGE
     CONTROL         "",IDC_DF0WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,4,10,15
     PUSHBUTTON      "Eject",IDC_EJECT0,253,4,30,15
     PUSHBUTTON      "...",IDC_DF0,287,4,10,15
     RTEXT           "DF1:",IDC_STATIC,10,42,20,10,SS_CENTERIMAGE
     COMBOBOX        IDC_DF1TEXT,2,58,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
     COMBOBOX        IDC_DF1TYPE,123,42,49,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Write Protected",IDC_STATIC,174,43,59,10,SS_CENTERIMAGE
+    RTEXT           "Write-protected",IDC_STATIC,174,43,59,10,SS_CENTERIMAGE
     CONTROL         "",IDC_DF1WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,40,10,15
     PUSHBUTTON      "Eject",IDC_EJECT1,253,40,30,15
     PUSHBUTTON      "...",IDC_DF1,287,40,10,15
     RTEXT           "DF2:",IDC_STATIC,10,77,20,10,SS_CENTERIMAGE
     COMBOBOX        IDC_DF2TEXT,2,93,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
     COMBOBOX        IDC_DF2TYPE,123,77,49,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Write Protected",IDC_STATIC,174,77,59,10,SS_CENTERIMAGE
+    RTEXT           "Write-protected",IDC_STATIC,174,77,59,10,SS_CENTERIMAGE
     CONTROL         "",IDC_DF2WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,75,9,15
     PUSHBUTTON      "Eject",IDC_EJECT2,253,75,30,15
     PUSHBUTTON      "...",IDC_DF2,287,75,10,15
     RTEXT           "DF3:",IDC_STATIC,10,112,20,9,SS_CENTERIMAGE
     COMBOBOX        IDC_DF3TEXT,2,128,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
     COMBOBOX        IDC_DF3TYPE,123,112,49,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Write Protected",IDC_STATIC,174,113,59,10,SS_CENTERIMAGE
+    RTEXT           "Write-protected",IDC_STATIC,174,113,59,10,SS_CENTERIMAGE
     CONTROL         "",IDC_DF3WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,111,9,15
     PUSHBUTTON      "Eject",IDC_EJECT3,253,110,30,15
     PUSHBUTTON      "...",IDC_DF3,287,109,10,15
-    GROUPBOX        "New disk image",IDC_SETTINGSTEXT,5,183,289,35
+    GROUPBOX        "New floppy disk image",IDC_SETTINGSTEXT,5,183,289,35
     COMBOBOX        IDC_FLOPPYTYPE,16,196,51,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Create Standard ""Floppy"" [] Creates standard 880kb ADF disk image.",IDC_CREATE,76,196,97,15
-    PUSHBUTTON      "Create Custom ""Floppy"" [] Creates ~2Mb low level (MFM) ADF disk image. Useful for programs that use non-AmigaDOS disk format (for example some  save disks or MSDOS formatted floppies)",IDC_CREATE_RAW,183,196,101,15
+    PUSHBUTTON      "Create standard disk [] Creates a standard 880 KB ADF disk image.",IDC_CREATE,76,196,97,15
+    PUSHBUTTON      "Create custom disk [] Creates a low level (MFM) ADF disk image (about 2MB). Useful for programs that use non-standard disk formats (for example some save disks or DOS-formatted floppies)",IDC_CREATE_RAW,183,196,101,15
     GROUPBOX        "Floppy drive emulation speed",IDC_SETTINGSTEXT2,5,144,289,35
     CONTROL         "",IDC_FLOPPYSPD,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,32,152,116,20
     EDITTEXT        IDC_FLOPPYSPDTEXT,169,155,107,12,ES_CENTER | ES_READONLY
-    PUSHBUTTON      "Delete Saveimage",IDC_SAVEIMAGE0,43,5,70,15,NOT WS_VISIBLE
-    PUSHBUTTON      "Delete Saveimage",IDC_SAVEIMAGE1,43,40,70,15,NOT WS_VISIBLE
-    PUSHBUTTON      "Delete Saveimage",IDC_SAVEIMAGE2,43,75,70,15,NOT WS_VISIBLE
-    PUSHBUTTON      "Delete Saveimage",IDC_SAVEIMAGE3,43,110,70,15,NOT WS_VISIBLE
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE0,43,5,70,15,NOT WS_VISIBLE
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE1,43,40,70,15,NOT WS_VISIBLE
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE2,43,75,70,15,NOT WS_VISIBLE
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE3,43,110,70,15,NOT WS_VISIBLE
 END
 
 IDD_HARDDISK DIALOGEX 0, 0, 300, 231
@@ -208,15 +209,15 @@ EXSTYLE WS_EX_CONTEXTHELP
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
     CONTROL         "List1",IDC_VOLUMELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,5,0,290,182
-    PUSHBUTTON      "Add &Directory...",IDC_NEW_FS,5,186,60,15
-    PUSHBUTTON      "Add &Hardfile...",IDC_NEW_HF,70,186,60,15
-    PUSHBUTTON      "Add Ha&rddrive...",IDC_NEW_HD,135,186,60,15
+    PUSHBUTTON      "Add &directory...",IDC_NEW_FS,5,186,60,15
+    PUSHBUTTON      "Add &hardfile...",IDC_NEW_HF,70,186,60,15
+    PUSHBUTTON      "Add ha&rd drive...",IDC_NEW_HD,135,186,60,15
     PUSHBUTTON      "Remove",IDC_REMOVE,235,186,60,15
     PUSHBUTTON      "&Properties",IDC_EDIT,235,207,60,15
-    CONTROL         "Add PC Drives at Startup",IDC_MAPDRIVES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,205,100,10,0,HIDC_MAPDRIVES
+    CONTROL         "Add PC drives at startup",IDC_MAPDRIVES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,205,100,10,0,HIDC_MAPDRIVES
     CONTROL         "Disable UAEFSDB-support",IDC_NOUAEFSDB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,205,115,10
     CONTROL         "Don't use Windows Recycle Bin",IDC_NORECYCLEBIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,216,115,10
-    CONTROL         "Add Network Drives...",IDC_MAPDRIVES_NET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,216,101,10,0,HIDC_MAPDRIVES_NET
+    CONTROL         "Include network drives",IDC_MAPDRIVES_NET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,216,101,10,0,HIDC_MAPDRIVES_NET
 END
 
 IDD_SOUND DIALOGEX 0, 0, 300, 244
@@ -225,7 +226,7 @@ FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
     RTEXT           "Sound device:",IDC_SOUNDCARD,8,9,51,13,SS_CENTERIMAGE
     COMBOBOX        IDC_SOUNDCARDLIST,64,9,229,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Sound Emulation",IDC_SOUNDSETTINGS,5,30,120,68
+    GROUPBOX        "Sound emulation",IDC_SOUNDSETTINGS,5,30,120,68
     CONTROL         "Disabled",IDC_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,45,43,10
     CONTROL         "Disabled, but emulated",IDC_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,57,88,10
     CONTROL         "Enabled",IDC_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,69,42,10
@@ -237,29 +238,29 @@ BEGIN
     CONTROL         "Slider1",IDC_SOUNDBUFFERRAM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,138,75,106,19
     EDITTEXT        IDC_SOUNDBUFFERMEM,248,78,40,12,ES_CENTER | ES_READONLY
     GROUPBOX        "Settings",IDC_SOUNDINTERPOLATION2,6,101,290,60
-    LTEXT           "Frequency",IDC_SOUNDFREQTXT,13,111,37,8,SS_CENTERIMAGE
+    LTEXT           "Frequency:",IDC_SOUNDFREQTXT,13,111,37,8,SS_CENTERIMAGE
     COMBOBOX        IDC_SOUNDFREQ,15,120,59,75,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Audio filter",IDC_SOUNDFILTERTXT,227,135,34,8,SS_CENTERIMAGE
+    LTEXT           "Audio filter:",IDC_SOUNDFILTERTXT,227,135,34,8,SS_CENTERIMAGE
     COMBOBOX        IDC_SOUNDFILTER,227,144,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Stereo mode",IDC_SOUNDSTEREOTXT,86,111,41,8,SS_CENTERIMAGE
+    LTEXT           "Stereo mode:",IDC_SOUNDSTEREOTXT,86,111,41,8,SS_CENTERIMAGE
     COMBOBOX        IDC_SOUNDSTEREO,85,120,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Interpolation",IDC_SOUNDINTERPOLATIONTXT,227,111,41,8,SS_CENTERIMAGE
+    LTEXT           "Interpolation:",IDC_SOUNDINTERPOLATIONTXT,227,111,41,8,SS_CENTERIMAGE
     COMBOBOX        IDC_SOUNDINTERPOLATION,227,119,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Stereo separation",IDC_SOUNDSTEREOSEPTXT,155,111,56,8,SS_CENTERIMAGE
+    LTEXT           "Stereo separation:",IDC_SOUNDSTEREOSEPTXT,155,111,56,8,SS_CENTERIMAGE
     COMBOBOX        IDC_SOUNDSTEREOSEP,156,120,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Stereo mixing delay",IDC_SOUNDSTEREOMIXTXT,155,135,63,8,SS_CENTERIMAGE
+    LTEXT           "Stereo mixing delay:",IDC_SOUNDSTEREOMIXTXT,155,135,63,8,SS_CENTERIMAGE
     COMBOBOX        IDC_SOUNDSTEREOMIX,156,144,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Disk Drive Sound Emulation",IDC_STATIC,6,164,290,46
+    GROUPBOX        "Floppy drive sound emulation",IDC_STATIC,6,164,290,46
     CONTROL         "",IDC_SOUNDDRIVEVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,14,172,107,19
     EDITTEXT        IDC_SOUNDDRIVEVOLUME2,124,178,40,12,ES_CENTER | ES_READONLY
     COMBOBOX        IDC_SOUNDDRIVE,237,174,46,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     COMBOBOX        IDC_SOUNDDRIVESELECT,18,192,265,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Sound driver lag compensation",IDC_STATIC,6,211,290,31
+    GROUPBOX        "Audio driver lag compensation",IDC_STATIC,6,211,290,31
     CONTROL         "Slider1",IDC_SOUNDADJUST,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,14,221,107,19
     EDITTEXT        IDC_SOUNDADJUSTNUM,124,224,40,12,ES_CENTER | ES_READONLY
     PUSHBUTTON      "Calibrate",IDC_SOUNDCALIBRATE,183,223,40,14
     COMBOBOX        IDC_SOUNDSWAP,85,144,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Swap channels",IDC_SOUNDSWAPTXT,86,135,50,8,SS_CENTERIMAGE
+    LTEXT           "Swap channels:",IDC_SOUNDSWAPTXT,86,135,50,8,SS_CENTERIMAGE
 END
 
 IDD_LOADSAVE DIALOGEX 0, 0, 302, 241
@@ -276,13 +277,13 @@ BEGIN
     CONTROL         "Ignore link",IDC_CONFIGNOLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,146,206,48,10
     EDITTEXT        IDC_EDITPATH,199,161,49,15,ES_AUTOHSCROLL | WS_DISABLED,0,HIDC_EDITPATH
     CONTROL         "Autoload",IDC_CONFIGAUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,253,163,42,10
-    GROUPBOX        "Extra info",IDC_STATIC,199,179,96,38,BS_LEFT
+    GROUPBOX        "Additional information",IDC_STATIC,199,179,96,38,BS_LEFT
     PUSHBUTTON      "View",IDC_VIEWINFO,210,195,35,15
     PUSHBUTTON      "Set",IDC_SETINFO,250,195,35,15
     PUSHBUTTON      "Load",IDC_QUICKLOAD,5,225,40,15
     PUSHBUTTON      "Save",IDC_QUICKSAVE,50,225,40,15
-    PUSHBUTTON      "Load From...",IDC_LOAD,125,225,45,15
-    PUSHBUTTON      "Save As...",IDC_SAVE,175,225,40,15
+    PUSHBUTTON      "Load from...",IDC_LOAD,125,225,45,15
+    PUSHBUTTON      "Save as...",IDC_SAVE,175,225,40,15
     PUSHBUTTON      "Delete",IDC_DELETE,255,225,40,15
 END
 
@@ -290,7 +291,7 @@ IDD_PORTS DIALOGEX 0, 0, 300, 222
 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Parallel Port",IDC_SERPARFRAME,5,2,291,68
+    GROUPBOX        "Parallel port",IDC_SERPARFRAME,5,2,291,68
     RTEXT           "Printer:",IDC_STATIC,12,15,25,15,SS_CENTERIMAGE
     COMBOBOX        IDC_PRINTERLIST,49,15,153,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON      "Flush print job",IDC_FLUSHPRINTER,220,14,58,12
@@ -300,21 +301,21 @@ BEGIN
     EDITTEXT        IDC_PRINTERAUTOFLUSH,263,33,25,12,ES_NUMBER
     RTEXT           "Ghostscript extra parameters:",IDC_STATIC,12,49,91,15,SS_CENTERIMAGE
     EDITTEXT        IDC_PS_PARAMS,120,50,169,12,ES_AUTOHSCROLL
-    GROUPBOX        "Serial Port",IDC_SERIALFRAME,4,72,292,29
+    GROUPBOX        "Serial port",IDC_SERIALFRAME,4,72,292,29
     COMBOBOX        IDC_SERIAL,19,83,95,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Shared",IDC_SHARED,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,132,83,48,13
     CONTROL         "RTS/CTS",IDC_SER_CTSRTS,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,185,83,53,12
-    CONTROL         "Direct []Use when emulating serial linked games on two PCs running WinUAE",IDC_SERIAL_DIRECT,
+    CONTROL         "Direct []Use when emulating serial-link games on two PCs running WinUAE",IDC_SERIAL_DIRECT,
                     "Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,243,83,46,12
     GROUPBOX        "MIDI",IDC_MIDIFRAME,4,104,292,33
     RTEXT           "Out:",IDC_MIDI,10,115,34,15,SS_CENTERIMAGE
     COMBOBOX        IDC_MIDIOUTLIST,50,115,95,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     RTEXT           "In:",IDC_MIDI2,150,115,29,15,SS_CENTERIMAGE
     COMBOBOX        IDC_MIDIINLIST,185,115,95,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Mouse/Joystick Ports",IDC_PORT0,4,139,292,75
+    GROUPBOX        "Mouse/joystick ports",IDC_PORT0,4,139,292,75
     COMBOBOX        IDC_PORT0_JOYS,45,155,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     COMBOBOX        IDC_PORT1_JOYS,45,176,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Swap Ports",IDC_SWAP,211,195,75,14
+    PUSHBUTTON      "Swap ports",IDC_SWAP,211,195,75,14
     RTEXT           "Port 0:",IDC_STATIC,11,154,25,15,SS_CENTERIMAGE
     RTEXT           "Port 1:",IDC_STATIC,11,175,25,15,SS_CENTERIMAGE
     LTEXT           "X-Arcade layout information []#1",IDC_STATIC,16,195,106,15,SS_NOTIFY | SS_CENTERIMAGE
@@ -322,7 +323,7 @@ END
 
 IDD_CONTRIBUTORS DIALOGEX 0, 0, 411, 242
 STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION
-CAPTION "UAE Authors and Contributors..."
+CAPTION "UAE authors and contributors..."
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
     DEFPUSHBUTTON   "Ok",ID_OK,177,219,53,14
@@ -352,35 +353,35 @@ IDD_MISC1 DIALOGEX 0, 0, 300, 219
 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Advanced:",IDC_STATIC,8,4,285,110
-    CONTROL         "Middle-Mouse-Button --> ALT-TAB",IDC_JULIAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,19,120,10
-    CONTROL         "Show GUI on startup",IDC_SHOWGUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,34,120,10
-    CONTROL         "On-Screen LEDs",IDC_SHOWLEDS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,49,115,10
-    CONTROL         "UAEscsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,64,117,10
-    CONTROL         "Don't show Taskbar button",IDC_NOTASKBARBUTTON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,78,117,10
-    CONTROL         "BSDsocket.library emulation",IDC_SOCKETS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,19,120,10
-    CONTROL         "Use CTRL-F11 to quit",IDC_CTRLF11,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,34,120,10
-    CONTROL         "Don't use RGB overlays",IDC_NOOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,49,120,10
-    CONTROL         "Syncronize clock",IDC_CLOCKSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,78,115,10
-    GROUPBOX        "Keyboard LEDs:",IDC_STATIC,7,120,85,94
+    GROUPBOX        "Advanced",IDC_STATIC,8,4,285,110
+    CONTROL         "Untrap mouse with middle button",IDC_JULIAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,17,120,10
+    CONTROL         "Show GUI on startup",IDC_SHOWGUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,31,120,10
+    CONTROL         "On-screen LEDs",IDC_SHOWLEDS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,45,115,10
+    CONTROL         "uaescsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,59,117,10
+    CONTROL         "Don't show taskbar button",IDC_NOTASKBARBUTTON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,72,117,10
+    CONTROL         "bsdsocket.library emulation",IDC_SOCKETS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,17,120,10
+    CONTROL         "Use CTRL-F11 to quit",IDC_CTRLF11,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,31,120,10
+    CONTROL         "Don't use RGB overlays",IDC_NOOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,45,120,10
+    CONTROL         "Syncronize clock",IDC_CLOCKSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,72,115,10
+    GROUPBOX        "Keyboard LEDs",IDC_STATIC,7,120,85,94
     COMBOBOX        IDC_KBLED1,22,134,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     COMBOBOX        IDC_KBLED2,22,153,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     COMBOBOX        IDC_KBLED3,22,173,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Logging:",IDC_STATIC,97,120,195,25
+    GROUPBOX        "Logging",IDC_STATIC,97,120,195,25
     CONTROL         "Create log file",IDC_CREATELOGFILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,131,72,10,0,HIDC_CREATELOGFILE
-    CONTROL         "Illegal mem accesses",IDC_ILLEGAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,189,131,80,10
-    GROUPBOX        "State files:",IDC_STATIC,98,146,195,69
+    CONTROL         "Illegal memory accesses",IDC_ILLEGAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,189,131,95,10
+    GROUPBOX        "State files",IDC_STATIC,98,146,195,69
     PUSHBUTTON      "Load state...",IDC_DOLOADSTATE,105,162,49,14
     PUSHBUTTON      "Save state...",IDC_DOSAVESTATE,106,188,49,14
     CONTROL         "Enable state recording",IDC_STATE_CAPTURE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,188,161,88,10
-    RTEXT           "Recording rate (seconds)",IDC_STATE_RATE_TEXT,157,179,86,10,SS_CENTERIMAGE | WS_TABSTOP
+    RTEXT           "Recording rate (seconds):",IDC_STATE_RATE_TEXT,157,179,86,10,SS_CENTERIMAGE | WS_TABSTOP
     COMBOBOX        IDC_STATE_RATE,248,177,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Recording buffer (MB)",IDC_STATE_BUFFERSIZE_TEXT,157,199,83,10,SS_CENTERIMAGE | WS_TABSTOP
+    RTEXT           "Recording buffer (MB):",IDC_STATE_BUFFERSIZE_TEXT,157,199,83,10,SS_CENTERIMAGE | WS_TABSTOP
     COMBOBOX        IDC_STATE_BUFFERSIZE,248,197,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Always on top",IDC_ALWAYSONTOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,92,117,10
-    CONTROL         "Catweasel",IDC_CATWEASEL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,92,115,10
-    CONTROL         "USB-mode",IDC_KBLED_USB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,196,64,10
-    COMBOBOX        IDC_SCSIMODE,159,62,104,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Always on top",IDC_ALWAYSONTOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,85,117,10
+    CONTROL         "Catweasel",IDC_CATWEASEL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,85,115,10
+    CONTROL         "USB mode",IDC_KBLED_USB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,196,64,10
+    COMBOBOX        IDC_SCSIMODE,159,57,104,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
 END
 
 IDD_HARDFILE DIALOGEX 0, 0, 299, 212
@@ -388,36 +389,36 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS
 CAPTION "Hardfile Settings"
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    GROUPBOX        "Hard File Settings",IDC_STATIC,10,5,280,113
+    GROUPBOX        "Settings",IDC_STATIC,10,5,280,113
     RTEXT           "Path:",IDC_HARDFILE_DIR_TEXT,26,18,22,10
     EDITTEXT        IDC_PATH_NAME,52,15,213,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_SELECTOR,271,15,11,15
-    RTEXT           "Filesystem:",IDC_HARDFILE_FILESYS_TEXT,14,37,34,10
+    RTEXT           "File system:",IDC_HARDFILE_FILESYS_TEXT,14,37,34,10
     EDITTEXT        IDC_PATH_FILESYS,52,34,213,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_FILESYS_SELECTOR,271,34,11,15
     RTEXT           "Device:",IDC_HARDFILE_DEVICE_TEXT,17,58,31,10
     EDITTEXT        IDC_HARDFILE_DEVICE,52,54,40,15,ES_AUTOHSCROLL
-    RTEXT           "BootPri:",IDC_HARDFILE_BOOTPRI_TEXT,18,79,30,8
-    EDITTEXT        IDC_HARDFILE_BOOTPRI,52,75,40,15
-    CONTROL         "Read/Write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,57,50,10
-    PUSHBUTTON      "Enable RDB-mode",IDC_HDF_RDB,192,55,92,14
+    RTEXT           "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,15,101,44,8
+    EDITTEXT        IDC_HARDFILE_BOOTPRI,65,96,40,15
+    CONTROL         "Read/write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,57,50,10
+    PUSHBUTTON      "Enable RDB mode",IDC_HDF_RDB,192,55,92,14
     RTEXT           "Surfaces:",IDC_SURFACES_TEXT,112,79,30,10
     EDITTEXT        IDC_HEADS,147,75,35,15,ES_NUMBER
     RTEXT           "Reserved:",IDC_RESERVED_TEXT,197,79,35,10
     EDITTEXT        IDC_RESERVED,237,75,35,15,ES_NUMBER
     RTEXT           "Sectors:",IDC_SECTORS_TEXT,112,101,30,10
     EDITTEXT        IDC_SECTORS,147,96,35,15,ES_NUMBER
-    RTEXT           "Block-Size:",IDC_BLOCKSIZE_TEXT,197,101,35,10
+    RTEXT           "Block size:",IDC_BLOCKSIZE_TEXT,197,101,35,10
     EDITTEXT        IDC_BLOCKSIZE,237,96,35,15,ES_NUMBER
-    GROUPBOX        "New Hard File",IDC_STATIC,10,120,280,62
+    GROUPBOX        "New hard disk image file",IDC_STATIC,10,120,280,62
     PUSHBUTTON      "Create",IDC_HF_CREATE,50,135,80,14
     EDITTEXT        IDC_HF_SIZE,146,135,61,15,ES_NUMBER
     PUSHBUTTON      "OK",IDOK,102,191,50,14
     PUSHBUTTON      "Cancel",IDCANCEL,158,191,50,14
     EDITTEXT        IDC_HF_DOSTYPE,146,158,61,15
     COMBOBOX        IDC_HF_TYPE,50,158,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "DosType",IDC_STATIC,212,160,30,10,SS_CENTERIMAGE
-    RTEXT           "Megabytes",IDC_STATIC,212,138,35,10,SS_CENTERIMAGE
+    RTEXT           "DOS type",IDC_STATIC,212,160,30,10,SS_CENTERIMAGE
+    RTEXT           "MB",IDC_STATIC,212,138,11,10,SS_CENTERIMAGE
     RTEXT           "Type:",IDC_STATIC,18,160,25,10,SS_CENTERIMAGE
 END
 
@@ -426,16 +427,16 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS
 CAPTION "Volume Settings"
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    LTEXT           "Device Name:",-1,5,9,54,10
+    LTEXT           "Device name:",-1,5,9,54,10
     EDITTEXT        IDC_VOLUME_DEVICE,65,5,86,15,ES_AUTOHSCROLL
-    LTEXT           "Volume Label:",-1,5,31,54,10
+    LTEXT           "Volume label:",-1,5,31,54,10
     EDITTEXT        IDC_VOLUME_NAME,65,25,85,15,ES_AUTOHSCROLL
     LTEXT           "Path:",-1,5,51,44,10
     EDITTEXT        IDC_PATH_NAME,65,46,213,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_SELECTOR,283,46,10,15
-    CONTROL         "Read/Write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,70,50,10
-    RTEXT           "BootPri:",IDC_VOLUME_BOOTPRI_TEXT,68,70,30,8
-    EDITTEXT        IDC_VOLUME_BOOTPRI,106,68,27,15
+    CONTROL         "Read/write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,72,70,50,10
+    RTEXT           "Boot priority:",IDC_VOLUME_BOOTPRI_TEXT,135,70,51,8
+    EDITTEXT        IDC_VOLUME_BOOTPRI,199,68,27,15
     PUSHBUTTON      "OK",IDOK,120,91,48,15
     PUSHBUTTON      "Cancel",IDCANCEL,175,91,48,15
 END
@@ -456,28 +457,28 @@ IDD_CHIPSET DIALOGEX 0, 65490, 300, 229
 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    GROUPBOX        "Chipset type",IDC_STATIC,14,11,145,82
-    CONTROL         "OCS [] The original Amiga chipset (A1000, most A500s)",IDC_OCS,
+    GROUPBOX        "Chipset",IDC_STATIC,14,11,145,82
+    CONTROL         "OCS [] Original Amiga chipset. A1000 and most A500s.",IDC_OCS,
                     "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,38,31,51,10
-    CONTROL         "ECS Agnus [] Partial Enhanced Chipset. Later A500 and A2000 hardware revisions.",IDC_ECS_AGNUS,
+    CONTROL         "ECS Agnus [] Enhanced Chipset (ECS Agnus chip only). Later A500 and A2000 hardware revisions.",IDC_ECS_AGNUS,
                     "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,38,47,55,10
-    CONTROL         "Full ECS [] Full ECS Chipset, ECS Agnus and ECS Denise. (A500+, A600, A3000)",IDC_ECS,
+    CONTROL         "Full ECS [] Full ECS Chipset (ECS Agnus and ECS Denise chips). A500+, A600, A3000.",IDC_ECS,
                     "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,38,63,52,10
-    CONTROL         "AGA [] The next generation Amiga chipset (A1200, A4000 and CD32)",IDC_AGA,
+    CONTROL         "AGA [] Advanced Graphics Architecture chipset. A1200, A4000 and CD32.",IDC_AGA,
                     "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,101,31,51,10
     CONTROL         "NTSC [] North American and Japanese display standard, 60Hz refresh rate. Other countries use PAL (50Hz. display refresh rate)",IDC_NTSC,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,63,50,10
-    GROUPBOX        "Misc chipset options",IDC_STATIC,168,11,114,82
+    GROUPBOX        "Options",IDC_STATIC,168,11,114,82
     CONTROL         "Fast Copper [] Faster but less compatible copper emulation.",IDC_FASTCOPPER,
                     "Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,176,198,98,10
     CONTROL         "Immediate Blitter [] Faster but less compatible blitter emulation.",IDC_BLITIMM,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,174,30,96,10
-    CONTROL         "Cycle exact CPU and Blitter [] The most compatible A500 emulation mode. Very fast PC recommended.",IDC_CYCLEEXACT,
+    CONTROL         "Cycle-exact CPU and Blitter [] The most compatible A500 emulation mode. Very fast PC recommended.",IDC_CYCLEEXACT,
                     "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,174,43,100,10
     GROUPBOX        "Collision level",IDC_STATIC,14,97,267,48
     CONTROL         "None [] Collision hardware emulation disabled.",IDC_COLLISION0,
                     "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,40,113,50,10
-    CONTROL         "Sprites only [] Emulate only sprite vs sprite collisions.",IDC_COLLISION1,
+    CONTROL         "Sprites only [] Emulate only sprite vs. sprite collisions.",IDC_COLLISION1,
                     "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,39,129,50,10
     CONTROL         "Sprites and Sprites vs. Playfield [] Recommended collision emulation level.",IDC_COLLISION2,
                     "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,104,113,161,10
@@ -487,7 +488,7 @@ BEGIN
     CONTROL         "Disabled",IDC_CS_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,39,167,102,10
     CONTROL         "Emulated",IDC_CS_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,39,182,91,10
     CONTROL         "Emulated, 100% accurate",IDC_CS_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,39,197,95,10
-    CONTROL         "Genlock connected [] Allow Kickstart to detect genlock. Genlock is not emulated.",IDC_GENLOCK,
+    CONTROL         "Genlock connected [] Allow boot sequence to detect genlock. Genlock is not emulated.",IDC_GENLOCK,
                     "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,174,56,100,10
 END
 
@@ -495,7 +496,7 @@ IDD_AVIOUTPUT DIALOGEX 0, 0, 197, 233
 STYLE DS_SETFONT | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Output Properties:",IDC_STATIC,5,8,184,96
+    GROUPBOX        "Output properties",IDC_STATIC,5,8,184,96
     EDITTEXT        IDC_AVIOUTPUT_FILETEXT,26,21,120,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_CLIENTEDGE
     PUSHBUTTON      "...",IDC_AVIOUTPUT_FILE,148,21,19,12
     CONTROL         "Audio",IDC_AVIOUTPUT_AUDIO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,26,36,32,11
@@ -504,16 +505,16 @@ BEGIN
     CONTROL         "",IDC_AVIOUTPUT_VIDEO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,60,50,107,11
     CONTROL         "Disable frame rate limit while recording",IDC_AVIOUTPUT_FRAMELIMITER,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,28,68,142,10
-    CONTROL         "AVIOutput enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,26,83,142,14
-    GROUPBOX        "Playback Rate:",IDC_STATIC,5,107,184,50
+    CONTROL         "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,26,83,142,14
+    GROUPBOX        "Playback rate",IDC_STATIC,5,107,184,50
     CONTROL         "PAL",IDC_AVIOUTPUT_PAL,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,24,121,66,12
     CONTROL         "NTSC",IDC_AVIOUTPUT_NTSC,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,102,121,66,12
     CONTROL         "Slider1",IDC_AVIOUTPUT_FPS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_ENABLESELRANGE | WS_TABSTOP,21,137,120,11
     LTEXT           "fps",IDC_AVIOUTPUT_FPS_STATIC,148,138,23,8
-    PUSHBUTTON      "Save Screenshot",IDC_SCREENSHOT,15,176,85,14
+    PUSHBUTTON      "Save screenshot",IDC_SCREENSHOT,15,176,85,14
     GROUPBOX        "Ripper",IDC_STATIC,5,160,184,63
     PUSHBUTTON      "Pro Wizard",IDC_PROWIZARD,112,176,69,14,WS_DISABLED
-    CONTROL         "Sampleripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,198,84,14
+    CONTROL         "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,198,84,14
 END
 
 IDD_INPUT DIALOGEX 0, 0, 300, 242
@@ -545,24 +546,24 @@ IDD_FILTER DIALOGEX 0, 0, 296, 216
 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Filter settings:",-1,0,0,294,174
+    GROUPBOX        "Filter settings",-1,0,0,294,174
     CONTROL         "Enable",IDC_FILTERENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,26,17,38,10
     COMBOBOX        IDC_FILTERMODE,67,15,56,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
     COMBOBOX        IDC_FILTERFILTER,128,15,65,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON      "Reset to defaults",IDC_FILTERDEFAULT,197,15,73,14
-    RTEXT           "Horizontal Size",-1,25,44,57,10,SS_CENTERIMAGE
+    RTEXT           "Horizontal size:",-1,21,44,61,10,SS_CENTERIMAGE
     CONTROL         "Slider1",IDC_FILTERHZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,89,37,158,19
     EDITTEXT        IDC_FILTERHZV,248,40,34,12,ES_CENTER | ES_READONLY
-    RTEXT           "Vertical Size",-1,26,64,57,10,SS_CENTERIMAGE
+    RTEXT           "Vertical size:",-1,22,64,61,10,SS_CENTERIMAGE
     CONTROL         "Slider1",IDC_FILTERVZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,89,57,157,19
     EDITTEXT        IDC_FILTERVZV,248,59,34,12,ES_CENTER | ES_READONLY
-    RTEXT           "Horizontal Position",-1,26,84,57,10,SS_CENTERIMAGE
+    RTEXT           "Horizontal position:",-1,22,84,61,10,SS_CENTERIMAGE
     CONTROL         "Slider1",IDC_FILTERHO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,89,77,157,19
     EDITTEXT        IDC_FILTERHOV,248,79,34,12,ES_CENTER | ES_READONLY
-    RTEXT           "Vertical Position",-1,26,103,57,10,SS_CENTERIMAGE
+    RTEXT           "Vertical position:",-1,22,103,61,10,SS_CENTERIMAGE
     CONTROL         "Slider1",IDC_FILTERVO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,89,97,157,19
     EDITTEXT        IDC_FILTERVOV,248,101,34,12,ES_CENTER | ES_READONLY
-    RTEXT           "Scanlines",-1,27,133,57,10,SS_CENTERIMAGE
+    RTEXT           "Scanlines:",-1,27,133,57,10,SS_CENTERIMAGE
     CONTROL         "Slider1",IDC_FILTERSL,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,89,126,157,19
     EDITTEXT        IDC_FILTERSLV,248,128,34,12,ES_CENTER | ES_READONLY
     COMBOBOX        IDC_FILTERSLR,56,146,27,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
@@ -580,26 +581,28 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS
 CAPTION "Harddrive Settings"
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    LTEXT           "Harddrive:",-1,7,11,35,10
+    LTEXT           "Hard drive:",-1,7,11,35,10
     COMBOBOX        IDC_HARDDRIVE,49,9,246,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Read/Write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,30,50,10
-    DEFPUSHBUTTON   "OK",IDOK,115,30,50,14
-    PUSHBUTTON      "Cancel",IDCANCEL,189,30,50,14
+    CONTROL         "Read/write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,185,33,50,10
+    DEFPUSHBUTTON   "Add hard drive",IDOK,116,30,57,14
+    PUSHBUTTON      "Cancel",IDCANCEL,241,30,54,14
+    DEFPUSHBUTTON   "Create hard disk image file",IDC_HARDDRIVE_IMAGE,9,30,95,14
+    EDITTEXT        IDC_PATH_NAME,89,49,169,15,ES_AUTOHSCROLL | NOT WS_VISIBLE
 END
 
 IDD_MISC2 DIALOGEX 0, 0, 300, 92
 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "When Active:",IDC_STATIC,8,7,88,73
+    GROUPBOX        "When active",IDC_STATIC,8,7,88,73
     RTEXT           "Run at priority:",IDC_ACTIVE_PRI,14,17,45,10,SS_CENTERIMAGE | WS_TABSTOP
     COMBOBOX        IDC_ACTIVE_PRIORITY,14,29,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "When Inactive:",IDC_STATIC,102,7,92,73
+    GROUPBOX        "When inactive",IDC_STATIC,102,7,92,73
     RTEXT           "Run at priority:",IDC_INACTIVE_PRI,109,17,45,10,SS_CENTERIMAGE | WS_TABSTOP
     COMBOBOX        IDC_INACTIVE_PRIORITY,109,29,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Pause emulation",IDC_INACTIVE_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,50,69,10
     CONTROL         "Disable sound output",IDC_INACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,63,79,10
-    GROUPBOX        "When Minimized:",IDC_STATIC,199,7,92,73
+    GROUPBOX        "When minimized",IDC_STATIC,199,7,92,73
     RTEXT           "Run at priority:",IDC_MINIMIZED_PRI,207,18,45,10,SS_CENTERIMAGE | WS_TABSTOP
     COMBOBOX        IDC_MINIMIZED_PRIORITY,207,30,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Pause emulation",IDC_MINIMIZED_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,50,69,10
@@ -611,9 +614,9 @@ STYLE DS_SETFONT | DS_SETFOREGROUND | DS_3DLOOK | DS_CONTROL | DS_CENTER | DS_CE
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
     CONTROL         "",IDC_DISKLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,4,6,292,196
-    PUSHBUTTON      "Remove disk image",IDC_DISKLISTREMOVE,153,223,93,15
+    PUSHBUTTON      "Remove floppy disk image",IDC_DISKLISTREMOVE,153,223,93,15
     COMBOBOX        IDC_DISKTEXT,3,205,293,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Insert disk image",IDC_DISKLISTINSERT,38,223,93,15
+    PUSHBUTTON      "Insert floppy disk image",IDC_DISKLISTINSERT,38,223,93,15
 END
 
 IDD_PANEL DIALOGEX 0, 0, 420, 278
@@ -636,22 +639,22 @@ IDD_PATHS DIALOGEX 0, 0, 300, 237
 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    LTEXT           "ROM path:",IDC_PATHS_ROML,14,9,260,8,SS_CENTERIMAGE
+    LTEXT           "System ROMs:",IDC_PATHS_ROML,14,9,260,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_ROM,14,22,261,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_ROMS,281,22,11,15
-    LTEXT           "Configuration file path:",IDC_PATHS_CONFIGL,14,40,260,8,SS_CENTERIMAGE
+    LTEXT           "Configuration files:",IDC_PATHS_CONFIGL,14,40,260,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_CONFIG,14,52,261,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_CONFIGS,281,52,11,15
-    LTEXT           "Screenshot path:",IDC_PATHS_SCREENSHOTL,14,71,260,8,SS_CENTERIMAGE
+    LTEXT           "Screenshots:",IDC_PATHS_SCREENSHOTL,14,71,260,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_SCREENSHOT,14,83,261,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_SCREENSHOTS,281,83,11,15
-    LTEXT           "State file path:",IDC_PATHS_STATEFILEL,14,102,260,8,SS_CENTERIMAGE
+    LTEXT           "State files:",IDC_PATHS_STATEFILEL,14,102,260,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_SAVESTATE,14,114,261,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_SAVESTATES,281,114,11,15
-    LTEXT           "Video path:",IDC_PATHS_AVIOUTPUTL,14,132,260,8,SS_CENTERIMAGE
+    LTEXT           "Videos:",IDC_PATHS_AVIOUTPUTL,14,132,260,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_AVIOUTPUT,14,144,261,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_AVIOUTPUTS,282,144,11,15
-    LTEXT           "Saveimage path:",IDC_PATHS_SAVEIMAGEL,14,163,260,8,SS_CENTERIMAGE
+    LTEXT           "Saveimages:",IDC_PATHS_SAVEIMAGEL,14,163,260,8,SS_CENTERIMAGE
     EDITTEXT        IDC_PATHS_SAVEIMAGE,14,175,261,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_PATHS_SAVEIMAGES,281,175,11,15
     PUSHBUTTON      "Reset to defaults",IDC_PATHS_DEFAULT,14,199,92,14
@@ -664,7 +667,7 @@ IDD_QUICKSTART DIALOGEX 0, 0, 300, 242
 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
-    GROUPBOX        "Hardware configuration",IDC_QUICKSTART_CONFIG,3,0,294,54
+    GROUPBOX        "Emulated hardware",IDC_QUICKSTART_CONFIG,3,0,294,54
     RTEXT           "Model:",IDC_STATIC,5,14,56,10,SS_CENTERIMAGE
     COMBOBOX        IDC_QUICKSTART_MODEL,65,12,225,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     RTEXT           "Configuration:",IDC_STATIC,5,33,56,10,SS_CENTERIMAGE
@@ -676,22 +679,22 @@ BEGIN
     GROUPBOX        "Host configuration",IDC_QUICKSTART_HOST,3,91,294,33
     RTEXT           "Configuration:",IDC_STATIC,5,105,55,10,SS_CENTERIMAGE
     COMBOBOX        IDC_QUICKSTART_HOSTCONFIG,65,103,225,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    GROUPBOX        "Disk Drives",IDC_QUICKSTART_DF,3,126,294,84
-    LTEXT           "Disk Drive DF0:",IDC_STATIC,10,138,56,10,SS_CENTERIMAGE
-    PUSHBUTTON      "Select Disk Image",IDC_DF0QQ,77,135,98,15
-    RTEXT           "Write Protected",IDC_STATIC,180,139,58,10,SS_CENTERIMAGE
+    GROUPBOX        "Emulated floppy drives",IDC_QUICKSTART_DF,3,126,294,84
+    LTEXT           "Floppy drive DF0:",IDC_STATIC,10,138,56,10,SS_CENTERIMAGE
+    PUSHBUTTON      "Select disk image",IDC_DF0QQ,77,135,98,15
+    RTEXT           "Write-protected",IDC_STATIC,180,139,58,10,SS_CENTERIMAGE
     CONTROL         "",IDC_DF0WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,245,137,10,15
     PUSHBUTTON      "Eject",IDC_EJECT0Q,260,136,30,15
     COMBOBOX        IDC_DF0TEXTQ,9,154,282,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    LTEXT           "Disk Drive DF1:",IDC_STATIC,10,176,56,10,SS_CENTERIMAGE
-    PUSHBUTTON      "Select Disk Image",IDC_DF1QQ,77,172,98,15
-    RTEXT           "Write Protected",IDC_STATIC,180,175,58,10,SS_CENTERIMAGE
+    LTEXT           "Floppy drive DF1:",IDC_STATIC,10,176,56,10,SS_CENTERIMAGE
+    PUSHBUTTON      "Select disk image",IDC_DF1QQ,77,172,98,15
+    RTEXT           "Write-protected",IDC_STATIC,180,175,58,10,SS_CENTERIMAGE
     CONTROL         "",IDC_DF1WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,245,173,10,15
     PUSHBUTTON      "Eject",IDC_EJECT1Q,260,172,30,15
     COMBOBOX        IDC_DF1TEXTQ,9,190,282,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
-    PUSHBUTTON      "Set Configuration",IDC_QUICKSTART_SETCONFIG,9,219,72,15,NOT WS_VISIBLE
+    PUSHBUTTON      "Set configuration",IDC_QUICKSTART_SETCONFIG,9,219,72,15,NOT WS_VISIBLE
     GROUPBOX        "Mode",IDC_STATIC,190,211,107,27,BS_LEFT
-    CONTROL         "Start in Quickstart-mode",IDC_QUICKSTARTMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,199,222,94,10
+    CONTROL         "Start in Quickstart mode",IDC_QUICKSTARTMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,199,222,94,10
 END
 
 IDD_FRONTEND DIALOGEX 0, 0, 420, 242
@@ -703,6 +706,53 @@ BEGIN
     GROUPBOX        "",IDC_FE_SCREENSHOT,249,7,160,128
 END
 
+IDD_PROGRESSBAR DIALOGEX 0, 0, 229, 58
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Processing..."
+FONT 8, "MS Sans Serif", 0, 0, 0x0
+BEGIN
+    PUSHBUTTON      "Cancel",IDCANCEL,88,40,50,14
+    CONTROL         "",IDC_PROGRESSBAR,"msctls_progress32",WS_BORDER | 0x1,7,19,215,14
+    CTEXT           "x",IDC_PROGRESSBAR_TEXT,23,5,187,10,SS_CENTERIMAGE | WS_TABSTOP
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO 
+BEGIN
+    IDD_SOUND, DIALOG
+    BEGIN
+        BOTTOMMARGIN, 243
+    END
+
+    IDD_LOADSAVE, DIALOG
+    BEGIN
+        BOTTOMMARGIN, 240
+    END
+
+    IDD_CONTRIBUTORS, DIALOG
+    BEGIN
+        RIGHTMARGIN, 370
+        BOTTOMMARGIN, 212
+    END
+
+    IDD_INPUT, DIALOG
+    BEGIN
+        BOTTOMMARGIN, 187
+    END
+
+    IDD_QUICKSTART, DIALOG
+    BEGIN
+        RIGHTMARGIN, 299
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
 
 #ifdef APSTUDIO_INVOKED
 /////////////////////////////////////////////////////////////////////////////
@@ -805,43 +855,6 @@ END
 
 IDC_MYHAND              CURSOR                  "H_arrow.cur"
 
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO 
-BEGIN
-    IDD_SOUND, DIALOG
-    BEGIN
-        BOTTOMMARGIN, 243
-    END
-
-    IDD_LOADSAVE, DIALOG
-    BEGIN
-        BOTTOMMARGIN, 240
-    END
-
-    IDD_CONTRIBUTORS, DIALOG
-    BEGIN
-        RIGHTMARGIN, 370
-        BOTTOMMARGIN, 212
-    END
-
-    IDD_INPUT, DIALOG
-    BEGIN
-        BOTTOMMARGIN, 187
-    END
-
-    IDD_QUICKSTART, DIALOG
-    BEGIN
-        RIGHTMARGIN, 299
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-
 /////////////////////////////////////////////////////////////////////////////
 //
 // Menu
@@ -852,7 +865,7 @@ BEGIN
     POPUP "Menu"
     BEGIN
         MENUITEM "Configuration",               ID_ST_CONFIGURATION
-        POPUP "Floppy Drives"
+        POPUP "Floppy drives"
         BEGIN
             MENUITEM "Eject all drives",            ID_ST_EJECTALL
             MENUITEM "DF0:",                        ID_ST_DF0
@@ -893,14 +906,14 @@ IDB_XARCADE             BITMAP                  "xarcade-winuae.bmp"
 STRINGTABLE 
 BEGIN
     IDS_KICKSTART           "ROM"
-    IDS_DISK                "Disk Swapper"
+    IDS_DISK                "Disk swapper"
     IDS_DISPLAY             "Display"
-    IDS_HARDDISK            "Hard Drives"
-    IDS_FLOPPY              "Disk Drives"
+    IDS_HARDDISK            "Hard drives"
+    IDS_FLOPPY              "Disk drives"
     IDS_ABOUT               "About"
     IDS_LOADSAVE            "Configurations"
     IDS_AVIOUTPUT           "Output"
-    IDS_PORTS               "Game & I/O Ports"
+    IDS_PORTS               "Game & I/O ports"
     IDS_MISC1               "Misc"
     IDS_MEMORY              "RAM"
     IDS_CPU                 "CPU"
@@ -919,7 +932,7 @@ END
 
 STRINGTABLE 
 BEGIN
-    IDS_EXTTEXT             "Amiga Disk Files"
+    IDS_EXTTEXT             "Floppy disk image files"
     IDS_EXTACTUAL           "ADF"
     IDS_SOUND               "Sound"
     IDS_CDROM               "CD-ROM"
@@ -937,38 +950,38 @@ STRINGTABLE
 BEGIN
     IDS_NINTH               "ninth "
     IDS_TENTH               "tenth "
-    IDS_SELECTADF           "Select an Amiga Disk File image..."
-    IDS_ADF                 "Amiga Disk Files"
-    IDS_CHOOSEBLANK         "Choose your blank Amiga Disk File..."
-    IDS_SELECTHDF           "Select a Hard Disk File..."
-    IDS_HDF                 "Hard Disk Files"
-    IDS_SELECTUAE           "Select a UAE Config-File..."
-    IDS_UAE                 "UAE Config Files"
-    IDS_SELECTROM           "Select an Amiga ROM file..."
-    IDS_ROM                 "Amiga ROM Files"
-    IDS_SELECTKEY           "Select an Amiga Key-File..."
-    IDS_KEY                 "Amiga Kickstart Key-Files"
-    IDS_SELECTINFO          "Select information for your config..."
+    IDS_SELECTADF           "Select a floppy disk image file..."
+    IDS_ADF                 "Floppy disk image files"
+    IDS_CHOOSEBLANK         "Choose a blank floppy disk image file..."
+    IDS_SELECTHDF           "Select a hard disk image file..."
+    IDS_HDF                 "Hard disk image files"
+    IDS_SELECTUAE           "Select a WinUAE configuration file..."
+    IDS_UAE                 "WinUAE configuration files"
+    IDS_SELECTROM           "Select a system ROM file..."
+    IDS_ROM                 "System ROM files"
+    IDS_SELECTKEY           "Select a system ROM key file..."
+    IDS_KEY                 "System ROM key files"
+    IDS_SELECTINFO          "Select information for your configuration..."
     IDS_NONE                "none"
     IDS_VOLUME              "Volume"
 END
 
 STRINGTABLE 
 BEGIN
-    IDS_SELECTFILESYSROOT   "Please select your file-system root directory..."
+    IDS_SELECTFILESYSROOT   "Please select the root directory of the file system..."
     IDS_DEFAULTMIDIOUT      "Default MIDI-Out Device"
     IDS_CONTRIBUTORS1       "Bernd Schmidt - The Grand-Master\nSam Jordan - Custom-chip, floppy-DMA, etc.\nMathias Ortmann - Original WinUAE Main Guy, BSD Socket support\nBrian King - Picasso96 Support, Integrated GUI for WinUAE, previous WinUAE Main Guy\nToni Wilen - Core updates, WinUAE Main Guy\nGustavo Goedert/Peter Remmers/Michael Sontheimer/Tomi Hakala/Tim Gunn/Nemo Pohle - DOS Port Stuff\nSamuel Devulder/Olaf Barthel/Sam Jordan - Amiga Ports\nKrister Bergman - XFree86 and OS/2 Port\nA. Blanchard/Ernesto Corvi - MacOS Port\nChristian Bauer - BeOS Port\nIan Stephenson - NextStep Port\nPeter Teichmann - Acorn/RiscOS Port\nStefan Reinauer - ZorroII/III AutoConfig, Serial Support\nChristian Schmitt/Chris Hames - Serial Support\nHerman ten Brugge - 68020/68881 Emulation Code\nTauno Taipaleenmaki - Various UAE-Control/UAE-Library Support\nBrett Eden/Tim Gunn/Paolo Besser/Nemo Pohle - Various Docs and Web-Sites\nGeorg Veichtlbauer - Help File coordinator, German GUI\nFulvio Leonardi - Italian translator for WinUAE\n"
     IDS_CONTRIBUTORS2       "Bill Panagouleas - Hardware support\nSpecial thanks to Alexander Kneer and Tobias Abt (The Picasso96 Team)\nSteven Weiser  - Postscript printing emulation idea and testing.\nPéter Tóth /Balázs Rátkai/Iván Herczeg/András Arató - Hungarian translation"
     IDS_INVALIDPRTPORT      "The printer you have in this configuration is not valid on this machine.\n"
-    IDS_RESTOREUSS          "Restore a UAE Snap-Shot File"
-    IDS_USS                 "UAE Snap-Shot Files"
-    IDS_WRONGOSVERSION      "WinUAE is no longer supported on Windows NT.  Please upgrade to either Windows 2000 or Windows XP."
-    IDS_SELECTFLASH         "Select a flash/battery backed RAM file..."
-    IDS_FLASH               "UAE flash/battery backed RAM file"
-    IDS_INPUTHOSTWIDGET     "Input Source"
-    IDS_INPUTAMIGAEVENT     "Input Target"
+    IDS_RESTOREUSS          "Restore a WinUAE snapshot file"
+    IDS_USS                 "WinUAE snapshot files"
+    IDS_WRONGOSVERSION      "WinUAE is no longer supported on Windows NT.  Please upgrade to either Windows 2000 or Windows XP or a later version."
+    IDS_SELECTFLASH         "Select a flash or battery-backed RAM file..."
+    IDS_FLASH               "WinUAE flash or battery-backed RAM file"
+    IDS_INPUTHOSTWIDGET     "Input source"
+    IDS_INPUTAMIGAEVENT     "Input target"
     IDS_INPUTAUTOFIRE       "Autofire"
-    IDS_SAVEUSS             "Save a UAE Snap-Shot File"
+    IDS_SAVEUSS             "Save a WinUAE snapshot file"
     IDS_MIDIOVERFLOW        "Sysexbuffer overflow. Should not happen. Please report this to\nberndroesch1@compuserve.de"
 END
 
@@ -979,15 +992,13 @@ BEGIN
     IDS_SECTORS             "Sectors"
     IDS_SURFACES            "Bill Panagouleas - Hardware support\nSpecial thanks to Alexander Kneer and Tobias Abt (The Picasso96 Team)\nSteven Weiser  - Postscript printing emulation idea and testing.\nHungarian translation - Péter Tóth , Balázs Rátkai , Iván Herczeg , András Arató"
     IDS_RESERVED            "Reserved"
-    IDS_BLOCKSIZE           "Block Size"
+    IDS_BLOCKSIZE           "Block size"
     IDS_NAME                "Name"
     IDS_DESCRIPTION         "Description"
-    IDS_INSTALLDIRECTX      "You have to install DirectX on your system before you can use UAE.\nRefer to the documentation for further details.\n"
-    IDS_REGKEYCREATEFAILED  "WinUAE could not create Registry keys!  You need administrator privileges.\n"
-    IDS_COULDNOTLOADCONFIG  "Could not load selected configuration!\n"
-    IDS_NOHELP              "Online help is disabled, because you have not installed the HtmlHelp system.  Go to http://msdn.microsoft.com/library/tools/htmlhelp/wkshp/download.htm to get HtmlHelp.\n"
+    IDS_COULDNOTLOADCONFIG  "Could not load the selected configuration!\n"
+    IDS_NOHELP              "Online help is disabled because the HTML Help functionality is not installed on this system. HTML Help is available from http://www.microsoft.com/downloads/.\n"
     IDS_MUSTSELECTCONFIG    "You must select a configuration or enter a name before selecting Load...\n"
-    IDS_INVALIDCOMPORT      "The COM-port you have in this configuration is not valid on this machine.\n"
+    IDS_INVALIDCOMPORT      "The COM port you have in this configuration is not valid on this machine.\n"
 END
 
 STRINGTABLE 
@@ -995,7 +1006,6 @@ BEGIN
     IDS_HFDSIZE             "Size"
     IDS_DEVICE              "Device"
     IDS_BOOTPRI             "BootPri"
-    IDS_WRONGDXVERSION      "WinUAE requires DirectX 8 or newer."
     IDS_FLOPPY_COMPATIBLE   " (compatible)"
     IDS_FLOPPY_TURBO        "Turbo"
     IDS_YES                 "yes"
@@ -1004,17 +1014,16 @@ BEGIN
     IDS_PRI_NORMAL          "Normal"
     IDS_PRI_BELOWNORMAL     "Below Normal"
     IDS_PRI_LOW             "Low"
-    IDS_OLDRTGLIBRARY       "Your LIBS:Picasso96/rtg.library (%d.%d) requires updating.\nReplace it with version from ""Amiga Programs""-directory in WinUAE archive.\nNew library fixes graphics problems and increases performance."
-    IDS_DEFAULT_AF2005      "AmigaForever 2005"
-    IDS_DEFAULT_AF          "AmigaForever (old)"
+    IDS_OLDRTGLIBRARY       "The installed LIBS:Picasso96/rtg.library (%d.%d) file needs to be updated.\nA newer version is included in the ""Amiga Programs"" directory of the WinUAE distribution archive.\nThe new library fixes graphics problems and increases performance."
+    IDS_DEFAULT_AF2005      "Amiga Forever 2005"
+    IDS_DEFAULT_AF          "Amiga Forever (old)"
     IDS_DEFAULT_WINUAE      "WinUAE default"
 END
 
 STRINGTABLE 
 BEGIN
-    IDS_WSOCK2NEEDED        "Please upgrade to Winsock2.\n"
     IDS_UNSUPPORTEDPIXELFORMAT 
-                            "Error: Unsupported pixel format - use a different screen mode\n"
+                            "Error: unsupported pixel format. Please use a different screen mode.\n"
     IDS_MUSTENTERNAME       "You must select a configuration or enter a name before selecting Save...\n"
     IDS_MUSTSELECTCONFIGFORDELETE 
                             "You must select a configuration or enter a name before selecting Delete...\n"
@@ -1022,14 +1031,14 @@ BEGIN
                             "Are you sure you want to Delete this configuration?\n"
     IDS_DELETECONFIGTITLE   "Confirm Delete"
     IDS_GFXCARDCHECK        "WinUAE will now determine your graphic-card's 16-bit pixel format.\nYour screen will go black for two seconds, with a resolution of 640x480 @ 60Hz.\nThis procedure is necessary to properly display your Amiga software on 16-bit\ndisplay-modes, and should be done whenever you run WinUAE for the first time, or\ninstall a new graphics-card in your PC.  Proceed with this test?\n"
-    IDS_GFXCARDTITLE        "Pixel Format Detection"
+    IDS_GFXCARDTITLE        "Pixel format detection"
     IDS_MUSTSELECTPATH      "You must select a path!"
-    IDS_SETTINGSERROR       "Settings Error"
+    IDS_SETTINGSERROR       "Settings error"
     IDS_MUSTSELECTNAME      "You must select a name for the volume!"
     IDS_MUSTSELECTFILE      "You must select a file!"
-    IDS_FAILEDHARDFILECREATION "Failed to create hard-file..."
-    IDS_CREATIONERROR       "Creation Error"
-    IDS_ERRORTITLE          "WinUAE Message"
+    IDS_FAILEDHARDFILECREATION "Failed to create hard disk image file..."
+    IDS_CREATIONERROR       "Creation error"
+    IDS_ERRORTITLE          "WinUAE message"
 END
 
 STRINGTABLE 
@@ -1059,7 +1068,7 @@ BEGIN
     IDS_AVIOUTPUT_NOCODEC   "no codec selected"
     IDS_DISK_IMAGENAME      "Disk image"
     IDS_DISK_DRIVENAME      "Drive"
-    IDS_AGA8BIT             "AGA emulation requires 16 bit or higher display depth\nSwitching from 8-bit to 16-bit"
+    IDS_AGA8BIT             "AGA emulation requires 16 bit or higher display depth\nSwitching from 8-bit to 16-bit"
     IDS_UNSUPPORTEDSCREENMODE 
                             "The selected screen mode can't be displayed in a window, because %s\nSwitching to full-screen display."
     IDS_UNSUPPORTEDSCREENMODE_1 
@@ -1069,22 +1078,22 @@ END
 STRINGTABLE 
 BEGIN
     IDS_UNSUPPORTEDSCREENMODE_2 
-                            "the desktop is running in 8 bit color depth, which UAE can't use in windowed mode."
+                            "the desktop is running in 8 bit color depth, which WinUAE can't use in windowed mode."
     IDS_UNSUPPORTEDSCREENMODE_3 
                             "the desktop is too small for the specified window size"
     IDS_UNSUPPORTEDSCREENMODE_4 
-                            "you selected a Picasso96 display with a color depth different from that of the desktop and an overlay was unavailable."
+                            "you selected an RTG (Picasso96) display with a color depth different from that of the desktop and an overlay was unavailable."
     IDS_FLOPPYTYPE35DD      "3.5"" DD"
     IDS_FLOPPYTYPE35HD      "3.5"" HD"
     IDS_FLOPPYTYPE525SD     "5.25"" SD"
     IDS_FLOPPYTYPEDISABLED  "Disabled"
-    IDS_STMENUNOFLOPPY      "No disk inserted"
+    IDS_STMENUNOFLOPPY      "No floppy disk inserted"
     IDS_TREEVIEW_HARDWARE   "Hardware"
     IDS_TREEVIEW_HOST       "Host"
-    IDS_TREEVIEW_MISC       "Misc"
+    IDS_TREEVIEW_MISC       "Miscellaneous"
     IDS_TREEVIEW_SETTINGS   "Settings"
-    IDS_WINUAETITLE_MMB     "[Mouse active - press Alt-Tab or middle-button to cancel]"
-    IDS_WINUAETITLE_NORMAL  "[Mouse active - press Alt-Tab to cancel]"
+    IDS_WINUAETITLE_MMB     "[Mouse active - press ALT+TAB or middle-button to cancel]"
+    IDS_WINUAETITLE_NORMAL  "[Mouse active - press ALT+TAB to cancel]"
     IDS_STARTEMULATION      "Start"
     IDS_TREEVIEW_ABOUT      "About"
 END
@@ -1095,7 +1104,7 @@ BEGIN
     IDS_DEFAULT_HOST        "Default Configuration"
     IDS_SOUND_4CHANNEL      "4 Channels"
     IDS_HF_FS_CUSTOM        "Custom"
-    IDS_SELECTFS            "Select filesystem handler (FastFileSystem, SmartFilesystem,...)"
+    IDS_SELECTFS            "Select file system handler (FastFileSystem, SmartFilesystem, etc.)"
     IDS_KEYJOY              "Keyboard Layout A (Numeric keypad, 0 and 5 = fire)\nKeyboard Layout B (Cursor keys, right CTRL and ALT = fire)\nKeyboard Layout C (T=up B=down F=left H=right, left ALT = fire)\nX-Arcade (Left)\nX-Arcade (Right)"
     IDS_STATEFILE_UNCOMPRESSED "Uncompressed"
     IDS_STATEFILE_RAMDUMP   "RAM dump"
@@ -1107,30 +1116,30 @@ END
 
 STRINGTABLE 
 BEGIN
-    IDS_NUMSG_NEEDEXT2      "Program uses non-standard disk format. You may need to use ""Custom"" floppy instead of standard adf. This message does not appear again."
-    IDS_NUMSG_NOROMKEY      "Could not find ROM key file."
-    IDS_NUMSG_KSROMCRCERROR "Kickstart checksum incorrect. You probably have a corrupted ROM image."
-    IDS_NUMSG_KSROMREADERROR "Error while reading Kickstart."
+    IDS_NUMSG_NEEDEXT2      "The software uses a non-standard floppy disk format. You may need to use a custom floppy disk image file instead of a standard one. This message will not appear again."
+    IDS_NUMSG_NOROMKEY      "Could not find system ROM key file."
+    IDS_NUMSG_KSROMCRCERROR "System ROM checksum incorrect. The system ROM image file may be corrupt."
+    IDS_NUMSG_KSROMREADERROR "Error while reading system ROM."
 END
 
 STRINGTABLE 
 BEGIN
-    IDS_NUMSG_NOEXTROM      "No extended Kickstart ROM found."
+    IDS_NUMSG_NOEXTROM      "No extended ROM found."
     IDS_NUMSG_MODRIP_NOTFOUND "No modules or compressed data found."
     IDS_NUMSG_MODRIP_FINISHED "Scan finished."
     IDS_NUMSG_MODRIP_SAVE   "Module/packed data found\n%s\nDo you want to save it?"
-    IDS_NUMSG_KS68020       "Your Kickstart requires a 68020 CPU or later CPU."
-    IDS_NUMSG_ROMNEED       "You need any following ROM(s):\n\n%s\n\nCheck ROM-path in Paths-panel and click ""Rescan ROMs""-button."
-    IDS_NUMSG_STATEHD       "WARNING: State saves do not support harddrive emulation. This message does not appear again."
-    IDS_NUMSG_NOCAPS        "This disk image needs the S.P.S. plugin\nwhich is available from\nhttp//www.softpres.org/"
-    IDS_NUMSG_OLDCAPS       "You need updated S.P.S. plugin\nwhich is available from\nhttp//www.softpres.org/"
+    IDS_NUMSG_KS68020       "The selected system ROM requires a 68020 CPU or higher CPU."
+    IDS_NUMSG_ROMNEED       "One of the following system ROMs is required:\n\n%s\n\nCheck the System ROM path in the Paths panel and click Rescan ROMs."
+    IDS_NUMSG_STATEHD       "WARNING: State saves do not support hard drive emulation. This message does not appear again."
+    IDS_NUMSG_NOCAPS        "This disk image needs the SPS plugin\nwhich is available from\nhttp//www.softpres.org/"
+    IDS_NUMSG_OLDCAPS       "You need an updated SPS plugin\nwhich is available from\nhttp//www.softpres.org/"
     IDS_IMGCHK_BOOTBLOCKCRCERROR 
-                            "Selected disk image is not bootable (bootblock CRC error)"
-    IDS_IMGCHK_BOOTBLOCKNO  "Selected disk image is not bootable (no bootblock)"
-    IDS_IMGCHK_DAMAGED      "Selected disk image is damaged or unformatted"
-    IDS_IMGCHK_KS2          "Selected disk image requires Kickstart 2.04 or 3.0\nConfiguration updated"
-    IDS_IMGCHK_KS3          "Selected disk image requires Kickstart 3.0 or later\nConfiguration updated"
-    IDS_ROMSCANEND          "ROM scan finished"
+                            "Selected floppy disk image is not bootable (boot block checksum error)"
+    IDS_IMGCHK_BOOTBLOCKNO  "Selected floppy disk image is not bootable (no boot block)"
+    IDS_IMGCHK_DAMAGED      "Selected floppy disk image is damaged or unformatted"
+    IDS_IMGCHK_KS2          "Selected floppy disk image requires a 2.04 or later system ROM.\nThe configuration has been updated."
+    IDS_IMGCHK_KS3          "Selected floppy disk image requires a 3.0 or later system ROM.\nThe configuration has been updated."
+    IDS_ROMSCANEND          "Scan of ROMs finished"
 END
 
 STRINGTABLE 
@@ -1138,12 +1147,14 @@ BEGIN
     IDS_ROM_AVAILABLE       "available"
     IDS_ROM_UNAVAILABLE     "unavailable"
     IDS_HARDDRIVESAFETYWARNING 
-                            "WARNING: Non-empty or Amiga formatted\nharddrive detected and safety test was disabled\n\nHarddrives marked with 'HD_*_' are not empty"
-    IDS_NUMSG_KS68EC020     "Your Kickstart requires a 68EC020 or later CPU."
-    IDS_ROMSCANNOROMS       "No supported Kickstart ROMs detected."
-    IDS_NUMSG_KICKREP       "You need to have a diskfile in DF0 to use the Kickstart replacement."
-    IDS_NUMSG_KICKREPNO     "Diskfiles in DF0: is not compatible with Kickstart replacement."
+                            "Warning: The safety test has been disabled, and non-empty hard disks were detected.\n\nHard disks marked with 'HD_*_' are not empty."
+    IDS_NUMSG_KS68EC020     "The selected system ROM requires a 68EC020 or higher CPU."
+    IDS_ROMSCANNOROMS       "No supported system ROMs detected."
+    IDS_NUMSG_KICKREP       "You need to have a floppy disk image file in DF0 to use the system ROM replacement."
+    IDS_NUMSG_KICKREPNO     "The floppy disk image file in DF0: is not compatible with the system ROM replacement functionality."
     IDS_NUMSG_NOROM         "Could not load Kickstart ROM, trying Kickstart replacement."
+    IDS_HDCLONE_OK          "Hard drive image file created succesfully."
+    IDS_HDCLONE_FAIL        "Hard drive image file creation failed, error code %d."
 END
 
 STRINGTABLE 
index 2dd9939a63108747b4734fba2fd5c6b80683c523..e5e9f282d205e0a4bc986c30cc604e227a6eed7b 100755 (executable)
@@ -50,6 +50,7 @@
 #define PROWIZARD /* Pro-Wizard module ripper */
 #define ARCADIA /* Arcadia arcade system */
 #define ARCHIVEACCESS /* ArchiveAccess decompression library */
+#define LOGITECHLCD /* Logitech G15 LCD */
 
 #else
 
index 6383d10412211ade7e1c15dca50c5c6590850f5d..8c0d3270f8a2f9ddfbdb33dbf68b6e728574bbb6 100755 (executable)
@@ -63,6 +63,7 @@
 #include "scsidev.h"
 #include "disk.h"
 #include "catweasel.h"
+#include "lcd.h"
 
 extern FILE *debugfile;
 extern int console_logging;
@@ -93,7 +94,7 @@ int toggle_sound;
 int paraport_mask;
 
 HKEY hWinUAEKey = NULL;
-COLORREF g_dwBackgroundColor  = RGB(10, 0, 10);
+COLORREF g_dwBackgroundColor;
 
 static int emulation_paused;
 static int activatemouse = 1;
@@ -1170,8 +1171,10 @@ int WIN32_RegisterClasses( void )
 {
     WNDCLASS wc;
     HDC hDC;
-    
-    hDC = GetDC( NULL );
+    COLORREF black = RGB(0, 0, 0);
+
+    g_dwBackgroundColor = RGB(10, 0, 10);
+    hDC = GetDC (NULL);
     if (GetDeviceCaps (hDC, NUMCOLORS) != -1) 
        g_dwBackgroundColor = RGB (255, 0, 255);
     ReleaseDC (NULL, hDC);
@@ -1196,7 +1199,7 @@ int WIN32_RegisterClasses( void )
     wc.hInstance = 0;
     wc.hIcon = LoadIcon (GetModuleHandle (NULL), MAKEINTRESOURCE (IDI_APPICON));
     wc.hCursor = LoadCursor (NULL, IDC_ARROW);
-    wc.hbrBackground = CreateSolidBrush (g_dwBackgroundColor);
+    wc.hbrBackground = CreateSolidBrush (black);
     wc.lpszMenuName = 0;
     wc.lpszClassName = "PCsuxRox";
     if (!RegisterClass (&wc))
@@ -1707,6 +1710,7 @@ void target_default_options (struct uae_prefs *p, int type)
        p->win32_automount_netdrives = 0;
        p->win32_kbledmode = 0;
        p->win32_uaescsimode = get_aspi_path(1) ? 2 : ((os_winnt && os_winnt_admin) ? 0 : 1);
+       p->win32_borderless = 0;
     }
     if (type == 1 || type == 0) {
        p->win32_midioutdev = -2;
@@ -1737,6 +1741,7 @@ void target_save_options (struct zfile *f, struct uae_prefs *p)
     cfgfile_target_write (f, "midiout_device=%d\n", p->win32_midioutdev );
     cfgfile_target_write (f, "midiin_device=%d\n", p->win32_midiindev );
     cfgfile_target_write (f, "no_overlay=%s\n", p->win32_no_overlay ? "true" : "false" );
+    cfgfile_target_write (f, "borderless=%s\n", p->win32_borderless ? "true" : "false" );
     cfgfile_target_write (f, "uaescsimode=%s\n", scsimode[p->win32_uaescsimode]);
     cfgfile_target_write (f, "soundcard=%d\n", p->win32_soundcard );
     cfgfile_target_write (f, "cpu_idle=%d\n", p->cpu_idle);
@@ -1775,6 +1780,7 @@ int target_parse_option (struct uae_prefs *p, char *option, char *value)
            || cfgfile_yesno (option, value, "logfile", &p->win32_logfile)
            || cfgfile_yesno (option, value, "networking", &p->socket_emu)
            || cfgfile_yesno (option, value, "no_overlay", &p->win32_no_overlay)
+           || cfgfile_yesno (option, value, "borderless", &p->win32_borderless)
            || cfgfile_yesno (option, value, "inactive_pause", &p->win32_inactive_pause)
            || cfgfile_yesno (option, value, "inactive_nosound", &p->win32_inactive_nosound)
            || cfgfile_yesno (option, value, "iconified_pause", &p->win32_iconified_pause)
@@ -2400,8 +2406,6 @@ static void getstartpaths(int start_data)
 
 extern void test (void);
 
-
-
 static int PASCAL WinMain2 (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
                    int nCmdShow)
 {
@@ -2509,10 +2513,16 @@ static int PASCAL WinMain2 (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
 #endif
 #ifdef PARALLEL_PORT
        paraport_mask = paraport_init ();
+#endif
+#ifdef LOGITECHLCD
+       lcd_open();
 #endif
        real_main (argc, argv);
     }
        
+#ifdef LOGITECHLCD
+    lcd_close();
+#endif
     if (mm_timerres && timermode == 0)
        timeend ();
 #ifdef AVIOUTPUT
index aa9f9b3c5ec82fc49dff0ce9c60b65a4894d4b64..dc926adec69504327e6aff08c9d2bb2ffb5e5b78 100755 (executable)
@@ -21,8 +21,8 @@ extern int manual_painting_needed;
 extern int manual_palette_refresh_needed;
 extern int mouseactive, focus;
 extern int ignore_messages_all;
-#define WINUAEBETA 0
-#define WINUAEBETASTR ""
+#define WINUAEBETA 1
+#define WINUAEBETASTR " Beta 1"
 
 extern char start_path_exe[MAX_DPATH];
 extern char start_path_data[MAX_DPATH];
index 1659540662adf360c447a5f635c1c7fa3307e000..ea21c5d664bfb48e2e53adc59bef396151e9e3f5 100755 (executable)
@@ -1033,9 +1033,12 @@ int check_prefs_changed_gfx (void)
     c |= currprefs.gfx_filter != changed_prefs.gfx_filter ? 1 : 0;
     c |= currprefs.gfx_filter_filtermode != changed_prefs.gfx_filter_filtermode ? 1 : 0;
     c |= currprefs.gfx_lores != changed_prefs.gfx_lores ? 1 : 0;
+    c |= currprefs.gfx_lores_mode != changed_prefs.gfx_lores_mode ? 1 : 0;
     c |= currprefs.gfx_linedbl != changed_prefs.gfx_linedbl ? 1 : 0;
     c |= currprefs.gfx_display != changed_prefs.gfx_display ? 1 : 0;
     c |= currprefs.win32_alwaysontop != changed_prefs.win32_alwaysontop ? 1 : 0;
+    c |= currprefs.win32_borderless != changed_prefs.win32_borderless ? 1 : 0;
+    c |= currprefs.win32_no_overlay != changed_prefs.win32_no_overlay ? 1 : 0;
     if (display_change_requested || c) 
     {
        if (!display_change_requested)
@@ -1055,9 +1058,12 @@ int check_prefs_changed_gfx (void)
        currprefs.gfx_filter = changed_prefs.gfx_filter;
        currprefs.gfx_filter_filtermode = changed_prefs.gfx_filter_filtermode;
        currprefs.gfx_lores = changed_prefs.gfx_lores;
+       currprefs.gfx_lores_mode = changed_prefs.gfx_lores_mode;
        currprefs.gfx_linedbl = changed_prefs.gfx_linedbl;
        currprefs.gfx_display = changed_prefs.gfx_display;
        currprefs.win32_alwaysontop = changed_prefs.win32_alwaysontop;
+       currprefs.win32_borderless = changed_prefs.win32_borderless;
+       currprefs.win32_no_overlay = changed_prefs.win32_no_overlay;
        inputdevice_unacquire ();
        close_windows ();
        graphics_init ();
@@ -1709,15 +1715,25 @@ static int create_windows (void)
     int fs = currentmode->flags & (DM_W_FULLSCREEN | DM_DX_FULLSCREEN | DM_D3D_FULLSCREEN);
     DWORD exstyle = currprefs.win32_notaskbarbutton ? 0 : WS_EX_APPWINDOW;
     DWORD flags = 0;
-    DWORD style = NORMAL_WINDOW_STYLE  | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
     HWND hhWnd = currprefs.win32_notaskbarbutton ? hHiddenWnd : NULL;
+    int borderless = currprefs.win32_borderless;
+    DWORD style = NORMAL_WINDOW_STYLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
+    int cymenu = GetSystemMetrics (SM_CYMENU);
+    int cyborder = GetSystemMetrics (SM_CYBORDER);
+    int cxborder = GetSystemMetrics(SM_CXBORDER);
+    int gap = 3;
+    int x, y;
+
+    hMainWnd = NULL;
+    x = 2; y = 2;
+    if (borderless)
+       cymenu = cyborder = cxborder = 0;
 
     if (!fs)  {
        RECT rc;
-       LONG stored_x = 1, stored_y = GetSystemMetrics (SM_CYMENU) + GetSystemMetrics (SM_CYBORDER);
+       LONG stored_x = 1, stored_y = cymenu + cyborder;
        DWORD regkeytype;
        DWORD regkeysize = sizeof (LONG);
-       int cx = GetSystemMetrics(SM_CXBORDER), cy = GetSystemMetrics(SM_CYBORDER);
        int oldx, oldy;
        int first = 2;
 
@@ -1728,8 +1744,8 @@ static int create_windows (void)
            first--;
            if (stored_x < GetSystemMetrics (SM_XVIRTUALSCREEN))
                stored_x = GetSystemMetrics (SM_XVIRTUALSCREEN);
-           if (stored_y < GetSystemMetrics (SM_YVIRTUALSCREEN) + GetSystemMetrics (SM_CYMENU) + cy)
-               stored_y = GetSystemMetrics (SM_YVIRTUALSCREEN) + GetSystemMetrics (SM_CYMENU) + cy;
+           if (stored_y < GetSystemMetrics (SM_YVIRTUALSCREEN) + cymenu + cyborder)
+               stored_y = GetSystemMetrics (SM_YVIRTUALSCREEN) + cymenu + cyborder;
 
            if (stored_x > GetSystemMetrics (SM_CXVIRTUALSCREEN))
                rc.left = 1;
@@ -1741,12 +1757,12 @@ static int create_windows (void)
            else
                rc.top = stored_y;
 
-           rc.right = rc.left + 2 + currentmode->current_width + 2;
-           rc.bottom = rc.top + 2 + currentmode->current_height + 2 + GetSystemMetrics (SM_CYMENU) - 1;
+           rc.right = rc.left + gap + currentmode->current_width + gap - 2;
+           rc.bottom = rc.top + gap + currentmode->current_height + gap + cymenu - 1 - 2;
 
            oldx = rc.left;
            oldy = rc.top;
-           AdjustWindowRect (&rc, NORMAL_WINDOW_STYLE, FALSE);
+           AdjustWindowRect (&rc, borderless ? WS_POPUP : style, FALSE);
            win_x_diff = rc.left - oldx;
            win_y_diff = rc.top - oldy;
 
@@ -1766,32 +1782,34 @@ static int create_windows (void)
 #endif
        flags |= (currprefs.win32_alwaysontop ? WS_EX_TOPMOST : 0);
 
-       hMainWnd = CreateWindowEx (WS_EX_ACCEPTFILES | exstyle | flags,
-                               "PCsuxRox", "WinUAE",
-                               style,
-                               rc.left, rc.top,
-                               rc.right - rc.left + 1, rc.bottom - rc.top + 1,
-                               hhWnd, NULL, 0, NULL);
+       if (!borderless) {
+           hMainWnd = CreateWindowEx (WS_EX_ACCEPTFILES | exstyle | flags,
+               "PCsuxRox", "WinUAE",
+               style,
+               rc.left, rc.top,
+               rc.right - rc.left + 1, rc.bottom - rc.top + 1,
+               hhWnd, NULL, 0, NULL);
 
-       if (! hMainWnd) {
-           write_log ("main window creation failed\n");
-           return 0;
+           if (!hMainWnd) {
+               write_log ("main window creation failed\n");
+               return 0;
+           }
+           createstatuswindow ();
+       } else {
+           x = rc.left;
+           y = rc.top;
        }
 
-       createstatuswindow ();
-
     }
-    else
-       hMainWnd = NULL;
 
     hAmigaWnd = CreateWindowEx (fs ? WS_EX_ACCEPTFILES | WS_EX_TOPMOST : WS_EX_ACCEPTFILES | exstyle | (currprefs.win32_alwaysontop ? WS_EX_TOPMOST : 0),
                                "AmigaPowah", "WinUAE",
                                WS_CLIPCHILDREN | WS_CLIPSIBLINGS | (hMainWnd ? WS_VISIBLE | WS_CHILD : WS_VISIBLE | WS_POPUP),
-                               hMainWnd ? 2 : CW_USEDEFAULT, hMainWnd ? 2 : CW_USEDEFAULT,
+                               x, y,
                                currentmode->current_width, currentmode->current_height,
                                hMainWnd ? hMainWnd : hhWnd, NULL, 0, NULL);
 
-    if (! hAmigaWnd) {
+    if (!hAmigaWnd) {
        write_log ("creation of amiga window failed\n");
        close_hwnds();
        return 0;
@@ -1802,10 +1820,8 @@ static int create_windows (void)
        ShowWindow (hMainWnd, SW_SHOWNORMAL);
        UpdateWindow (hMainWnd);
     }
-    if (hAmigaWnd) {
-       UpdateWindow (hAmigaWnd);
-       ShowWindow (hAmigaWnd, SW_SHOWNORMAL);
-    }
+    UpdateWindow (hAmigaWnd);
+    ShowWindow (hAmigaWnd, SW_SHOWNORMAL);
 
     return 1;
 }
@@ -1825,17 +1841,20 @@ static void setoverlay(void)
 
     GetClientRect (hMainWnd, &dr);
     // adjust the dest-rect to avoid the status-bar
-    if( hStatusWnd )
-    {
+    if (hStatusWnd) {
        if (GetWindowRect (hStatusWnd, &statusr))
            dr.bottom = dr.bottom - ( statusr.bottom - statusr.top );
     }
 
-    ClientToScreen( hMainWnd, &p );
-    dr.left = p.x + 2;
-    dr.top = p.y + 2;
-    dr.right += p.x;
-    dr.bottom += p.y;
+    ClientToScreen(hMainWnd, &p);
+    if (!currprefs.win32_borderless) {
+       p.x += 2;
+       p.y += 2;
+    }
+    dr.left = p.x;
+    dr.top = p.y;
+    dr.right += p.x + 1;
+    dr.bottom += p.y + 1;
     /* overlay's coordinates are relative to monitor's top/left-corner */
     dr.left -= mi.rcMonitor.left;
     dr.top -= mi.rcMonitor.top;
@@ -1847,8 +1866,8 @@ static void setoverlay(void)
 
     sr.left = 0;
     sr.top = 0;
-    sr.right = currentmode->current_width;
-    sr.bottom = currentmode->current_height;
+    sr.right = w;
+    sr.bottom = h;
 
     // Adjust our dst-rect to match the dimensions of our src-rect
     if (dr.right - dr.left > sr.right - sr.left)
@@ -1856,11 +1875,6 @@ static void setoverlay(void)
     if (dr.bottom - dr.top > sr.bottom - sr.top)
        dr.bottom = dr.top + sr.bottom - sr.top;
 
-    sr.left = 0;
-    sr.top = 0;
-    sr.right = w;
-    sr.bottom = h;
-
     maxwidth = mi.rcMonitor.right - mi.rcMonitor.left;
     if (dr.right > maxwidth) {
        sr.right = w - (dr.right - maxwidth);
index 159a0c26324aa99aa4f71701ef4b60cdfeb92973..2752bbcb848845c7f38167b6af659b64aae479ad 100755 (executable)
@@ -69,6 +69,7 @@
 #include "moduleripper.h"
 #endif
 #include "catweasel.h"
+#include "lcd.h"
 
 #define DISK_FORMAT_STRING "(*.adf;*.adz;*.gz;*.dms;*.fdi;*.ipf;*.zip;*.rar;*.7z;*.exe)\0*.adf;*.adz;*.gz;*.dms;*.fdi;*.ipf;*.zip;*.rar;*.7z;*.exe\0"
 #define ROM_FORMAT_STRING "(*.rom;*.zip;*.rar;*.7z;*.roz)\0*.rom;*.zip;*.rar;*.7z;*.roz\0"
@@ -3589,8 +3590,8 @@ static void values_to_displaydlg (HWND hDlg)
     CheckDlgButton (hDlg, IDC_AFULLSCREEN, workprefs.gfx_afullscreen);
     CheckDlgButton (hDlg, IDC_PFULLSCREEN, workprefs.gfx_pfullscreen);
     CheckDlgButton (hDlg, IDC_ASPECT, workprefs.gfx_correct_aspect);
-    CheckDlgButton (hDlg, IDC_LORES, workprefs.gfx_linedbl ? FALSE : TRUE);
     CheckDlgButton (hDlg, IDC_LORES, workprefs.gfx_lores);
+    CheckDlgButton (hDlg, IDC_LORES_SMOOTHED, workprefs.gfx_lores_mode);
     CheckDlgButton (hDlg, IDC_VSYNC, workprefs.gfx_vsync);
 
     CheckDlgButton (hDlg, IDC_XCENTER, workprefs.gfx_xcenter);
@@ -3640,6 +3641,7 @@ static void values_from_displaydlg (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l
     workprefs.gfx_afullscreen    = IsDlgButtonChecked (hDlg, IDC_AFULLSCREEN);
 
     workprefs.gfx_lores          = IsDlgButtonChecked (hDlg, IDC_LORES);
+    workprefs.gfx_lores_mode     = IsDlgButtonChecked (hDlg, IDC_LORES_SMOOTHED);
     workprefs.gfx_correct_aspect = IsDlgButtonChecked (hDlg, IDC_ASPECT);
     workprefs.gfx_linedbl = ( IsDlgButtonChecked( hDlg, IDC_LM_SCANLINES ) ? 2 :
                              IsDlgButtonChecked( hDlg, IDC_LM_DOUBLED ) ? 1 : 0 );
@@ -4318,7 +4320,7 @@ static void enable_for_miscdlg (HWND hDlg)
        EnableWindow (GetDlgItem (hDlg, IDC_NOSPEED), TRUE);
        EnableWindow (GetDlgItem (hDlg, IDC_NOSPEEDPAUSE), TRUE);
        EnableWindow (GetDlgItem (hDlg, IDC_NOSOUND), TRUE);
-       EnableWindow (GetDlgItem (hDlg, IDC_NOOVERLAY), FALSE);
+       EnableWindow (GetDlgItem (hDlg, IDC_NOOVERLAY), TRUE);
        EnableWindow (GetDlgItem (hDlg, IDC_DOSAVESTATE), TRUE);
        EnableWindow (GetDlgItem (hDlg, IDC_SCSIMODE), FALSE);
        EnableWindow (GetDlgItem (hDlg, IDC_SCSIDEVICE), FALSE);
@@ -4527,13 +4529,13 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
            workprefs.illegal_mem = IsDlgButtonChecked (hDlg, IDC_ILLEGAL);
            break;
        case IDC_JULIAN:
-           workprefs.win32_middle_mouse = IsDlgButtonChecked( hDlg, IDC_JULIAN );
+           workprefs.win32_middle_mouse = IsDlgButtonChecked(hDlg, IDC_JULIAN);
            break;
        case IDC_NOOVERLAY:
-           workprefs.win32_no_overlay = IsDlgButtonChecked( hDlg, IDC_NOOVERLAY );
+           workprefs.win32_no_overlay = IsDlgButtonChecked(hDlg, IDC_NOOVERLAY);
            break;
        case IDC_SHOWLEDS:
-           workprefs.leds_on_screen = IsDlgButtonChecked( hDlg, IDC_SHOWLEDS );
+           workprefs.leds_on_screen = IsDlgButtonChecked(hDlg, IDC_SHOWLEDS);
            break;
        case IDC_SHOWGUI:
            workprefs.start_gui = IsDlgButtonChecked (hDlg, IDC_SHOWGUI);
@@ -5521,18 +5523,24 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam
     return FALSE;
 }
 
+extern int harddrive_to_hdf(HWND, struct uae_prefs*, int);
 static INT_PTR CALLBACK HarddriveSettingsProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
     static int recursive = 0;
     int i, index;
     LRESULT posn;
+    static int oposn;
 
     switch (msg) {
     case WM_INITDIALOG:
+       oposn = -1;
        hdf_init ();
        recursive++;
        CheckDlgButton (hDlg, IDC_RW, current_hfdlg.rw);
        SendDlgItemMessage(hDlg, IDC_HARDDRIVE, CB_RESETCONTENT, 0, 0);
+       EnableWindow(GetDlgItem(hDlg, IDC_HARDDRIVE_IMAGE), FALSE);
+       EnableWindow(GetDlgItem(hDlg, IDOK), FALSE);
+       EnableWindow(GetDlgItem(hDlg, IDC_RW), FALSE);
        index = -1;
        for (i = 0; i < hdf_getnumharddrives(); i++) {
            SendDlgItemMessage( hDlg, IDC_HARDDRIVE, CB_ADDSTRING, 0, (LPARAM)hdf_getnameharddrive(i, 1));
@@ -5547,7 +5555,15 @@ static INT_PTR CALLBACK HarddriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara
        if (recursive)
            break;
        recursive++;
-
+       posn = SendDlgItemMessage (hDlg, IDC_HARDDRIVE, CB_GETCURSEL, 0, 0);
+       if (oposn != posn) {
+           oposn = posn;
+           if (posn >= 0) {
+               EnableWindow(GetDlgItem(hDlg, IDC_HARDDRIVE_IMAGE), TRUE);
+               EnableWindow(GetDlgItem(hDlg, IDOK), TRUE);
+               EnableWindow(GetDlgItem(hDlg, IDC_RW), TRUE);
+           }
+       }
        if (HIWORD (wParam) == BN_CLICKED) {
            switch (LOWORD (wParam)) {
            case IDOK:
@@ -5556,10 +5572,12 @@ static INT_PTR CALLBACK HarddriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara
            case IDCANCEL:
                EndDialog (hDlg, 0);
                break;
+           case IDC_HARDDRIVE_IMAGE:
+               if (posn != CB_ERR)
+                   harddrive_to_hdf(hDlg, &workprefs, posn);
+               break;
            }
        }
-
-       posn = SendDlgItemMessage (hDlg, IDC_HARDDRIVE, CB_GETCURSEL, 0, 0);
        if (posn != CB_ERR)
            strcpy (current_hfdlg.filename, hdf_getnameharddrive ((int)posn, 0));
        current_hfdlg.rw = IsDlgButtonChecked (hDlg, IDC_RW);
@@ -8944,6 +8962,9 @@ void gui_led (int led, int on)
     int pos = -1, j;
 
     indicator_leds (led, on);
+#ifdef LOGITECHLCD
+    lcd_update (led, on);
+#endif
     if (!hStatusWnd)
        return;
     if (on)
index e835f7264274b5f11d3b492b5aac522fd6b9d792..984db2b93d73216dd12ff2a9175baa37dbbd1540 100755 (executable)
@@ -22,7 +22,7 @@
                        OutputDirectory=".\Debug"
                        IntermediateDirectory=".\Debug"
                        ConfigurationType="1"
-                       InheritedPropertySheets="UpgradeFromVC71.vsprops"
+                       InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
@@ -84,7 +84,7 @@
                        <Tool
                                Name="VCLinkerTool"
                                AdditionalOptions="/MACHINE:I386"
-                               AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib winio.lib setupapi.lib wininet.lib capsimg.lib dxerr8.lib shlwapi.lib zlibstat.lib"
+                               AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib winio.lib setupapi.lib wininet.lib capsimg.lib dxerr8.lib shlwapi.lib zlibstat.lib lglcd.lib"
                                ShowProgress="0"
                                OutputFile="d:\amiga\winuae.exe"
                                LinkIncremental="2"
                        OutputDirectory="x64\$(ConfigurationName)"
                        IntermediateDirectory="x64\$(ConfigurationName)"
                        ConfigurationType="1"
-                       InheritedPropertySheets="UpgradeFromVC71.vsprops"
+                       InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                        OutputDirectory="d:\amiga"
                        IntermediateDirectory=".\Release"
                        ConfigurationType="1"
-                       InheritedPropertySheets="UpgradeFromVC71.vsprops"
+                       InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                        />
                        <Tool
                                Name="VCLinkerTool"
-                               AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib winio.lib setupapi.lib wininet.lib dxerr8.lib shlwapi.lib zlibstat.lib"
+                               AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib winio.lib setupapi.lib wininet.lib dxerr8.lib shlwapi.lib zlibstat.lib lglcd.lib"
                                OutputFile="d:\amiga\winuae.exe"
                                LinkIncremental="1"
                                SuppressStartupBanner="true"
                        OutputDirectory="$(SolutionDir)x64\$(ConfigurationName)"
                        IntermediateDirectory="x64\$(ConfigurationName)"
                        ConfigurationType="1"
-                       InheritedPropertySheets="UpgradeFromVC71.vsprops"
+                       InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                </Configuration>
                <Configuration
                        Name="TestRelease|Win32"
+                       IntermediateDirectory="$(ConfigurationName)"
                        ConfigurationType="1"
                        >
                        <Tool
                        OutputDirectory="$(SolutionDir)x64\$(ConfigurationName)"
                        IntermediateDirectory="x64\$(ConfigurationName)"
                        ConfigurationType="1"
-                       InheritedPropertySheets="UpgradeFromVC71.vsprops"
+                       InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                        OutputDirectory="$(SolutionDir)x64\$(ConfigurationName)"
                        IntermediateDirectory="x64\$(ConfigurationName)"
                        ConfigurationType="1"
-                       InheritedPropertySheets="UpgradeFromVC71.vsprops"
+                       InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                        OutputDirectory="$(ConfigurationName)"
                        IntermediateDirectory="$(ConfigurationName)"
                        ConfigurationType="1"
-                       InheritedPropertySheets="UpgradeFromVC71.vsprops"
+                       InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                        OutputDirectory="$(SolutionDir)x64\$(ConfigurationName)"
                        IntermediateDirectory="x64\$(ConfigurationName)"
                        ConfigurationType="1"
-                       InheritedPropertySheets="UpgradeFromVC71.vsprops"
+                       InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                                RelativePath="..\keyboard_win32.c"
                                >
                        </File>
+                       <File
+                               RelativePath="..\lcd.c"
+                               >
+                       </File>
                        <File
                                RelativePath="..\midi.c"
                                >