]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
2500b13
authorToni Wilen <twilen@winuae.net>
Sun, 26 Aug 2012 11:18:48 +0000 (14:18 +0300)
committerToni Wilen <twilen@winuae.net>
Sun, 26 Aug 2012 11:18:48 +0000 (14:18 +0300)
42 files changed:
audio.cpp
cfgfile.cpp
cia.cpp
custom.cpp
disk.cpp
drawing.cpp
filesys.cpp
include/drawing.h
include/fsdb.h
include/inputdevice.h
include/keyboard.h
include/options.h
include/savestate.h
inputdevice.cpp
inputevents.def
main.cpp
memory.cpp
od-win32/fsdb_mywin32.cpp
od-win32/fsdb_win32.cpp
od-win32/keyboard_win32.cpp
od-win32/posixemu.cpp
od-win32/resources/resource
od-win32/resources/winuae.exe.manifest
od-win32/resources/winuae.rc
od-win32/sounddep/sound.cpp
od-win32/sounddep/sound.h
od-win32/win32.cpp
od-win32/win32.h
od-win32/win32_scaler.cpp
od-win32/win32gfx.cpp
od-win32/win32gui.cpp
od-win32/win32gui.h
od-win32/win32gui_extra.cpp
od-win32/winuae_msvc10/winuae_msvc.sln
od-win32/winuae_msvc11/winuae.idc [new file with mode: 0644]
od-win32/winuae_msvc11/winuae_msvc.sln [new file with mode: 0644]
od-win32/winuae_msvc11/winuae_msvc.vcxproj [new file with mode: 0644]
od-win32/winuae_msvc11/winuae_msvc.vcxproj.filters [new file with mode: 0644]
od-win32/winuaechangelog.txt
sampler.cpp
savestate.cpp
sinctable.cpp

index 7e10af13914107b4a87a8240b2c6b526e5453174..fb59a377c8b02dbbeccfc572ae4cb333a9cc0344 100644 (file)
--- a/audio.cpp
+++ b/audio.cpp
@@ -318,12 +318,14 @@ typedef uae_s8 sample8_t;
 #define DO_CHANNEL_1(v, c) do { (v) *= audio_channel[c].vol; } while (0)
 #define SBASEVAL16(logn) ((logn) == 1 ? SOUND16_BASE_VAL >> 1 : SOUND16_BASE_VAL)
 
-STATIC_INLINE int FINISH_DATA (int data, int bits, int logn)
+STATIC_INLINE int FINISH_DATA (int data, int bits)
 {
-       if (14 - bits + logn > 0) {
-               data >>= 14 - bits + logn;
+       if (bits == 16) {
+               return data;
+       } else if (bits - 16 > 0) {
+               data >>=  bits - 16;
        } else {
-               int shift = bits - 14 - logn;
+               int shift = 16 - bits;
                int right = data & ((1 << shift) - 1);
                data <<= shift;
                data |= right;
@@ -529,7 +531,8 @@ static void sinc_prehandler (unsigned long best_evtime)
 
        for (i = 0; i < 4; i++)  {
                acd = &audio_channel[i];
-               output = (acd->current_sample * acd->vol) & acd->adk_mask;
+               int vol = acd->vol;
+               output = (acd->current_sample * vol) & acd->adk_mask;
 
                /* if output state changes, record the state change and also
                 * write data into sinc queue for mixing in the BLEP */
@@ -570,12 +573,12 @@ STATIC_INLINE void samplexx_sinc_handler (int *datasp)
                int offsetpos = acd->sinc_queue_head & (SINC_QUEUE_LENGTH - 1);
                for (j = 0; j < SINC_QUEUE_LENGTH; j += 1) {
                        int age = acd->sinc_queue_time - acd->sinc_queue[offsetpos].time;
-                       if (age >= SINC_QUEUE_MAX_AGE)
+                       if (age >= SINC_QUEUE_MAX_AGE || age < 0)
                                break;
                        sum -= winsinc[age] * acd->sinc_queue[offsetpos].output;
                        offsetpos = (offsetpos + 1) & (SINC_QUEUE_LENGTH - 1);
                }
-               v = sum >> 17;
+               v = sum >> 15;
                if (v > 32767)
                        v = 32767;
                else if (v < -32768)
@@ -590,7 +593,7 @@ static void sample16i_sinc_handler (void)
 
        samplexx_sinc_handler (datas);
        data1 = datas[0] + datas[3] + datas[1] + datas[2];
-       data1 = FINISH_DATA (data1, 16, 2);
+       data1 = FINISH_DATA (data1, 18);
        set_sound_buffers ();
        PUT_SOUND_WORD_MONO (data1);
        check_sound_buffers ();
@@ -616,7 +619,7 @@ void sample16_handler (void)
        data0 += data2;
        data0 += data3;
        data = SBASEVAL16(2) + data0;
-       data = FINISH_DATA (data, 16, 2);
+       data = FINISH_DATA (data, 16);
        set_sound_buffers ();
        PUT_SOUND_WORD_MONO (data);
        check_sound_buffers ();
@@ -630,7 +633,7 @@ static void sample16i_anti_handler (void)
 
        samplexx_anti_handler (datas);
        data1 = datas[0] + datas[3] + datas[1] + datas[2];
-       data1 = FINISH_DATA (data1, 16, 2);
+       data1 = FINISH_DATA (data1, 16);
        set_sound_buffers ();
        PUT_SOUND_WORD_MONO (data1);
        check_sound_buffers ();
@@ -682,7 +685,7 @@ static void sample16i_rh_handler (void)
        ratio = ((audio_channel[3].evtime % delta) << 8) / delta;
        data0 += (data3 * (256 - ratio) + data3p * ratio) >> 8;
        data = SBASEVAL16(2) + data0;
-       data = FINISH_DATA (data, 16, 2);
+       data = FINISH_DATA (data, 16);
        set_sound_buffers ();
        PUT_SOUND_WORD_MONO (data);
        check_sound_buffers ();
@@ -754,7 +757,7 @@ static void sample16i_crux_handler (void)
        data0 += data3;
        data0 += data1;
        data = SBASEVAL16(2) + data0;
-       data = FINISH_DATA (data, 16, 2);
+       data = FINISH_DATA (data, 16);
        set_sound_buffers ();
        PUT_SOUND_WORD_MONO (data);
        check_sound_buffers ();
@@ -786,10 +789,10 @@ void sample16ss_handler (void)
        data2 &= audio_channel[2].adk_mask;
        data3 &= audio_channel[3].adk_mask;
 
-       data0 = FINISH_DATA (data0, 16, 0);
-       data1 = FINISH_DATA (data1, 16, 0);
-       data2 = FINISH_DATA (data2, 16, 0);
-       data3 = FINISH_DATA (data3, 16, 0);
+       data0 = FINISH_DATA (data0, 14);
+       data1 = FINISH_DATA (data1, 14);
+       data2 = FINISH_DATA (data2, 14);
+       data3 = FINISH_DATA (data3, 14);
        set_sound_buffers ();
        put_sound_word_left (data0);
        put_sound_word_right (data1);
@@ -809,10 +812,10 @@ void sample16ss_anti_handler (void)
        int datas[4];
 
        samplexx_anti_handler (datas);
-       data0 = FINISH_DATA (datas[0], 16, 0);
-       data1 = FINISH_DATA (datas[1], 16, 0);
-       data2 = FINISH_DATA (datas[2], 16, 0);
-       data3 = FINISH_DATA (datas[3], 16, 0);
+       data0 = FINISH_DATA (datas[0], 14);
+       data1 = FINISH_DATA (datas[1], 14);
+       data2 = FINISH_DATA (datas[2], 14);
+       data3 = FINISH_DATA (datas[3], 14);
        set_sound_buffers ();
        put_sound_word_left (data0);
        put_sound_word_right (data1);
@@ -830,8 +833,8 @@ static void sample16si_anti_handler (void)
        samplexx_anti_handler (datas);
        data1 = datas[0] + datas[3];
        data2 = datas[1] + datas[2];
-       data1 = FINISH_DATA (data1, 16, 1);
-       data2 = FINISH_DATA (data2, 16, 1);
+       data1 = FINISH_DATA (data1, 15);
+       data2 = FINISH_DATA (data2, 15);
        set_sound_buffers ();
        put_sound_word_left (data1);
        put_sound_word_right (data2);
@@ -844,10 +847,10 @@ void sample16ss_sinc_handler (void)
        int datas[4];
 
        samplexx_sinc_handler (datas);
-       data0 = FINISH_DATA (datas[0], 16, 0);
-       data1 = FINISH_DATA (datas[1], 16, 0);
-       data2 = FINISH_DATA (datas[2], 16, 0);
-       data3 = FINISH_DATA (datas[3], 16, 0);
+       data0 = FINISH_DATA (datas[0], 16);
+       data1 = FINISH_DATA (datas[1], 16);
+       data2 = FINISH_DATA (datas[2], 16);
+       data3 = FINISH_DATA (datas[3], 16);
        set_sound_buffers ();
        put_sound_word_left (data0);
        put_sound_word_right (data1);
@@ -865,8 +868,8 @@ static void sample16si_sinc_handler (void)
        samplexx_sinc_handler (datas);
        data1 = datas[0] + datas[3];
        data2 = datas[1] + datas[2];
-       data1 = FINISH_DATA (data1, 16, 1);
-       data2 = FINISH_DATA (data2, 16, 1);
+       data1 = FINISH_DATA (data1, 17);
+       data2 = FINISH_DATA (data2, 17);
        set_sound_buffers ();
        put_sound_word_left (data1);
        put_sound_word_right (data2);
@@ -892,9 +895,9 @@ void sample16s_handler (void)
        data0 += data3;
        data1 += data2;
        data2 = SBASEVAL16(1) + data0;
-       data2 = FINISH_DATA (data2, 16, 1);
+       data2 = FINISH_DATA (data2, 15);
        data3 = SBASEVAL16(1) + data1;
-       data3 = FINISH_DATA (data3, 16, 1);
+       data3 = FINISH_DATA (data3, 15);
        set_sound_buffers ();
        put_sound_word_left (data2);
        put_sound_word_right (data3);
@@ -965,9 +968,9 @@ static void sample16si_crux_handler (void)
        data1 += data2;
        data0 += data3;
        data2 = SBASEVAL16(1) + data0;
-       data2 = FINISH_DATA (data2, 16, 1);
+       data2 = FINISH_DATA (data2, 15);
        data3 = SBASEVAL16(1) + data1;
-       data3 = FINISH_DATA (data3, 16, 1);
+       data3 = FINISH_DATA (data3, 15);
        set_sound_buffers ();
        put_sound_word_left (data2);
        put_sound_word_right (data3);
@@ -1019,9 +1022,9 @@ static void sample16si_rh_handler (void)
        ratio = ((audio_channel[3].evtime % delta) << 8) / delta;
        data0 += (data3 * (256 - ratio) + data3p * ratio) >> 8;
        data2 = SBASEVAL16(1) + data0;
-       data2 = FINISH_DATA (data2, 16, 1);
+       data2 = FINISH_DATA (data2, 15);
        data3 = SBASEVAL16(1) + data1;
-       data3 = FINISH_DATA (data3, 16, 1);
+       data3 = FINISH_DATA (data3, 15);
        set_sound_buffers ();
        put_sound_word_left (data2);
        put_sound_word_right (data3);
@@ -1105,7 +1108,7 @@ static void audio_deactivate (void)
                return;
        gui_data.sndbuf_status = 3;
        gui_data.sndbuf = 0;
-       reset_sound ();
+       pause_sound_buffer ();
        clear_sound_buffers ();
        audio_event_reset ();
 }
index 3664984b0851ea32f63c97f0936c1edb78e58104..3f1a87c780dda88a079453028ad3d14ed00dc814 100644 (file)
@@ -881,6 +881,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
        cfgfile_dwrite (f, _T("gfx_filter_blur"), _T("%d"), p->gfx_filter_blur);
        cfgfile_dwrite (f, _T("gfx_filter_noise"), _T("%d"), p->gfx_filter_noise);
        cfgfile_dwrite_bool (f, _T("gfx_filter_bilinear"), p->gfx_filter_bilinear != 0);
+       cfgfile_dwrite (f, _T("gfx_filter_keep_autoscale_aspect"), _T("%d"), p->gfx_filter_keep_autoscale_aspect);
        cfgfile_dwrite_str (f, _T("gfx_filter_keep_aspect"), aspects[p->gfx_filter_keep_aspect]);
        cfgfile_dwrite_str (f, _T("gfx_filter_autoscale"), autoscale[p->gfx_filter_autoscale]);
        cfgfile_dwrite (f, _T("gfx_filter_aspect_ratio"), _T("%d:%d"),
@@ -1535,6 +1536,7 @@ static int cfgfile_parse_host (struct uae_prefs *p, TCHAR *option, TCHAR *value)
                || cfgfile_intval (option, value, _T("gfx_luminance"), &p->gfx_luminance, 1)
                || cfgfile_intval (option, value, _T("gfx_contrast"), &p->gfx_contrast, 1)
                || cfgfile_intval (option, value, _T("gfx_gamma"), &p->gfx_gamma, 1)
+               || cfgfile_intval (option, value, _T("gfx_filter_keep_autoscale_aspect"), &p->gfx_filter_keep_autoscale_aspect, 1)
                || cfgfile_string (option, value, _T("gfx_filter_mask"), p->gfx_filtermask, sizeof p->gfx_filtermask / sizeof (TCHAR))
                || cfgfile_intval (option, value, _T("filesys_max_size"), &p->filesys_limit, 1)
 
@@ -4255,6 +4257,7 @@ void default_prefs (struct uae_prefs *p, int type)
        p->gfx_filter_scanlineratio = (1 << 4) | 1;
        p->gfx_filter_keep_aspect = 0;
        p->gfx_filter_autoscale = AUTOSCALE_STATIC_AUTO;
+       p->gfx_filter_keep_autoscale_aspect = 0;
        p->gfx_filteroverlay_overscan = 0;
 
        _tcscpy (p->floppyslots[0].df, _T("df0.adf"));
diff --git a/cia.cpp b/cia.cpp
index 72dfcffb44ec0b6db5b0d25a9d4d29f2414b04fd..b664527ee9f3a742b97405cd2b110bb33e8c60b0 100644 (file)
--- a/cia.cpp
+++ b/cia.cpp
@@ -1841,6 +1841,14 @@ static void save_cia_prepare (void)
        compute_passed_time ();
 }
 
+void restore_cia_start (void)
+{
+       /* Fixes very old statefiles without keyboard state */
+       kbstate = 3;
+       setcapslockstate (0);
+       kblostsynccnt = 0;
+}
+
 void restore_cia_finish (void)
 {
        eventtab[ev_cia].oldcycles = get_cycles ();
@@ -2022,10 +2030,12 @@ uae_u8 *restore_keyboard (uae_u8 *src)
        restore_u8 ();
        restore_u8 ();
         restore_u8 ();
-       if (!(v & 1))
-               kbstate = 3;
        kbcode = restore_u8 ();
        kblostsynccnt = restore_u16 ();
+       if (!(v & 1)) {
+               kbstate = 3;
+               kblostsynccnt = 0;
+       }
        return src;
 }
 
index 8192df5e5774e1e795bdf331cdb5cb81306f2ab4..8388f6139582c01af8e5a982e1c5721cdcc5497d 100644 (file)
@@ -250,7 +250,7 @@ static bool bpl1dat_written, bpl1dat_early, bpl1dat_written_at_least_once;
 static uae_s16 bpl1mod, bpl2mod;
 static uaecptr prevbpl[2][MAXVPOS][8];
 static uaecptr bplpt[8], bplptx[8];
-static bool brdblank_prevframe[MAXVPOS];
+static bool brdblank_prevframe[MAXVPOS * 2 + 2];
 
 /*static int blitcount[256];  blitter debug */
 
@@ -1907,15 +1907,19 @@ static void start_bpl_dma (int hpos, int hstart)
        plfstrt_sprite = plfstrt;
        fetch_start (hpos);
        fetch_cycle = 0;
-       last_fetch_hpos = hstart;
-       cycle_diagram_shift = last_fetch_hpos;
-       reset_bpl_vars ();
 
        ddfstate = DIW_waiting_stop;
        compute_toscr_delay (last_fetch_hpos, bplcon1);
 
        /* If someone already wrote BPL1DAT, clear the area between that point and
        the real fetch start.  */
+       if (bpl1dat_written_at_least_once && hstart > last_fetch_hpos) {
+               update_fetch_x (hstart, fetchmode);
+               bpl1dat_written_at_least_once = false;
+       } else {
+               reset_bpl_vars ();
+       }
+#if 0
        if (!nodraw ()) {
                if (thisline_decision.plfleft >= 0) {
                        out_nbits = (plfstrt - thisline_decision.plfleft) << (1 + toscr_res);
@@ -1924,6 +1928,9 @@ static void start_bpl_dma (int hpos, int hstart)
                }
                update_toscr_planes ();
        }
+#endif
+       last_fetch_hpos = hstart;
+       cycle_diagram_shift = hstart;
 }
 
 /* this may turn on datafetch if program turns dma on during the ddf */
@@ -2661,6 +2668,7 @@ static void finish_decisions (void)
        if (brdblank_prevframe[vpos] != thisline_decision.brdblank_seen) {
                changed = 1;
                brdblank_prevframe[vpos] = thisline_decision.brdblank_seen;
+               //write_log (_T("%d.%d "), vpos, thisline_decision.brdblank_seen);
        }
 
        if (changed) {
@@ -2959,13 +2967,13 @@ void compute_framesync (void)
                int res2, vres2;
                        
                res2 = currprefs.gfx_resolution;
-               if (doublescan)
+               if (doublescan > 0)
                        res2++;
                if (res2 > RES_MAX)
                        res2 = RES_MAX;
                
                vres2 = currprefs.gfx_vresolution;
-               if (doublescan && !islace)
+               if (doublescan > 0 && !islace)
                        vres2--;
 
                if (vres2 < 0)
@@ -3102,7 +3110,9 @@ void init_hz (bool fullinit)
                        htotal = MAXHPOS - 1;
                maxhpos = htotal + 1;
                vblank_hz = 227.0 * 312.0 * 50.0 / (maxvpos * maxhpos);
-               minfirstline = vsstop;
+               minfirstline = vsstop > vbstop ? vsstop : vbstop;
+               if (minfirstline > maxvpos / 2) 
+                       minfirstline = vsstop > vsstop ? vbstop : vsstop;
                if (minfirstline < 2)
                        minfirstline = 2;
                if (minfirstline >= maxvpos)
@@ -3271,8 +3281,9 @@ static uae_u32 REGPARAM2 timehack_helper (TrapContext *context)
 /*
 * register functions
 */
-STATIC_INLINE uae_u16 DENISEID (void)
+STATIC_INLINE uae_u16 DENISEID (int *missing)
 {
+       *missing = 0;
        if (currprefs.cs_deniserev >= 0)
                return currprefs.cs_deniserev;
 #ifdef AGA
@@ -3284,6 +3295,8 @@ STATIC_INLINE uae_u16 DENISEID (void)
 #endif
        if (currprefs.chipset_mask & CSMASK_ECS_DENISE)
                return 0xFFFC;
+       if (currprefs.cpu_model == 68000 && (currprefs.cpu_compatible || currprefs.cpu_cycle_exact))
+               *missing = 1;
        return 0xFFFF;
 }
 STATIC_INLINE uae_u16 DMACONR (int hpos)
@@ -6865,6 +6878,7 @@ static uae_u32 REGPARAM2 custom_lgeti (uaecptr addr)
 STATIC_INLINE uae_u32 REGPARAM2 custom_wget_1 (int hpos, uaecptr addr, int noput)
 {
        uae_u16 v;
+       int missing;
 #ifdef JIT
        special_mem |= S_READ;
 #endif
@@ -6889,7 +6903,11 @@ STATIC_INLINE uae_u32 REGPARAM2 custom_wget_1 (int hpos, uaecptr addr, int noput
        case 0x01A: v = DSKBYTR (hpos); break;
        case 0x01C: v = INTENAR (); break;
        case 0x01E: v = INTREQR (); break;
-       case 0x07C: v = DENISEID (); break;
+       case 0x07C:
+               v = DENISEID (&missing);
+               if (missing)
+                       goto writeonly;
+               break;
 
 #ifdef AGA
        case 0x180: case 0x182: case 0x184: case 0x186: case 0x188: case 0x18A:
@@ -6898,11 +6916,14 @@ STATIC_INLINE uae_u32 REGPARAM2 custom_wget_1 (int hpos, uaecptr addr, int noput
        case 0x1A4: case 0x1A6: case 0x1A8: case 0x1AA: case 0x1AC: case 0x1AE:
        case 0x1B0: case 0x1B2: case 0x1B4: case 0x1B6: case 0x1B8: case 0x1BA:
        case 0x1BC: case 0x1BE:
+               if (!(currprefs.chipset_mask & CSMASK_AGA))
+                       goto writeonly;
                v = COLOR_READ ((addr & 0x3E) / 2);
                break;
 #endif
 
        default:
+writeonly:
                /* OCS/ECS:
                * reading write-only register causes write with last value in chip
                * bus (custom registers, chipram, slowram)
@@ -7447,7 +7468,7 @@ extern uae_u16 serper;
 uae_u8 *save_custom (int *len, uae_u8 *dstptr, int full)
 {
        uae_u8 *dstbak, *dst;
-       int i;
+       int i, dummy;
        uae_u32 dskpt;
        uae_u16 dsklen, dsksync, dskbytr;
 
@@ -7516,7 +7537,7 @@ uae_u8 *save_custom (int *len, uae_u8 *dstptr, int full)
        SW (0);                                 /* 076 ? */
        SW (0);                                 /* 078 ? */
        SW (0);                                 /* 07A ? */
-       SW (DENISEID ());               /* 07C DENISEID/LISAID */
+       SW (DENISEID (&dummy)); /* 07C DENISEID/LISAID */
        SW (dsksync);                   /* 07E DSKSYNC */
        SL (cop1lc);                    /* 080-083 COP1LC */
        SL (cop2lc);                    /* 084-087 COP2LC */
@@ -7810,7 +7831,7 @@ uae_u8 *save_custom_event_delay (int *len, uae_u8 *dstptr)
        uae_u8 *dstbak, *dst;
        int cnt = 0;
 
-       for (int i = ev2_misc;  i < ev2_max; i++) {
+       for (int i = ev2_misc; i < ev2_max; i++) {
                struct ev2 *e = &eventtab2[i];
                if (e->active && e->handler == send_interrupt_do) {
                        cnt++;
@@ -7826,7 +7847,7 @@ uae_u8 *save_custom_event_delay (int *len, uae_u8 *dstptr)
 
        save_u32 (1);
        save_u8 (cnt);
-       for (int i = ev2_misc;  i < ev2_max; i++) {
+       for (int i = ev2_misc; i < ev2_max; i++) {
                struct ev2 *e = &eventtab2[i];
                if (e->active && e->handler == send_interrupt_do) {
                        save_u8 (1);
index eca83f16aed5b84ae36063a9ca0418e3c9c57197..fc447993a54e5d8afc24db24f6b61817b22133fb 100644 (file)
--- a/disk.cpp
+++ b/disk.cpp
@@ -1169,7 +1169,7 @@ static int drive_empty (drive * drv)
        if (drv->catweasel)
                return catweasel_disk_changed (drv->catweasel) == 0;
 #endif
-       return drv->diskfile == 0;
+       return drv->diskfile == 0 && drv->dskchange_time >= 0;
 }
 
 static void drive_step (drive * drv, int step_direction)
@@ -2513,7 +2513,7 @@ void DISK_vsync (void)
                                drv->dskready = true;
                }
                /* delay until new disk image is inserted */
-               if (drv->dskchange_time) {
+               if (drv->dskchange_time > 0) {
                        drv->dskchange_time--;
                        if (drv->dskchange_time == 0) {
                                drive_insert (drv, &currprefs, i, drv->newname, false);
@@ -3787,7 +3787,9 @@ uae_u8 *restore_disk (int num,uae_u8 *src)
                                        drive_insert (floppy + num, &currprefs, num, changed_prefs.floppyslots[num].df, false);
                                        if (drive_empty (floppy + num))
                                                drv->dskchange = true;
-                               }
+                               } else {
+                                       drv->dskchange_time = -1;
+                                       }
                        }
                }
        }
index 49e96f784d22fdc93dac6849abcabe22a0b19b5a..dce3af60541056fd2f91556b12e4cad058a3abed 100644 (file)
@@ -340,7 +340,7 @@ extern int lof_store;
 #define MAX_DISPLAY_W 362
 #define MAX_DISPLAY_H 283
 
-static int gclow, gcloh, gclox, gcloy;
+static int gclow, gcloh, gclox, gcloy, gclorealh;
 
 void get_custom_topedge (int *x, int *y)
 {
@@ -356,6 +356,7 @@ void get_custom_topedge (int *x, int *y)
 static void reset_custom_limits (void)
 {
        gclow = gcloh = gclox = gcloy = 0;
+       gclorealh = -1;
 }
 
 void set_custom_limits (int w, int h, int dx, int dy)
@@ -384,7 +385,7 @@ void set_custom_limits (int w, int h, int dx, int dy)
                notice_screen_contents_lost ();
 }
 
-int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy)
+int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy, int *prealh)
 {
        int w, h, dx, dy, y1, y2, dbl1, dbl2;
        int ret = 0;
@@ -399,6 +400,7 @@ int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy)
                *ph = gfxvidinfo.outbuffer->outheight;
                *pdx = 0;
                *pdy = 0;
+               *prealh = -1;
                return 1;
        }
 
@@ -406,6 +408,7 @@ int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy)
        *ph = gcloh;
        *pdx = gclox;
        *pdy = gcloy;
+       *prealh = gclorealh;
 
        if (gclow > 0 && gcloh > 0)
                ret = -1;
@@ -480,6 +483,15 @@ int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy)
        if (dx < 0)
                dx = 0;
 
+       *prealh = -1;
+       if (!programmedmode && first_planes_vpos) {
+               int th = (maxvpos - minfirstline) * 95 / 100;
+               if (th > h) {
+                       th = xshift (th, dbl1);
+                       *prealh = th;
+               }
+       }
+
        dy = xshift (dy, dbl2);
        h = xshift (h, dbl1);
 
@@ -521,6 +533,7 @@ int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy)
        gcloh = h;
        gclox = dx;
        gcloy = dy;
+       gclorealh = *prealh;
        *pw = w;
        *ph = h;
        *pdx = dx;
@@ -2696,7 +2709,7 @@ void finish_drawing_frame (void)
                hposblank = 0;
                pfield_draw_line (vb, line, where2, amiga2aspect_line_map[i1 + 1]);
        }
-
+#if 0
        /* clear possible old garbage at the bottom if emulated area become smaller */
        for (i = last_max_ypos; i < vb->outheight; i++) {
                int i1 = i + min_ypos_for_screen;
@@ -2708,7 +2721,7 @@ void finish_drawing_frame (void)
                if (where2 < 0)
                        continue;
 
-               hposblank = i > last_max_ypos ;// + AMIGA_HEIGHT_EXTRA;
+               hposblank = i > last_max_ypos || i >= max_ypos_thisframe;
 
                xlinebuffer = vb->linemem;
                if (xlinebuffer == 0)
@@ -2719,7 +2732,7 @@ void finish_drawing_frame (void)
                        linestate[line] = LINE_UNDECIDED;
                do_flush_line (vb, where2);
        }
-
+#endif
        if (currprefs.leds_on_screen) {
                int slx, sly;
                statusline_getpos (&slx, &sly, vb->outwidth, vb->outheight);
index 85a057a707eca13c9381696ac3b76ca8d21400fb..06854aa075bb32817bd0b53f15b19971d7475cf4 100644 (file)
@@ -1963,7 +1963,7 @@ static TCHAR *get_nname (Unit *unit, a_inode *base, TCHAR *rel, TCHAR **modified
                return 0;
        /* A file called "." (or whatever else is invalid on this filesystem)
        * does not exist, as far as the Amiga side is concerned.  */
-       if (fsdb_name_invalid (rel))
+       if (fsdb_name_invalid_dir (rel))
                return 0;
 
        /* See if we have a file that has the same name as the aname we are
@@ -3642,7 +3642,7 @@ static int action_examine_all_do (Unit *unit, uaecptr lock, ExAllKey *eak, uaecp
                                        ok = isofs_readdir (d->isod, fn, &uniq);
                                else
                                        ok = 0;
-                       } while (ok && d->fstype == FS_DIRECTORY && fsdb_name_invalid (fn));
+                       } while (ok && d->fstype == FS_DIRECTORY && fsdb_name_invalid_dir (fn));
                        if (!ok)
                                return 0;
                } else {
@@ -3915,7 +3915,7 @@ static void populate_directory (Unit *unit, a_inode *base)
                                ok = isofs_readdir (d->isod, fn, &uniq);
                        else
                                ok = 0;
-               } while (ok && d->fstype == FS_DIRECTORY && fsdb_name_invalid (fn));
+               } while (ok && d->fstype == FS_DIRECTORY && fsdb_name_invalid_dir (fn));
                if (!ok)
                        break;
                /* This calls init_child_aino, which will notice that the parent is
index 2f4ab3b7e10c794c628a7e8359649549d8229a14..fa7c4ef7653b62621117e40c4944c02d70768215 100644 (file)
@@ -272,7 +272,7 @@ extern bool notice_interlace_seen (bool);
 extern void notice_resolution_seen (int, bool);
 extern void frame_drawn (void);
 extern void redraw_frame (void);
-extern int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy);
+extern int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy, int *prealh);
 extern void set_custom_limits (int w, int h, int dx, int dy);
 extern void get_custom_topedge (int *x, int *y);
 extern void putpixel (uae_u8 *buf, int bpp, int x, xcolnr c8, int opaq);
index 921e9be4efcd6aacb5055668b203cdceeb5ee7b2..850e9766b633335c6298a9da7cd6433d93f976ba 100644 (file)
@@ -113,11 +113,12 @@ extern void fsdb_dir_writeback (a_inode *);
 extern int fsdb_used_as_nname (a_inode *base, const TCHAR *);
 extern a_inode *fsdb_lookup_aino_aname (a_inode *base, const TCHAR *);
 extern a_inode *fsdb_lookup_aino_nname (a_inode *base, const TCHAR *);
-extern int fsdb_exists (TCHAR *nname);
+extern int fsdb_exists (const TCHAR *nname);
 extern int same_aname (const TCHAR *an1, const TCHAR *an2);
 
 /* Filesystem-dependent functions.  */
 extern int fsdb_name_invalid (const TCHAR *n);
+extern int fsdb_name_invalid_dir (const TCHAR *n);
 extern int fsdb_fill_file_attrs (a_inode *, a_inode *);
 extern int fsdb_set_file_attrs (a_inode *);
 extern int fsdb_mode_representable_p (const a_inode *, int);
index 75f6865fe1bc0c3b530340aaf7121bcc7bd5eb7d..25891f8a99e11e6261f2debfd627b2cbb9e46007 100644 (file)
@@ -72,7 +72,7 @@ struct inputevent {
        int data;
 };
 
-#define MAX_INPUT_QUALIFIERS (8+4)
+#define MAX_INPUT_QUALIFIERS (8 + 5)
 
 /* event flags */
 #define ID_FLAG_AUTOFIRE 1
@@ -84,22 +84,23 @@ struct inputevent {
 #define ID_FLAG_GAMEPORTSCUSTOM_MASK (ID_FLAG_GAMEPORTSCUSTOM1 | ID_FLAG_GAMEPORTSCUSTOM2)
 #define ID_FLAG_AUTOFIRE_MASK (ID_FLAG_TOGGLE | ID_FLAG_INVERTTOGGLE | ID_FLAG_AUTOFIRE)
 
-#define ID_FLAG_QUALIFIER1          0x00000100000000
-#define ID_FLAG_QUALIFIER1_R        0x00000200000000
-#define ID_FLAG_QUALIFIER2          0x00000400000000
-#define ID_FLAG_QUALIFIER3          0x00001000000000
-#define ID_FLAG_QUALIFIER4          0x00004000000000
-#define ID_FLAG_QUALIFIER5          0x00010000000000
-#define ID_FLAG_QUALIFIER6          0x00040000000000
-#define ID_FLAG_QUALIFIER7          0x00100000000000
-#define ID_FLAG_QUALIFIER8          0x00400000000000
-#define ID_FLAG_QUALIFIER_SPECIAL   0x01000000000000
-#define ID_FLAG_QUALIFIER_SPECIAL_R 0x02000000000000
-#define ID_FLAG_QUALIFIER_SHIFT     0x04000000000000
-#define ID_FLAG_QUALIFIER_CONTROL   0x10000000000000
-#define ID_FLAG_QUALIFIER_ALT       0x40000000000000
-#define ID_FLAG_QUALIFIER_MASK      0xffffff00000000
-#define ID_FLAG_QUALIFIER_MASK_R    0xaaaaaa00000000
+#define ID_FLAG_QUALIFIER1          0x000000100000000
+#define ID_FLAG_QUALIFIER1_R        0x000000200000000
+#define ID_FLAG_QUALIFIER2          0x000000400000000
+#define ID_FLAG_QUALIFIER3          0x000001000000000
+#define ID_FLAG_QUALIFIER4          0x000004000000000
+#define ID_FLAG_QUALIFIER5          0x000010000000000
+#define ID_FLAG_QUALIFIER6          0x000040000000000
+#define ID_FLAG_QUALIFIER7          0x000100000000000
+#define ID_FLAG_QUALIFIER8          0x000400000000000
+#define ID_FLAG_QUALIFIER_SPECIAL   0x001000000000000
+#define ID_FLAG_QUALIFIER_SPECIAL_R 0x002000000000000
+#define ID_FLAG_QUALIFIER_SHIFT     0x004000000000000
+#define ID_FLAG_QUALIFIER_CONTROL   0x010000000000000
+#define ID_FLAG_QUALIFIER_ALT       0x040000000000000
+#define ID_FLAG_QUALIFIER_WIN       0x100000000000000
+#define ID_FLAG_QUALIFIER_MASK      0xfffffff00000000
+#define ID_FLAG_QUALIFIER_MASK_R    0xaaaaaaa00000000
 
 #define IDEV_WIDGET_NONE 0
 #define IDEV_WIDGET_BUTTON 1
@@ -113,19 +114,20 @@ struct inputevent {
 #define IDEV_MAPPED_INVERTTOGGLE 8
 #define IDEV_MAPPED_GAMEPORTSCUSTOM1 16
 #define IDEV_MAPPED_GAMEPORTSCUSTOM2 32
-#define IDEV_MAPPED_QUALIFIER1          0x00000100000000
-#define IDEV_MAPPED_QUALIFIER2          0x00000400000000
-#define IDEV_MAPPED_QUALIFIER3          0x00001000000000
-#define IDEV_MAPPED_QUALIFIER4          0x00004000000000
-#define IDEV_MAPPED_QUALIFIER5          0x00010000000000
-#define IDEV_MAPPED_QUALIFIER6          0x00040000000000
-#define IDEV_MAPPED_QUALIFIER7          0x00100000000000
-#define IDEV_MAPPED_QUALIFIER8          0x00400000000000
-#define IDEV_MAPPED_QUALIFIER_SPECIAL   0x01000000000000
-#define IDEV_MAPPED_QUALIFIER_SHIFT     0x04000000000000
-#define IDEV_MAPPED_QUALIFIER_CONTROL   0x10000000000000
-#define IDEV_MAPPED_QUALIFIER_ALT       0x40000000000000
-#define IDEV_MAPPED_QUALIFIER_MASK      0xffffff00000000
+#define IDEV_MAPPED_QUALIFIER1          0x000000100000000
+#define IDEV_MAPPED_QUALIFIER2          0x000000400000000
+#define IDEV_MAPPED_QUALIFIER3          0x000001000000000
+#define IDEV_MAPPED_QUALIFIER4          0x000004000000000
+#define IDEV_MAPPED_QUALIFIER5          0x000010000000000
+#define IDEV_MAPPED_QUALIFIER6          0x000040000000000
+#define IDEV_MAPPED_QUALIFIER7          0x000100000000000
+#define IDEV_MAPPED_QUALIFIER8          0x000400000000000
+#define IDEV_MAPPED_QUALIFIER_SPECIAL   0x001000000000000
+#define IDEV_MAPPED_QUALIFIER_SHIFT     0x004000000000000
+#define IDEV_MAPPED_QUALIFIER_CONTROL   0x010000000000000
+#define IDEV_MAPPED_QUALIFIER_ALT       0x040000000000000
+#define IDEV_MAPPED_QUALIFIER_WIN       0x100000000000000
+#define IDEV_MAPPED_QUALIFIER_MASK      0xfffffff00000000
 
 #define ID_BUTTON_OFFSET 0
 #define ID_BUTTON_TOTAL 32
index 8ee9b3dce0001fcb52b6b161d819d20843d52e5e..b51cf941bfa4ec1075a80fcd60e79cdb445db995 100644 (file)
@@ -168,7 +168,7 @@ enum aks { AKS_ENTERGUI = 0x200, AKS_SCREENSHOT_FILE, AKS_SCREENSHOT_CLIPBOARD,
        AKS_QUALIFIER1, AKS_QUALIFIER2, AKS_QUALIFIER3, AKS_QUALIFIER4,
        AKS_QUALIFIER5, AKS_QUALIFIER6, AKS_QUALIFIER7, AKS_QUALIFIER8,
        AKS_QUALIFIER_SPECIAL, AKS_QUALIFIER_SHIFT, AKS_QUALIFIER_CONTROL,
-       AKS_QUALIFIER_ALT
+       AKS_QUALIFIER_ALT, AKS_QUALIFIER_WIN
 };
 
 #define AKS_FIRST AKS_ENTERGUI
index 02ad4e697cf9c3215e5c1205fe29997a66e3f66b..49b7d6c60603d5934eedabaa49290cc04ec6ed54 100644 (file)
@@ -8,8 +8,8 @@
 */
 
 #define UAEMAJOR 2
-#define UAEMINOR 4
-#define UAESUBREV 2
+#define UAEMINOR 5
+#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;
 
@@ -298,6 +298,7 @@ struct uae_prefs {
        int gfx_filter_saturation, gfx_filter_luminance, gfx_filter_contrast, gfx_filter_gamma;
        int gfx_filter_keep_aspect, gfx_filter_aspect;
        int gfx_filter_autoscale;
+       int gfx_filter_keep_autoscale_aspect;
 
        bool immediate_blits;
        int waiting_blits;
@@ -486,6 +487,7 @@ struct uae_prefs {
        TCHAR win32_parjoyport0[MAX_DPATH];
        TCHAR win32_parjoyport1[MAX_DPATH];
        TCHAR win32_guipage[32];
+       bool win32_filesystem_mangle_reserved_names;
 
        int statecapturerate, statecapturebuffersize;
 
index c74007e498186a35485b9d6174bfc84af42e9d1a..2ea9e22f0705a24535c35f667a51b91454d706be 100644 (file)
@@ -113,6 +113,7 @@ extern void restore_audio_finish (void);
 extern uae_u8 *restore_cia (int, uae_u8 *);
 extern uae_u8 *save_cia (int, int *, uae_u8 *);
 extern void restore_cia_finish (void);
+extern void restore_cia_start (void);
 
 extern uae_u8 *restore_expansion (uae_u8 *);
 extern uae_u8 *save_expansion (int *, uae_u8 *);
index a1319bf0f5686d7e7e9d02d8f02905e9d97da77a..ac079510c93d6f81ad433892522e1abda675fc92 100644 (file)
@@ -635,12 +635,23 @@ static TCHAR *getstring (const TCHAR **pp)
        int i;
        static TCHAR str[CONFIG_BLEN];
        const TCHAR *p = *pp;
+       bool quoteds = false;
+       bool quotedd = false;
 
        if (*p == 0)
                return 0;
        i = 0;
-       while (*p != 0 && *p !='.' && *p != ',' && i < 1000 - 1)
+       while (*p != 0 && i < 1000 - 1) {
+               if (*p == '\"')
+                       quotedd = quotedd ? false : true;
+               if (*p == '\'')
+                       quoteds = quoteds ? false : true;
+               if (!quotedd && !quoteds) {
+                       if (*p == '.' || *p == ',')
+                               break;
+               }
                str[i++] = *p++;
+       }
        if (*p == '.' || *p == ',')
                p++;
        str[i] = 0;
@@ -3431,17 +3442,33 @@ static bool process_custom_event (struct uae_input_device *id, int offset, int s
        if (!id)
                return false;
        
-       slotoffset = sub / 4;
+       slotoffset = sub & ~3;
+       sub &= 3;
        flags = id->flags[offset][slotoffset];
        qual = flags & ID_FLAG_QUALIFIER_MASK;
+       custom = id->custom[offset][slotoffset];
        int af = flags & ID_FLAG_AUTOFIRE_MASK;
  
-       // check that slots 0 and 2 have same qualifiers, only allow toggle if both are same and neither has autofire
-       if ((id->flags[offset][slotoffset + 2] & ID_FLAG_QUALIFIER_MASK) != qual ||
-               (id->custom[offset][slotoffset] == NULL && id->custom[offset][slotoffset + 2] == NULL) || 
-               (id->flags[offset][slotoffset + 2] & ID_FLAG_AUTOFIRE_MASK) || (af & ID_FLAG_AUTOFIRE_MASK)) {
+       for (idx = 1; idx < 4; idx++) {
+               uae_u64 flags2 = id->flags[offset][slotoffset + idx];
+               TCHAR *custom2 = id->custom[offset][slotoffset + idx];
+
+               // all slots must have same qualifier
+               if ((flags2 & ID_FLAG_QUALIFIER_MASK) != qual)
+                       break;
+               // no slot must have autofire
+               if ((flags2 & ID_FLAG_AUTOFIRE_MASK) || (flags & ID_FLAG_AUTOFIRE_MASK))
+                       break;
+       }
+       // at least slot 0 and 2 must have custom
+       if (custom == NULL || id->custom[offset][slotoffset + 2] == NULL)
+               idx = -1;
+
+       if (idx < 4) {
                id->flags[offset][slotoffset] &= ~(ID_FLAG_CUSTOMEVENT_TOGGLED1 | ID_FLAG_CUSTOMEVENT_TOGGLED2);
-               if (checkqualifiers (id->eventid[offset][slotoffset + sub], id->flags[offset][slotoffset + sub], qualmask, NULL)) {
+               int evt2 = id->eventid[offset][slotoffset + sub];
+               uae_u64 flags2 = id->flags[offset][slotoffset + sub];
+               if (checkqualifiers (evt2, flags2, qualmask, NULL)) {
                        custom = id->custom[offset][slotoffset + sub];
                        if (state && custom) {
                                if (autofire)
@@ -5432,6 +5459,13 @@ static int put_event_data (const struct inputdevice_functions *id, int devnum, i
                if ((flags & (mask1 | mask2)) == (mask1 | mask2))
                        flags &= ~mask2;
        }
+       if (custom && custom[0] == 0) {
+               custom = NULL;
+               eventid = 0;
+       }
+       if (eventid <= 0 && !custom) {
+               flags = 0;
+       }
 
        ret = -1;
        if (type == IDEV_WIDGET_BUTTON || type == IDEV_WIDGET_BUTTONAXIS) {
index 1ecd01ad0b256fe3c62d1d9fc7cbe28c2c8461f1..eee649d48d30851b524cce612657dd2421a85ddd 100644 (file)
@@ -1,6 +1,6 @@
 /* joystick/mouse port 1 */
 
-DEFEVENT(JOYPORT1_START,_T("Joystick port 1"), AM_INFO, 0,1,0)
+DEFEVENT(JOYPORT1_START,_T("[Joystick port 1]"), AM_INFO, 0,1,0)
 
 DEFEVENT(MOUSE1_FIRST, _T(""), AM_DUMMY, 0,0,0)
 
@@ -52,7 +52,7 @@ DEFEVENT(JOY1_CD32_BLUE,_T("Joy1 CD32 Blue"),AM_K,4,1,JOYBUTTON_CD32_BLUE)
 
 /* joystick/mouse port 2 */
 
-DEFEVENT(JOYPORT2_START,_T("Joystick port 2"), AM_INFO, 0,2,0)
+DEFEVENT(JOYPORT2_START,_T("[Joystick port 2]"), AM_INFO, 0,2,0)
 
 DEFEVENT(MOUSE2_FIRST, _T(""), AM_DUMMY, 0,0,0)
 
@@ -103,7 +103,7 @@ DEFEVENT(LIGHTPEN_DOWN,_T("Lightpen Down"),AM_K,1,5,DIR_DOWN)
 
 /* parallel port joystick adapter */
 
-DEFEVENT(PAR_JOY1_START, _T("Parallel port joystick adapter"), AM_INFO, 0,3,0)
+DEFEVENT(PAR_JOY1_START, _T("[Parallel port joystick adapter]"), AM_INFO, 0,3,0)
 
 DEFEVENT(PAR_JOY1_HORIZ,_T("Parallel Joy1 Horizontal"),AM_JOY_AXIS,0,3,DIR_LEFT|DIR_RIGHT)
 DEFEVENT(PAR_JOY1_VERT,_T("Parallel Joy1 Vertical"),AM_JOY_AXIS,0,3,DIR_UP|DIR_DOWN)
@@ -137,7 +137,7 @@ DEFEVENT(PAR_JOY_END, _T(""), AM_DUMMY, 0,0,0)
 
 /* qualifiers */
 
-DEFEVENT(SPC_QUALIFIER_START,_T("Qualifiers"),AM_INFO, 0,0,0)
+DEFEVENT(SPC_QUALIFIER_START,_T("[Qualifiers]"),AM_INFO, 0,0,0)
 
 DEFEVENT(SPC_QUALIFIER1,_T("Qualifier 1"),AM_KK,0,0,AKS_QUALIFIER1)
 DEFEVENT(SPC_QUALIFIER2,_T("Qualifier 2"),AM_KK,0,0,AKS_QUALIFIER2)
@@ -151,12 +151,13 @@ DEFEVENT(SPC_QUALIFIER_SPECIAL,_T("Qualifier Special"),AM_KK,0,0,AKS_QUALIFIER_S
 DEFEVENT(SPC_QUALIFIER_SHIFT,_T("Qualifier Shift"),AM_KK,0,0,AKS_QUALIFIER_SHIFT)
 DEFEVENT(SPC_QUALIFIER_CONTROL,_T("Qualifier Control"),AM_KK,0,0,AKS_QUALIFIER_CONTROL)
 DEFEVENT(SPC_QUALIFIER_ALT,_T("Qualifier Alt"),AM_KK,0,0,AKS_QUALIFIER_ALT)
+DEFEVENT(SPC_QUALIFIER_WIN,_T("Qualifier Win"),AM_KK,0,0,AKS_QUALIFIER_WIN)
 
 DEFEVENT(SPC_QUALIFIER_END, _T(""), AM_DUMMY, 0,0,0)
 
 /* keys */
 
-DEFEVENT(KEY_START,_T("Keyboard"),AM_INFO, 0,0,0)
+DEFEVENT(KEY_START,_T("[Keyboard]"),AM_INFO, 0,0,0)
 
 DEFEVENT(KEY_F1,_T("F1"),AM_K,0,0,AK_F1)
 DEFEVENT(KEY_F2,_T("F2"),AM_K,0,0,AK_F2)
@@ -315,6 +316,8 @@ DEFEVENT(KEY_7F,_T("Keycode 0x7F"),AM_K,0,0,0x7f)
 
 /* special */
 
+DEFEVENT(SPC_START,_T("[Miscellaneous]"),AM_INFO,0,0,0)
+
 DEFEVENT(SPC_CUSTOM_EVENT,_T("<Custom Event>"),AM_K,0,0,0)
 DEFEVENT(SPC_ENTERGUI,_T("Enter GUI"),AM_K,0,0,AKS_ENTERGUI)
 DEFEVENT(SPC_SCREENSHOT,_T("Screenshot (file)"),AM_K,0,0,AKS_SCREENSHOT_FILE)
index 149f6ea820083ec8ef815b96ed526b2bf3e062c2..9f4839c7122131b95d3d687ae065938a6c35154c 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -498,6 +498,8 @@ void fixup_prefs (struct uae_prefs *p)
 #endif
        if (p->maprom && !p->address_space_24)
                p->maprom = 0x0f000000;
+       if ((p->maprom & 0xff000000) && p->address_space_24)
+               p->maprom = 0x00e00000;
        if (p->tod_hack && p->cs_ciaatod == 0)
                p->cs_ciaatod = p->ntscmode ? 2 : 1;
 
index 2c95acdb837902f59549b4079928d56ebc48b8ea..7a8882f2cc39be8495f742849675ba4d71cc1993 100644 (file)
@@ -2516,8 +2516,8 @@ void memory_reset (void)
                protect_roms (true);
        }
 
-       if (cloanto_rom && currprefs.maprom < 0x01000000)
-               currprefs.maprom = changed_prefs.maprom = 0;
+       if ((cloanto_rom || extendedkickmem_size) && currprefs.maprom && currprefs.maprom < 0x01000000)
+               currprefs.maprom = changed_prefs.maprom = 0x00a80000;
 
        map_banks (&custom_bank, 0xC0, 0xE0 - 0xC0, 0);
        map_banks (&cia_bank, 0xA0, 32, 0);
@@ -2592,7 +2592,7 @@ void memory_reset (void)
 
        map_banks (&kickmem_bank, 0xF8, 8, 0);
        if (currprefs.maprom)
-               map_banks (&kickram_bank, currprefs.maprom >> 16, 8, 0);
+               map_banks (&kickram_bank, currprefs.maprom >> 16, extendedkickmem2_size ? 32 : (extendedkickmem_size ? 16 : 8), 0);
        /* map beta Kickstarts at 0x200000/0xC00000/0xF00000 */
        if (kickmemory[0] == 0x11 && kickmemory[2] == 0x4e && kickmemory[3] == 0xf9 && kickmemory[4] == 0x00) {
                uae_u32 addr = kickmemory[5];
index 992d23dbbade338aac4584b4a3f9ca39c94504da..ad895270fd76742b34067d4ebfeaffe54dcc13d8 100644 (file)
@@ -33,48 +33,79 @@ int my_setcurrentdir (const TCHAR *curdir, TCHAR *oldcur)
        int ret = 0;
        if (oldcur)
                ret = GetCurrentDirectory (MAX_DPATH, oldcur);
-       if (curdir)
-               ret = SetCurrentDirectory (curdir);
+       if (curdir) {
+               const TCHAR *namep;
+               TCHAR path[MAX_DPATH];
+       
+               if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+                       _tcscpy (path, PATHPREFIX);
+                       _tcscat (path, curdir);
+                       namep = path;
+               } else {
+                       namep = curdir;
+               }
+               ret = SetCurrentDirectory (namep);
+       }
        return ret;
 }
 
 int my_mkdir (const TCHAR *name)
 {
-       return CreateDirectory (name, NULL) == 0 ? -1 : 0;
+       const TCHAR *namep;
+       TCHAR path[MAX_DPATH];
+       
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (path, PATHPREFIX);
+               _tcscat (path, name);
+               namep = path;
+       } else {
+               namep = name;
+       }
+       return CreateDirectory (namep, NULL) == 0 ? -1 : 0;
 }
 
 static int recycle (const TCHAR *name)
 {
-       DWORD dirattr = GetFileAttributes (name);
+       DWORD dirattr = GetFileAttributesSafe (name);
        bool isdir = dirattr != INVALID_FILE_ATTRIBUTES && (dirattr & FILE_ATTRIBUTE_DIRECTORY);
+       const TCHAR *namep;
+       TCHAR path[MAX_DPATH];
+       
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (path, PATHPREFIX);
+               _tcscat (path, name);
+               namep = path;
+       } else {
+               namep = name;
+       }
 
-       if (currprefs.win32_norecyclebin || isdir) {
+       if (currprefs.win32_norecyclebin || isdir || currprefs.win32_filesystem_mangle_reserved_names == false) {
                if (isdir)
-                       return RemoveDirectory (name) ? 0 : -1;
+                       return RemoveDirectory (namep) ? 0 : -1;
                else
-                       return DeleteFile (name) ? 0 : -1;
+                       return DeleteFile (namep) ? 0 : -1;
        } else {
                SHFILEOPSTRUCT fos;
                HANDLE h;
                
-               h = CreateFile (name, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+               h = CreateFile (namep, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
                        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
                if (h != INVALID_HANDLE_VALUE) {
                        LARGE_INTEGER size;
                        if (GetFileSizeEx (h, &size)) {
                                if (size.QuadPart == 0) {
                                        CloseHandle (h);
-                                       return DeleteFile (name) ? 0 : -1;
+                                       return DeleteFile (namep) ? 0 : -1;
                                }
                        }
                        CloseHandle (h);
                }
 
                /* name must be terminated by \0\0 */
-               TCHAR *p = xcalloc (TCHAR, _tcslen (name) + 2);
+               TCHAR *p = xcalloc (TCHAR, _tcslen (namep) + 2);
                int v;
 
-               _tcscpy (p, name);
+               _tcscpy (p, namep);
                memset (&fos, 0, sizeof (fos));
                fos.wFunc = FO_DELETE;
                fos.pFrom = p;
@@ -136,7 +167,21 @@ int my_unlink (const TCHAR *name)
 
 int my_rename (const TCHAR *oldname, const TCHAR *newname)
 {
-       return MoveFile (oldname, newname) == 0 ? -1 : 0;
+       const TCHAR *onamep, *nnamep;
+       TCHAR opath[MAX_DPATH], npath[MAX_DPATH];
+
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (opath, PATHPREFIX);
+               _tcscat (opath, oldname);
+               onamep = opath;
+               _tcscpy (npath, PATHPREFIX);
+               _tcscat (npath, newname);
+               nnamep = npath;
+       } else {
+               onamep = oldname;
+               nnamep = newname;
+       }
+       return MoveFile (onamep, nnamep) == 0 ? -1 : 0;
 }
 
 struct my_opendir_s {
@@ -154,7 +199,10 @@ struct my_opendir_s *my_opendir (const TCHAR *name, const TCHAR *mask)
        struct my_opendir_s *mod;
        TCHAR tmp[MAX_DPATH];
 
-       _tcscpy (tmp, name);
+       tmp[0] = 0;
+       if (currprefs.win32_filesystem_mangle_reserved_names == false)
+               _tcscpy (tmp, PATHPREFIX);
+       _tcscat (tmp, name);
        _tcscat (tmp, _T("\\"));
        _tcscat (tmp, mask);
        mod = xmalloc (struct my_opendir_s, 1);
@@ -239,19 +287,50 @@ unsigned int my_write (struct my_openfile_s *mos, void *b, unsigned int size)
        return written;
 }
 
-static DWORD GetFileAttributesSafe (const TCHAR *name)
+BOOL SetFileAttributesSafe (const TCHAR *name, DWORD attr)
+{
+       DWORD last;
+       BOOL ret;
+       const TCHAR *namep;
+       TCHAR path[MAX_DPATH];
+
+       last = SetErrorMode (SEM_FAILCRITICALERRORS);
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (path, PATHPREFIX);
+               _tcscat (path, name);
+               namep = path;
+       } else {
+               namep = name;
+       }
+       ret = SetFileAttributes (namep, attr);
+       SetErrorMode (last);
+       return ret;
+}
+
+DWORD GetFileAttributesSafe (const TCHAR *name)
 {
        DWORD attr, last;
+       const TCHAR *namep;
+       TCHAR path[MAX_DPATH];
 
        last = SetErrorMode (SEM_FAILCRITICALERRORS);
-       attr = GetFileAttributes (name);
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (path, PATHPREFIX);
+               _tcscat (path, name);
+               namep = path;
+       } else {
+               namep = name;
+       }
+       attr = GetFileAttributes (namep);
        SetErrorMode (last);
        return attr;
 }
 
 int my_existsfile (const TCHAR *name)
 {
-       DWORD attr = GetFileAttributesSafe (name);
+       DWORD attr;
+       
+       attr = GetFileAttributesSafe (name);
        if (attr == INVALID_FILE_ATTRIBUTES)
                return 0;
        if (!(attr & FILE_ATTRIBUTE_DIRECTORY))
@@ -261,7 +340,9 @@ int my_existsfile (const TCHAR *name)
 
 int my_existsdir (const TCHAR *name)
 {
-       DWORD attr = GetFileAttributesSafe (name);
+       DWORD attr;
+
+       attr = GetFileAttributesSafe (name);
        if (attr == INVALID_FILE_ATTRIBUTES)
                return 0;
        if (attr & FILE_ATTRIBUTE_DIRECTORY)
@@ -278,7 +359,16 @@ struct my_openfile_s *my_open (const TCHAR *name, int flags)
        DWORD CreationDisposition = OPEN_EXISTING;
        DWORD FlagsAndAttributes = FILE_ATTRIBUTE_NORMAL;
        DWORD attr;
-
+       const TCHAR *namep;
+       TCHAR path[MAX_DPATH];
+       
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (path, PATHPREFIX);
+               _tcscat (path, name);
+               namep = path;
+       } else {
+               namep = name;
+       }
        mos = xmalloc (struct my_openfile_s, 1);
        if (!mos)
                return NULL;
@@ -295,20 +385,19 @@ struct my_openfile_s *my_open (const TCHAR *name, int flags)
        }
        if (flags & O_RDWR)
                DesiredAccess = GENERIC_READ | GENERIC_WRITE;
-       if (CreationDisposition == CREATE_ALWAYS && attr != INVALID_FILE_ATTRIBUTES &&
-               (attr & (FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN)))
-               SetFileAttributes (name, FILE_ATTRIBUTE_NORMAL);
-       h = CreateFile (name, DesiredAccess, ShareMode, NULL, CreationDisposition, FlagsAndAttributes, NULL);
+       if (CreationDisposition == CREATE_ALWAYS && attr != INVALID_FILE_ATTRIBUTES && (attr & (FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN)))
+               SetFileAttributesSafe (name, FILE_ATTRIBUTE_NORMAL);
+       h = CreateFile (namep, DesiredAccess, ShareMode, NULL, CreationDisposition, FlagsAndAttributes, NULL);
        if (h == INVALID_HANDLE_VALUE) {
                DWORD err = GetLastError();
                if (err == ERROR_ACCESS_DENIED && (DesiredAccess & GENERIC_WRITE)) {
                        DesiredAccess &= ~GENERIC_WRITE;
-                       h = CreateFile (name, DesiredAccess, ShareMode, NULL, CreationDisposition, FlagsAndAttributes, NULL);
+                       h = CreateFile (namep, DesiredAccess, ShareMode, NULL, CreationDisposition, FlagsAndAttributes, NULL);
                        if (h == INVALID_HANDLE_VALUE)
                                err = GetLastError();
                }
                if (h == INVALID_HANDLE_VALUE) {
-                       write_log (_T("failed to open '%s' %x %x err=%d\n"), name, DesiredAccess, CreationDisposition, err);
+                       write_log (_T("failed to open '%s' %x %x err=%d\n"), namep, DesiredAccess, CreationDisposition, err);
                        xfree (mos);
                        mos = NULL;
                        goto err;
@@ -316,7 +405,7 @@ struct my_openfile_s *my_open (const TCHAR *name, int flags)
        }
        mos->h = h;
 err:
-       //write_log (_T("open '%s' = %x\n"), name, mos ? mos->h : 0);
+       //write_log (_T("open '%s' = %x\n"), namep, mos ? mos->h : 0);
        return mos;
 }
 
@@ -325,22 +414,31 @@ int my_truncate (const TCHAR *name, uae_u64 len)
        HANDLE hFile;
        BOOL bResult = FALSE;
        int result = -1;
-
-       if ((hFile = CreateFile (name, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+       const TCHAR *namep;
+       TCHAR path[MAX_DPATH];
+       
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (path, PATHPREFIX);
+               _tcscat (path, name);
+               namep = path;
+       } else {
+               namep = name;
+       }
+       if ((hFile = CreateFile (namep, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
                OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ) ) != INVALID_HANDLE_VALUE )
        {
                LARGE_INTEGER li;
                li.QuadPart = len;
                li.LowPart = SetFilePointer (hFile, li.LowPart, &li.HighPart, FILE_BEGIN);
                if (li.LowPart == INVALID_SET_FILE_POINTER && GetLastError () != NO_ERROR) {
-                       write_log (_T("truncate: SetFilePointer() failure for %s to posn %d\n"), name, len);
+                       write_log (_T("truncate: SetFilePointer() failure for %s to posn %d\n"), namep, len);
                } else {
                        if (SetEndOfFile (hFile) == TRUE)
                                result = 0;
                }
                CloseHandle (hFile);
        } else {
-               write_log (_T("truncate: CreateFile() failed to open %s\n"), name);
+               write_log (_T("truncate: CreateFile() failed to open %s\n"), namep);
        }
        return result;
 }
index 270a71becf8f8e447ab8591cf396c93cda2c6351..4f4128aeb9c4a2538c79deddec3cdee705c9e149 100644 (file)
@@ -59,14 +59,16 @@ static TCHAR *make_uaefsdbpath (const TCHAR *dir, const TCHAR *name)
        len = _tcslen (dir) + 1 + 1;
        if (name)
                len += 1 + _tcslen (name);
+       if (currprefs.win32_filesystem_mangle_reserved_names == false)
+               len += _tcslen (PATHPREFIX);
        len += 1 + _tcslen (FSDB_FILE);
        p = xmalloc (TCHAR, len);
        if (!p)
                return NULL;
        if (name)
-               _stprintf (p, _T("%s\\%s:%s"), dir, name, FSDB_FILE);
+               _stprintf (p, _T("%s%s\\%s:%s"), currprefs.win32_filesystem_mangle_reserved_names == false ? PATHPREFIX : _T(""), dir, name, FSDB_FILE);
        else
-               _stprintf (p, _T("%s:%s"), dir, FSDB_FILE);
+               _stprintf (p, _T("%s%s:%s"), currprefs.win32_filesystem_mangle_reserved_names == false ? PATHPREFIX : _T(""), dir, FSDB_FILE);
        return p;
 }
 
@@ -131,13 +133,24 @@ static int write_uaefsdb (const TCHAR *dir, uae_u8 *fsdb)
        FILETIME t1, t2, t3;
        int time_valid = FALSE;
        int ret = 0;
+       const TCHAR *namep;
+       TCHAR path[MAX_DPATH];
+       
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (path, PATHPREFIX);
+               _tcscat (path, dir);
+               namep = path;
+       } else {
+               namep = dir;
+       }
 
        p = make_uaefsdbpath (dir, NULL);
-       dirattr = GetFileAttributes (dir);
+
+       dirattr = GetFileAttributesSafe (dir);
        dirflag = FILE_ATTRIBUTE_NORMAL;
        if (dirattr != INVALID_FILE_ATTRIBUTES && (dirattr & FILE_ATTRIBUTE_DIRECTORY))
                dirflag = FILE_FLAG_BACKUP_SEMANTICS; /* argh... */
-       h = CreateFile (dir, GENERIC_READ, 0,
+       h = CreateFile (namep, GENERIC_READ, 0,
                NULL, OPEN_EXISTING, dirflag, NULL);
        if (h != INVALID_HANDLE_VALUE) {
                if (GetFileTime (h, &t1, &t2, &t3))
@@ -188,7 +201,7 @@ end:
        if (attr != INVALID_FILE_ATTRIBUTES)
                SetFileAttributes (p, attr);
        if (time_valid) {
-               h = CreateFile (dir, GENERIC_WRITE, 0,
+               h = CreateFile (namep, GENERIC_WRITE, 0,
                        NULL, OPEN_EXISTING, dirflag, NULL);
                if (h != INVALID_HANDLE_VALUE) {
                        SetFileTime (h, &t1, &t2, &t3);
@@ -258,7 +271,7 @@ static a_inode *aino_from_buf (a_inode *base, uae_u8 *buf, int *winmode)
        aino->has_dbentry = 0;
        aino->dirty = 0;
        aino->db_offset = 0;
-       if((mode = GetFileAttributes (aino->nname)) == INVALID_FILE_ATTRIBUTES) {
+       if((mode = GetFileAttributesSafe (aino->nname)) == INVALID_FILE_ATTRIBUTES) {
                write_log (_T("xGetFileAttributes('%s') failed! error=%d, aino=%p\n"),
                        aino->nname, GetLastError (), aino);
                return aino;
@@ -268,7 +281,7 @@ static a_inode *aino_from_buf (a_inode *base, uae_u8 *buf, int *winmode)
 }
 
 /* Return nonzero for any name we can't create on the native filesystem.  */
-static int fsdb_name_invalid_2 (const TCHAR *n)
+static int fsdb_name_invalid_2 (const TCHAR *n, int dir)
 {
        int i;
        static char s1[MAX_DPATH];
@@ -279,6 +292,17 @@ static int fsdb_name_invalid_2 (const TCHAR *n)
        TCHAR d = (c == '\0' ? c : n[3]);
        int l = _tcslen (n), ll;
 
+       /* the reserved fsdb filename */
+       if (_tcscmp (n, FSDB_FILE) == 0)
+               return -1;
+
+       if (dir) {
+               if (n[0] == '.' && l == 1)
+                       return -1;
+               if (n[0] == '.' && n[1] == '.' && l == 2)
+                       return -1;
+       }
+
        if (a >= 'a' && a <= 'z')
                a -= 32;
        if (b >= 'a' && b <= 'z')
@@ -286,22 +310,24 @@ static int fsdb_name_invalid_2 (const TCHAR *n)
        if (c >= 'a' && c <= 'z')
                c -= 32;
 
-       /* reserved dos devices */
-       ll = 0;
-       if (a == 'A' && b == 'U' && c == 'X') ll = 3; /* AUX  */
-       if (a == 'C' && b == 'O' && c == 'N') ll = 3; /* CON  */
-       if (a == 'P' && b == 'R' && c == 'N') ll = 3; /* PRN  */
-       if (a == 'N' && b == 'U' && c == 'L') ll = 3; /* NUL  */
-       if (a == 'L' && b == 'P' && c == 'T'  && (d >= '0' && d <= '9')) ll = 4; /* LPT# */
-       if (a == 'C' && b == 'O' && c == 'M'  && (d >= '0' && d <= '9')) ll = 4; /* COM# */
-       /* AUX.anything, CON.anything etc.. are also illegal names */
-       if (ll && (l == ll || (l > ll && n[ll] == '.')))
-               return 1;
+       if (currprefs.win32_filesystem_mangle_reserved_names) {
+               /* reserved dos devices */
+               ll = 0;
+               if (a == 'A' && b == 'U' && c == 'X') ll = 3; /* AUX  */
+               if (a == 'C' && b == 'O' && c == 'N') ll = 3; /* CON  */
+               if (a == 'P' && b == 'R' && c == 'N') ll = 3; /* PRN  */
+               if (a == 'N' && b == 'U' && c == 'L') ll = 3; /* NUL  */
+               if (a == 'L' && b == 'P' && c == 'T'  && (d >= '0' && d <= '9')) ll = 4; /* LPT# */
+               if (a == 'C' && b == 'O' && c == 'M'  && (d >= '0' && d <= '9')) ll = 4; /* COM# */
+               /* AUX.anything, CON.anything etc.. are also illegal names */
+               if (ll && (l == ll || (l > ll && n[ll] == '.')))
+                       return 1;
 
-       /* spaces and periods at the end are a no-no */
-       i = l - 1;
-       if (n[i] == '.' || n[i] == ' ')
-               return -1;
+               /* spaces and periods at the end are a no-no */
+               i = l - 1;
+               if (n[i] == '.' || n[i] == ' ')
+                       return 1;
+       }
 
        /* these characters are *never* allowed */
        for (i = 0; i < NUM_EVILCHARS; i++) {
@@ -309,10 +335,6 @@ static int fsdb_name_invalid_2 (const TCHAR *n)
                        return 1;
        }
 
-       /* the reserved fsdb filename */
-       if (_tcscmp (n, FSDB_FILE) == 0)
-               return -1;
-
        s1[0] = 0;
        s2[0] = 0;
        ua_fs_copy (s1, MAX_DPATH, n, -1);
@@ -325,7 +347,16 @@ static int fsdb_name_invalid_2 (const TCHAR *n)
 
 int fsdb_name_invalid (const TCHAR *n)
 {
-       int v = fsdb_name_invalid_2 (n);
+       int v = fsdb_name_invalid_2 (n, 0);
+       if (v <= 0)
+               return v;
+       write_log (_T("FILESYS: '%s' illegal filename\n"), n);
+       return v;
+}
+
+int fsdb_name_invalid_dir (const TCHAR *n)
+{
+       int v = fsdb_name_invalid_2 (n, 1);
        if (v <= 0)
                return v;
        write_log (_T("FILESYS: '%s' illegal filename\n"), n);
@@ -337,11 +368,9 @@ uae_u32 filesys_parse_mask(uae_u32 mask)
        return mask ^ 0xf;
 }
 
-int fsdb_exists (TCHAR *nname)
+int fsdb_exists (const TCHAR *nname)
 {
-       if (GetFileAttributes(nname) == INVALID_FILE_ATTRIBUTES)
-               return 0;
-       return 1;
+       return GetFileAttributesSafe (nname) != INVALID_FILE_ATTRIBUTES;
 }
 
 /* For an a_inode we have newly created based on a filename we found on the
@@ -352,7 +381,7 @@ int fsdb_fill_file_attrs (a_inode *base, a_inode *aino)
        uae_u8 fsdb[UAEFSDB2_LEN];
        int reset = 0;
 
-       if((mode = GetFileAttributes(aino->nname)) == INVALID_FILE_ATTRIBUTES) {
+       if((mode = GetFileAttributesSafe (aino->nname)) == INVALID_FILE_ATTRIBUTES) {
                write_log (_T("GetFileAttributes('%s') failed! error=%d, aino=%p dir=%d\n"),
                        aino->nname, GetLastError(), aino, aino->dir);
                return 0;
@@ -415,7 +444,7 @@ int fsdb_set_file_attrs (a_inode *aino)
 
        tmpmask = filesys_parse_mask (aino->amigaos_mode);
 
-       mode = GetFileAttributes (aino->nname);
+       mode = GetFileAttributesSafe (aino->nname);
        if (mode == INVALID_FILE_ATTRIBUTES)
                return ERROR_OBJECT_NOT_AROUND;
        mode &= FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN;
@@ -429,7 +458,7 @@ int fsdb_set_file_attrs (a_inode *aino)
                mode |= FILE_ATTRIBUTE_SYSTEM;
        if (tmpmask & A_FIBF_HIDDEN)
                mode |= FILE_ATTRIBUTE_HIDDEN;
-       SetFileAttributes (aino->nname, mode);
+       SetFileAttributesSafe (aino->nname, mode);
 
        aino->dirty = 1;
        if (aino->volflags & MYVOLUMEINFO_STREAMS) {
@@ -523,9 +552,20 @@ TCHAR *fsdb_search_dir (const TCHAR *dirname, TCHAR *rel)
        WIN32_FIND_DATA fd;
        HANDLE h;
        TCHAR *tmp, *p = 0;
-
+       const TCHAR *namep;
+       TCHAR path[MAX_DPATH];
+       
        tmp = build_nname (dirname, rel);
-       h = FindFirstFile (tmp, &fd);
+       if (!tmp)
+               return NULL;
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (path, PATHPREFIX);
+               _tcscat (path, tmp);
+               namep = path;
+       } else {
+               namep = tmp;
+       }
+       h = FindFirstFile (namep, &fd);
        if (h != INVALID_HANDLE_VALUE) {
                if (_tcscmp (fd.cFileName, rel) == 0)
                        p = rel;
@@ -544,11 +584,22 @@ static a_inode *custom_fsdb_lookup_aino (a_inode *base, const TCHAR *aname, int
        HANDLE h;
        WIN32_FIND_DATA fd;
        static a_inode dummy;
+       const TCHAR *namep;
+       TCHAR path[MAX_DPATH];
 
        tmp1 = build_nname (base->nname, UAEFSDB_BEGINSX);
        if (!tmp1)
                return NULL;
-       h = FindFirstFile (tmp1, &fd);
+
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (path, PATHPREFIX);
+               _tcscat (path, tmp1);
+               namep = path;
+       } else {
+               namep = tmp1;
+       }
+
+       h = FindFirstFile (namep, &fd);
        if (h != INVALID_HANDLE_VALUE) {
                do {
                        if (read_uaefsdb (base->nname, fd.cFileName, fsdb)) {
index 16286797dab86a14daa53db948f45256bdbd48c1..9887e0e5cfddef4024ffaac7c293705623b0b07f 100644 (file)
@@ -126,11 +126,11 @@ static struct uae_input_device_kbr_default keytrans_amiga[] = {
 
        { DIK_LSHIFT, INPUTEVENT_KEY_SHIFT_LEFT, 0, INPUTEVENT_SPC_QUALIFIER_SHIFT },
        { DIK_LCONTROL, INPUTEVENT_KEY_CTRL, 0, INPUTEVENT_SPC_QUALIFIER_CONTROL },
-       { DIK_LWIN, INPUTEVENT_KEY_AMIGA_LEFT },
+       { DIK_LWIN, INPUTEVENT_KEY_AMIGA_LEFT, 0, INPUTEVENT_SPC_QUALIFIER_WIN },
        { DIK_LMENU, INPUTEVENT_KEY_ALT_LEFT, 0, INPUTEVENT_SPC_QUALIFIER_ALT },
        { DIK_RMENU, INPUTEVENT_KEY_ALT_RIGHT, 0, INPUTEVENT_SPC_QUALIFIER_ALT },
-       { DIK_RWIN, INPUTEVENT_KEY_AMIGA_RIGHT },
-       { DIK_APPS, INPUTEVENT_KEY_AMIGA_RIGHT },
+       { DIK_RWIN, INPUTEVENT_KEY_AMIGA_RIGHT, 0, INPUTEVENT_SPC_QUALIFIER_WIN },
+       { DIK_APPS, INPUTEVENT_KEY_AMIGA_RIGHT, 0, INPUTEVENT_SPC_QUALIFIER_WIN },
        { DIK_RCONTROL, INPUTEVENT_KEY_CTRL, 0, INPUTEVENT_SPC_QUALIFIER_CONTROL },
        { DIK_RSHIFT, INPUTEVENT_KEY_SHIFT_RIGHT, 0, INPUTEVENT_SPC_QUALIFIER_SHIFT },
 
index db0e5c13d0a73f675e973abc1d25e73e7f5fb440..9b90fef7342f5efd2c31f98ee1494da93a1e5d34 100644 (file)
@@ -118,9 +118,19 @@ int posixemu_stat (const TCHAR *name, struct _stat64 *statbuf)
        FILETIME ft, lft;
        HANDLE h;
        BY_HANDLE_FILE_INFORMATION fi;
+       const TCHAR *namep;
+       TCHAR path[MAX_DPATH];
+       
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (path, PATHPREFIX);
+               _tcscat (path, name);
+               namep = path;
+       } else {
+               namep = name;
+       }
 
        // FILE_FLAG_BACKUP_SEMANTICS = can also "open" directories
-       h = CreateFile (name, 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_BACKUP_SEMANTICS, NULL);
+       h = CreateFile (namep, 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_BACKUP_SEMANTICS, NULL);
        if (h == INVALID_HANDLE_VALUE) {
                write_log (_T("Stat CreateFile(%s) failed: %d\n"), name, GetLastError ());
                return -1;
@@ -135,7 +145,7 @@ int posixemu_stat (const TCHAR *name, struct _stat64 *statbuf)
                ft = fi.ftLastWriteTime;
                statbuf->st_size = ((uae_u64)fi.nFileSizeHigh << 32) | fi.nFileSizeLow;
        } else {
-               write_log (_T("GetFileInformationByHandle(%s) failed: %d\n"), name, GetLastError ());
+               write_log (_T("GetFileInformationByHandle(%s) failed: %d\n"), namep, GetLastError ());
                return -1;
        }
 
@@ -157,7 +167,7 @@ int posixemu_chmod (const TCHAR *name, int mode)
                attr |= FILE_ATTRIBUTE_READONLY;
        if (mode & FILEFLAG_ARCHIVE)
                attr |= FILE_ATTRIBUTE_ARCHIVE;
-       if (SetFileAttributes (name,attr))
+       if (SetFileAttributesSafe (name,attr))
                return 1;
        return -1;
 }
@@ -182,8 +192,18 @@ static int setfiletime (const TCHAR *name, unsigned int days, int minute, int ti
 {
        FILETIME LocalFileTime, FileTime;
        HANDLE hFile;
+       const TCHAR *namep;
+       TCHAR path[MAX_DPATH];
+       
+       if (currprefs.win32_filesystem_mangle_reserved_names == false) {
+               _tcscpy (path, PATHPREFIX);
+               _tcscat (path, name);
+               namep = path;
+       } else {
+               namep = name;
+       }
 
-       if ((hFile = CreateFile (name, GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_BACKUP_SEMANTICS, NULL)) == INVALID_HANDLE_VALUE)
+       if ((hFile = CreateFile (namep, GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_BACKUP_SEMANTICS, NULL)) == INVALID_HANDLE_VALUE)
                return 0;
 
        for (;;) {
index 0f34f69175739c8f44d5e6f8e0860fc8c13d6336..bbb7dad750b65b56a66f0b52b723c95225f0cc5c 100644 (file)
@@ -6,6 +6,7 @@
 #define IDS_DISK                        2
 #define IDS_DISPLAY                     3
 #define IDC_HARDDRIVE_IMAGE             3
+#define IDC_LISTDIALOG_CLEAR            3
 #define IDS_HARDDISK                    4
 #define IDS_FLOPPY                      5
 #define IDS_ABOUT                       6
 #define IDS_WSTYLE_MINIMAL              383
 #define IDS_WSTYLE_STANDARD             384
 #define IDS_WSTYLE_EXTENDED             385
+#define IDD_LIST                        386
+#define IDS_MISCLISTITEMS1              386
+#define IDS_MISCLISTITEMS2              387
+#define IDS_MISCLISTITEMS3              388
 #define IDS_QS_MODELS                   1000
 #define IDS_QS_MODEL_A500               1001
 #define IDS_QS_MODEL_A500P              1002
 #define IDC_SAVEIMAGE2                  1287
 #define IDC_PROWIZARD                   1288
 #define IDC_SAVEIMAGE3                  1288
+#define IDC_GUI_FONT                    1288
+#define IDC_GUI_DEFAULT                 1289
+#define IDC_GUI_LISTFONT                1290
 #define IDC_PORT0_JOYSC                 1302
 #define IDC_PORT0_KBDA                  1303
 #define IDC_PORT0_KBDB                  1304
 #define IDC_DF0WP                       1519
 #define IDC_OCS                         1520
 #define IDC_HDFLOPPY                    1520
+#define IDC_SETTINGSTEXT3               1520
 #define IDC_ECS_AGNUS                   1521
 #define IDC_ECS_DENISE                  1522
 #define IDC_ECS                         1523
 #define IDC_MINIMIZED_PAUSE             1531
 #define IDC_STATEREC_RECORD             1532
 #define IDC_KBLED_USB                   1533
-#define IDC_STATEREC_CAPTURE2           1533
 #define IDC_ACTIVE_PAUSE                1534
+#define IDC_KBLED_USB2                  1534
 #define IDC_ACTIVE_NOSOUND              1535
 #define IDC_STATECLEAR                  1536
 #define IDC_SER_SHARED                  1553
+#define IDC_GUI_RESIZE                  1553
 #define IDC_SER_CTSRTS                  1554
 #define IDC_SER_DIRECT                  1555
 #define IDC_PSPRINTER                   1556
 #define IDC_SOUNDCALIBRATE              1641
 #define IDC_ACTIVE_PRIORITY             1642
 #define IDC_SOUNDDRIVE                  1642
+#define IDC_KBLED4                      1642
+#define IDC_GUI_SIZE                    1642
 #define IDC_INACTIVE_PRIORITY           1643
 #define IDC_ACTIVE_PRI                  1644
 #define IDC_MINIMIZED_PRIORITY          1645
 #define IDC_SOUND_AUTO                  1709
 #define IDC_FILTERKEEPASPECT            1709
 #define IDC_CS_RTC                      1710
+#define IDC_FILTERKEEPAUTOSCALEASPECT   1710
 #define IDC_CS_CIAA_TOD1                1711
 #define IDC_CS_CIAA_TOD2                1712
 #define IDC_CS_EXT                      1712
 #define IDC_MISCLIST                    1810
 #define IDC_STATENAME                   1811
 #define IDC_SAMPLER_STEREO              1812
+#define IDC_LISTDIALOG_LIST             1813
 #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        386
+#define _APS_NEXT_RESOURCE_VALUE        387
 #define _APS_NEXT_COMMAND_VALUE         40050
-#define _APS_NEXT_CONTROL_VALUE         1813
+#define _APS_NEXT_CONTROL_VALUE         1814
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif
index f97014437fd2b917b9ae2b91d4e442554bbff840..b66e65d5813c913d4d68e9d5eb8167dc9b174306 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1"  manifestVersion="1.0">
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1"  manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32"
@@ -18,4 +18,9 @@
       </requestedPrivileges>
     </security>
   </trustInfo>
+<asmv3:application>
+  <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
+    <dpiAware>true</dpiAware>
+  </asmv3:windowsSettings>
+</asmv3:application>
 </assembly>
index 900d5f945bce82a9ddc53704f8781106e949ef72..ee25b8c9393f0d53a95209ababe963fde65644fa 100644 (file)
@@ -85,373 +85,376 @@ END
 // Dialog\r
 //\r
 \r
-IDD_KICKSTART DIALOGEX 0, 0, 300, 176\r
+IDD_KICKSTART DIALOGEX 0, 0, 396, 195\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 EXSTYLE WS_EX_CONTEXTHELP\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    GROUPBOX        "System ROM Settings",-1,5,0,290,93\r
+    GROUPBOX        "System ROM Settings",-1,1,0,394,93\r
     LTEXT           "Main ROM file:",IDC_ROMTEXT,14,13,263,10\r
-    COMBOBOX        IDC_ROMFILE,12,26,263,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "...",IDC_KICKCHOOSER,280,25,10,15\r
+    COMBOBOX        IDC_ROMFILE,12,26,361,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "...",IDC_KICKCHOOSER,376,25,10,15\r
     LTEXT           "Extended ROM file:",IDC_ROMFILE2TEXT,14,43,263,10\r
-    COMBOBOX        IDC_ROMFILE2,12,56,263,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "...",IDC_ROMCHOOSER2,280,55,10,15\r
+    COMBOBOX        IDC_ROMFILE2,12,56,361,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "...",IDC_ROMCHOOSER2,376,55,10,15\r
     CONTROL         "MapROM emulation [] Creates a BlizKick-compatible memory area.",IDC_MAPROM,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,95,77,87,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,87,77,104,12\r
     CONTROL         "ShapeShifter support [] Patches the system ROM for ShapeShifter compatibility.",IDC_KICKSHIFTER,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,77,87,10\r
-    GROUPBOX        "Miscellaneous",-1,5,99,290,75\r
-    LTEXT           "Cartridge ROM file:",IDC_FLASHTEXT2,12,110,265,10\r
-    COMBOBOX        IDC_CARTFILE,12,123,263,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "...",IDC_CARTCHOOSER,280,122,10,15\r
-    LTEXT           "Flash RAM file:",IDC_FLASHTEXT,12,142,265,10\r
-    EDITTEXT        IDC_FLASHFILE,12,155,262,13,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "...",IDC_FLASHCHOOSER,280,154,10,15\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,195,77,106,13\r
+    GROUPBOX        "Miscellaneous",-1,1,98,394,90\r
+    LTEXT           "Cartridge ROM file:",IDC_FLASHTEXT2,12,112,265,10\r
+    COMBOBOX        IDC_CARTFILE,12,125,361,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "...",IDC_CARTCHOOSER,376,124,10,15\r
+    LTEXT           "Flash RAM file:",IDC_FLASHTEXT,12,144,265,10\r
+    EDITTEXT        IDC_FLASHFILE,12,157,361,12,ES_AUTOHSCROLL\r
+    PUSHBUTTON      "...",IDC_FLASHCHOOSER,376,156,10,15\r
 END\r
 \r
-IDD_DISPLAY DIALOGEX 0, 0, 300, 235\r
+IDD_DISPLAY DIALOGEX 0, 0, 396, 272\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    GROUPBOX        "Screen",IDC_SCREENRESTEXT,4,0,292,67,BS_LEFT\r
-    COMBOBOX        IDC_DISPLAYSELECT,10,10,279,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_RESOLUTION,59,27,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_REFRESHRATE,187,27,102,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    EDITTEXT        IDC_XSIZE,59,48,48,12,ES_NUMBER\r
-    EDITTEXT        IDC_YSIZE,114,48,47,12,ES_NUMBER\r
-    GROUPBOX        "Settings",IDC_SETTINGSTEXT,4,73,209,137\r
-    CONTROL         "Blacker than black",IDC_BLACKER_THAN_BLACK,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,11,125,92,10\r
-    LTEXT           "Refresh:",IDC_REFRESHTEXT,11,173,28,8\r
-    CONTROL         "Slider1",IDC_FRAMERATE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,40,168,99,20\r
-    GROUPBOX        "Centering",IDC_STATIC,221,73,75,49\r
-    CONTROL         "Horizontal",IDC_XCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,229,87,49,10\r
-    CONTROL         "Vertical",IDC_YCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,229,103,49,10\r
-    GROUPBOX        "Line Mode",IDC_LINEMODE,222,126,74,84\r
-    CONTROL         "Normal",IDC_LM_NORMAL,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,231,148,44,10\r
-    CONTROL         "Double",IDC_LM_DOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,231,164,45,10\r
-    CONTROL         "Scanlines",IDC_LM_SCANLINES,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,231,180,46,10\r
-    COMBOBOX        IDC_DA_MODE,4,218,58,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "",IDC_DA_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,67,214,96,20\r
-    LTEXT           "FPS adj.:",IDC_REFRESH2TEXT,9,193,32,8\r
-    CONTROL         "",IDC_FRAMERATE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,40,188,99,20\r
-    EDITTEXT        IDC_RATE2TEXT,143,192,46,12,ES_AUTOHSCROLL\r
-    COMBOBOX        IDC_RESOLUTIONDEPTH,134,27,46,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Filtered low resolution",IDC_LORES_SMOOTHED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,125,89,10\r
-    COMBOBOX        IDC_SCREENMODE_NATIVE,39,85,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_SCREENMODE_RTG,39,103,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "Native:",IDC_STATIC,9,85,23,15,SS_CENTERIMAGE\r
-    RTEXT           "RTG:",IDC_STATIC,8,101,24,15,SS_CENTERIMAGE\r
-    PUSHBUTTON      "Reset to defaults",IDC_DA_RESET,221,218,75,14\r
-    RTEXT           "Resolution:",IDC_STATIC,27,152,59,15,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_LORES,103,152,102,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Remove interlace artifacts",IDC_FLICKERFIXER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,139,99,10\r
-    RTEXT           "Windowed:",IDC_STATIC,13,46,40,15,SS_CENTERIMAGE\r
-    RTEXT           "Fullscreen:",IDC_STATIC,11,27,40,15,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_DISPLAY_BUFFERCNT,187,47,102,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Resolution autoswitch",IDC_AUTORESOLUTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,139,89,10\r
-    EDITTEXT        IDC_DA_TEXT,167,218,46,12,ES_AUTOHSCROLL | ES_READONLY\r
-    COMBOBOX        IDC_SCREENMODE_NATIVE2,108,85,99,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_SCREENMODE_RTG2,108,103,99,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_RATE2BOX,143,173,60,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "",IDC_RATE2ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,194,193,8,10\r
-END\r
-\r
-IDD_MEMORY DIALOGEX 0, 0, 300, 205\r
+    GROUPBOX        "Screen",IDC_SCREENRESTEXT,1,0,393,77,BS_LEFT\r
+    COMBOBOX        IDC_DISPLAYSELECT,10,10,375,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_RESOLUTION,59,30,76,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_REFRESHRATE,266,30,119,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    EDITTEXT        IDC_XSIZE,59,53,56,12,ES_NUMBER\r
+    EDITTEXT        IDC_YSIZE,122,53,56,12,ES_NUMBER\r
+    GROUPBOX        "Settings",IDC_SETTINGSTEXT,1,86,283,144\r
+    CONTROL         "Blacker than black",IDC_BLACKER_THAN_BLACK,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,11,140,142,10\r
+    RTEXT           "Refresh:",IDC_REFRESHTEXT,11,190,57,8\r
+    CONTROL         "Slider1",IDC_FRAMERATE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,71,185,99,20\r
+    GROUPBOX        "Centering",IDC_STATIC,289,86,105,49\r
+    CONTROL         "Horizontal",IDC_XCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,300,100,90,10\r
+    CONTROL         "Vertical",IDC_YCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,300,116,90,10\r
+    GROUPBOX        "Line Mode",IDC_LINEMODE,290,139,104,90\r
+    CONTROL         "Normal",IDC_LM_NORMAL,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,299,161,90,10\r
+    CONTROL         "Double",IDC_LM_DOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,177,90,10\r
+    CONTROL         "Scanlines",IDC_LM_SCANLINES,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,193,90,10\r
+    COMBOBOX        IDC_DA_MODE,15,245,71,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "",IDC_DA_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,96,241,96,20\r
+    RTEXT           "FPS adj.:",IDC_REFRESH2TEXT,9,211,61,8\r
+    CONTROL         "",IDC_FRAMERATE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,71,206,99,20\r
+    EDITTEXT        IDC_RATE2TEXT,181,210,46,12,ES_AUTOHSCROLL\r
+    COMBOBOX        IDC_RESOLUTIONDEPTH,144,30,62,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Filtered low resolution",IDC_LORES_SMOOTHED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,140,116,10\r
+    COMBOBOX        IDC_SCREENMODE_NATIVE,69,98,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_SCREENMODE_RTG,69,118,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "Native:",IDC_STATIC,9,98,56,15,SS_CENTERIMAGE\r
+    RTEXT           "RTG:",IDC_STATIC,8,115,57,15,SS_CENTERIMAGE\r
+    PUSHBUTTON      "Reset to defaults",IDC_DA_RESET,289,245,106,14\r
+    RTEXT           "Resolution:",IDC_STATIC,27,170,110,10,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_LORES,142,169,127,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Remove interlace artifacts",IDC_FLICKERFIXER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,154,142,10\r
+    RTEXT           "Windowed:",IDC_STATIC,2,51,51,15,SS_CENTERIMAGE\r
+    RTEXT           "Fullscreen:",IDC_STATIC,3,30,51,15,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_DISPLAY_BUFFERCNT,266,53,119,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Resolution autoswitch",IDC_AUTORESOLUTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,154,116,10\r
+    EDITTEXT        IDC_DA_TEXT,205,245,56,12,ES_AUTOHSCROLL | ES_READONLY\r
+    COMBOBOX        IDC_SCREENMODE_NATIVE2,142,98,127,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_SCREENMODE_RTG2,142,118,127,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_RATE2BOX,181,190,60,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "",IDC_RATE2ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,232,211,8,10\r
+END\r
+\r
+IDD_MEMORY DIALOGEX 0, 0, 396, 206\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 EXSTYLE WS_EX_CONTEXTHELP\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    GROUPBOX        "Memory Settings",IDC_STATIC,14,7,274,117\r
-    CONTROL         "Slider1",IDC_CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,22,50,20\r
-    EDITTEXT        IDC_CHIPRAM,105,25,34,12,ES_CENTER | ES_READONLY\r
-    CONTROL         "Slider1",IDC_SLOWMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,22,60,20\r
-    EDITTEXT        IDC_SLOWRAM,243,25,34,12,ES_CENTER | ES_READONLY\r
-    CONTROL         "Slider1",IDC_FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,47,50,20\r
-    EDITTEXT        IDC_FASTRAM,105,53,34,12,ES_CENTER | ES_READONLY\r
-    CONTROL         "Slider1",IDC_Z3FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,47,60,20\r
-    EDITTEXT        IDC_Z3FASTRAM,243,50,34,12,ES_CENTER | ES_READONLY\r
-    GROUPBOX        "A3000/A4000 Advanced Memory Settings",IDC_STATIC,14,131,274,65\r
-    RTEXT           "Motherboard Fast:",IDC_STATIC,48,147,129,10,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_MBMEM1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,181,143,59,20\r
-    EDITTEXT        IDC_MBRAM1,244,146,34,12,ES_CENTER | ES_READONLY\r
-    RTEXT           "Processor Slot Fast:",IDC_STATIC,48,170,129,10,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_MBMEM2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,181,166,59,20\r
-    EDITTEXT        IDC_MBRAM2,244,169,34,12,ES_CENTER | ES_READONLY\r
-    RTEXT           "Fast:",IDC_STATIC,19,49,32,15,SS_CENTERIMAGE\r
-    RTEXT           "Chip:",IDC_STATIC,19,25,32,15,SS_CENTERIMAGE\r
-    RTEXT           "Slow:",IDC_STATIC,144,25,32,15,SS_CENTERIMAGE\r
-    RTEXT           "Z3 Fast:",IDC_STATIC,144,49,32,15,SS_CENTERIMAGE\r
-    RTEXT           "32-bit Chip:",IDC_STATIC,136,74,41,15,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_Z3CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,71,60,20\r
-    EDITTEXT        IDC_Z3CHIPRAM,243,76,34,12,ES_CENTER | ES_READONLY\r
-    CONTROL         "Autoconfig Fast RAM",IDC_FASTMEMAUTOCONFIG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,76,101,10\r
-    EDITTEXT        IDC_MAX32RAM,29,98,249,12,ES_CENTER | ES_READONLY\r
-END\r
-\r
-IDD_CPU DIALOGEX 0, 0, 300, 241\r
+    GROUPBOX        "Memory Settings",IDC_STATIC,1,7,393,117\r
+    CONTROL         "Slider1",IDC_CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,68,22,60,20\r
+    EDITTEXT        IDC_CHIPRAM,135,25,40,12,ES_CENTER | ES_READONLY\r
+    CONTROL         "Slider1",IDC_SLOWMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,248,22,60,20\r
+    EDITTEXT        IDC_SLOWRAM,311,25,40,12,ES_CENTER | ES_READONLY\r
+    CONTROL         "Slider1",IDC_FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,68,47,60,20\r
+    EDITTEXT        IDC_FASTRAM,135,53,40,12,ES_CENTER | ES_READONLY\r
+    CONTROL         "Slider1",IDC_Z3FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,248,47,60,20\r
+    EDITTEXT        IDC_Z3FASTRAM,311,50,40,12,ES_CENTER | ES_READONLY\r
+    GROUPBOX        "A3000/A4000 Advanced Memory Settings",IDC_STATIC,1,131,393,65\r
+    RTEXT           "Motherboard Fast:",IDC_STATIC,44,149,129,10,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_MBMEM1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,177,145,60,20\r
+    EDITTEXT        IDC_MBRAM1,240,148,40,12,ES_CENTER | ES_READONLY\r
+    RTEXT           "Processor Slot Fast:",IDC_STATIC,44,172,129,10,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_MBMEM2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,177,168,60,20\r
+    EDITTEXT        IDC_MBRAM2,240,171,40,12,ES_CENTER | ES_READONLY\r
+    RTEXT           "Fast:",IDC_STATIC,8,49,60,15,SS_CENTERIMAGE\r
+    RTEXT           "Chip:",IDC_STATIC,7,25,60,15,SS_CENTERIMAGE\r
+    RTEXT           "Slow:",IDC_STATIC,179,25,66,15,SS_CENTERIMAGE\r
+    RTEXT           "Z3 Fast:",IDC_STATIC,179,49,66,15,SS_CENTERIMAGE\r
+    RTEXT           "32-bit Chip:",IDC_STATIC,180,74,66,15,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_Z3CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,248,71,60,20\r
+    EDITTEXT        IDC_Z3CHIPRAM,311,76,40,12,ES_CENTER | ES_READONLY\r
+    CONTROL         "Autoconfig Fast RAM",IDC_FASTMEMAUTOCONFIG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,51,76,124,10\r
+    EDITTEXT        IDC_MAX32RAM,14,99,366,12,ES_CENTER | ES_READONLY\r
+END\r
+\r
+IDD_CPU DIALOGEX 0, 0, 396, 288\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    GROUPBOX        "CPU",IDC_STATIC,5,1,81,144,BS_LEFT\r
-    CONTROL         "68000",IDC_CPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,15,63,10\r
-    CONTROL         "68010",IDC_CPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,28,65,10\r
-    CONTROL         "68020",IDC_CPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,41,63,10\r
-    CONTROL         "68030",IDC_CPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,54,64,10\r
-    CONTROL         "68040",IDC_CPU4,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,67,66,10\r
-    CONTROL         "68060",IDC_CPU5,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,80,66,10\r
-    CONTROL         "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,10,94,73,8\r
+    GROUPBOX        "CPU",IDC_STATIC,1,1,99,160,BS_LEFT\r
+    CONTROL         "68000",IDC_CPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,15,63,10\r
+    CONTROL         "68010",IDC_CPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,29,63,10\r
+    CONTROL         "68020",IDC_CPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,42,63,10\r
+    CONTROL         "68030",IDC_CPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,56,63,10\r
+    CONTROL         "68040",IDC_CPU4,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,70,63,10\r
+    CONTROL         "68060",IDC_CPU5,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,84,63,10\r
+    CONTROL         "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,101,87,11\r
     CONTROL         "More compatible [] Emulate 68000's prefetch registers. More compatible but slower.",IDC_COMPATIBLE,\r
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,10,107,73,8\r
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,115,87,11\r
     CONTROL         "JIT [] Enable just-in-time CPU emulator. Significantly increases the speed of the CPU emulation. Requires 68020 or higher CPU.",IDC_JITENABLE,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,119,73,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,128,87,11\r
     CONTROL         "68040 MMU [] 68040 MMU emulation. Not compatible with JIT.",IDC_MMUENABLE,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,132,73,10\r
-    GROUPBOX        "FPU",IDC_STATIC,5,147,81,90,BS_LEFT\r
-    CONTROL         "None",IDC_FPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,14,161,63,10\r
-    CONTROL         "68881",IDC_FPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,175,63,10\r
-    CONTROL         "68882",IDC_FPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,188,63,10\r
-    CONTROL         "CPU internal",IDC_FPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,202,63,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,142,87,11\r
+    GROUPBOX        "FPU",IDC_STATIC,1,167,99,91,BS_LEFT\r
+    CONTROL         "None",IDC_FPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,182,87,10\r
+    CONTROL         "68881",IDC_FPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,196,87,10\r
+    CONTROL         "68882",IDC_FPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,209,87,10\r
+    CONTROL         "CPU internal",IDC_FPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,223,87,10\r
     CONTROL         "More compatible [] More compatible but slower FPU emulation.",IDC_COMPATIBLE_FPU,\r
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,9,221,73,10\r
-    GROUPBOX        "CPU Emulation Speed",IDC_STATIC,90,3,205,92\r
-    CONTROL         "Fastest possible",IDC_CS_HOST,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,95,18,195,10\r
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,242,87,10\r
+    GROUPBOX        "CPU Emulation Speed",IDC_STATIC,110,3,284,96\r
+    CONTROL         "Fastest possible",IDC_CS_HOST,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,115,18,195,10\r
     CONTROL         "Approximate A500/A1200 or cycle-exact",IDC_CS_68000,\r
-                    "Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,95,32,195,10\r
-    CONTROL         "Slider1",IDC_SPEED,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,96,51,192,20\r
-    CONTROL         "",IDC_CPUIDLE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,219,71,69,20\r
-    CTEXT           "CPU Idle",IDC_STATIC,179,76,35,9,SS_CENTERIMAGE\r
-    GROUPBOX        "Cycle-exact CPU Emulation Speed",IDC_STATIC,90,99,205,46\r
-    RTEXT           "CPU Frequency",IDC_STATIC,105,119,51,10,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_CPU_FREQUENCY,165,118,46,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    EDITTEXT        IDC_CPU_FREQUENCY2,218,117,70,15\r
-    GROUPBOX        "Advanced JIT Settings",IDC_STATIC,90,147,205,91\r
-    RTEXT           "Cache size:",IDC_STATIC,95,167,42,10,SS_CENTERIMAGE\r
-    CONTROL         "Slider1",IDC_CACHE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,140,161,115,20\r
-    EDITTEXT        IDC_CPUTEXT,144,75,30,12,ES_CENTER | ES_READONLY\r
-    CONTROL         "Hard flush",IDC_HARDFLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,194,63,10\r
-    CONTROL         "No flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,168,194,62,10\r
-    CONTROL         "Direct",IDC_TRUST0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,235,194,52,10\r
-    CONTROL         "Constant jump",IDC_CONSTJUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,208,63,10\r
-    CONTROL         "FPU support",IDC_JITFPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,222,62,10\r
-    CONTROL         "Indirect",IDC_TRUST1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,235,208,52,10\r
-    EDITTEXT        IDC_CACHETEXT,259,166,30,12,ES_CENTER | ES_READONLY\r
-    CTEXT           "CPU Speed",IDC_STATIC,93,76,43,9,SS_CENTERIMAGE\r
-END\r
-\r
-IDD_FLOPPY DIALOGEX 0, 0, 300, 240\r
+                    "Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,115,32,195,10\r
+    CONTROL         "Slider1",IDC_SPEED,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,116,51,192,20\r
+    CONTROL         "",IDC_CPUIDLE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,282,71,69,21\r
+    RTEXT           "CPU Idle",IDC_STATIC,213,76,62,9\r
+    GROUPBOX        "Cycle-exact CPU Emulation Speed",IDC_STATIC,110,105,284,55\r
+    RTEXT           "CPU Frequency",IDC_STATIC,113,129,67,10,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_CPU_FREQUENCY,189,128,46,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    EDITTEXT        IDC_CPU_FREQUENCY2,242,127,70,15\r
+    GROUPBOX        "Advanced JIT Settings",IDC_STATIC,110,167,284,91\r
+    RTEXT           "Cache size:",IDC_STATIC,117,187,66,10,SS_CENTERIMAGE\r
+    CONTROL         "Slider1",IDC_CACHE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,186,181,115,20\r
+    EDITTEXT        IDC_CPUTEXT,178,75,30,12,ES_CENTER | ES_READONLY\r
+    CONTROL         "Hard flush",IDC_HARDFLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,214,84,11\r
+    CONTROL         "No flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,217,214,68,11\r
+    CONTROL         "Direct",IDC_TRUST0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,289,214,72,10\r
+    CONTROL         "Constant jump",IDC_CONSTJUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,228,84,11\r
+    CONTROL         "FPU support",IDC_JITFPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,242,84,11\r
+    CONTROL         "Indirect",IDC_TRUST1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,289,228,72,10\r
+    EDITTEXT        IDC_CACHETEXT,305,186,30,12,ES_CENTER | ES_READONLY\r
+    RTEXT           "CPU Speed",IDC_STATIC,115,76,55,9,SS_CENTERIMAGE\r
+END\r
+\r
+IDD_FLOPPY DIALOGEX 0, 0, 396, 261\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    COMBOBOX        IDC_DF0TEXT,2,22,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_DF0TYPE,115,6,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "Write-protected",IDC_STATIC,174,8,59,10,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_DF0WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,4,10,15\r
-    PUSHBUTTON      "Eject",IDC_EJECT0,253,4,30,15\r
-    PUSHBUTTON      "...",IDC_DF0,287,4,10,15\r
-    COMBOBOX        IDC_DF1TEXT,2,58,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_DF1TYPE,115,42,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "Write-protected",IDC_STATIC,174,43,59,10,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_DF1WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,40,10,15\r
-    PUSHBUTTON      "Eject",IDC_EJECT1,253,40,30,15\r
-    PUSHBUTTON      "...",IDC_DF1,287,40,10,15\r
-    COMBOBOX        IDC_DF2TEXT,2,93,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_DF2TYPE,115,77,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "Write-protected",IDC_STATIC,174,77,59,10,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_DF2WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,75,9,15\r
-    PUSHBUTTON      "Eject",IDC_EJECT2,253,75,30,15\r
-    PUSHBUTTON      "...",IDC_DF2,287,75,10,15\r
-    COMBOBOX        IDC_DF3TEXT,2,128,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_DF3TYPE,115,112,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "Write-protected",IDC_STATIC,174,113,59,10,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_DF3WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,111,9,15\r
-    PUSHBUTTON      "Eject",IDC_EJECT3,253,110,30,15\r
-    PUSHBUTTON      "...",IDC_DF3,287,109,10,15\r
-    GROUPBOX        "New Floppy Disk Image",IDC_SETTINGSTEXT,5,183,289,49\r
-    COMBOBOX        IDC_FLOPPYTYPE,12,197,64,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Create Standard Disk [] Creates a standard 880 or 1760 KB ADF disk image.",IDC_CREATE,85,196,97,15\r
-    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,187,196,101,15\r
-    GROUPBOX        "Floppy Drive Emulation Speed",IDC_SETTINGSTEXT2,5,144,289,35\r
-    CONTROL         "",IDC_FLOPPYSPD,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,32,154,116,20\r
-    EDITTEXT        IDC_FLOPPYSPDTEXT,183,157,101,12,ES_CENTER | ES_READONLY\r
-    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE0,43,5,70,15,NOT WS_VISIBLE\r
-    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE1,43,40,70,15,NOT WS_VISIBLE\r
-    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE2,43,75,70,15,NOT WS_VISIBLE\r
-    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE3,43,110,70,15,NOT WS_VISIBLE\r
-    EDITTEXT        IDC_CREATE_NAME,85,215,97,13,ES_AUTOHSCROLL\r
-    RTEXT           "Disk label:",IDC_STATIC,15,216,58,10,SS_CENTERIMAGE\r
-    CONTROL         "DF0:",IDC_DF0ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,6,34,15\r
-    CONTROL         "DF1:",IDC_DF1ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,41,34,15\r
-    CONTROL         "DF2:",IDC_DF2ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,76,34,15\r
-    CONTROL         "DF3:",IDC_DF3ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,111,34,15\r
-    CONTROL         "FFS",IDC_FLOPPY_FFS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,255,214,34,15\r
-    CONTROL         "Bootblock",IDC_FLOPPY_BOOTABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,189,214,59,15\r
-END\r
-\r
-IDD_HARDDISK DIALOGEX 0, 0, 300, 243\r
+    COMBOBOX        IDC_DF0TEXT,6,31,384,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_DF0TYPE,180,14,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "Write-protected",IDC_STATIC,249,17,74,10,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_DF0WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,328,13,10,15\r
+    PUSHBUTTON      "Eject",IDC_EJECT0,345,12,30,15\r
+    PUSHBUTTON      "...",IDC_DF0,379,12,10,15\r
+    COMBOBOX        IDC_DF1TEXT,6,68,383,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_DF1TYPE,180,51,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "Write-protected",IDC_STATIC,249,53,74,10,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_DF1WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,328,50,10,15\r
+    PUSHBUTTON      "Eject",IDC_EJECT1,345,49,30,15\r
+    PUSHBUTTON      "...",IDC_DF1,379,49,10,15\r
+    COMBOBOX        IDC_DF2TEXT,6,104,384,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_DF2TYPE,180,87,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "Write-protected",IDC_STATIC,250,88,73,10,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_DF2WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,328,86,9,15\r
+    PUSHBUTTON      "Eject",IDC_EJECT2,345,85,30,15\r
+    PUSHBUTTON      "...",IDC_DF2,379,85,10,15\r
+    COMBOBOX        IDC_DF3TEXT,6,140,383,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_DF3TYPE,180,123,65,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "Write-protected",IDC_STATIC,250,125,73,10,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_DF3WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,328,123,9,15\r
+    PUSHBUTTON      "Eject",IDC_EJECT3,345,121,30,15\r
+    PUSHBUTTON      "...",IDC_DF3,379,121,10,15\r
+    GROUPBOX        "New Floppy Disk Image",IDC_SETTINGSTEXT,1,211,393,49\r
+    COMBOBOX        IDC_FLOPPYTYPE,58,225,64,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Create Standard Disk [] Creates a standard 880 or 1760 KB ADF disk image.",IDC_CREATE,131,224,97,15\r
+    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,235,224,101,15\r
+    GROUPBOX        "Floppy Drive Emulation Speed",IDC_SETTINGSTEXT2,1,170,393,35\r
+    CONTROL         "",IDC_FLOPPYSPD,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,71,180,116,20\r
+    EDITTEXT        IDC_FLOPPYSPDTEXT,222,183,101,12,ES_CENTER | ES_READONLY\r
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE0,97,13,78,15,NOT WS_VISIBLE\r
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE1,97,49,78,15,NOT WS_VISIBLE\r
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE2,97,85,78,15,NOT WS_VISIBLE\r
+    PUSHBUTTON      "Delete save image",IDC_SAVEIMAGE3,97,121,78,15,NOT WS_VISIBLE\r
+    EDITTEXT        IDC_CREATE_NAME,130,243,97,13,ES_AUTOHSCROLL\r
+    RTEXT           "Disk label:",IDC_STATIC,60,244,58,10,SS_CENTERIMAGE\r
+    CONTROL         "DF0:",IDC_DF0ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,14,34,15\r
+    CONTROL         "DF1:",IDC_DF1ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,51,34,15\r
+    CONTROL         "DF2:",IDC_DF2ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,87,34,15\r
+    CONTROL         "DF3:",IDC_DF3ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,123,34,15\r
+    CONTROL         "FFS",IDC_FLOPPY_FFS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,300,242,34,15\r
+    CONTROL         "Bootblock",IDC_FLOPPY_BOOTABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,234,242,59,15\r
+    GROUPBOX        "Floppy Drives",IDC_SETTINGSTEXT3,1,0,393,163\r
+END\r
+\r
+IDD_HARDDISK DIALOGEX 0, 0, 396, 318\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 EXSTYLE WS_EX_CONTEXTHELP\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    CONTROL         "List1",IDC_VOLUMELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,5,0,290,116\r
-    PUSHBUTTON      "Add &Directory or Archive...",IDC_NEW_FS,10,121,103,15\r
-    PUSHBUTTON      "Add &Hardfile...",IDC_NEW_HF,130,121,74,15\r
-    PUSHBUTTON      "Add Ha&rd Drive...",IDC_NEW_HD,220,121,75,15\r
-    PUSHBUTTON      "Remove",IDC_REMOVE,235,141,60,15\r
-    PUSHBUTTON      "&Properties",IDC_EDIT,235,158,60,15\r
-    CONTROL         "Add PC drives at startup",IDC_MAPDRIVES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,140,100,10\r
-    CONTROL         "Disable UAEFSDB-support",IDC_NOUAEFSDB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,140,119,10\r
-    CONTROL         "Don't use Windows Recycle Bin",IDC_NORECYCLEBIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,152,121,10\r
-    CONTROL         "Include network drives..",IDC_MAPDRIVES_NET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,164,101,10\r
-    CONTROL         "CDFS automount CD/DVD drives",IDC_MAPDRIVES_CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,176,136,10\r
+    CONTROL         "List1",IDC_VOLUMELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,1,2,393,153\r
+    PUSHBUTTON      "Add &Directory or Archive...",IDC_NEW_FS,1,157,128,15\r
+    PUSHBUTTON      "Add &Hardfile...",IDC_NEW_HF,135,157,126,15\r
+    PUSHBUTTON      "Add Ha&rd Drive...",IDC_NEW_HD,267,157,127,15\r
+    PUSHBUTTON      "Remove",IDC_REMOVE,334,176,60,15\r
+    PUSHBUTTON      "&Properties",IDC_EDIT,267,176,60,15\r
+    CONTROL         "Add PC drives at startup",IDC_MAPDRIVES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,206,201,11\r
+    CONTROL         "Disable UAEFSDB-support",IDC_NOUAEFSDB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,222,206,167,11\r
+    CONTROL         "Don't use Windows Recycle Bin",IDC_NORECYCLEBIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,222,219,167,11\r
+    CONTROL         "Include network drives..",IDC_MAPDRIVES_NET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,233,201,11\r
+    CONTROL         "CDFS automount CD/DVD drives",IDC_MAPDRIVES_CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,247,201,11\r
     CONTROL         "Automount removable drives [] Windows side insert or removal will immediately mount/remove it on Amiga side.",IDC_MAPDRIVES_AUTO,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,164,115,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,222,233,167,11\r
     CONTROL         "Include removable drives..",IDC_MAPDRIVES_REMOVABLE,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,152,100,10\r
-    COMBOBOX        IDC_CD_TEXT,5,224,289,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Eject",IDC_CD_EJECT,265,204,30,15\r
-    PUSHBUTTON      "Select image file",IDC_CD_SELECT,90,204,98,15\r
-    COMBOBOX        IDC_CD_TYPE,194,205,63,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "CD drive/image",IDC_STATIC,5,206,70,10,SS_CENTERIMAGE\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,219,201,11\r
+    COMBOBOX        IDC_CD_TEXT,5,301,386,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Eject",IDC_CD_EJECT,360,282,30,15\r
+    PUSHBUTTON      "Select image file",IDC_CD_SELECT,177,282,98,15\r
+    COMBOBOX        IDC_CD_TYPE,282,283,71,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    LTEXT           "CD drive/image",IDC_STATIC,5,284,70,10,SS_CENTERIMAGE\r
     CONTROL         "Limit size of directory drives to 1G [] Workaround for example old installers that calculate free space incorrectly if drive is large.",IDC_MAPDRIVES_LIMIT,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,188,136,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,222,247,167,11\r
+    GROUPBOX        "Options",IDC_STATIC,1,191,393,76\r
+    GROUPBOX        "Optical media options",IDC_STATIC,1,270,393,48\r
 END\r
 \r
-IDD_SOUND DIALOGEX 0, 0, 300, 237\r
+IDD_SOUND DIALOGEX 0, 0, 396, 288\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    COMBOBOX        IDC_SOUNDCARDLIST,5,3,291,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    GROUPBOX        "Sound Emulation",IDC_SOUNDSETTINGS,5,20,120,85\r
-    CONTROL         "Disabled",IDC_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,35,101,10\r
-    CONTROL         "Disabled, but emulated",IDC_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,53,102,10\r
-    CONTROL         "Enabled",IDC_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,71,102,10\r
-    GROUPBOX        "Volume",IDC_STATIC,132,20,164,31\r
-    CONTROL         "",IDC_SOUNDVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,137,29,105,20\r
-    EDITTEXT        IDC_SOUNDVOLUME2,247,32,40,12,ES_CENTER | ES_READONLY\r
-    GROUPBOX        "Sound Buffer Size",IDC_STATIC,132,59,164,31\r
-    CONTROL         "Slider1",IDC_SOUNDBUFFERRAM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,137,67,105,19\r
-    EDITTEXT        IDC_SOUNDBUFFERMEM,247,70,40,12,ES_CENTER | ES_READONLY\r
-    GROUPBOX        "Settings",IDC_SOUNDINTERPOLATION2,6,106,290,60\r
-    LTEXT           "Frequency:",IDC_SOUNDFREQTXT,11,140,53,8,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_SOUNDFREQ,13,149,51,75,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "Audio filter:",IDC_SOUNDFILTERTXT,209,140,77,8,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_SOUNDFILTER,209,149,80,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "Channel mode:",IDC_SOUNDSTEREOTXT,11,116,57,8,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_SOUNDSTEREO,13,125,122,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "Interpolation:",IDC_SOUNDINTERPOLATIONTXT,209,116,75,8,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_SOUNDINTERPOLATION,209,125,80,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "Stereo separation:",IDC_SOUNDSTEREOSEPTXT,141,116,63,8,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_SOUNDSTEREOSEP,142,125,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "Stereo delay:",IDC_SOUNDSTEREOMIXTXT,141,140,63,8,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_SOUNDSTEREOMIX,142,149,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    GROUPBOX        "Floppy Drive Sound Emulation",IDC_STATIC,6,172,220,60\r
-    CONTROL         "",IDC_SOUNDDRIVEVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,14,186,107,19\r
-    EDITTEXT        IDC_SOUNDDRIVEVOLUME2,124,188,40,12,ES_CENTER | ES_READONLY\r
-    COMBOBOX        IDC_SOUNDDRIVE,173,187,46,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_SOUNDDRIVESELECT,18,209,202,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_SOUNDSWAP,73,149,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    LTEXT           "Swap channels:",IDC_SOUNDSWAPTXT,74,140,61,8,SS_CENTERIMAGE\r
-    CONTROL         "Automatic switching",IDC_SOUND_AUTO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,89,103,10\r
-    CONTROL         "DirectSound",IDC_SOUND_DS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,181,55,10\r
-    CONTROL         "WASAPI",IDC_SOUND_WASAPI,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,193,53,10\r
-    CONTROL         "OpenAL",IDC_SOUND_OPENAL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,205,53,10\r
-    CONTROL         "PortAudio",IDC_SOUND_PORTAUDIO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,217,58,10\r
-    GROUPBOX        "Drivers",IDC_STATIC,230,172,66,60\r
-END\r
-\r
-IDD_LOADSAVE DIALOGEX 0, 0, 302, 241\r
+    COMBOBOX        IDC_SOUNDCARDLIST,1,1,393,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "Sound Emulation",IDC_SOUNDSETTINGS,1,19,178,86\r
+    CONTROL         "Disabled",IDC_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,35,152,10\r
+    CONTROL         "Disabled, but emulated",IDC_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,53,152,10\r
+    CONTROL         "Enabled",IDC_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,71,152,10\r
+    GROUPBOX        "Volume",IDC_STATIC,185,19,209,41\r
+    CONTROL         "",IDC_SOUNDVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,207,32,105,20\r
+    EDITTEXT        IDC_SOUNDVOLUME2,323,35,48,12,ES_CENTER | ES_READONLY\r
+    GROUPBOX        "Sound Buffer Size",IDC_STATIC,185,63,209,41\r
+    CONTROL         "Slider1",IDC_SOUNDBUFFERRAM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,207,79,105,20\r
+    EDITTEXT        IDC_SOUNDBUFFERMEM,323,82,48,12,ES_CENTER | ES_READONLY\r
+    GROUPBOX        "Settings",IDC_SOUNDINTERPOLATION2,1,107,393,72\r
+    LTEXT           "Frequency:",IDC_SOUNDFREQTXT,22,147,58,8,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_SOUNDFREQ,24,157,55,75,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP\r
+    LTEXT           "Audio filter:",IDC_SOUNDFILTERTXT,279,147,98,8,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_SOUNDFILTER,279,157,96,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    LTEXT           "Channel mode:",IDC_SOUNDSTEREOTXT,22,119,128,8,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_SOUNDSTEREO,24,129,135,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    LTEXT           "Interpolation:",IDC_SOUNDINTERPOLATIONTXT,279,119,98,8,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_SOUNDINTERPOLATION,279,129,96,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    LTEXT           "Stereo separation:",IDC_SOUNDSTEREOSEPTXT,180,119,84,8,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_SOUNDSTEREOSEP,181,129,74,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    LTEXT           "Stereo delay:",IDC_SOUNDSTEREOMIXTXT,180,147,83,8,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_SOUNDSTEREOMIX,181,157,74,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "Floppy Drive Sound Emulation",IDC_STATIC,1,185,278,73\r
+    CONTROL         "",IDC_SOUNDDRIVEVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,20,201,107,19\r
+    EDITTEXT        IDC_SOUNDDRIVEVOLUME2,144,203,48,12,ES_CENTER | ES_READONLY\r
+    COMBOBOX        IDC_SOUNDDRIVE,205,203,66,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_SOUNDDRIVESELECT,18,229,253,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_SOUNDSWAP,86,157,74,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    LTEXT           "Swap channels:",IDC_SOUNDSWAPTXT,85,147,81,8,SS_CENTERIMAGE\r
+    CONTROL         "Automatic switching",IDC_SOUND_AUTO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,13,89,152,10\r
+    CONTROL         "DirectSound",IDC_SOUND_DS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,199,98,10\r
+    CONTROL         "WASAPI",IDC_SOUND_WASAPI,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,212,98,10\r
+    CONTROL         "OpenAL",IDC_SOUND_OPENAL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,225,98,10\r
+    CONTROL         "PortAudio",IDC_SOUND_PORTAUDIO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,292,238,98,10\r
+    GROUPBOX        "Drivers",IDC_STATIC,285,185,109,73\r
+END\r
+\r
+IDD_LOADSAVE DIALOGEX 0, 0, 396, 318\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    CONTROL         "",IDC_CONFIGTREE,"SysTreeView32",TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | TVS_TRACKSELECT | WS_BORDER | WS_HSCROLL | WS_TABSTOP,6,3,289,153,WS_EX_CLIENTEDGE\r
-    RTEXT           "Name:",IDC_STATIC,4,161,40,15,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_EDITNAME,48,162,146,13,ES_AUTOHSCROLL\r
-    RTEXT           "Description:",IDC_STATIC,2,182,41,15,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_EDITDESCRIPTION,48,183,146,13,ES_AUTOHSCROLL\r
-    RTEXT           "Link:",IDC_STATIC,4,204,40,15,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_CONFIGLINK,48,205,93,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Ignore link",IDC_CONFIGNOLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,146,207,48,10\r
-    EDITTEXT        IDC_EDITPATH,199,161,49,15,ES_AUTOHSCROLL | WS_DISABLED\r
-    CONTROL         "Autoload",IDC_CONFIGAUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,253,163,42,10\r
-    GROUPBOX        "Additional Information",IDC_STATIC,199,179,96,38,BS_LEFT\r
-    PUSHBUTTON      "View",IDC_VIEWINFO,208,195,37,15\r
-    PUSHBUTTON      "Set",IDC_SETINFO,250,195,37,15\r
-    PUSHBUTTON      "Load",IDC_QUICKLOAD,5,225,44,15\r
-    PUSHBUTTON      "Save",IDC_QUICKSAVE,54,225,44,15\r
-    PUSHBUTTON      "Load From...",IDC_LOAD,121,225,49,15\r
-    PUSHBUTTON      "Delete",IDC_DELETE,251,225,44,15\r
-    PUSHBUTTON      "Save As...",IDC_SAVE,175,225,44,15\r
-END\r
-\r
-IDD_IOPORTS DIALOGEX 0, 0, 305, 245\r
+    CONTROL         "",IDC_CONFIGTREE,"SysTreeView32",TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | TVS_TRACKSELECT | WS_BORDER | WS_HSCROLL | WS_TABSTOP,1,5,393,227,WS_EX_CLIENTEDGE\r
+    RTEXT           "Name:",IDC_STATIC,4,241,47,8,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_EDITNAME,55,239,230,13,ES_AUTOHSCROLL\r
+    RTEXT           "Description:",IDC_STATIC,1,262,50,8,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_EDITDESCRIPTION,55,260,230,13,ES_AUTOHSCROLL\r
+    RTEXT           "Link:",IDC_STATIC,4,284,47,8,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_CONFIGLINK,55,282,168,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Ignore link",IDC_CONFIGNOLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,228,283,58,12\r
+    EDITTEXT        IDC_EDITPATH,289,238,49,15,ES_AUTOHSCROLL | WS_DISABLED\r
+    CONTROL         "Autoload",IDC_CONFIGAUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,343,240,51,12\r
+    GROUPBOX        "Additional Information",IDC_STATIC,289,256,105,38,BS_LEFT\r
+    PUSHBUTTON      "View",IDC_VIEWINFO,297,272,41,15\r
+    PUSHBUTTON      "Set",IDC_SETINFO,348,272,41,15\r
+    PUSHBUTTON      "Load",IDC_QUICKLOAD,1,301,60,15\r
+    PUSHBUTTON      "Save",IDC_QUICKSAVE,65,301,60,15\r
+    PUSHBUTTON      "Load From...",IDC_LOAD,162,301,60,15\r
+    PUSHBUTTON      "Delete",IDC_DELETE,335,301,60,15\r
+    PUSHBUTTON      "Save As...",IDC_SAVE,226,301,60,15\r
+END\r
+\r
+IDD_IOPORTS DIALOGEX 0, 0, 396, 275\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    GROUPBOX        "Parallel Port",IDC_STATIC,5,2,291,120\r
-    RTEXT           "Printer:",IDC_STATIC,12,15,25,15,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_PRINTERLIST,49,15,232,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Flush print job",IDC_FLUSHPRINTER,114,51,58,12\r
-    RTEXT           "Autoflush [] Time in seconds after a pending print job is automatically flushed.",IDC_PRINTERAUTOFLUSHTXT,176,49,76,15,SS_NOTIFY | SS_CENTERIMAGE\r
-    EDITTEXT        IDC_PRINTERAUTOFLUSH,255,50,25,12,ES_NUMBER\r
-    RTEXT           "Type:",IDC_STATIC,15,33,21,15,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_PS_PARAMS,114,67,167,12,ES_AUTOHSCROLL\r
-    GROUPBOX        "Serial Port",IDC_STATIC,4,124,292,48\r
-    COMBOBOX        IDC_SERIAL,49,136,232,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Shared",IDC_SER_SHARED,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,15,155,48,12\r
-    CONTROL         "RTS/CTS",IDC_SER_CTSRTS,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,75,155,55,12\r
-    RTEXT           "Out:",IDC_MIDI,10,186,19,15,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_MIDIOUTLIST,36,187,108,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "In:",IDC_MIDI2,150,185,22,15,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_MIDIINLIST,181,187,108,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "Parallel Port",IDC_STATIC,1,1,393,131\r
+    RTEXT           "Printer:",IDC_STATIC,6,17,57,15,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_PRINTERLIST,67,18,317,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Flush print job",IDC_FLUSHPRINTER,147,57,58,12\r
+    RTEXT           "Autoflush [] Time in seconds after a pending print job is automatically flushed.",IDC_PRINTERAUTOFLUSHTXT,209,55,137,15,SS_NOTIFY | SS_CENTERIMAGE\r
+    EDITTEXT        IDC_PRINTERAUTOFLUSH,351,57,33,12,ES_NUMBER\r
+    RTEXT           "Type:",IDC_STATIC,7,39,57,15,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_PS_PARAMS,148,74,236,12,ES_AUTOHSCROLL\r
+    GROUPBOX        "Serial Port",IDC_STATIC,1,137,393,51\r
+    COMBOBOX        IDC_SERIAL,67,150,317,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Shared",IDC_SER_SHARED,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,32,171,66,12\r
+    CONTROL         "RTS/CTS",IDC_SER_CTSRTS,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,106,171,66,12\r
+    RTEXT           "Out:",IDC_MIDI,22,202,32,15,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_MIDIOUTLIST,58,204,145,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "In:",IDC_MIDI2,204,201,31,15,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_MIDIINLIST,239,203,145,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
     CONTROL         "Direct []Use when emulating serial-link games on two PCs running WinUAE",IDC_SER_DIRECT,\r
-                    "Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,135,155,65,12\r
-    CONTROL         "uaeserial.device",IDC_UAESERIAL,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,200,155,78,12\r
-    COMBOBOX        IDC_PRINTERTYPELIST,49,33,232,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "Ghostscript extra parameters:",IDC_STATIC,10,66,102,15,SS_CENTERIMAGE\r
-    GROUPBOX        "MIDI",IDC_STATIC,5,175,291,34,BS_LEFT\r
-    GROUPBOX        "Protection Dongle",IDC_STATIC,5,212,292,31,BS_LEFT\r
-    COMBOBOX        IDC_DONGLELIST,50,223,232,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "Sampler:",IDC_STATIC,12,85,31,15,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_SAMPLERLIST,49,86,232,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Stereo sampler",IDC_SAMPLER_STEREO,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,205,104,75,12\r
-END\r
-\r
-IDD_GAMEPORTS DIALOGEX 0, 0, 300, 246\r
+                    "Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,181,171,83,12\r
+    CONTROL         "uaeserial.device",IDC_UAESERIAL,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,275,171,108,12\r
+    COMBOBOX        IDC_PRINTERTYPELIST,67,40,317,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "Ghostscript extra parameters:",IDC_STATIC,8,73,136,15,SS_CENTERIMAGE\r
+    GROUPBOX        "MIDI",IDC_STATIC,1,191,393,34,BS_LEFT\r
+    GROUPBOX        "Protection Dongle",IDC_STATIC,1,227,393,41,BS_LEFT\r
+    COMBOBOX        IDC_DONGLELIST,58,245,232,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "Sampler:",IDC_STATIC,6,94,57,15,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_SAMPLERLIST,67,95,317,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Stereo sampler",IDC_SAMPLER_STEREO,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,68,113,149,12\r
+END\r
+\r
+IDD_GAMEPORTS DIALOGEX 0, 0, 396, 288\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    GROUPBOX        "Mouse and Joystick settings",IDC_STATIC,0,3,299,181\r
-    RTEXT           "Port 1:",IDC_STATIC,11,16,25,15,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_PORT0_JOYS,45,17,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_PORT0_JOYSMODE,127,35,87,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Test [] Test Port 1 (mouse) configuration.",IDC_PORT0_TEST,218,35,34,14\r
-    PUSHBUTTON      "Remap [] Remap Port 1 configurarion.",IDC_PORT0_REMAP,256,35,31,14\r
-    RTEXT           "Port 2:",IDC_STATIC,11,52,25,15,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_PORT1_JOYS,45,53,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Swap ports [] Swap ports 1 and 2.",IDC_SWAP,118,93,53,14\r
-    COMBOBOX        IDC_PORT1_JOYSMODE,127,70,88,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Test [] Test Port 2 (joystick) configuration.",IDC_PORT1_TEST,218,70,34,14\r
-    PUSHBUTTON      "Remap [] Remap Port 2 configuration.",IDC_PORT1_REMAP,256,70,31,14\r
-    LTEXT           "Parallel port joystick adapter",IDC_STATIC,10,96,99,15,SS_CENTERIMAGE\r
-    LTEXT           "X-Arcade layout information []#1",IDC_STATIC,184,96,109,15,SS_NOTIFY | SS_CENTERIMAGE\r
-    COMBOBOX        IDC_PORT2_JOYS,45,114,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Test [] Test Parallel port joystick port 1 configuration.",IDC_PORT2_TEST,196,131,44,14\r
-    PUSHBUTTON      "Remap [] Remap Parallel port joystick port 1 configurarion.",IDC_PORT2_REMAP,245,131,41,14\r
-    COMBOBOX        IDC_PORT3_JOYS,45,149,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Test [] Test Parallel port joystick 2 configuration.",IDC_PORT3_TEST,196,165,44,14\r
-    PUSHBUTTON      "Remap [] Remap Parallel port joystick port 2 configurarion.",IDC_PORT3_REMAP,245,165,41,14\r
-    GROUPBOX        "Mouse extra settings",IDC_STATIC,0,186,299,60\r
-    RTEXT           "Mouse speed:",IDC_STATIC,17,200,56,10,SS_CENTERIMAGE\r
-    RTEXT           "Magic Mouse cursor mode:",IDC_STATIC,17,217,138,10,SS_CENTERIMAGE\r
-    CONTROL         "Install virtual mouse driver",IDC_PORT_TABLET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,233,120,10\r
-    EDITTEXT        IDC_INPUTSPEEDM,87,200,25,12,ES_NUMBER\r
-    CONTROL         "Magic Mouse",IDC_PORT_MOUSETRICK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,198,119,10\r
-    COMBOBOX        IDC_PORT_TABLET_CURSOR,167,214,119,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "Mouse and Joystick settings",IDC_STATIC,1,3,393,211\r
+    RTEXT           "Port 1:",IDC_STATIC,4,18,37,15,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_PORT0_JOYS,45,19,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_PORT0_JOYSMODE,128,38,106,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Test [] Test Port 1 (mouse) configuration.",IDC_PORT0_TEST,313,37,36,14\r
+    PUSHBUTTON      "Remap [] Remap Port 1 configurarion.",IDC_PORT0_REMAP,352,37,36,14\r
+    RTEXT           "Port 2:",IDC_STATIC,6,56,35,15,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_PORT1_JOYS,45,57,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Swap ports [] Swap ports 1 and 2.",IDC_SWAP,45,100,78,12\r
+    COMBOBOX        IDC_PORT1_JOYSMODE,128,74,106,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Test [] Test Port 2 (joystick) configuration.",IDC_PORT1_TEST,313,74,36,14\r
+    PUSHBUTTON      "Remap [] Remap Port 2 configuration.",IDC_PORT1_REMAP,352,74,36,14\r
+    LTEXT           "Emulated parallel port joystick adapter",IDC_STATIC,10,124,179,15,SS_CENTERIMAGE\r
+    RTEXT           "X-Arcade layout information []#1",IDC_STATIC,217,124,170,15,SS_NOTIFY | SS_CENTERIMAGE\r
+    COMBOBOX        IDC_PORT2_JOYS,45,142,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Test [] Test Parallel port joystick port 1 configuration.",IDC_PORT2_TEST,313,159,36,14\r
+    PUSHBUTTON      "Remap [] Remap Parallel port joystick port 1 configurarion.",IDC_PORT2_REMAP,352,159,36,14\r
+    COMBOBOX        IDC_PORT3_JOYS,45,178,342,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Test [] Test Parallel port joystick 2 configuration.",IDC_PORT3_TEST,313,194,36,14\r
+    PUSHBUTTON      "Remap [] Remap Parallel port joystick port 2 configurarion.",IDC_PORT3_REMAP,352,194,36,14\r
+    GROUPBOX        "Mouse extra settings",IDC_STATIC,1,219,393,68\r
+    RTEXT           "Mouse speed:",IDC_STATIC,19,237,82,10,SS_CENTERIMAGE\r
+    RTEXT           "Magic Mouse cursor mode:",IDC_STATIC,45,254,138,10,SS_CENTERIMAGE\r
+    CONTROL         "Install virtual mouse driver",IDC_PORT_TABLET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,48,270,136,11\r
+    EDITTEXT        IDC_INPUTSPEEDM,115,237,25,13,ES_NUMBER\r
+    CONTROL         "Magic Mouse",IDC_PORT_MOUSETRICK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,195,235,160,11\r
+    COMBOBOX        IDC_PORT_TABLET_CURSOR,195,251,119,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
     CONTROL         "Full tablet input emulation",IDC_PORT_TABLET_FULL,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,233,121,10\r
-    COMBOBOX        IDC_PORT0_AF,45,35,78,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_PORT1_AF,45,70,78,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,195,270,160,11\r
+    COMBOBOX        IDC_PORT0_AF,45,37,78,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_PORT1_AF,45,74,78,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
 END\r
 \r
 IDD_CONTRIBUTORS DIALOGEX 0, 0, 411, 242\r
@@ -463,463 +466,474 @@ BEGIN
     CONTROL         "",IDC_CONTRIBUTORS,"RICHEDIT",TCS_HOTTRACK | TCS_VERTICAL | TCS_RAGGEDRIGHT | TCS_OWNERDRAWFIXED | TCS_MULTISELECT | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,4,5,404,214\r
 END\r
 \r
-IDD_ABOUT DIALOGEX 0, 0, 300, 191\r
+IDD_ABOUT DIALOGEX 0, 0, 345, 258\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    CONTROL         "",IDC_RICHEDIT1,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,45,10,210,15\r
-    CONTROL         "",IDC_RICHEDIT2,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,30,260,13\r
-    PUSHBUTTON      "Contributors",IDC_CONTRIBUTORS,110,59,80,15\r
-    CONTROL         "",IDC_UAEHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,128,80,15\r
-    CONTROL         "",IDC_PICASSOHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | NOT WS_VISIBLE | WS_DISABLED,206,55,80,20\r
-    CONTROL         "",IDC_AMIGAHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,109,98,80,20\r
-    CONTROL         "",IDC_WINUAEHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,200,98,80,15\r
-    CONTROL         "",IDC_AIABHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | NOT WS_VISIBLE | WS_DISABLED,17,59,80,15\r
-    CONTROL         "",IDC_THEROOTS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,110,153,80,15\r
-    CONTROL         "",IDC_CAPS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,200,128,80,15\r
-    CONTROL         "",IDC_ABIME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,110,128,80,15\r
-    CONTROL         "",IDC_CLOANTOHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,98,80,20\r
-    CONTROL         "",IDC_AMIGASYS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,153,80,15\r
-    CONTROL         "",IDC_AMIKIT,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,200,153,80,15\r
-END\r
-\r
-IDD_MISC1 DIALOGEX 0, 0, 300, 237\r
+    CONTROL         "",IDC_RICHEDIT1,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,65,10,210,21\r
+    CONTROL         "",IDC_RICHEDIT2,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,43,41,260,20\r
+    PUSHBUTTON      "Contributors",IDC_CONTRIBUTORS,132,100,80,15\r
+    CONTROL         "",IDC_UAEHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,7,196,106,24\r
+    CONTROL         "",IDC_PICASSOHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | NOT WS_VISIBLE | WS_DISABLED,213,122,106,24\r
+    CONTROL         "",IDC_AMIGAHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,120,161,106,24\r
+    CONTROL         "",IDC_WINUAEHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,232,161,106,24\r
+    CONTROL         "",IDC_AIABHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | NOT WS_VISIBLE | WS_DISABLED,24,122,106,24\r
+    CONTROL         "",IDC_THEROOTS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,121,225,106,24\r
+    CONTROL         "",IDC_CAPS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,232,196,106,24\r
+    CONTROL         "",IDC_ABIME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,121,196,106,24\r
+    CONTROL         "",IDC_CLOANTOHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,7,161,106,24\r
+    CONTROL         "",IDC_AMIGASYS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,7,225,106,24\r
+    CONTROL         "",IDC_AMIKIT,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,232,225,106,24\r
+END\r
+\r
+IDD_MISC1 DIALOGEX 0, 0, 396, 318\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    GROUPBOX        "Miscellaneous Options",IDC_STATIC,169,2,128,131\r
-    GROUPBOX        "Keyboard LEDs",IDC_STATIC,3,207,294,29\r
-    COMBOBOX        IDC_KBLED1,10,218,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_KBLED2,78,218,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_KBLED3,145,218,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    GROUPBOX        "State Files",IDC_STATIC,3,168,293,38\r
-    PUSHBUTTON      "Load state...",IDC_DOLOADSTATE,178,183,55,14\r
-    PUSHBUTTON      "Save state...",IDC_DOSAVESTATE,237,183,55,14\r
-    CONTROL         "USB mode",IDC_KBLED_USB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,217,219,64,10\r
-    COMBOBOX        IDC_SCSIMODE,194,26,80,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_LANGUAGE,197,146,77,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    GROUPBOX        "Language",IDC_STATIC,169,133,127,33\r
-    COMBOBOX        IDC_DD_SURFACETYPE,194,114,79,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CTEXT           "DirectDraw:",IDC_STATIC,175,101,117,10,SS_CENTERIMAGE\r
-    CTEXT           "SCSI and CD/DVD access:",IDC_STATIC,175,12,117,10,SS_CENTERIMAGE\r
-    CTEXT           "Graphics API:",IDC_STATIC,175,72,117,10,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_DXMODE,194,85,79,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CTEXT           "Windowed style:",IDC_STATIC,175,42,117,10,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_WINDOWEDMODE,194,56,79,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "",IDC_MISCLIST,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,3,5,162,161\r
-    EDITTEXT        IDC_STATENAME,8,183,144,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP\r
-    CONTROL         "",IDC_STATECLEAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,185,9,10\r
-END\r
-\r
-IDD_HARDFILE DIALOGEX 0, 0, 299, 249\r
+    GROUPBOX        "Miscellaneous Options",IDC_STATIC,266,2,128,138\r
+    GROUPBOX        "Keyboard LEDs",IDC_STATIC,1,284,393,34\r
+    COMBOBOX        IDC_KBLED1,10,297,64,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_KBLED2,97,297,64,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_KBLED3,184,297,64,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "State Files",IDC_STATIC,1,244,393,38\r
+    PUSHBUTTON      "Load state...",IDC_DOLOADSTATE,257,259,65,14\r
+    PUSHBUTTON      "Save state...",IDC_DOSAVESTATE,325,259,65,14\r
+    CONTROL         "USB mode",IDC_KBLED_USB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,298,64,11\r
+    COMBOBOX        IDC_SCSIMODE,291,28,79,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_LANGUAGE,273,168,114,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "GUI",IDC_STATIC,266,144,128,93\r
+    COMBOBOX        IDC_DD_SURFACETYPE,291,119,79,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CTEXT           "DirectDraw:",IDC_STATIC,272,106,117,10,SS_CENTERIMAGE\r
+    CTEXT           "SCSI and CD/DVD access:",IDC_STATIC,272,14,117,10,SS_CENTERIMAGE\r
+    CTEXT           "Graphics API:",IDC_STATIC,272,76,117,10,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_DXMODE,291,89,79,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CTEXT           "Windowed style:",IDC_STATIC,272,45,117,10,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_WINDOWEDMODE,291,59,79,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "",IDC_MISCLIST,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,3,5,258,232\r
+    EDITTEXT        IDC_STATENAME,8,259,231,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP\r
+    CONTROL         "",IDC_STATECLEAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,244,261,9,10\r
+    CTEXT           "Language:",IDC_STATIC,271,154,117,10,SS_CENTERIMAGE\r
+    PUSHBUTTON      "GUI Font...",IDC_GUI_FONT,272,185,54,14\r
+    PUSHBUTTON      "Set default",IDC_GUI_DEFAULT,272,204,54,14\r
+    PUSHBUTTON      "List Font...",IDC_GUI_LISTFONT,333,185,54,14\r
+    COMBOBOX        IDC_GUI_SIZE,333,205,54,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Resizeable GUI",IDC_GUI_RESIZE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,273,222,114,11\r
+END\r
+\r
+IDD_HARDFILE DIALOGEX 0, 0, 396, 245\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
 EXSTYLE WS_EX_ACCEPTFILES\r
 CAPTION "Hardfile Settings"\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    GROUPBOX        "Settings",IDC_STATIC,10,5,280,146\r
+    GROUPBOX        "Settings",IDC_STATIC,2,5,392,146\r
     RTEXT           "Path:",IDC_HARDFILE_DIR_TEXT,25,18,22,10\r
-    EDITTEXT        IDC_PATH_NAME,52,15,213,15,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "...",IDC_SELECTOR,271,15,11,15\r
+    EDITTEXT        IDC_PATH_NAME,52,15,325,15,ES_AUTOHSCROLL\r
+    PUSHBUTTON      "...",IDC_SELECTOR,380,14,11,15\r
     RTEXT           "FileSys:",IDC_HARDFILE_FILESYS_TEXT,13,38,34,10\r
-    EDITTEXT        IDC_PATH_FILESYS,52,35,213,15,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "...",IDC_FILESYS_SELECTOR,271,35,11,15\r
+    EDITTEXT        IDC_PATH_FILESYS,52,35,325,15,ES_AUTOHSCROLL\r
+    PUSHBUTTON      "...",IDC_FILESYS_SELECTOR,380,34,11,15\r
     RTEXT           "Device:",IDC_HARDFILE_DEVICE_TEXT,16,58,31,10\r
-    EDITTEXT        IDC_HARDFILE_DEVICE,52,55,66,15,ES_AUTOHSCROLL\r
-    RTEXT           "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,20,94,48,8\r
-    EDITTEXT        IDC_HARDFILE_BOOTPRI,73,90,44,15\r
-    CONTROL         "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,53,74,64,10\r
-    PUSHBUTTON      "Enable RDB mode",IDC_HDF_RDB,174,55,92,14\r
-    RTEXT           "Surfaces:",IDC_SURFACES_TEXT,118,94,32,10\r
-    EDITTEXT        IDC_HEADS,155,90,40,15,ES_NUMBER\r
-    RTEXT           "Reserved:",IDC_RESERVED_TEXT,197,94,35,10\r
-    EDITTEXT        IDC_RESERVED,237,90,40,15,ES_NUMBER\r
-    RTEXT           "Sectors:",IDC_SECTORS_TEXT,120,113,30,10\r
-    EDITTEXT        IDC_SECTORS,155,111,40,15,ES_NUMBER\r
-    RTEXT           "Block size:",IDC_BLOCKSIZE_TEXT,197,113,35,10\r
-    EDITTEXT        IDC_BLOCKSIZE,237,111,40,15,ES_NUMBER\r
-    GROUPBOX        "New hard disk image file",IDC_STATIC,10,156,280,62\r
-    PUSHBUTTON      "Create",IDC_HF_CREATE,23,171,80,14\r
-    EDITTEXT        IDC_HF_SIZE,119,171,61,15,ES_NUMBER\r
-    PUSHBUTTON      "OK",IDOK,102,226,50,14\r
-    PUSHBUTTON      "Cancel",IDCANCEL,158,226,50,14\r
-    EDITTEXT        IDC_HF_DOSTYPE,119,194,61,15\r
-    COMBOBOX        IDC_HF_TYPE,23,195,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_HDF_CONTROLLER,73,112,44,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "DOS type",IDC_STATIC,187,196,32,10,SS_CENTERIMAGE\r
-    RTEXT           "MB",IDC_STATIC,185,174,17,10,SS_CENTERIMAGE\r
-    RTEXT           "HD Controller:",IDC_STATIC,16,113,52,10,SS_CENTERIMAGE\r
-    CONTROL         "Bootable",IDC_HDF_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,136,74,53,10\r
+    EDITTEXT        IDC_HARDFILE_DEVICE,52,55,121,15,ES_AUTOHSCROLL\r
+    RTEXT           "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,26,94,78,10\r
+    EDITTEXT        IDC_HARDFILE_BOOTPRI,109,90,44,15\r
+    CONTROL         "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,53,74,67,10\r
+    PUSHBUTTON      "Enable RDB mode",IDC_HDF_RDB,285,55,92,14\r
+    RTEXT           "Surfaces:",IDC_SURFACES_TEXT,160,94,48,10\r
+    EDITTEXT        IDC_HEADS,213,90,40,15,ES_NUMBER\r
+    RTEXT           "Reserved:",IDC_RESERVED_TEXT,262,94,50,10\r
+    EDITTEXT        IDC_RESERVED,317,90,40,15,ES_NUMBER\r
+    RTEXT           "Sectors:",IDC_SECTORS_TEXT,160,113,48,10\r
+    EDITTEXT        IDC_SECTORS,213,111,40,15,ES_NUMBER\r
+    RTEXT           "Block size:",IDC_BLOCKSIZE_TEXT,261,113,50,10\r
+    EDITTEXT        IDC_BLOCKSIZE,317,111,40,15,ES_NUMBER\r
+    GROUPBOX        "New hard disk image file",IDC_STATIC,2,155,392,62\r
+    PUSHBUTTON      "Create",IDC_HF_CREATE,58,171,80,14\r
+    EDITTEXT        IDC_HF_SIZE,154,171,61,15,ES_NUMBER\r
+    PUSHBUTTON      "OK",IDOK,147,226,50,14\r
+    PUSHBUTTON      "Cancel",IDCANCEL,203,226,50,14\r
+    EDITTEXT        IDC_HF_DOSTYPE,154,194,61,15\r
+    COMBOBOX        IDC_HF_TYPE,58,195,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_HDF_CONTROLLER,109,112,44,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    LTEXT           "DOS type",IDC_STATIC,222,196,51,10,SS_CENTERIMAGE\r
+    LTEXT           "MB",IDC_STATIC,220,174,53,10,SS_CENTERIMAGE\r
+    RTEXT           "HD Controller:",IDC_STATIC,26,113,78,10,SS_CENTERIMAGE\r
+    CONTROL         "Bootable",IDC_HDF_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,136,74,67,10\r
     CONTROL         "Do not mount",IDC_HDF_DONOTMOUNT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,217,74,67,10\r
-    EDITTEXT        IDC_HDFINFO,16,131,268,12,ES_CENTER | ES_READONLY\r
-    CONTROL         "Sparse file",IDC_HF_SPARSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,220,168,62,10\r
-    CONTROL         "Dynamic HDF",IDC_HF_DYNAMIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,220,180,62,10\r
+    EDITTEXT        IDC_HDFINFO,5,131,385,12,ES_CENTER | ES_READONLY\r
+    CONTROL         "Sparse file",IDC_HF_SPARSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,180,87,10\r
+    CONTROL         "Dynamic HDF",IDC_HF_DYNAMIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,192,87,10\r
 END\r
 \r
-IDD_FILESYS DIALOGEX 15, 25, 299, 111\r
+IDD_FILESYS DIALOGEX 15, 25, 396, 111\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
 CAPTION "Volume Settings"\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    LTEXT           "Device name:",-1,11,7,54,10\r
-    EDITTEXT        IDC_VOLUME_DEVICE,65,5,104,15,ES_AUTOHSCROLL\r
-    LTEXT           "Volume label:",-1,13,28,54,10\r
-    EDITTEXT        IDC_VOLUME_NAME,65,25,104,15,ES_AUTOHSCROLL\r
-    LTEXT           "Path:",-1,38,49,44,10\r
-    EDITTEXT        IDC_PATH_NAME,65,46,227,15,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "Select Directory",IDC_FS_SELECT_DIR,65,66,103,15\r
-    CONTROL         "Read/write",IDC_FS_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,174,7,55,10\r
-    RTEXT           "Boot priority:",IDC_VOLUME_BOOTPRI_TEXT,178,28,49,8\r
-    EDITTEXT        IDC_VOLUME_BOOTPRI,236,25,30,15\r
-    PUSHBUTTON      "OK",IDOK,65,91,48,15\r
-    PUSHBUTTON      "Cancel",IDCANCEL,120,91,48,15\r
-    PUSHBUTTON      "Select Archive or Plain File",IDC_FS_SELECT_FILE,190,66,103,15\r
-    PUSHBUTTON      "Eject",IDC_FS_SELECT_EJECT,230,91,62,15\r
-    CONTROL         "Bootable",IDC_FS_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,236,7,53,10\r
-END\r
-\r
-IDD_SETINFO DIALOGEX 0, 0, 229, 85\r
+    RTEXT           "Device name:",-1,4,7,65,10\r
+    EDITTEXT        IDC_VOLUME_DEVICE,73,5,104,15,ES_AUTOHSCROLL\r
+    RTEXT           "Volume label:",-1,6,28,63,10\r
+    EDITTEXT        IDC_VOLUME_NAME,73,25,104,15,ES_AUTOHSCROLL\r
+    RTEXT           "Path:",-1,5,49,64,10\r
+    EDITTEXT        IDC_PATH_NAME,73,45,315,17,ES_AUTOHSCROLL\r
+    PUSHBUTTON      "Select Directory",IDC_FS_SELECT_DIR,72,66,123,15\r
+    CONTROL         "Read/write",IDC_FS_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,259,7,67,10\r
+    RTEXT           "Boot priority:",IDC_VOLUME_BOOTPRI_TEXT,276,28,49,8\r
+    EDITTEXT        IDC_VOLUME_BOOTPRI,336,25,30,15\r
+    PUSHBUTTON      "OK",IDOK,72,90,62,15\r
+    PUSHBUTTON      "Cancel",IDCANCEL,138,90,62,15\r
+    PUSHBUTTON      "Select Archive or Plain File",IDC_FS_SELECT_FILE,197,66,123,15\r
+    PUSHBUTTON      "Eject",IDC_FS_SELECT_EJECT,258,90,62,15\r
+    CONTROL         "Bootable",IDC_FS_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,336,7,56,10\r
+END\r
+\r
+IDD_SETINFO DIALOGEX 0, 0, 396, 85\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
 CAPTION "Additional Information Settings"\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    RTEXT           "Path:",-1,5,20,24,15,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_PATH_NAME,35,20,169,15,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "...",IDC_SELECTOR,210,20,10,15\r
-    PUSHBUTTON      "OK",IDOK,120,65,48,15\r
-    PUSHBUTTON      "Cancel",IDCANCEL,175,65,48,15\r
+    RTEXT           "Path:",-1,5,20,36,15,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_PATH_NAME,46,20,324,15,ES_AUTOHSCROLL\r
+    PUSHBUTTON      "...",IDC_SELECTOR,376,20,10,15\r
+    PUSHBUTTON      "OK",IDOK,146,57,48,15\r
+    PUSHBUTTON      "Cancel",IDCANCEL,201,57,48,15\r
 END\r
 \r
-IDD_CHIPSET DIALOGEX 0, 65490, 300, 188\r
+IDD_CHIPSET DIALOGEX 0, 0, 302, 172\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    GROUPBOX        "Chipset",IDC_STATIC,14,11,145,111\r
+    GROUPBOX        "Chipset",IDC_STATIC,1,0,160,111\r
     CONTROL         "OCS [] Original chipset. A1000 and most A500s.",IDC_OCS,\r
-                    "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,37,26,51,10\r
+                    "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,9,15,73,10\r
     CONTROL         "ECS Agnus [] Enhanced chipset (ECS Agnus chip only). CDTV and later A500 and A2000 hardware revisions.",IDC_ECS_AGNUS,\r
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,42,55,10\r
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,9,31,73,10\r
     CONTROL         "ECS Denise [] Enhanced chipset (ECS Denise chip only). Normally paired with ECS Agnus.",IDC_ECS_DENISE,\r
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,42,55,10\r
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,86,31,72,10\r
     CONTROL         "Full ECS [] Full ECS chipset (ECS Agnus and ECS Denise chips). A500+, A600 and A3000.",IDC_ECS,\r
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,58,52,10\r
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,9,47,73,10\r
     CONTROL         "AGA [] Advanced Graphics Architecture chipset. A1200, A4000 and CD32.",IDC_AGA,\r
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,26,51,10\r
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,86,15,72,10\r
     CONTROL         "NTSC [] North American and Japanese display standard, 60Hz refresh rate. Other countries use PAL (50Hz. display refresh rate)",IDC_NTSC,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,58,50,10\r
-    GROUPBOX        "Options",IDC_STATIC,168,11,114,111\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,86,47,72,10\r
+    GROUPBOX        "Options",IDC_STATIC,167,0,133,111\r
     CONTROL         "Immediate Blitter [] Faster but less compatible blitter emulation.",IDC_BLITIMM,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,179,27,96,10\r
-    GROUPBOX        "Collision Level",IDC_STATIC,14,128,267,48\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,16,116,10\r
+    GROUPBOX        "Collision Level",IDC_STATIC,1,116,299,48\r
     CONTROL         "None [] Collision hardware emulation disabled.",IDC_COLLISION0,\r
-                    "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,37,144,59,10\r
+                    "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,9,132,101,10\r
     CONTROL         "Sprites only [] Emulate only sprite vs. sprite collisions.",IDC_COLLISION1,\r
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,159,62,10\r
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,9,147,101,10\r
     CONTROL         "Sprites and Sprites vs. Playfield [] Recommended collision emulation level.",IDC_COLLISION2,\r
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,144,161,10\r
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,115,132,181,10\r
     CONTROL         "Full [] 100% collision hardware emulation. Only very few games need this option. Slowest.",IDC_COLLISION3,\r
-                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,159,119,10\r
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,115,147,181,10\r
     CONTROL         "Genlock connected [] Allow boot sequence to detect genlock. Genlock is not emulated.",IDC_GENLOCK,\r
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,179,53,100,10\r
-    COMBOBOX        IDC_CS_EXT,100,101,49,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "Chipset Extra",IDC_STATIC,25,100,52,15,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_MONITOREMU,178,87,98,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "External display hardware:",IDC_STATIC,174,67,100,15,SS_CENTERIMAGE\r
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,180,42,116,10\r
+    COMBOBOX        IDC_CS_EXT,86,90,49,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "Chipset Extra",IDC_STATIC,11,89,71,15,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_MONITOREMU,184,78,98,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    CTEXT           "External display hardware:",IDC_STATIC,174,59,117,15,SS_CENTERIMAGE\r
     CONTROL         "Wait for Blitter [] Compatibility hack for programs that don't wait for the blitter correctly, causing graphics corruption if CPU is too fast.",IDC_BLITWAIT,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,179,40,96,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,29,116,10\r
     CONTROL         "Cycle-exact [] The most compatible A500/A1200 emulation mode. Very fast PC recommended.",IDC_CYCLEEXACT,\r
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,35,80,100,10\r
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,9,69,139,10\r
 END\r
 \r
-IDD_CHIPSET2 DIALOGEX 0, 65490, 300, 247\r
+IDD_CHIPSET2 DIALOGEX 0, 0, 396, 288\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    GROUPBOX        "Battery Backed Up Real Time Clock",IDC_STATIC,11,24,275,29\r
-    CONTROL         "None",IDC_CS_RTC1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,19,36,55,10\r
-    CONTROL         "MSM6242B",IDC_CS_RTC2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,90,36,52,10\r
-    CONTROL         "RF5C01A",IDC_CS_RTC3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,159,36,46,10\r
-    EDITTEXT        IDC_CS_RTCADJUST,215,34,64,13,ES_AUTOHSCROLL\r
-    GROUPBOX        "CIA-A TOD Clock Source",IDC_STATIC,11,56,275,29\r
-    CONTROL         "Vertical Sync",IDC_CS_CIAA_TOD1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,19,68,63,10\r
-    CONTROL         "Power Supply 50Hz",IDC_CS_CIAA_TOD2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,90,68,85,10\r
-    CONTROL         "Power Supply 60Hz",IDC_CS_CIAA_TOD3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,186,68,88,10\r
-    CONTROL         "ROM Mirror (A8)",IDC_CS_KSMIRROR_A8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,146,86,10\r
-    CONTROL         "A1000 Boot RAM/ROM",IDC_CS_A1000RAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,95,88,10\r
-    CONTROL         "CD32 CD",IDC_CS_CD32CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,108,76,10\r
-    CONTROL         "CD32 C2P",IDC_CS_CD32C2P,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,108,87,10\r
-    CONTROL         "CD32 NVRAM",IDC_CS_CD32NVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,108,97,10\r
-    CONTROL         "CDTV CD",IDC_CS_CDTVCD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,121,76,10\r
-    CONTROL         "CDTV SRAM",IDC_CS_CDTVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,120,87,10\r
-    CONTROL         "CDTV SRAM Expansion",IDC_CS_CDTVRAMEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,120,102,10\r
-    CONTROL         "A600/A1200 IDE",IDC_CS_IDE1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,133,77,10\r
-    CONTROL         "A4000/A4000T IDE",IDC_CS_IDE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,133,88,10\r
-    CONTROL         "Ramsey revision:",IDC_CS_RAMSEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,216,71,10\r
-    EDITTEXT        IDC_CS_RAMSEYREV,91,214,45,13,ES_AUTOHSCROLL\r
-    CONTROL         "Fat Gary revision:",IDC_CS_FATGARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,229,71,10\r
-    EDITTEXT        IDC_CS_FATGARYREV,91,228,45,13,ES_AUTOHSCROLL\r
-    CONTROL         "A3000 SCSI",IDC_CS_DMAC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,188,76,10\r
+    GROUPBOX        "Battery Backed Up Real Time Clock",IDC_STATIC,1,24,393,29\r
+    CONTROL         "None",IDC_CS_RTC1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,40,36,81,10\r
+    CONTROL         "MSM6242B",IDC_CS_RTC2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,129,36,77,10\r
+    CONTROL         "RF5C01A",IDC_CS_RTC3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,210,36,67,10\r
+    EDITTEXT        IDC_CS_RTCADJUST,279,34,64,13,ES_AUTOHSCROLL\r
+    GROUPBOX        "CIA-A TOD Clock Source",IDC_STATIC,1,56,393,29\r
+    CONTROL         "Vertical Sync",IDC_CS_CIAA_TOD1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,41,68,86,10\r
+    CONTROL         "Power Supply 50Hz",IDC_CS_CIAA_TOD2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,133,68,109,10\r
+    CONTROL         "Power Supply 60Hz",IDC_CS_CIAA_TOD3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,249,68,116,10\r
+    CONTROL         "ROM Mirror (A8)",IDC_CS_KSMIRROR_A8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,157,121,11\r
+    CONTROL         "A1000 Boot RAM/ROM",IDC_CS_A1000RAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,102,121,11\r
+    CONTROL         "CD32 CD",IDC_CS_CD32CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,116,104,11\r
+    CONTROL         "CD32 C2P",IDC_CS_CD32C2P,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,116,121,11\r
+    CONTROL         "CD32 NVRAM",IDC_CS_CD32NVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,116,125,11\r
+    CONTROL         "CDTV CD",IDC_CS_CDTVCD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,130,105,11\r
+    CONTROL         "CDTV SRAM",IDC_CS_CDTVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,129,121,11\r
+    CONTROL         "CDTV SRAM Expansion",IDC_CS_CDTVRAMEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,129,125,11\r
+    CONTROL         "A600/A1200 IDE",IDC_CS_IDE1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,143,104,11\r
+    CONTROL         "A4000/A4000T IDE",IDC_CS_IDE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,143,121,11\r
+    CONTROL         "Ramsey revision:",IDC_CS_RAMSEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,248,97,11\r
+    EDITTEXT        IDC_CS_RAMSEYREV,136,247,45,13,ES_AUTOHSCROLL\r
+    CONTROL         "Fat Gary revision:",IDC_CS_FATGARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,34,262,97,11\r
+    EDITTEXT        IDC_CS_FATGARYREV,136,262,45,13,ES_AUTOHSCROLL\r
+    CONTROL         "A3000 SCSI",IDC_CS_DMAC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,202,121,11\r
     CONTROL         "Compatible Settings",IDC_CS_COMPATIBLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,8,234,10\r
-    CONTROL         "DF0: ID Hardware",IDC_CS_DF0IDHW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,95,101,10\r
-    CONTROL         "Agnus/Alice revision:",IDC_CS_AGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,216,81,10\r
-    EDITTEXT        IDC_CS_AGNUSREV,232,214,45,13,ES_AUTOHSCROLL\r
-    CONTROL         "Denise/Lisa revision:",IDC_CS_DENISE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,229,81,10\r
-    EDITTEXT        IDC_CS_DENISEREV,232,228,45,13,ES_AUTOHSCROLL\r
-    CONTROL         "A590/A2091 SCSI",IDC_CS_A2091,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,188,76,10\r
-    CONTROL         "A4000T SCSI",IDC_CS_DMAC2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,188,100,10\r
-    LTEXT           "A4091/A4000T SCSI not yet implemented.",IDC_STATIC,17,174,159,8,SS_CENTERIMAGE\r
-    CONTROL         "PCMCIA",IDC_CS_PCMCIA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,133,105,10\r
-    CONTROL         "A4091 SCSI",IDC_CS_A4091,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,200,76,10\r
-    CONTROL         "CDTV SCSI",IDC_CS_CDTVSCSI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,200,76,10\r
-    CONTROL         "Include host SCSI devices",IDC_CS_SCSIMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,200,104,10\r
-    CONTROL         "C00000 is Fast RAM",IDC_CS_SLOWISFAST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,146,105,10\r
-    CONTROL         "ROM Mirror (E0)",IDC_CS_KSMIRROR_E0,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,146,76,10\r
-    CONTROL         "CIA ROM Overlay",IDC_CS_CIAOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,95,75,10\r
-    CONTROL         "KB Reset Warning",IDC_CS_RESETWARNING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,159,77,10\r
-    CONTROL         "No-EHB Denise",IDC_CS_NOEHB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,159,87,10\r
-    CONTROL         "A1000 Agnus (8361/8367)",IDC_CS_DIPAGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,159,107,10\r
-END\r
-\r
-IDD_AVIOUTPUT DIALOGEX 0, 0, 288, 236\r
+    CONTROL         "DF0: ID Hardware",IDC_CS_DF0IDHW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,102,125,11\r
+    CONTROL         "Agnus/Alice revision:",IDC_CS_AGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,248,107,11\r
+    EDITTEXT        IDC_CS_AGNUSREV,311,247,45,13,ES_AUTOHSCROLL\r
+    CONTROL         "Denise/Lisa revision:",IDC_CS_DENISE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,262,107,11\r
+    EDITTEXT        IDC_CS_DENISEREV,311,262,45,13,ES_AUTOHSCROLL\r
+    CONTROL         "A590/A2091 SCSI",IDC_CS_A2091,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,202,104,11\r
+    CONTROL         "A4000T SCSI",IDC_CS_DMAC2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,202,125,11\r
+    LTEXT           "A4091/A4000T SCSI not yet implemented.",IDC_STATIC,17,187,247,8,SS_CENTERIMAGE\r
+    CONTROL         "PCMCIA",IDC_CS_PCMCIA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,143,125,11\r
+    CONTROL         "A4091 SCSI",IDC_CS_A4091,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,215,104,11\r
+    CONTROL         "CDTV SCSI",IDC_CS_CDTVSCSI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,215,121,11\r
+    CONTROL         "Include host SCSI devices",IDC_CS_SCSIMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,215,125,11\r
+    CONTROL         "C00000 is Fast RAM",IDC_CS_SLOWISFAST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,157,125,11\r
+    CONTROL         "ROM Mirror (E0)",IDC_CS_KSMIRROR_E0,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,157,104,11\r
+    CONTROL         "CIA ROM Overlay",IDC_CS_CIAOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,102,104,11\r
+    CONTROL         "KB Reset Warning",IDC_CS_RESETWARNING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,171,104,11\r
+    CONTROL         "No-EHB Denise",IDC_CS_NOEHB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,127,171,121,11\r
+    CONTROL         "A1000 Agnus (8361/8367)",IDC_CS_DIPAGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,264,171,125,11\r
+    GROUPBOX        "Chipset Features",IDC_STATIC,1,88,393,146\r
+    GROUPBOX        "Chipset Revision",IDC_STATIC,1,236,393,46\r
+END\r
+\r
+IDD_AVIOUTPUT DIALOGEX 0, 0, 396, 260\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    GROUPBOX        "Output Properties",IDC_STATIC,5,0,274,115\r
-    EDITTEXT        IDC_AVIOUTPUT_FILETEXT,15,15,226,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_CLIENTEDGE\r
-    PUSHBUTTON      "...",IDC_AVIOUTPUT_FILE,249,15,19,12\r
-    CONTROL         "Audio",IDC_AVIOUTPUT_AUDIO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,33,39,14\r
-    CONTROL         "",IDC_AVIOUTPUT_AUDIO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,59,34,209,13\r
-    CONTROL         "Video",IDC_AVIOUTPUT_VIDEO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,50,39,14\r
-    CONTROL         "",IDC_AVIOUTPUT_VIDEO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,59,51,209,13\r
+    GROUPBOX        "Output Properties",IDC_STATIC,1,0,393,123\r
+    EDITTEXT        IDC_AVIOUTPUT_FILETEXT,15,15,342,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_CLIENTEDGE\r
+    PUSHBUTTON      "...",IDC_AVIOUTPUT_FILE,362,15,23,12\r
+    CONTROL         "Audio",IDC_AVIOUTPUT_AUDIO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,34,66,14\r
+    CONTROL         "",IDC_AVIOUTPUT_AUDIO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,88,35,298,13\r
+    CONTROL         "Video",IDC_AVIOUTPUT_VIDEO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,52,66,14\r
+    CONTROL         "",IDC_AVIOUTPUT_VIDEO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,87,53,298,13\r
     CONTROL         "Disable frame rate limit",IDC_AVIOUTPUT_FRAMELIMITER,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,69,122,10\r
-    CONTROL         "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,94,108,14\r
-    PUSHBUTTON      "Save screenshot",IDC_SCREENSHOT,16,129,77,14\r
-    GROUPBOX        "Ripper",IDC_STATIC,5,115,274,49\r
-    PUSHBUTTON      "Pro Wizard 1.62",IDC_PROWIZARD,192,129,77,14,WS_DISABLED\r
-    CONTROL         "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,146,77,14\r
-    GROUPBOX        "Re-recorder",IDC_STATIC,5,165,274,70\r
-    CONTROL         "Play recording",IDC_STATEREC_PLAY,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,177,77,14\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,72,176,10\r
+    CONTROL         "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,100,144,14\r
+    PUSHBUTTON      "Save screenshot",IDC_SCREENSHOT,53,140,87,14\r
+    GROUPBOX        "Ripper",IDC_STATIC,1,126,393,53\r
+    PUSHBUTTON      "Pro Wizard 1.62",IDC_PROWIZARD,245,140,87,14,WS_DISABLED\r
+    CONTROL         "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,245,159,87,14\r
+    GROUPBOX        "Re-recorder",IDC_STATIC,1,182,393,70\r
+    CONTROL         "Play recording",IDC_STATEREC_PLAY,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,53,194,87,14\r
     CONTROL         "Disable sound output",IDC_AVIOUTPUT_NOSOUNDOUTPUT,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,81,123,10\r
-    CONTROL         "Disable sound sync",IDC_AVIOUTPUT_NOSOUNDSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,81,120,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,85,176,10\r
+    CONTROL         "Disable sound sync",IDC_AVIOUTPUT_NOSOUNDSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,210,85,171,10\r
     CONTROL         "Capture before filtering",IDC_AVIOUTPUT_ORIGINALSIZE,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,69,120,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,210,72,171,10\r
     CONTROL         "Take screenshot before filtering",IDC_SCREENSHOT_ORIGINALSIZE,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,148,162,10\r
-    RTEXT           "Recording rate (seconds):",IDC_STATIC,12,218,86,10,SS_CENTERIMAGE | WS_TABSTOP\r
-    COMBOBOX        IDC_STATEREC_RATE,103,216,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "Recording buffers:",IDC_STATIC,148,218,75,10,SS_CENTERIMAGE | WS_TABSTOP\r
-    COMBOBOX        IDC_STATEREC_BUFFERSIZE,229,216,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Re-recording enabled",IDC_STATEREC_RECORD,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,160,177,108,14\r
-    PUSHBUTTON      "Save recording",IDC_STATEREC_SAVE,160,195,108,14\r
-    CONTROL         "Automatic replay",IDC_STATEREC_AUTOPLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,200,129,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,161,162,10\r
+    RTEXT           "Recording rate (seconds):",IDC_STATIC,15,235,121,10,SS_CENTERIMAGE | WS_TABSTOP\r
+    COMBOBOX        IDC_STATEREC_RATE,141,233,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "Recording buffers:",IDC_STATIC,195,235,91,10,SS_CENTERIMAGE | WS_TABSTOP\r
+    COMBOBOX        IDC_STATEREC_BUFFERSIZE,291,233,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Re-recording enabled",IDC_STATEREC_RECORD,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,214,194,118,14\r
+    PUSHBUTTON      "Save recording",IDC_STATEREC_SAVE,214,212,118,14\r
+    CONTROL         "Automatic replay",IDC_STATEREC_AUTOPLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,217,129,10\r
 END\r
 \r
-IDD_INPUT DIALOGEX 0, 0, 300, 242\r
+IDD_INPUT DIALOGEX 0, 0, 396, 318\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    CONTROL         "List1",IDC_INPUTLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,5,22,290,146\r
-    COMBOBOX        IDC_INPUTTYPE,5,5,77,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_INPUTDEVICE,87,5,190,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "",IDC_INPUTDEVICEDISABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,282,8,9,8\r
-    COMBOBOX        IDC_INPUTAMIGACNT,5,174,24,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_INPUTAMIGA,33,174,202,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Test [] Test input mappings.",IDC_INPUTTEST,240,175,26,14\r
-    PUSHBUTTON      "Remap [] Find and remap quickly.",IDC_INPUTREMAP,267,175,30,14\r
-    RTEXT           "Joystick dead zone (%):",-1,4,196,79,10,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_INPUTDEADZONE,88,195,25,12,ES_NUMBER\r
-    RTEXT           "Digital joy-mouse speed:",-1,117,196,88,10,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_INPUTSPEEDD,210,195,25,12,ES_NUMBER\r
-    RTEXT           "Autofire rate (lines):",-1,4,212,79,10,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_INPUTAUTOFIRERATE,88,210,25,12,ES_NUMBER\r
-    RTEXT           "Analog joy-mouse speed:",-1,117,212,88,10,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_INPUTSPEEDA,210,211,25,12,ES_NUMBER\r
-    PUSHBUTTON      "Copy from:",IDC_INPUTCOPY,240,195,56,14\r
-    COMBOBOX        IDC_INPUTCOPYFROM,240,211,55,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Swap 1<>2",IDC_INPUTSWAP,240,226,56,14\r
-END\r
-\r
-IDD_FILTER DIALOGEX 0, 0, 296, 241\r
+    CONTROL         "List1",IDC_INPUTLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,5,22,390,220\r
+    COMBOBOX        IDC_INPUTTYPE,5,4,106,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_INPUTDEVICE,116,4,192,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "",IDC_INPUTDEVICEDISABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,384,7,9,10\r
+    COMBOBOX        IDC_INPUTAMIGACNT,5,248,24,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_INPUTAMIGA,33,248,286,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Test [] Test input mappings.",IDC_INPUTTEST,324,248,34,14\r
+    PUSHBUTTON      "Remap [] Find and remap quickly.",IDC_INPUTREMAP,361,248,34,14\r
+    RTEXT           "Joystick dead zone (%):",-1,5,271,106,10,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_INPUTDEADZONE,116,270,29,12,ES_NUMBER\r
+    RTEXT           "Digital joy-mouse speed:",-1,147,271,108,10,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_INPUTSPEEDD,260,270,29,12,ES_NUMBER\r
+    RTEXT           "Autofire rate (lines):",-1,5,288,106,10,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_INPUTAUTOFIRERATE,116,286,29,12,ES_NUMBER\r
+    RTEXT           "Analog joy-mouse speed:",-1,147,288,108,10,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_INPUTSPEEDA,260,287,29,12,ES_NUMBER\r
+    PUSHBUTTON      "Copy from:",IDC_INPUTCOPY,324,268,70,14\r
+    COMBOBOX        IDC_INPUTCOPYFROM,324,285,70,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Swap 1<>2",IDC_INPUTSWAP,324,301,70,14\r
+    RTEXT           "Device enabled",-1,313,6,66,11,SS_CENTERIMAGE\r
+END\r
+\r
+IDD_FILTER DIALOGEX 0, 0, 396, 288\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    GROUPBOX        "Filter Settings",-1,0,1,295,134\r
-    COMBOBOX        IDC_FILTERMODE,20,15,149,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_FILTERFILTER,176,15,39,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Reset to defaults",IDC_FILTERDEFAULT,221,15,67,14\r
-    RTEXT           "Horiz. size:",-1,7,61,46,10,SS_CENTERIMAGE\r
-    CONTROL         "Slider1",IDC_FILTERHZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,54,152,19\r
-    EDITTEXT        IDC_FILTERHZV,253,56,34,12,ES_CENTER | ES_READONLY\r
-    RTEXT           "Vert. size:",-1,7,81,46,10,SS_CENTERIMAGE\r
-    CONTROL         "Slider1",IDC_FILTERVZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,74,152,19\r
-    EDITTEXT        IDC_FILTERVZV,253,76,34,12,ES_CENTER | ES_READONLY\r
-    RTEXT           "Horiz. position:",-1,5,101,55,10,SS_CENTERIMAGE\r
-    CONTROL         "Slider1",IDC_FILTERHO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,94,151,19\r
-    EDITTEXT        IDC_FILTERHOV,253,96,34,12,ES_CENTER | ES_READONLY\r
-    RTEXT           "Vert. position:",-1,5,120,55,10,SS_CENTERIMAGE\r
-    CONTROL         "Slider1",IDC_FILTERVO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,114,151,19\r
-    EDITTEXT        IDC_FILTERVOV,253,116,34,12,ES_CENTER | ES_READONLY\r
-    CONTROL         "Slider1",IDC_FILTERXL,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,107,174,141,19\r
-    EDITTEXT        IDC_FILTERXLV,253,176,34,12,ES_CENTER | ES_READONLY\r
-    COMBOBOX        IDC_FILTERSLR,253,151,33,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    GROUPBOX        "Presets",-1,0,203,296,36\r
-    COMBOBOX        IDC_FILTERPRESETS,8,217,119,150,CBS_DROPDOWN | CBS_SORT | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Load",IDC_FILTERPRESETLOAD,132,216,47,14\r
-    PUSHBUTTON      "Save",IDC_FILTERPRESETSAVE,184,216,47,14\r
-    PUSHBUTTON      "Delete",IDC_FILTERPRESETDELETE,236,216,47,14\r
-    COMBOBOX        IDC_FILTERHZMULT,59,60,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_FILTERVZMULT,59,80,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_FILTERXTRA,105,151,138,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_FILTERASPECT,14,151,73,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Keep aspect ratio",IDC_FILTERKEEPASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,168,77,10\r
-    COMBOBOX        IDC_FILTERAUTOSCALE,204,36,83,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_FILTERASPECT2,14,180,73,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_FILTEROVERLAY,92,36,103,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    GROUPBOX        "Aspect Ratio Correction",-1,3,138,92,65\r
-    GROUPBOX        "Extra Settings",-1,101,137,194,65\r
-    COMBOBOX        IDC_FILTEROVERLAYTYPE,20,36,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-END\r
-\r
-IDD_HARDDRIVE DIALOGEX 0, 0, 380, 76\r
+    GROUPBOX        "Filter Settings",-1,1,1,393,146\r
+    COMBOBOX        IDC_FILTERMODE,20,15,188,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_FILTERFILTER,215,15,63,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Reset to defaults",IDC_FILTERDEFAULT,283,15,106,14\r
+    RTEXT           "Horiz. size:",-1,7,63,81,10,SS_CENTERIMAGE\r
+    CONTROL         "Slider1",IDC_FILTERHZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,56,152,19\r
+    EDITTEXT        IDC_FILTERHZV,316,58,42,12,ES_CENTER | ES_READONLY\r
+    RTEXT           "Vert. size:",-1,7,84,81,10,SS_CENTERIMAGE\r
+    CONTROL         "Slider1",IDC_FILTERVZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,77,152,19\r
+    EDITTEXT        IDC_FILTERVZV,316,79,42,12,ES_CENTER | ES_READONLY\r
+    RTEXT           "Horiz. position:",-1,5,105,81,10,SS_CENTERIMAGE\r
+    CONTROL         "Slider1",IDC_FILTERHO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,98,151,19\r
+    EDITTEXT        IDC_FILTERHOV,316,100,42,12,ES_CENTER | ES_READONLY\r
+    RTEXT           "Vert. position:",-1,5,125,81,10,SS_CENTERIMAGE\r
+    CONTROL         "Slider1",IDC_FILTERVO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,147,119,151,19\r
+    EDITTEXT        IDC_FILTERVOV,316,121,42,12,ES_CENTER | ES_READONLY\r
+    CONTROL         "Slider1",IDC_FILTERXL,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,195,141,19\r
+    EDITTEXT        IDC_FILTERXLV,327,197,41,12,ES_CENTER | ES_READONLY\r
+    COMBOBOX        IDC_FILTERSLR,327,172,41,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "Presets",-1,1,245,393,36\r
+    COMBOBOX        IDC_FILTERPRESETS,13,260,183,150,CBS_DROPDOWN | CBS_SORT | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Load",IDC_FILTERPRESETLOAD,205,259,55,14\r
+    PUSHBUTTON      "Save",IDC_FILTERPRESETSAVE,265,259,55,14\r
+    PUSHBUTTON      "Delete",IDC_FILTERPRESETDELETE,325,259,55,14\r
+    COMBOBOX        IDC_FILTERHZMULT,92,62,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_FILTERVZMULT,92,83,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_FILTERXTRA,177,172,138,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_FILTERASPECT,14,169,99,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Keep aspect ratio",IDC_FILTERKEEPASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,204,126,11\r
+    COMBOBOX        IDC_FILTERAUTOSCALE,284,36,104,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_FILTERASPECT2,14,220,99,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_FILTEROVERLAY,134,36,145,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "Aspect Ratio Correction",-1,1,152,144,89\r
+    GROUPBOX        "Extra Settings",-1,154,152,240,89\r
+    COMBOBOX        IDC_FILTEROVERLAYTYPE,20,36,108,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Keep autoscale aspect",IDC_FILTERKEEPAUTOSCALEASPECT,\r
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,189,126,11\r
+END\r
+\r
+IDD_HARDDRIVE DIALOGEX 0, 0, 396, 74\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
 CAPTION "Harddrive Settings"\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
     LTEXT           "Hard drive:",IDC_STATIC,7,11,80,10\r
-    COMBOBOX        IDC_HARDDRIVE,49,9,325,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,161,51,55,10\r
-    DEFPUSHBUTTON   "Add hard drive",IDOK,231,48,65,14\r
-    PUSHBUTTON      "Cancel",IDCANCEL,319,48,54,14\r
-    DEFPUSHBUTTON   "Create hard disk image file",IDC_HARDDRIVE_IMAGE,49,30,115,14\r
-    EDITTEXT        IDC_PATH_NAME,183,27,97,15,ES_AUTOHSCROLL | NOT WS_VISIBLE\r
-    COMBOBOX        IDC_HDF_CONTROLLER,102,50,41,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "HD Controller:",IDC_STATIC,42,51,52,10,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_HARDDRIVE,49,9,339,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,172,52,60,10\r
+    DEFPUSHBUTTON   "Add hard drive",IDOK,236,49,73,14\r
+    PUSHBUTTON      "Cancel",IDCANCEL,316,49,73,14\r
+    DEFPUSHBUTTON   "Create hard disk image file",IDC_HARDDRIVE_IMAGE,49,29,115,14\r
+    EDITTEXT        IDC_PATH_NAME,183,29,97,15,ES_AUTOHSCROLL | NOT WS_VISIBLE\r
+    COMBOBOX        IDC_HDF_CONTROLLER,91,51,61,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "HD Controller:",IDC_STATIC,12,52,65,10,SS_CENTERIMAGE\r
 END\r
 \r
-IDD_MISC2 DIALOGEX 0, 0, 300, 244\r
+IDD_MISC2 DIALOGEX 0, 0, 396, 263\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    GROUPBOX        "When Active",IDC_STATIC,8,7,88,81\r
-    CTEXT           "Run at priority:",IDC_ACTIVE_PRI,14,17,77,10,SS_CENTERIMAGE | WS_TABSTOP\r
-    COMBOBOX        IDC_ACTIVE_PRIORITY,14,29,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    GROUPBOX        "When Inactive",IDC_STATIC,102,7,92,81\r
-    CTEXT           "Run at priority:",IDC_INACTIVE_PRI,109,17,75,10,SS_CENTERIMAGE | WS_TABSTOP\r
-    COMBOBOX        IDC_INACTIVE_PRIORITY,109,29,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Pause emulation",IDC_INACTIVE_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,61,69,10\r
-    CONTROL         "Disable sound",IDC_INACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,74,79,10\r
-    GROUPBOX        "When Minimized",IDC_STATIC,199,7,92,81\r
-    CTEXT           "Run at priority:",IDC_MINIMIZED_PRI,207,18,75,10,SS_CENTERIMAGE | WS_TABSTOP\r
-    COMBOBOX        IDC_MINIMIZED_PRIORITY,207,29,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Pause emulation",IDC_MINIMIZED_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,61,69,10\r
-    CONTROL         "Disable sound",IDC_MINIMIZED_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,74,79,10\r
-    CONTROL         "",IDC_ASSOCIATELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,19,104,164,100\r
-    GROUPBOX        "File Extension Associations",IDC_STATIC,8,93,186,138\r
-    PUSHBUTTON      "Deassociate all",IDC_ASSOCIATE_OFF,108,210,75,14\r
-    PUSHBUTTON      "Associate all",IDC_ASSOCIATE_ON,19,210,75,14\r
-    CONTROL         "Pause emulation",IDC_ACTIVE_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,61,69,10\r
-    CONTROL         "Disable sound",IDC_ACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,74,79,10\r
-    CTEXT           "Mouse uncaptured:",IDC_STATIC,18,44,72,15,SS_CENTERIMAGE\r
-END\r
-\r
-IDD_DISK DIALOGEX 0, 0, 300, 242\r
+    GROUPBOX        "When Active",IDC_STATIC,1,7,125,91\r
+    CTEXT           "Run at priority:",IDC_ACTIVE_PRI,10,18,108,10,SS_CENTERIMAGE | WS_TABSTOP\r
+    COMBOBOX        IDC_ACTIVE_PRIORITY,10,33,108,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "When Inactive",IDC_STATIC,133,7,126,90\r
+    CTEXT           "Run at priority:",IDC_INACTIVE_PRI,144,18,107,10,SS_CENTERIMAGE | WS_TABSTOP\r
+    COMBOBOX        IDC_INACTIVE_PRIORITY,144,33,108,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Pause emulation",IDC_INACTIVE_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,67,109,10\r
+    CONTROL         "Disable sound",IDC_INACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,81,109,10\r
+    GROUPBOX        "When Minimized",IDC_STATIC,269,7,125,89\r
+    CTEXT           "Run at priority:",IDC_MINIMIZED_PRI,278,19,109,10,SS_CENTERIMAGE | WS_TABSTOP\r
+    COMBOBOX        IDC_MINIMIZED_PRIORITY,278,33,108,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Pause emulation",IDC_MINIMIZED_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,67,108,10\r
+    CONTROL         "Disable sound",IDC_MINIMIZED_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,280,81,108,10\r
+    CONTROL         "",IDC_ASSOCIATELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,9,124,238,108\r
+    GROUPBOX        "File Extension Associations",IDC_STATIC,0,107,260,155\r
+    PUSHBUTTON      "Deassociate all",IDC_ASSOCIATE_OFF,125,240,85,14\r
+    PUSHBUTTON      "Associate all",IDC_ASSOCIATE_ON,36,240,85,14\r
+    CONTROL         "Pause emulation",IDC_ACTIVE_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,67,109,10\r
+    CONTROL         "Disable sound",IDC_ACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,81,109,10\r
+    CTEXT           "Mouse uncaptured:",IDC_STATIC,10,50,101,15,SS_CENTERIMAGE\r
+END\r
+\r
+IDD_DISK DIALOGEX 0, 0, 396, 318\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_SETFOREGROUND | DS_3DLOOK | DS_CONTROL | DS_CENTER | DS_CENTERMOUSE | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    CONTROL         "",IDC_DISKLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,4,4,292,198\r
-    PUSHBUTTON      "Remove floppy disk image",IDC_DISKLISTREMOVE,156,223,101,15\r
-    COMBOBOX        IDC_DISKTEXT,3,205,293,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Insert floppy disk image",IDC_DISKLISTINSERT,41,223,101,15\r
+    CONTROL         "",IDC_DISKLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,1,4,393,275\r
+    PUSHBUTTON      "Remove floppy disk image",IDC_DISKLISTREMOVE,202,299,121,15\r
+    COMBOBOX        IDC_DISKTEXT,1,281,393,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Insert floppy disk image",IDC_DISKLISTINSERT,72,299,121,15\r
 END\r
 \r
-IDD_PANEL DIALOGEX 0, 0, 420, 278\r
+IDD_PANEL DIALOGEX 0, 0, 530, 345\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
 EXSTYLE WS_EX_ACCEPTFILES | WS_EX_CONTROLPARENT\r
 CAPTION "WinUAE Properties"\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    GROUPBOX        "",IDC_PANEL_FRAME,112,4,303,247,NOT WS_VISIBLE\r
-    CONTROL         "",IDC_PANELTREE,"SysTreeView32",TVS_HASLINES | TVS_SHOWSELALWAYS | TVS_TRACKSELECT | TVS_NOSCROLL | TVS_NOHSCROLL | WS_BORDER | WS_TABSTOP,5,5,101,248,WS_EX_CLIENTEDGE\r
-    GROUPBOX        "",IDC_PANEL_FRAME_OUTER,110,2,307,251\r
-    PUSHBUTTON      "Reset",IDC_RESETAMIGA,5,259,47,14\r
-    PUSHBUTTON      "Quit",IDC_QUITEMU,55,259,47,14\r
-    DEFPUSHBUTTON   "OK",IDOK,260,259,50,14\r
-    PUSHBUTTON      "Cancel",IDCANCEL,313,259,50,14\r
-    PUSHBUTTON      "Help",IDHELP,366,259,50,14,WS_DISABLED\r
-    PUSHBUTTON      "Restart",IDC_RESTARTEMU,106,259,47,14,NOT WS_VISIBLE\r
+    GROUPBOX        "",IDC_PANEL_FRAME,121,5,402,318,NOT WS_VISIBLE\r
+    CONTROL         "",IDC_PANELTREE,"SysTreeView32",TVS_HASLINES | TVS_SHOWSELALWAYS | TVS_TRACKSELECT | TVS_NOHSCROLL | WS_BORDER | WS_TABSTOP,3,5,110,321,WS_EX_CLIENTEDGE\r
+    GROUPBOX        "",IDC_PANEL_FRAME_OUTER,118,2,409,324\r
+    PUSHBUTTON      "Reset",IDC_RESETAMIGA,3,328,47,14\r
+    PUSHBUTTON      "Quit",IDC_QUITEMU,55,328,47,14\r
+    DEFPUSHBUTTON   "OK",IDOK,377,328,47,14\r
+    PUSHBUTTON      "Cancel",IDCANCEL,429,328,47,14\r
+    PUSHBUTTON      "Help",IDHELP,481,328,47,14,WS_DISABLED\r
+    PUSHBUTTON      "Restart",IDC_RESTARTEMU,107,328,47,14,NOT WS_VISIBLE\r
 END\r
 \r
-IDD_PATHS DIALOGEX 0, 0, 300, 243\r
+IDD_PATHS DIALOGEX 0, 0, 396, 274\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    LTEXT           "System ROMs:",IDC_PATHS_ROML,14,4,260,8,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_PATHS_ROM,14,15,261,15,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "...",IDC_PATHS_ROMS,281,15,11,15\r
-    LTEXT           "Configuration files:",IDC_PATHS_CONFIGL,14,32,121,8,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_PATHS_CONFIG,14,42,261,15,ES_AUTOHSCROLL\r
-    CONTROL         "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,177,32,97,10\r
-    PUSHBUTTON      "...",IDC_PATHS_CONFIGS,281,42,11,15\r
-    LTEXT           "Screenshots:",IDC_PATHS_SCREENSHOTL,14,59,260,8,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_PATHS_SCREENSHOT,14,69,261,15,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "...",IDC_PATHS_SCREENSHOTS,281,69,11,15\r
-    LTEXT           "State files:",IDC_PATHS_STATEFILEL,14,86,260,8,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_PATHS_SAVESTATE,14,96,261,15,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "...",IDC_PATHS_SAVESTATES,281,96,11,15\r
-    LTEXT           "Videos:",IDC_PATHS_AVIOUTPUTL,14,113,260,8,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_PATHS_AVIOUTPUT,14,123,261,15,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "...",IDC_PATHS_AVIOUTPUTS,281,123,11,15\r
-    LTEXT           "Saveimages:",IDC_PATHS_SAVEIMAGEL,14,140,261,8,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_PATHS_SAVEIMAGE,14,151,261,15,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "...",IDC_PATHS_SAVEIMAGES,281,151,11,15\r
-    PUSHBUTTON      "Reset to defaults",IDC_PATHS_DEFAULT,14,196,92,14\r
-    PUSHBUTTON      "Rescan ROMs",IDC_ROM_RESCAN,14,212,92,14\r
-    PUSHBUTTON      "Clear registry",IDC_RESETREGISTRY,111,212,92,14\r
-    COMBOBOX        IDC_PATHS_DEFAULTTYPE,111,197,163,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Clear disk history",IDC_RESETDISKHISTORY,14,228,92,14\r
-    LTEXT           "Rips:",IDC_PATHS_RIPSL,13,168,261,8,SS_CENTERIMAGE\r
-    EDITTEXT        IDC_PATHS_RIP,13,178,261,15,ES_AUTOHSCROLL\r
-    PUSHBUTTON      "...",IDC_PATHS_RIPS,280,178,11,15\r
-    CONTROL         "Use relative paths",IDC_PATHS_RELATIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,113,230,161,10\r
-END\r
-\r
-IDD_QUICKSTART DIALOGEX 0, 0, 300, 242\r
+    LTEXT           "System ROMs:",IDC_PATHS_ROML,3,2,260,8,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_PATHS_ROM,3,13,377,15,ES_AUTOHSCROLL\r
+    PUSHBUTTON      "...",IDC_PATHS_ROMS,384,13,11,15\r
+    LTEXT           "Configuration files:",IDC_PATHS_CONFIGL,3,32,164,8,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_PATHS_CONFIG,3,44,377,15,ES_AUTOHSCROLL\r
+    CONTROL         "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,177,31,197,11\r
+    PUSHBUTTON      "...",IDC_PATHS_CONFIGS,384,43,11,15\r
+    LTEXT           "Screenshots:",IDC_PATHS_SCREENSHOTL,3,62,260,8,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_PATHS_SCREENSHOT,3,73,377,15,ES_AUTOHSCROLL\r
+    PUSHBUTTON      "...",IDC_PATHS_SCREENSHOTS,384,72,11,15\r
+    LTEXT           "State files:",IDC_PATHS_STATEFILEL,3,91,260,8,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_PATHS_SAVESTATE,3,102,377,15,ES_AUTOHSCROLL\r
+    PUSHBUTTON      "...",IDC_PATHS_SAVESTATES,384,101,11,15\r
+    LTEXT           "Videos:",IDC_PATHS_AVIOUTPUTL,3,120,260,8,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_PATHS_AVIOUTPUT,3,131,377,15,ES_AUTOHSCROLL\r
+    PUSHBUTTON      "...",IDC_PATHS_AVIOUTPUTS,384,130,11,15\r
+    LTEXT           "Saveimages:",IDC_PATHS_SAVEIMAGEL,3,149,260,8,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_PATHS_SAVEIMAGE,3,161,377,15,ES_AUTOHSCROLL\r
+    PUSHBUTTON      "...",IDC_PATHS_SAVEIMAGES,384,160,11,15\r
+    PUSHBUTTON      "Reset to defaults",IDC_PATHS_DEFAULT,2,219,92,14\r
+    PUSHBUTTON      "Rescan ROMs",IDC_ROM_RESCAN,2,236,92,14\r
+    PUSHBUTTON      "Clear registry",IDC_RESETREGISTRY,99,236,92,14\r
+    COMBOBOX        IDC_PATHS_DEFAULTTYPE,99,220,163,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Clear disk history",IDC_RESETDISKHISTORY,2,253,92,14\r
+    LTEXT           "Rips:",IDC_PATHS_RIPSL,3,179,260,8,SS_CENTERIMAGE\r
+    EDITTEXT        IDC_PATHS_RIP,3,190,377,15,ES_AUTOHSCROLL\r
+    PUSHBUTTON      "...",IDC_PATHS_RIPS,383,189,11,15\r
+    CONTROL         "Use relative paths",IDC_PATHS_RELATIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,101,255,161,11\r
+END\r
+\r
+IDD_QUICKSTART DIALOGEX 0, 0, 396, 262\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    GROUPBOX        "Emulated Hardware",IDC_QUICKSTART_CONFIG,3,0,294,54\r
-    RTEXT           "Model:",IDC_STATIC,5,14,50,10,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_QUICKSTART_MODEL,59,12,192,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    RTEXT           "Configuration:",IDC_STATIC,5,33,50,10,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_QUICKSTART_CONFIGURATION,59,31,233,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    GROUPBOX        "Compatibility vs Required CPU Power ",IDC_QUICKSTART_COMPA,3,56,294,33\r
-    RTEXT           "Best compatibility",IDC_STATIC,13,70,67,10,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_QUICKSTART_COMPATIBILITY,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,95,65,115,21\r
-    RTEXT           "Low compatibility",IDC_STATIC,215,70,63,10,SS_CENTERIMAGE\r
-    GROUPBOX        "Host Configuration",IDC_QUICKSTART_HOST,3,91,294,33\r
-    RTEXT           "Configuration:",IDC_STATIC,5,105,55,10,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_QUICKSTART_HOSTCONFIG,65,103,225,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    GROUPBOX        "Emulated Drives",IDC_QUICKSTART_DF,3,126,294,84\r
-    CONTROL         "Floppy drive DF0:",IDC_DF0QENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,136,72,15\r
-    PUSHBUTTON      "Select image file",IDC_DF0QQ,85,136,98,15\r
-    RTEXT           "Write-protected",IDC_DF0WPTEXTQ,185,139,56,10,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_DF0WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,246,137,10,15\r
-    PUSHBUTTON      "Eject",IDC_EJECT0Q,261,136,30,15\r
-    COMBOBOX        IDC_DF0TEXTQ,9,154,282,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "Floppy drive DF1:",IDC_DF1QENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,172,71,15\r
-    PUSHBUTTON      "Select image file",IDC_DF1QQ,85,172,98,15\r
-    RTEXT           "Write-protected",IDC_DF1WPTEXTQ,185,175,55,10,SS_CENTERIMAGE\r
-    CONTROL         "",IDC_DF1WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,246,173,10,15\r
-    PUSHBUTTON      "Eject",IDC_EJECT1Q,261,172,30,15\r
-    COMBOBOX        IDC_DF1TEXTQ,9,190,282,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
-    PUSHBUTTON      "Set configuration",IDC_QUICKSTART_SETCONFIG,9,219,72,15,NOT WS_VISIBLE\r
-    GROUPBOX        "Mode",IDC_STATIC,190,211,107,27,BS_LEFT\r
-    CONTROL         "Start in Quickstart mode",IDC_QUICKSTARTMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,197,222,94,10\r
-    COMBOBOX        IDC_CD0Q_TYPE,191,173,63,50,CBS_DROPDOWNLIST | NOT WS_VISIBLE | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "Emulated Hardware",IDC_QUICKSTART_CONFIG,1,0,393,54\r
+    RTEXT           "Model:",IDC_STATIC,5,14,68,10,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_QUICKSTART_MODEL,77,12,263,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    RTEXT           "Configuration:",IDC_STATIC,5,33,68,10,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_QUICKSTART_CONFIGURATION,77,31,310,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "Compatibility vs Required CPU Power ",IDC_QUICKSTART_COMPA,1,58,393,33\r
+    RTEXT           "Best compatibility",IDC_STATIC,20,73,98,10,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_QUICKSTART_COMPATIBILITY,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,145,68,115,21\r
+    LTEXT           "Low compatibility",IDC_STATIC,279,74,92,10,SS_CENTERIMAGE\r
+    GROUPBOX        "Host Configuration",IDC_QUICKSTART_HOST,1,96,393,35\r
+    RTEXT           "Configuration:",IDC_STATIC,5,109,68,10,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_QUICKSTART_HOSTCONFIG,77,107,310,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "Emulated Drives",IDC_QUICKSTART_DF,1,135,393,93\r
+    CONTROL         "Floppy drive DF0:",IDC_DF0QENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,148,77,15\r
+    PUSHBUTTON      "Select image file",IDC_DF0QQ,93,148,98,15\r
+    RTEXT           "Write-protected",IDC_DF0WPTEXTQ,196,151,69,10,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_DF0WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,270,149,10,15\r
+    PUSHBUTTON      "Eject",IDC_EJECT0Q,358,148,30,15\r
+    COMBOBOX        IDC_DF0TEXTQ,9,167,379,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Floppy drive DF1:",IDC_DF1QENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,186,77,15\r
+    PUSHBUTTON      "Select image file",IDC_DF1QQ,93,186,98,15\r
+    RTEXT           "Write-protected",IDC_DF1WPTEXTQ,195,189,69,10,SS_CENTERIMAGE\r
+    CONTROL         "",IDC_DF1WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,270,185,10,15\r
+    PUSHBUTTON      "Eject",IDC_EJECT1Q,358,186,30,15\r
+    COMBOBOX        IDC_DF1TEXTQ,9,204,379,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
+    PUSHBUTTON      "Set configuration",IDC_QUICKSTART_SETCONFIG,9,239,88,15,NOT WS_VISIBLE\r
+    GROUPBOX        "Mode",IDC_STATIC,250,231,144,28,BS_LEFT\r
+    CONTROL         "Start in Quickstart mode",IDC_QUICKSTARTMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,259,242,131,12\r
+    COMBOBOX        IDC_CD0Q_TYPE,199,187,74,50,CBS_DROPDOWNLIST | NOT WS_VISIBLE | WS_VSCROLL | WS_TABSTOP\r
     CONTROL         "NTSC [] North American and Japanese display standard, 60Hz refresh rate. Other countries use PAL (50Hz. display refresh rate)",IDC_NTSC,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,256,15,35,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,347,14,35,12\r
 END\r
 \r
 IDD_FRONTEND DIALOGEX 0, 0, 420, 242\r
@@ -931,24 +945,24 @@ BEGIN
     GROUPBOX        "",IDC_FE_SCREENSHOT,249,7,160,128\r
 END\r
 \r
-IDD_PROGRESSBAR DIALOGEX 0, 0, 229, 58\r
+IDD_PROGRESSBAR DIALOGEX 0, 0, 396, 58\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
 CAPTION "Processing..."\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    PUSHBUTTON      "Cancel",IDCANCEL,88,40,50,14\r
-    CONTROL         "",IDC_PROGRESSBAR,"msctls_progress32",PBS_SMOOTH | WS_BORDER,7,19,215,14\r
-    CTEXT           "x",IDC_PROGRESSBAR_TEXT,23,5,187,10,SS_CENTERIMAGE | WS_TABSTOP\r
+    PUSHBUTTON      "Cancel",IDCANCEL,169,40,58,14\r
+    CONTROL         "",IDC_PROGRESSBAR,"msctls_progress32",PBS_SMOOTH | WS_BORDER,7,19,381,14\r
+    CTEXT           "x",IDC_PROGRESSBAR_TEXT,14,5,368,10,SS_CENTERIMAGE | WS_TABSTOP\r
 END\r
 \r
-IDD_STRINGBOX DIALOGEX 0, 0, 229, 107\r
-STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
+IDD_STRINGBOX DIALOGEX 0, 0, 396, 209\r
+STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
 CAPTION "Enter text..."\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    EDITTEXT        IDC_STRINGBOXEDIT,7,8,214,65,ES_MULTILINE\r
-    DEFPUSHBUTTON   "OK",IDOK,48,84,50,14\r
-    PUSHBUTTON      "Cancel",IDCANCEL,151,84,50,14\r
+    EDITTEXT        IDC_STRINGBOXEDIT,6,8,383,176,ES_MULTILINE\r
+    DEFPUSHBUTTON   "OK",IDOK,120,190,50,14\r
+    PUSHBUTTON      "Cancel",IDCANCEL,224,190,50,14\r
 END\r
 \r
 IDD_DEBUGGER DIALOGEX 0, 0, 454, 368\r
@@ -997,56 +1011,56 @@ BEGIN
     CTEXT           "Enter address",IDC_DBG_ADDRINPUTTXT,20,1,100,10,SS_CENTERIMAGE | WS_TABSTOP\r
 END\r
 \r
-IDD_EXPANSION DIALOGEX 0, 0, 300, 230\r
+IDD_EXPANSION DIALOGEX 0, 0, 396, 278\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    RTEXT           "Memory: [] Graphics card memory. Required for RTG (Picasso96) emulation.",IDC_GFXCARDTEXT,25,35,53,10,SS_NOTIFY | SS_CENTERIMAGE\r
+    RTEXT           "Memory: [] Graphics card memory. Required for RTG (Picasso96) emulation.",IDC_GFXCARDTEXT,2,35,76,10,SS_NOTIFY | SS_CENTERIMAGE\r
     CONTROL         "",IDC_P96MEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,88,31,60,20\r
-    EDITTEXT        IDC_P96RAM,152,34,34,12,ES_CENTER | ES_READONLY\r
-    GROUPBOX        "RTG Graphics Card",IDC_STATIC,5,1,291,157\r
+    EDITTEXT        IDC_P96RAM,152,34,40,12,ES_CENTER | ES_READONLY\r
+    GROUPBOX        "RTG Graphics Card",IDC_STATIC,1,0,393,189\r
     CONTROL         "Scale if smaller than display size setting",IDC_RTG_SCALE,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,65,162,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,67,212,10\r
     CONTROL         "Match host and RTG color depth if possible",IDC_RTG_MATCH_DEPTH,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,53,163,10\r
-    COMBOBOX        IDC_RTG_8BIT,211,21,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_RTG_16BIT,211,36,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_RTG_24BIT,211,51,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    COMBOBOX        IDC_RTG_32BIT,211,66,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,54,212,10\r
+    COMBOBOX        IDC_RTG_8BIT,296,23,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_RTG_16BIT,296,40,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_RTG_24BIT,296,58,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    COMBOBOX        IDC_RTG_32BIT,296,75,82,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
     CONTROL         "Always scale in windowed mode",IDC_RTG_SCALE_ALLOW,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,77,162,10\r
-    COMBOBOX        IDC_RTG_SCALE_ASPECTRATIO,211,138,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CTEXT           "Aspect ratio:",IDC_STATIC,215,125,60,10,SS_CENTERIMAGE\r
-    CTEXT           "Refresh rate:",IDC_STATIC,28,125,64,10,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_RTG_VBLANKRATE,21,138,68,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,80,212,10\r
+    COMBOBOX        IDC_RTG_SCALE_ASPECTRATIO,282,162,84,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CTEXT           "Aspect ratio:",IDC_STATIC,282,149,83,10,SS_CENTERIMAGE\r
+    CTEXT           "Refresh rate:",IDC_STATIC,30,149,83,10,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_RTG_VBLANKRATE,29,162,84,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
     CONTROL         "bsdsocket.library [] bsdsocket network library emulation.",IDC_SOCKETS,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,180,120,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,216,187,11\r
     CONTROL         "uaenet.device [] Sana 2 compatible network device emulation. WinPcap required.",IDC_SANA2,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,192,77,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,229,187,11\r
     CONTROL         "A2065 Z2 [] A2065 Ethernet Zorro II card emulation. WinPcap required.",IDC_A2065,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,233,192,57,10\r
-    GROUPBOX        "Network",IDC_STATIC,126,162,169,66\r
-    COMBOBOX        IDC_NETDEVICE,132,208,156,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
-    CONTROL         "uaescsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,192,102,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,242,187,11\r
+    GROUPBOX        "Network",IDC_STATIC,181,198,213,80\r
+    COMBOBOX        IDC_NETDEVICE,202,257,156,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "uaescsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,229,147,11\r
     CONTROL         "Catweasel Z2 emulation [] Catweasel MK2 Zorro II card emulation. Physical Windows compatible Catweasel card and drivers required.",IDC_CATWEASEL,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,180,101,10\r
-    GROUPBOX        "Miscellaneous Expansions",IDC_STATIC,5,162,117,66\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,216,147,11\r
+    GROUPBOX        "Miscellaneous Expansions",IDC_STATIC,1,198,172,80\r
     COMBOBOX        IDC_RTG_Z2Z3,26,14,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CTEXT           "Buffer mode:",IDC_STATIC,112,125,81,10,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_RTG_BUFFERCNT,111,138,84,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
-    CTEXT           "Color modes:",IDC_STATIC,215,9,62,10,SS_CENTERIMAGE\r
-    COMBOBOX        IDC_RTG_DISPLAYSELECT,11,106,279,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CTEXT           "Buffer mode:",IDC_STATIC,154,149,83,10,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_RTG_BUFFERCNT,153,162,84,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
+    CTEXT           "Color modes:",IDC_STATIC,295,9,83,10,SS_CENTERIMAGE\r
+    COMBOBOX        IDC_RTG_DISPLAYSELECT,11,125,371,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
     CONTROL         "Hardware vertical blank interrupt",IDC_RTG_VBINTERRUPT,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,89,142,10\r
-    CONTROL         "Hardware sprite emulation",IDC_RTG_HWSPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,185,89,102,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,93,212,10\r
+    CONTROL         "Hardware sprite emulation",IDC_RTG_HWSPRITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,107,212,10\r
 END\r
 \r
-IDD_INPUTMAP DIALOGEX 0, 0, 300, 240\r
+IDD_INPUTMAP DIALOGEX 0, 0, 396, 318\r
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD\r
 FONT 8, "MS Sans Serif", 0, 0, 0x1\r
 BEGIN\r
-    CONTROL         "",IDC_INPUTMAPLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,0,1,299,215\r
-    EDITTEXT        IDC_INPUTMAPOUT,0,222,299,14,ES_AUTOHSCROLL | WS_DISABLED\r
+    CONTROL         "",IDC_INPUTMAPLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,1,1,393,298\r
+    EDITTEXT        IDC_INPUTMAPOUT,1,304,393,14,ES_AUTOHSCROLL | WS_DISABLED\r
 END\r
 \r
 IDD_INFOBOX DIALOGEX 0, 0, 420, 68\r
@@ -1054,11 +1068,22 @@ STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAP
 CAPTION "Scanning ROM image files..."\r
 FONT 8, "MS Sans Serif", 0, 0, 0x0\r
 BEGIN\r
-    DEFPUSHBUTTON   "OK",IDOK,123,50,50,14,NOT WS_VISIBLE\r
-    PUSHBUTTON      "Cancel",IDCANCEL,182,50,50,14\r
-    CTEXT           "",IDC_INFOBOX_TEXT2,6,21,412,11,SS_CENTERIMAGE | SS_SUNKEN | WS_TABSTOP\r
-    CTEXT           "",IDC_INFOBOX_TEXT1,6,7,412,11,SS_CENTERIMAGE | SS_SUNKEN | WS_TABSTOP\r
-    CTEXT           "",IDC_INFOBOX_TEXT3,5,35,412,11,SS_CENTERIMAGE | SS_SUNKEN | WS_TABSTOP\r
+    DEFPUSHBUTTON   "OK",IDOK,147,51,58,14,NOT WS_VISIBLE\r
+    PUSHBUTTON      "Cancel",IDCANCEL,214,51,58,14\r
+    CTEXT           "",IDC_INFOBOX_TEXT2,4,21,412,11,SS_CENTERIMAGE | SS_SUNKEN | WS_TABSTOP\r
+    CTEXT           "",IDC_INFOBOX_TEXT1,4,7,412,11,SS_CENTERIMAGE | SS_SUNKEN | WS_TABSTOP\r
+    CTEXT           "",IDC_INFOBOX_TEXT3,4,35,412,11,SS_CENTERIMAGE | SS_SUNKEN | WS_TABSTOP\r
+END\r
+\r
+IDD_LIST DIALOGEX 0, 0, 316, 206\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Select Qualifiers"\r
+FONT 8, "MS Shell Dlg", 400, 0, 0x1\r
+BEGIN\r
+    DEFPUSHBUTTON   "OK",IDOK,205,185,50,14\r
+    PUSHBUTTON      "Cancel",IDCANCEL,259,185,50,14\r
+    CONTROL         "",IDC_LISTDIALOG_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,7,7,302,171\r
+    DEFPUSHBUTTON   "Clear",IDC_LISTDIALOG_CLEAR,6,185,50,14\r
 END\r
 \r
 \r
@@ -1068,8 +1093,8 @@ END
 //\r
 \r
 VS_VERSION_INFO VERSIONINFO\r
- FILEVERSION 2,4,2,0\r
- PRODUCTVERSION 2,4,2,0\r
+ FILEVERSION 2,5,0,0\r
+ PRODUCTVERSION 2,5,0,0\r
  FILEFLAGSMASK 0x3fL\r
 #ifdef _DEBUG\r
  FILEFLAGS 0x1L\r
@@ -1085,12 +1110,12 @@ BEGIN
         BLOCK "040904b0"\r
         BEGIN\r
             VALUE "FileDescription", "WinUAE"\r
-            VALUE "FileVersion", "2.4.2.0"\r
+            VALUE "FileVersion", "2.5.0.0"\r
             VALUE "InternalName", "WinUAE"\r
             VALUE "LegalCopyright", "© 1996-2012 under the GNU Public License (GPL)"\r
             VALUE "OriginalFilename", "WinUAE.exe"\r
             VALUE "ProductName", "WinUAE"\r
-            VALUE "ProductVersion", "2.4.2.0"\r
+            VALUE "ProductVersion", "2.5.0.0"\r
         END\r
     END\r
     BLOCK "VarFileInfo"\r
@@ -1214,8 +1239,13 @@ IDB_LCD160X43           BITMAP                  "lcd.bmp"
 #ifdef APSTUDIO_INVOKED\r
 GUIDELINES DESIGNINFO\r
 BEGIN\r
+    IDD_KICKSTART, DIALOG\r
+    BEGIN\r
+    END\r
+\r
     IDD_DISPLAY, DIALOG\r
     BEGIN\r
+        BOTTOMMARGIN, 270\r
     END\r
 \r
     IDD_MEMORY, DIALOG\r
@@ -1244,14 +1274,16 @@ BEGIN
 \r
     IDD_IOPORTS, DIALOG\r
     BEGIN\r
-        RIGHTMARGIN, 300\r
-        BOTTOMMARGIN, 240\r
     END\r
 \r
     IDD_GAMEPORTS, DIALOG\r
     BEGIN\r
     END\r
 \r
+    IDD_CONTRIBUTORS, DIALOG\r
+    BEGIN\r
+    END\r
+\r
     IDD_ABOUT, DIALOG\r
     BEGIN\r
     END\r
@@ -1268,8 +1300,13 @@ BEGIN
     BEGIN\r
     END\r
 \r
+    IDD_SETINFO, DIALOG\r
+    BEGIN\r
+    END\r
+\r
     IDD_CHIPSET, DIALOG\r
     BEGIN\r
+        BOTTOMMARGIN, 162\r
     END\r
 \r
     IDD_CHIPSET2, DIALOG\r
@@ -1286,7 +1323,7 @@ BEGIN
 \r
     IDD_FILTER, DIALOG\r
     BEGIN\r
-        BOTTOMMARGIN, 237\r
+        BOTTOMMARGIN, 286\r
     END\r
 \r
     IDD_HARDDRIVE, DIALOG\r
@@ -1323,7 +1360,14 @@ BEGIN
 \r
     IDD_STRINGBOX, DIALOG\r
     BEGIN\r
-        BOTTOMMARGIN, 58\r
+    END\r
+\r
+    IDD_DEBUGGER, DIALOG\r
+    BEGIN\r
+    END\r
+\r
+    IDD_DBGMEMINPUT, DIALOG\r
+    BEGIN\r
     END\r
 \r
     IDD_EXPANSION, DIALOG\r
@@ -1338,6 +1382,14 @@ BEGIN
     IDD_INFOBOX, DIALOG\r
     BEGIN\r
     END\r
+\r
+    IDD_LIST, DIALOG\r
+    BEGIN\r
+        LEFTMARGIN, 7\r
+        RIGHTMARGIN, 309\r
+        TOPMARGIN, 7\r
+        BOTTOMMARGIN, 199\r
+    END\r
 END\r
 #endif    // APSTUDIO_INVOKED\r
 \r
@@ -1462,14 +1514,14 @@ BEGIN
     IDS_PRI_LOW             "Low"\r
     IDS_OLDRTGLIBRARY       "The installed LIBS:Picasso96/rtg.library (%d.%d) should be updated.\nA newer version is included in the ""Amiga Programs"" directory\n of the WinUAE distribution archive.\n\nNewer library version fixes graphics problems and increases performance."\r
     IDS_DEFAULT_AF          "Amiga Forever"\r
-    IDS_DEFAULT_WINUAE      "WinUAE default (old)"\r
+    IDS_DEFAULT_WINUAE      "WinUAE default (EXE directory)"\r
 END\r
 \r
 STRINGTABLE\r
 BEGIN\r
     IDS_SOUND_STEREO2       "Cloned Stereo (4 Channels)"\r
     IDS_INPUT_CUSTOMEVENT   "<Custom event>"\r
-    IDS_DEFAULT_NEWWINUAE   "WinUAE default (new)"\r
+    IDS_DEFAULT_NEWWINUAE   "WinUAE default (User directory)"\r
     IDS_SOUND_CLONED51      "Cloned Stereo (5.1)"\r
     IDS_SOUND_51            "5.1 Channels"\r
     IDS_AUTOMATIC           "Automatic"\r
@@ -1724,6 +1776,9 @@ STRINGTABLE
 BEGIN\r
     IDS_WSTYLE_STANDARD     "Standard"\r
     IDS_WSTYLE_EXTENDED     "Extended"\r
+    IDS_MISCLISTITEMS1      "Untrap = middle button\nShow GUI on startup\nUse CTRL-F11 to quit\nDon't show taskbar button\nDon't show notification icon\n"\r
+    IDS_MISCLISTITEMS2      "Always on top\nDisable screensaver\nSynchronize clock\nFaster RTG\nClipboard sharing\nAllow native code\n"\r
+    IDS_MISCLISTITEMS3      "Native on-screen display\nRTG on-screen display\nCreate winuaelog.txt log\nLog illegal memory accesses\nBlank unused displays\nStart mouse uncaptured\nStart minimized\nMinimize when focus is lost\n"\r
 END\r
 \r
 #endif    // English resources\r
index 6275bef384b28c670bc9fb97379f0fe44f89c5eb..a06cfcd2466e7e182c51d8d32512f20375d86221 100644 (file)
@@ -728,7 +728,7 @@ static int _cdecl portAudioCallback (const void *inputBuffer, void *outputBuffer
        int bytestocopy;
        int diff;
 
-       if (!framesPerBuffer || !s->pafinishsb)
+       if (!framesPerBuffer || !s->pafinishsb || sdp->deactive)
                return paContinue;
 
        if (!s->pacallbacksize)
@@ -1702,8 +1702,15 @@ static void restart_sound_buffer2 (struct sound_data *sd)
        cf (s->writepos);
 }
 
+void pause_sound_buffer (void)
+{
+       sdp->deactive = true;
+       reset_sound ();
+}
+
 void restart_sound_buffer (void)
 {
+       sdp->deactive = false;
        restart_sound_buffer2 (sdp);
 }
 
index 908e097596a2e9781529b160dfaf34535bbf7534..aff844c703c961e63f834c4dfe5ccea4a3e72996 100644 (file)
@@ -13,6 +13,7 @@ extern uae_u16 *paula_sndbufpt;
 extern int paula_sndbufsize;
 extern void finish_sound_buffer (void);
 extern void restart_sound_buffer (void);
+extern void pause_sound_buffer (void);
 extern int init_sound (void);
 extern void close_sound (void);
 extern int setup_sound (void);
@@ -33,6 +34,7 @@ struct sound_dp;
 struct sound_data
 {
        int waiting_for_buffer;
+       int deactive;
        int devicetype;
        int obtainedfreq;
        int paused;
index 012fcdc0d60fc1870bb516ec4a273d72d12636fb..6846894d371a65cf338b6adf3b6fbabe3b4237cd 100644 (file)
@@ -158,6 +158,7 @@ static int recapture;
 static int focus;
 int mouseactive;
 int minimized;
+int monitor_off;
 
 static int mm_timerres;
 static int timermode, timeon;
@@ -683,6 +684,7 @@ static void setmouseactive2 (int active, bool allowpause)
 }
 void setmouseactive (int active)
 {
+       monitor_off = 0;
        setmouseactive2 (active, true);
 }
 
@@ -693,6 +695,7 @@ static void winuae_active (HWND hWnd, int minimized)
        struct threadpriorities *pri;
 
        write_log (_T("winuae_active(%d)\n"), minimized);
+       monitor_off = 0;
        /* without this returning from hibernate-mode causes wrong timing
        */
        timeend ();
@@ -733,7 +736,6 @@ static void winuae_active (HWND hWnd, int minimized)
                lcd_priority (1);
 #endif
        clipboard_active (hAmigaWnd, 1);
-       SetThreadExecutionState (ES_CONTINUOUS | ES_DISPLAY_REQUIRED);
 #if USETHREADCHARACTERICS
        if (os_vista && AVTask == NULL) {
                DWORD taskIndex = 0;
@@ -967,6 +969,7 @@ static LRESULT CALLBACK AmigaWindowProc (HWND hWnd, UINT message, WPARAM wParam,
        switch (message)
        {
        case WM_INPUT:
+               monitor_off = 0;
                handle_rawinput (lParam);
                DefWindowProc (hWnd, message, wParam, lParam);
                return 0;
@@ -1189,6 +1192,8 @@ static LRESULT CALLBACK AmigaWindowProc (HWND hWnd, UINT message, WPARAM wParam,
        case WM_MOUSEMOVE:
                {
                        int wm = dinput_winmouse ();
+                       
+                       monitor_off = 0;
 
                        mx = (signed short) LOWORD (lParam);
                        my = (signed short) HIWORD (lParam);
@@ -1345,10 +1350,15 @@ static LRESULT CALLBACK AmigaWindowProc (HWND hWnd, UINT message, WPARAM wParam,
        case WM_SYSCOMMAND:
                switch (wParam & 0xfff0) // Check System Calls
                {
+               // SetThreadExecutionState handles this now
                case SC_SCREENSAVE: // Screensaver Trying To Start?
+                       break;
                case SC_MONITORPOWER: // Monitor Trying To Enter Powersave?
-
-                       // SetThreadExecutionState handles this now
+                       write_log (_T("SC_MONITORPOWER=%d"), lParam);
+                       if ((int)lParam < 0)
+                               monitor_off = 0;
+                       else if ((int)lParam > 0)
+                               monitor_off = 1;
                        break;
 
                default:
@@ -1875,7 +1885,7 @@ void handle_events (void)
 {
        MSG msg;
        int was_paused = 0;
-       static int cnt;
+       static int cnt1, cnt2;
 
        if (hStatusWnd && guijoychange && window_led_joy_start > 0) {
                guijoychange = false;
@@ -1903,10 +1913,18 @@ void handle_events (void)
 #ifdef RETROPLATFORM
                rp_vsync ();
 #endif
-               cnt = 0;
+               cnt1 = 0;
                while (checkIPC (globalipc, &currprefs));
                if (quit_program)
                        break;
+               cnt2--;
+               if (cnt2 <= 0) {
+                       if (currprefs.win32_powersavedisabled)
+                               SetThreadExecutionState (ES_CONTINUOUS | ES_DISPLAY_REQUIRED);
+                       else
+                               SetThreadExecutionState (ES_CONTINUOUS);
+                       cnt2 = 10;
+               }
        }
 #if 0
        while (PeekMessage (&msg, 0, 0, 0, PM_REMOVE)) {
@@ -1920,11 +1938,19 @@ void handle_events (void)
                sound_closed = 0;
                manual_painting_needed--;
        }
-       cnt--;
-       if (cnt <= 0) {
+       cnt1--;
+       if (cnt1 <= 0) {
                figure_processor_speed ();
                flush_log ();
-               cnt = 50 * 5;
+               cnt1 = 50 * 5;
+               cnt2--;
+               if (cnt2 <= 0) {
+                       if (currprefs.win32_powersavedisabled)
+                               SetThreadExecutionState (ES_CONTINUOUS | ES_DISPLAY_REQUIRED);
+                       else
+                               SetThreadExecutionState (ES_CONTINUOUS);
+                       cnt2 = 5;
+               }
        }
 }
 
@@ -2904,7 +2930,7 @@ void target_default_options (struct uae_prefs *p, int type)
                p->win32_uaescsimode = UAESCSI_CDEMU;
                p->win32_borderless = 0;
                p->win32_blankmonitors = false;
-               p->win32_powersavedisabled = 1;
+               p->win32_powersavedisabled = true;
                p->sana2 = 0;
                p->win32_rtgmatchdepth = 1;
                p->win32_rtgscaleifsmall = 1;
@@ -2932,6 +2958,7 @@ void target_default_options (struct uae_prefs *p, int type)
                p->win32_automount_cddrives = 0;
                p->win32_automount_netdrives = 0;
                p->picasso96_modeflags = RGBFF_CLUT | RGBFF_R5G6B5PC | RGBFF_B8G8R8A8;
+               p->win32_filesystem_mangle_reserved_names = true;
        }
 }
 
@@ -3035,6 +3062,7 @@ void target_save_options (struct zfile *f, struct uae_prefs *p)
        cfgfile_target_dwrite_str (f, _T("parjoyport0"), p->win32_parjoyport0);
        cfgfile_target_dwrite_str (f, _T("parjoyport1"), p->win32_parjoyport1);
        cfgfile_target_dwrite_str (f, _T("gui_page"), p->win32_guipage);
+       cfgfile_target_dwrite_bool (f, _T("filesystem_mangle_reserved_names"), p->win32_filesystem_mangle_reserved_names);
 }
 
 static int fetchpri (int pri, int defpri)
@@ -3107,6 +3135,7 @@ int target_parse_option (struct uae_prefs *p, const TCHAR *option, const TCHAR *
                || cfgfile_string (option, value, _T("gui_page"), p->win32_guipage, sizeof p->win32_guipage / sizeof (TCHAR))
                || cfgfile_intval (option, value, _T("guikey"), &p->win32_guikey, 1)
                || cfgfile_intval (option, value, _T("kbledmode"), &p->win32_kbledmode, 1)
+               || cfgfile_yesno (option, value, _T("filesystem_mangle_reserved_names"), &p->win32_filesystem_mangle_reserved_names)
                || cfgfile_intval (option, value, _T("cpu_idle"), &p->cpu_idle, 1));
 
        if (cfgfile_yesno (option, value, _T("rtg_match_depth"), &p->win32_rtgmatchdepth))
@@ -5862,13 +5891,11 @@ void fpux_restore (int *v)
 #endif
 }
 
-typedef BOOL (CALLBACK* SETPROCESSDPIAWARE)(void);
 typedef BOOL (CALLBACK* CHANGEWINDOWMESSAGEFILTER)(UINT, DWORD);
 
 
 int PASCAL wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
 {
-       SETPROCESSDPIAWARE pSetProcessDPIAware;
        DWORD_PTR sys_aff;
        HANDLE thread;
 
@@ -5908,12 +5935,7 @@ int PASCAL wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdL
                pChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
 #endif
 
-       pSetProcessDPIAware = (SETPROCESSDPIAWARE)GetProcAddress (
-               GetModuleHandle (_T("user32.dll")), "SetProcessDPIAware");
-       if (pSetProcessDPIAware)
-               pSetProcessDPIAware ();
        log_open (NULL, 0, 0);
-
        
        __try {
                WinMain2 (hInstance, hPrevInstance, lpCmdLine, nCmdShow);
index 8ec6dc967152ad150fbef075e13d895e04b9f46a..4569364b8c4e1b82fe426bae1b9aa889c8b03ff5 100644 (file)
@@ -19,8 +19,8 @@
 #define LANG_DLL 1
 
 //#define WINUAEBETA _T("")
-#define WINUAEBETA _T("12")
-#define WINUAEDATE MAKEBD(2012, 8, 14)
+#define WINUAEBETA _T("13")
+#define WINUAEDATE MAKEBD(2012, 8, 26)
 #define WINUAEEXTRA _T("")
 //#define WINUAEEXTRA _T("AmiKit Preview")
 #define WINUAEREV _T("")
@@ -37,6 +37,7 @@ extern int manual_painting_needed;
 extern int manual_palette_refresh_needed;
 extern int mouseactive;
 extern int minimized;
+extern int monitor_off;
 extern int ignore_messages_all;
 extern void *globalipc, *serialipc;
 
@@ -195,4 +196,8 @@ struct assext {
 struct assext exts[];
 void associate_file_extensions (void);
 
+#define PATHPREFIX _T("\\\\?\\")
+DWORD GetFileAttributesSafe (const TCHAR *name);
+BOOL SetFileAttributesSafe (const TCHAR *name, DWORD attr);
+
 #endif
index 46acb13ea00d9d441c3e5569ef09405ba04272af..9c6e25b24dfabc1ae175269e3c2da4e81a61e5ed 100644 (file)
@@ -147,7 +147,8 @@ void getfilterrect2 (RECT *sr, RECT *dr, RECT *zr, int dst_width, int dst_height
        bool specialmode = !isnativevidbuf ();
        float mrmx, mrmy, mrsx, mrsy;
        int extraw2;
-
+       bool doautoaspect = false;
+       float autoaspectratio;
 
        int filter_horiz_zoom = currprefs.gfx_filter_horiz_zoom;
        int filter_vert_zoom = currprefs.gfx_filter_vert_zoom;
@@ -232,7 +233,7 @@ void getfilterrect2 (RECT *sr, RECT *dr, RECT *zr, int dst_width, int dst_height
        bool scl = false;
 
        if (scalemode) {
-               int cw, ch, cx, cy, cv;
+               int cw, ch, cx, cy, cv, crealh = 0;
                static int oxmult, oymult;
 
                filterxmult = 1000 / scale;
@@ -276,7 +277,7 @@ void getfilterrect2 (RECT *sr, RECT *dr, RECT *zr, int dst_width, int dst_height
                                }
 
                                if (scalemode == AUTOSCALE_INTEGER_AUTOSCALE)
-                                       ok = get_custom_limits (&cw, &ch, &cx, &cy);
+                                       ok = get_custom_limits (&cw, &ch, &cx, &cy, &crealh);
                                if (scalemode == AUTOSCALE_INTEGER || ok == false)
                                        getmanualpos (&cx, &cy, &cw, &ch);
 
@@ -330,11 +331,11 @@ void getfilterrect2 (RECT *sr, RECT *dr, RECT *zr, int dst_width, int dst_height
 
                } else if (scalemode == AUTOSCALE_CENTER || scalemode == AUTOSCALE_RESIZE) {
 
-                       cv = get_custom_limits (&cw, &ch, &cx, &cy);
+                       cv = get_custom_limits (&cw, &ch, &cx, &cy, &crealh);
 
                } else {
 
-                       cv = get_custom_limits (&cw, &ch, &cx, &cy);
+                       cv = get_custom_limits (&cw, &ch, &cx, &cy, &crealh);
                        if (cv) {
                                set_custom_limits (cw, ch, cx, cy);
                                scl = true;
@@ -344,6 +345,12 @@ void getfilterrect2 (RECT *sr, RECT *dr, RECT *zr, int dst_width, int dst_height
 
                if (!scl)
                        set_custom_limits (-1, -1, -1, -1);
+       
+               autoaspectratio = 0;
+               if (currprefs.gfx_filter_keep_autoscale_aspect && crealh > 0 && (scalemode == AUTOSCALE_NORMAL || scalemode == AUTOSCALE_INTEGER_AUTOSCALE)) {
+                       autoaspectratio = ((float)crealh / ch);
+                       doautoaspect = true;
+               }
 
                if (currprefs.gfx_api == 0) {
                        if (cx < 0)
@@ -450,11 +457,14 @@ void getfilterrect2 (RECT *sr, RECT *dr, RECT *zr, int dst_width, int dst_height
                        filteroffsetx = -zr->left / scale;
                        filteroffsety = -zr->top / scale;
 
+                       bool aspect = false;
+                       int diffx = dr->right - dr->left;
+                       int diffy = dr->bottom - dr->top;
+
+                       xmult = 1.0;
+                       ymult = 1.0;
+
                        if (currprefs.gfx_filter_keep_aspect || currprefs.gfx_filter_aspect != 0) {
-                               int diffx = dr->right - dr->left;
-                               int diffy = dr->bottom - dr->top;
-                               float xmult = 1.0;
-                               float ymult = 1.0;
 
                                if (currprefs.gfx_filter_keep_aspect) {
                                        if (currprefs.ntscmode) {
@@ -470,6 +480,19 @@ void getfilterrect2 (RECT *sr, RECT *dr, RECT *zr, int dst_width, int dst_height
                                                        dstratio = dstratio * 0.95;
                                        }
                                }
+                               aspect = true;
+
+                       } else if (doautoaspect) {
+
+                               aspect = true;
+
+                       }
+
+                       if (aspect) {
+
+                               if (doautoaspect) {
+                                       srcratio *= autoaspectratio;
+                               }
 
                                if (srcratio > dstratio) {
                                        ymult = ymult * srcratio / dstratio;
@@ -500,6 +523,7 @@ void getfilterrect2 (RECT *sr, RECT *dr, RECT *zr, int dst_width, int dst_height
 
        }
 cont:
+
        if (!filter_horiz_zoom_mult && !filter_vert_zoom_mult) {
 
                sizeoffset (dr, zr, extraw, extrah);
index 0aeb1cb8cb491f410dead11487cdc927c5d748e8..4a409fcf906fdf8dcd3065ce2dcbed74df818da1 100644 (file)
@@ -930,7 +930,7 @@ bool render_screen (bool immediate)
        bool v = false;
 
        render_ok = false;
-       if (minimized || picasso_on || dx_islost ())
+       if (minimized || picasso_on || monitor_off || dx_islost ())
                return render_ok;
        flushymin = 0;
        flushymax = currentmode->amiga_height;
@@ -1744,7 +1744,7 @@ int check_prefs_changed_gfx (void)
                currprefs.gfx_ycenter = changed_prefs.gfx_ycenter;
                currprefs.gfx_filter_autoscale = changed_prefs.gfx_filter_autoscale;
 
-               get_custom_limits (NULL, NULL, NULL, NULL);
+               get_custom_limits (NULL, NULL, NULL, NULL, NULL);
                fixup_prefs_dimensions (&changed_prefs);
 
                return 1;
index 8aeac11750506b01092a38ee86edef19e7f6f6af..01206bf722c101899cf1f3c6421a4b7706c9635c 100644 (file)
 #include "rp.h"
 #endif
 
+#define GUI_SCALE_DEFAULT 90
+#define MIN_GUI_INTERNAL_WIDTH 512
+#define MIN_GUI_INTERNAL_HEIGHT 400
+
 #define ARCHIVE_STRING _T("*.zip;*.7z;*.rar;*.lha;*.lzh;*.lzx")
 
 #define DISK_FORMAT_STRING _T("(*.adf;*.adz;*.gz;*.dms;*.fdi;*.ipf;*.exe)\0*.adf;*.adz;*.gz;*.dms;*.fdi;*.ipf;*.exe;*.ima;*.wrp;*.dsq;*.st;") ARCHIVE_STRING _T("\0")
@@ -132,6 +136,7 @@ extern int mouseactive;
 
 TCHAR config_filename[256] = _T("");
 static TCHAR stored_path[MAX_DPATH];
+static int gui_size_changed;
 
 #define Error(x) MessageBox (NULL, (x), _T("WinUAE Error"), MB_OK)
 
@@ -1763,7 +1768,9 @@ int target_cfgfile_load (struct uae_prefs *p, const TCHAR *filename, int type, i
        return v;
 }
 
-static int gui_width = 640, gui_height = 480;
+static int gui_width, gui_height;
+static bool gui_resize;
+// Internal panel max size: 396, 318
 
 static int mm = 0;
 static void m (void)
@@ -1812,9 +1819,6 @@ void gui_display (int shortcut)
                w = currprefs.gfx_size.width;
                h = currprefs.gfx_size.height;
        }
-       scaleresource_setmaxsize (-1, -1);
-       if (w > 0 && h > 0)
-               scaleresource_setmaxsize (w, h);
        manual_painting_needed++; /* So that WM_PAINT will refresh the display */
 
        flush_log ();
@@ -3346,6 +3350,10 @@ static void getqualifiername (TCHAR *p, uae_u64 mask)
                _tcscpy (p, _T("Alt"));
        } else if (mask == (IDEV_MAPPED_QUALIFIER_ALT << 1)) {
                _tcscpy (p, _T("Alt [R]"));
+       } else if (mask == IDEV_MAPPED_QUALIFIER_WIN) {
+               _tcscpy (p, _T("Win"));
+       } else if (mask == (IDEV_MAPPED_QUALIFIER_WIN << 1)) {
+               _tcscpy (p, _T("Win [R]"));
        } else {
                int j;
                uae_u64 i;
@@ -3757,8 +3765,12 @@ void InitializeListView (HWND hDlg)
 
        } else if (lv_type == LV_MISC1) {
 
+               int itemids[] = { IDS_MISCLISTITEMS1, IDS_MISCLISTITEMS2, IDS_MISCLISTITEMS3, -1 };
+               int itemoffset = 0;
+               int itemcnt = 0;
                listview_column_width[0] = 150;
                for (i = 0; misclist[i].name; i++) {
+                       TCHAR tmpentry[MAX_DPATH], itemname[MAX_DPATH];
                        struct miscentry *me = &misclist[i];
                        int type = me->type;
                        bool checked = false;
@@ -3768,9 +3780,36 @@ void InitializeListView (HWND hDlg)
                        } else if (me->i) {
                                checked = ((*me->i) & me->imask) != 0;
                        }
+                       _tcscpy (itemname, me->name);
+
+                       for (;;) {
+                               if (itemids[itemcnt] < 0)
+                                       break;
+                               WIN32GUI_LoadUIString (itemids[itemcnt], tmpentry, sizeof tmpentry / sizeof (TCHAR));
+                               TCHAR *p = tmpentry;
+                               for (int j = 0; j < itemoffset; j++) {
+                                       p = _tcschr (p, '\n');
+                                       if (!p || p[1] == 0) {
+                                               p = NULL;
+                                               itemoffset = 0;
+                                               itemcnt++;
+                                               break;
+                                       }
+                                       p++;
+                               }
+                               if (!p)
+                                       continue;
+                               TCHAR *p2 = _tcschr (p, '\n');
+                               if (p2) {
+                                       *p2 = 0;
+                                       _tcscpy (itemname, p);
+                               }
+                               itemoffset++;
+                               break;
+                       }
 
                        lvstruct.mask     = LVIF_TEXT | LVIF_PARAM;
-                       lvstruct.pszText  = me->name;
+                       lvstruct.pszText  = itemname;
                        lvstruct.lParam   = 0;
                        lvstruct.iItem    = i;
                        lvstruct.iSubItem = 0;
@@ -4578,6 +4617,9 @@ static void SetupRichText(HWND hDlg, urlinfo *url)
 {
        CHARFORMAT CharFormat;
        CharFormat.cbSize = sizeof (CharFormat);
+       int my;
+
+       scaleresource_getmult (NULL, &my);
 
        SetDlgItemText (hDlg, url->id, url->display);
        SendDlgItemMessage (hDlg, url->id, EM_GETCHARFORMAT, 0, (LPARAM)&CharFormat);
@@ -7737,7 +7779,16 @@ static void misc_lang (HWND hDlg)
                }
        }
        SendDlgItemMessage (hDlg, IDC_LANGUAGE, CB_SETCURSEL, idx, 0);
+
+       SendDlgItemMessage (hDlg, IDC_GUI_SIZE, CB_RESETCONTENT, 0, 0);
+       SendDlgItemMessage (hDlg, IDC_GUI_SIZE, CB_ADDSTRING, 0, (LPARAM)_T("Select"));
+       SendDlgItemMessage (hDlg, IDC_GUI_SIZE, CB_ADDSTRING, 0, (LPARAM)_T("110%"));
+       SendDlgItemMessage (hDlg, IDC_GUI_SIZE, CB_ADDSTRING, 0, (LPARAM)_T("100%"));
+       SendDlgItemMessage (hDlg, IDC_GUI_SIZE, CB_ADDSTRING, 0, (LPARAM)_T(" 90%"));
+       SendDlgItemMessage (hDlg, IDC_GUI_SIZE, CB_ADDSTRING, 0, (LPARAM)_T(" 80%"));
+       SendDlgItemMessage (hDlg, IDC_GUI_SIZE, CB_SETCURSEL, 0, 0);
 }
+
 static void misc_setlang (int v)
 {
        int i;
@@ -7767,6 +7818,12 @@ static void misc_setlang (int v)
        exit_gui(0);
 }
 
+static void misc_gui_font (HWND hDlg, int fonttype)
+{
+       if (scaleresource_choosefont (hDlg, fonttype))
+               gui_size_changed = 1;
+}
+
 static void values_to_miscdlg (HWND hDlg)
 {
        TCHAR tmp[MAX_DPATH];
@@ -7777,6 +7834,7 @@ static void values_to_miscdlg (HWND hDlg)
                misc_kbled (hDlg, IDC_KBLED2, workprefs.keyboard_leds[1]);
                misc_kbled (hDlg, IDC_KBLED3, workprefs.keyboard_leds[2]);
                CheckDlgButton (hDlg, IDC_KBLED_USB, workprefs.win32_kbledmode);
+               CheckDlgButton (hDlg, IDC_GUI_RESIZE, gui_resize);
 
                misc_scsi (hDlg);
                misc_lang (hDlg);
@@ -7936,7 +7994,7 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
                                        if (HIWORD (wParam) == CBN_SELENDOK) {
                                                v = SendDlgItemMessage (hDlg, IDC_LANGUAGE, CB_GETCURSEL, 0, 0L);
                                                if (v != CB_ERR)
-                                                       misc_setlang(v);
+                                                       misc_setlang (v);
                                        }
                                        break;
                                case IDC_DXMODE:
@@ -7979,6 +8037,32 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 
                switch(wParam)
                {
+               case IDC_GUI_DEFAULT:
+                       scaleresource_setdefaults ();
+                       v = SendDlgItemMessage (hDlg, IDC_GUI_SIZE, CB_GETCURSEL, 0, 0L);
+                       if (v != CB_ERR) {
+                               if (v == 0) {
+                                       v = GUI_SCALE_DEFAULT;
+                               } else {
+                                       v--;
+                                       v = 110 - v * 10;
+                               }
+                               gui_width = GUI_INTERNAL_WIDTH * v / 100;
+                               gui_height = GUI_INTERNAL_HEIGHT * v / 100;
+                               scaleresource_setmult (guiDlg, gui_width, gui_height);
+                               gui_size_changed = 1;
+                       }
+                       break;
+               case IDC_GUI_FONT:
+                       misc_gui_font (hDlg, 0);
+                       break;
+               case IDC_GUI_LISTFONT:
+                       misc_gui_font (hDlg, 1);
+                       break;
+               case IDC_GUI_RESIZE:
+                       gui_resize = ischecked (hDlg, IDC_GUI_RESIZE);
+                       gui_size_changed = 2;
+               break;
                case IDC_ASSOCIATE_ON:
                        for (i = 0; exts[i].ext; i++)
                                exts[i].enabled = 1;
@@ -9727,16 +9811,21 @@ static void harddiskdlg_volume_notify (HWND hDlg, NM_LISTVIEW *nmlistview)
        }
 }
 
-static void hilitehd (void)
+static void hilitehd (HWND hDlg)
 {
        int total = ListView_GetItemCount (cachedlist);
-       if (total <= 0)
+       if (total <= 0) {
+               ew (hDlg, IDC_EDIT, FALSE);
+               ew (hDlg, IDC_REMOVE, FALSE);
                return;
+       }
        if (clicked_entry < 0)
                clicked_entry = 0;
        if (clicked_entry >= total)
                clicked_entry = total;
        ListView_SetItemState (cachedlist, clicked_entry, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
+       ew (hDlg, IDC_EDIT, TRUE);
+       ew (hDlg, IDC_REMOVE, TRUE);
 }
 
 static INT_PTR CALLBACK HarddiskDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -9760,7 +9849,7 @@ static INT_PTR CALLBACK HarddiskDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPA
                addfloppyhistory_2 (hDlg, 0, IDC_CD_TEXT, HISTORY_CD);
                addcdtype (hDlg, IDC_CD_TYPE);
                InitializeListView (hDlg);
-               hilitehd ();
+               hilitehd (hDlg);
                break;
 
        case WM_MOUSEMOVE:
@@ -9774,7 +9863,7 @@ static INT_PTR CALLBACK HarddiskDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPA
                                move_filesys_unitconfig (&workprefs, draggeditems[0], item);
                                InitializeListView (hDlg);
                                clicked_entry = item;
-                               hilitehd ();
+                               hilitehd (hDlg);
                        }
                        xfree (draggeditems);
                        break;
@@ -9824,16 +9913,16 @@ static INT_PTR CALLBACK HarddiskDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPA
                        {
                        case 10001:
                                clicked_entry--;
-                               hilitehd ();
+                               hilitehd (hDlg);
                                break;
                        case 10002:
                                clicked_entry++;
-                               hilitehd ();
+                               hilitehd (hDlg);
                                break;
                        default:
                                if (harddiskdlg_button (hDlg, wParam)) {
                                        InitializeListView (hDlg);
-                                       hilitehd ();
+                                       hilitehd (hDlg);
                                }
                                break;
                        }
@@ -11696,6 +11785,7 @@ static void init_inputdlg_2 (HWND hDlg)
        WIN32GUI_LoadUIString (IDS_INPUT_CUSTOMEVENT, tmp1, MAX_DPATH);
        SendDlgItemMessage (hDlg, IDC_INPUTAMIGA, CB_ADDSTRING, 0, (LPARAM)tmp1);
        index = 0; af = 0; port = 0;
+       input_selected_event = -1;
        if (input_selected_widget >= 0) {
                inputdevice_get_mapping (input_selected_device, input_selected_widget, NULL, &port, name1, custom1, input_selected_sub_num);
                cnt = 2;
@@ -11714,6 +11804,7 @@ static void init_inputdlg_2 (HWND hDlg)
                if (index >= 0) {
                        SendDlgItemMessage (hDlg, IDC_INPUTAMIGA, CB_SETCURSEL, index, 0);
                        SendDlgItemMessage (hDlg, IDC_INPUTAMIGACNT, CB_SETCURSEL, input_selected_sub_num, 0);
+                       input_selected_event = index;
                }
        }
        if (input_selected_widget < 0 || workprefs.input_selected_setting == GAMEPORT_INPUT_SETTINGS || port > 0) {
@@ -11811,6 +11902,7 @@ static void doinputcustom (HWND hDlg, int newcustom)
                &flags, NULL, NULL, custom1, input_selected_sub_num);
        if (_tcslen (custom1) > 0 || newcustom) {
                if (askinputcustom (hDlg, custom1, sizeof custom1 / sizeof (TCHAR), IDS_SB_CUSTOMEVENT)) {
+                       if (custom1[0])
                        inputdevice_set_mapping (input_selected_device, input_selected_widget,
                                NULL, custom1, flags, -1, input_selected_sub_num);
                }
@@ -11842,6 +11934,7 @@ static void values_from_inputdlg (HWND hDlg, int inputchange)
 {
        int doselect = 0;
        LRESULT item;
+       bool iscustom = false;
 
        item = SendDlgItemMessage (hDlg, IDC_INPUTAMIGACNT, CB_GETCURSEL, 0, 0L);
        if (item != CB_ERR && input_selected_sub_num != item) {
@@ -11853,7 +11946,7 @@ static void values_from_inputdlg (HWND hDlg, int inputchange)
        }
 
        item = SendDlgItemMessage (hDlg, IDC_INPUTTYPE, CB_GETCURSEL, 0, 0L);
-       if(item != CB_ERR) {
+       if (item != CB_ERR) {
                if (item != workprefs.input_selected_setting) {
                        workprefs.input_selected_setting = (int)item;
                        input_selected_widget = -1;
@@ -11864,7 +11957,7 @@ static void values_from_inputdlg (HWND hDlg, int inputchange)
                }
        }
        item = SendDlgItemMessage (hDlg, IDC_INPUTDEVICE, CB_GETCURSEL, 0, 0L);
-       if(item != CB_ERR) {
+       if (item != CB_ERR) {
                if (item != input_selected_device) {
                        input_selected_device = (int)item;
                        input_selected_widget = -1;
@@ -11876,22 +11969,26 @@ static void values_from_inputdlg (HWND hDlg, int inputchange)
                }
        }
        item = SendDlgItemMessage (hDlg, IDC_INPUTAMIGA, CB_GETCURSEL, 0, 0L);
-       if(item != CB_ERR) {
+       if (item != CB_ERR) {
                if (item != input_selected_event) {
+                       uae_u64 flags;
+                       TCHAR custom[MAX_DPATH];
                        input_selected_event = (int)item;
                        doselect = 1;
-                       if (item == 1) {
+                       inputdevice_get_mapping (input_selected_device, input_selected_widget,
+                               &flags, NULL, 0, custom, input_selected_sub_num);
+                       if (item == 1 && custom[0] == 0) {
                                doinputcustom (hDlg, 1);
+                               iscustom = true;
                        }
                }
        }
 
        if (inputchange && doselect && input_selected_device >= 0 && input_selected_event >= 0) {
                uae_u64 flags;
-               bool iscustom = false;
                TCHAR custom[MAX_DPATH];
 
-               if (eventnames[input_selected_event] && !_tcscmp (inputdevice_get_eventinfo (INPUTEVENT_SPC_CUSTOM_EVENT)->name, eventnames[input_selected_event])) {
+               if (!iscustom && eventnames[input_selected_event] && !_tcscmp (inputdevice_get_eventinfo (INPUTEVENT_SPC_CUSTOM_EVENT)->name, eventnames[input_selected_event])) {
                        doinputcustom (hDlg, 1);
                        iscustom = true;
                }
@@ -12414,15 +12511,155 @@ static int genericpopupmenu (HWND hwnd, TCHAR **items, int *flags, int num)
        return item - 1;
 }
 
+static void qualifierlistview (HWND list)
+{
+       uae_u64 flags;
+       int evt;
+       TCHAR name[256];
+       TCHAR custom[MAX_DPATH];
+
+       evt = inputdevice_get_mapping (input_selected_device, input_selected_widget,
+               &flags, NULL, name, custom, input_selected_sub_num);
+
+       ListView_DeleteAllItems (list);
+
+       for (int i = 0; i < MAX_INPUT_QUALIFIERS; i++) {
+               TCHAR tmp[MAX_DPATH];
+               getqualifiername (tmp, IDEV_MAPPED_QUALIFIER1 << (i * 2));
+
+               LV_ITEM lvi = { 0 };
+               lvi.mask     = LVIF_TEXT | LVIF_PARAM;
+               lvi.pszText  = tmp;
+               lvi.lParam   = 0;
+               lvi.iItem    = i;
+               lvi.iSubItem = 0;
+               ListView_InsertItem (list, &lvi);
+
+               _tcscpy (tmp, _T("-"));
+               if (flags & (IDEV_MAPPED_QUALIFIER1 << (i * 2)))
+                       _tcscpy (tmp, _T("*"));
+               else if (flags & (IDEV_MAPPED_QUALIFIER1 << (i * 2 + 1)))
+                       _tcscpy (tmp, _T("R"));
+
+               ListView_SetItemText (list, i, 1, tmp);
+
+       }
+}
+
+static INT_PTR CALLBACK QualifierProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+       static int recursive = 0;
+       HWND list = GetDlgItem (hDlg, IDC_LISTDIALOG_LIST);
+
+
+       switch (msg)
+       {
+       case WM_INITDIALOG:
+               {
+                       recursive++;
+
+                       int lvflags = LVS_EX_DOUBLEBUFFER | LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT | LVS_EX_FULLROWSELECT;
+                       ListView_SetExtendedListViewStyleEx (list, lvflags , lvflags);
+
+                       LV_COLUMN lvc = { 0 };
+
+                       lvc.mask     = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
+                       lvc.iSubItem = 0;
+                       lvc.fmt      = LVCFMT_LEFT;
+                       lvc.pszText  = _T("Qualifier");
+                       lvc.cx       = 150;
+                       ListView_InsertColumn (list, 0, &lvc);
+                       lvc.mask     = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
+                       lvc.iSubItem = 1;
+                       lvc.fmt      = LVCFMT_LEFT;
+                       lvc.pszText  = _T("Selection");
+                       lvc.cx       = 150;
+                       ListView_InsertColumn (list, 1, &lvc);
+
+
+                       qualifierlistview (list);
+
+                       recursive--;
+               }
+               return TRUE;
+
+       case WM_NOTIFY:
+               if (((LPNMHDR) lParam)->idFrom == IDC_LISTDIALOG_LIST)
+               {
+                       uae_u64 flags;
+                       int evt;
+                       TCHAR name[256];
+                       TCHAR custom[MAX_DPATH];
+                       int column, entry;
+                       NM_LISTVIEW *nmlistview = (NM_LISTVIEW *) lParam;
+                       list = nmlistview->hdr.hwndFrom;
+                       switch (nmlistview->hdr.code)
+                       {
+                       case NM_RCLICK:
+                       case NM_CLICK:
+                               entry = listview_entry_from_click (list, &column);
+                               if (entry >= 0) {
+                                       uae_u64 mask = IDEV_MAPPED_QUALIFIER1 << (entry * 2);
+                                       evt = inputdevice_get_mapping (input_selected_device, input_selected_widget,
+                                               &flags, NULL, name, custom, input_selected_sub_num);
+                                       if (evt <= 0)
+                                               name[0] = 0;
+                                       if (flags & mask) {
+                                               flags &= ~(mask | (mask << 1));
+                                               flags |= mask << 1;
+                                       } else if (flags & (mask << 1)) {
+                                               flags &= ~(mask | (mask << 1));
+                                       } else {
+                                               flags &= ~(mask | (mask << 1));
+                                               flags |= mask;
+                                       }
+                                       inputdevice_set_mapping (input_selected_device, input_selected_widget,
+                                               name, custom, flags, -1, input_selected_sub_num);
+                                       qualifierlistview (list);
+                               }
+                       }
+               }
+               break;
+               case WM_COMMAND:
+               if (recursive)
+                       break;
+               recursive++;
+
+               switch(wParam)
+               {
+               case IDC_LISTDIALOG_CLEAR:
+                       {
+                               uae_u64 flags;
+                               int evt;
+                               TCHAR name[256];
+                               TCHAR custom[MAX_DPATH];
+                               evt = inputdevice_get_mapping (input_selected_device, input_selected_widget,
+                                       &flags, NULL, name, custom, input_selected_sub_num);
+                               flags &= ~IDEV_MAPPED_QUALIFIER_MASK;
+                               inputdevice_set_mapping (input_selected_device, input_selected_widget,
+                                       name, custom, flags, -1, input_selected_sub_num);
+                               qualifierlistview (list);
+                               break;
+                       }
+               case IDOK:
+                       EndDialog (hDlg, 1);
+                       break;
+               case IDCANCEL:
+                       EndDialog (hDlg, 0);
+                       break;
+               }
+               recursive--;
+               break;
+       }
+       return FALSE;
+}
+
 static void input_qualifiers (HWND hDlg)
 {
        uae_u64 flags;
-       int evt, item;
+       int evt;
        TCHAR name[256];
        TCHAR custom[MAX_DPATH];
-       TCHAR *names[MAX_INPUT_QUALIFIERS * 2];
-       int mflags[MAX_INPUT_QUALIFIERS * 2];
-       TCHAR tmp[MAX_DPATH];
        
        if (input_selected_device < 0 || input_selected_widget < 0)
                return;
@@ -12431,23 +12668,15 @@ static void input_qualifiers (HWND hDlg)
        if (evt <= 0)
                name[0] = 0;
        
-       for (int i = 0; i < MAX_INPUT_QUALIFIERS * 2; i++) {
-               getqualifiername (tmp, IDEV_MAPPED_QUALIFIER1 << i);
-               mflags[i] = 0;
-               if (flags & (IDEV_MAPPED_QUALIFIER1 << i))
-                       mflags[i] = 1;
-               names[i] = my_strdup (tmp);
-       }
-       item = genericpopupmenu (hDlg, names, mflags, MAX_INPUT_QUALIFIERS * 2);
+       CustomDialogBox (IDD_LIST, hDlg, QualifierProc);
+#if 0
+       int item = genericpopupmenu (hDlg, names, mflags, MAX_INPUT_QUALIFIERS * 2);
        if (item >= 0)
                flags ^= IDEV_MAPPED_QUALIFIER1 << item;
 
        inputdevice_set_mapping (input_selected_device, input_selected_widget,
                name, custom, flags, -1, input_selected_sub_num);
-
-       for (int i = 0; i < MAX_INPUT_QUALIFIERS * 2; i++) {
-               xfree (names[i]);
-       }
+#endif
 }
 static void input_toggletoggle (void)
 {
@@ -12663,6 +12892,7 @@ static void enable_for_hw3ddlg (HWND hDlg)
        ew (hDlg, IDC_FILTERKEEPASPECT, v);
        ew (hDlg, IDC_FILTERASPECT, v);
        ew (hDlg, IDC_FILTERASPECT2, v && workprefs.gfx_filter_keep_aspect);
+       ew (hDlg, IDC_FILTERKEEPAUTOSCALEASPECT, (workprefs.gfx_filter_autoscale == AUTOSCALE_NORMAL || workprefs.gfx_filter_autoscale == AUTOSCALE_INTEGER_AUTOSCALE));
        ew (hDlg, IDC_FILTEROVERLAY, workprefs.gfx_api);
        ew (hDlg, IDC_FILTEROVERLAYTYPE, workprefs.gfx_api);
 
@@ -12805,6 +13035,7 @@ static void values_to_hw3ddlg (HWND hDlg)
                (workprefs.gfx_filter_aspect == 16 * 256 + 10) ? 6 : 0, 0);
 
        CheckDlgButton (hDlg, IDC_FILTERKEEPASPECT, workprefs.gfx_filter_keep_aspect);
+       CheckDlgButton (hDlg, IDC_FILTERKEEPAUTOSCALEASPECT, workprefs.gfx_filter_keep_autoscale_aspect != 0);
 
        SendDlgItemMessage (hDlg, IDC_FILTERASPECT2, CB_SETCURSEL,
                workprefs.gfx_filter_keep_aspect, 0);
@@ -13293,6 +13524,14 @@ static INT_PTR CALLBACK hw3dDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
                                updatedisplayarea ();
                                WIN32GFX_WindowMove ();
                        }
+               case IDC_FILTERKEEPAUTOSCALEASPECT:
+                       {
+                               workprefs.gfx_filter_keep_autoscale_aspect = currprefs.gfx_filter_keep_autoscale_aspect = ischecked (hDlg, IDC_FILTERKEEPAUTOSCALEASPECT) ? 10 : 0;
+                               enable_for_hw3ddlg (hDlg);
+                               values_to_hw3ddlg (hDlg);
+                               updatedisplayarea ();
+                               WIN32GFX_WindowMove ();
+                       }
                        break;
                default:
                        if (HIWORD (wParam) == CBN_SELCHANGE || HIWORD (wParam) == CBN_KILLFOCUS)  {
@@ -13981,20 +14220,30 @@ static BOOL CALLBACK childenumproc (HWND hwnd, LPARAM lParam)
        return 1;
 }
 
-#define PANEL_X 174
-#define PANEL_Y 12
-#define PANEL_WIDTH 456
-#define PANEL_HEIGHT 396
+static void getguisize (HWND hDlg, int *width, int *height)
+{
+       RECT r;
+
+       GetClientRect (hDlg, &r);
+       *width = r.right;
+       *height = r.bottom;
+}
 
 static HWND updatePanel (int id)
 {
        HWND hDlg = guiDlg;
        static HWND hwndTT;
+       static bool first = true;
        RECT r1c, r1w, r2c, r2w, r3c, r3w;
-       int w, h, pw, ph, x , y, i;
+       int w, h, x , y, i, pw, ph;
        int fullpanel;
        struct newresource *tres;
 
+       if (first) {
+               first = false;
+               getguisize (hDlg, &gui_width, &gui_height);
+       }
+
        if (cachedlist) {
                if (lv_old_type >= 0)
                        lv_oldidx[lv_old_type] = ListView_GetTopIndex (cachedlist);
@@ -14041,16 +14290,19 @@ static HWND updatePanel (int id)
                return NULL;
        }
 
-       fullpanel = ppage[id].fullpanel;
        GetWindowRect (GetDlgItem (hDlg, IDC_PANEL_FRAME), &r1w);
        GetClientRect (GetDlgItem (hDlg, IDC_PANEL_FRAME), &r1c);
        GetWindowRect (hDlg, &r2w);
        GetClientRect (hDlg, &r2c);
        gui_width = r2c.right;
        gui_height = r2c.bottom;
-       tres = scaleresource (ppage[id].nres, hDlg);
+
+       fullpanel = ppage[id].fullpanel;
+       tres = scaleresource (ppage[id].nres, hDlg, -1);
        panelDlg = CreateDialogIndirectParam (tres->inst, tres->resource, hDlg, ppage[id].dlgproc, id);
        freescaleresource(tres);
+       scaleresource_setfont (panelDlg);
+       
        GetWindowRect (hDlg, &r3w);
        GetClientRect (panelDlg, &r3c);
        x = r1w.left - r2w.left;
@@ -14069,6 +14321,7 @@ static HWND updatePanel (int id)
                SetWindowPos (panelDlg, HWND_TOP, x + (pw - w) / 2, y + (ph - h) / 2, 0, 0,
                        SWP_NOSIZE | SWP_NOOWNERZORDER);
        }
+
        ShowWindow (GetDlgItem (hDlg, IDC_PANEL_FRAME), SW_HIDE);
        ShowWindow (GetDlgItem (hDlg, IDC_PANEL_FRAME_OUTER), !fullpanel ? SW_SHOW : SW_HIDE);
        ShowWindow (GetDlgItem (hDlg, IDC_PANELTREE), !fullpanel ? SW_SHOW : SW_HIDE);
@@ -14216,7 +14469,7 @@ static bool dodialogmousemove (void)
 {
        if (full_property_sheet || isfullscreen () <= 0)
                return false;
-       if (currprefs.gfx_size_fs.width >= 640 && currprefs.gfx_size.height >= 480)
+       if (currprefs.gfx_size_fs.width >= gui_width && currprefs.gfx_size.height >= gui_height)
                return false;
        struct MultiDisplay *mdc = getdisplay (&currprefs);
        for (int i = 0; Displays[i].monitorid; i++) {
@@ -14253,7 +14506,7 @@ static void centerWindow (HWND hDlg)
        SetForegroundWindow (hDlg);
        pt1.x = x + 100;
        pt1.y = y + (GetSystemMetrics (SM_CYMENU) + GetSystemMetrics (SM_CYBORDER)) / 2;
-       pt2.x = x + 640 - 100;
+       pt2.x = x + gui_width - 100;
        pt2.y = pt1.y;
        if (MonitorFromPoint (pt1, MONITOR_DEFAULTTONULL) == NULL && MonitorFromPoint (pt2, MONITOR_DEFAULTTONULL) == NULL) {
                if (isfullscreen () > 0) {
@@ -14521,9 +14774,40 @@ static INT_PTR CALLBACK DialogProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l
 {
        static int recursive = 0;
        static int waitfornext;
+       static int oldwidth, oldheight;
 
        switch (msg)
        {
+       case WM_SIZING:
+       {
+               if (!recursive) {
+                       RECT *r = (RECT*)lParam;
+                       if (r->right - r->left < MIN_GUI_INTERNAL_WIDTH)
+                               r->right = r->left + MIN_GUI_INTERNAL_WIDTH;
+                       if (r->bottom - r->top < MIN_GUI_INTERNAL_HEIGHT)
+                               r->bottom = r->top + MIN_GUI_INTERNAL_HEIGHT;
+                       return FALSE;
+               }
+               break;
+       }
+       case WM_ENTERSIZEMOVE:
+               if (!recursive) {
+                       getguisize (hDlg, &oldwidth, &oldheight);
+                       return FALSE;
+               }
+               break;
+       case WM_EXITSIZEMOVE:
+               if (!recursive) {
+                       int w, h;
+                       getguisize (hDlg, &w, &h);
+                       if (w != oldwidth || h != oldheight) {
+                               gui_width = w;
+                               gui_height = h;
+                               gui_size_changed = 1;
+                       }
+                       return FALSE;
+               }
+               break;
        case WM_DEVICECHANGE:
                {
                        DEV_BROADCAST_HDR *pBHdr = (DEV_BROADCAST_HDR *)lParam;
@@ -14564,6 +14848,7 @@ static INT_PTR CALLBACK DialogProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l
        case WM_INITDIALOG:
                waitfornext = 0;
                guiDlg = hDlg;
+               scaleresource_setfont (hDlg);
                SendMessage (hDlg, WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon (GetModuleHandle (NULL), MAKEINTRESOURCE(IDI_APPICON)));
                if (full_property_sheet) {
                        TCHAR tmp[100];
@@ -14701,7 +14986,7 @@ INT_PTR CustomDialogBox (int templ, HWND hDlg, DLGPROC proc)
        res = getresource (templ);
        if (!res)
                return h;
-       r = scaleresource (res, hDlg);
+       r = scaleresource (res, hDlg, -1);
        if (r) {
                h = DialogBoxIndirect (r->inst, r->resource, hDlg, proc);
                freescaleresource (r);
@@ -14720,7 +15005,7 @@ HWND CustomCreateDialog (int templ, HWND hDlg, DLGPROC proc)
        res = getresource (templ);
        if (!res)
                return h;
-       r = scaleresource (res, hDlg);
+       r = scaleresource (res, hDlg, -1);
        if (r) {
                h = CreateDialogIndirect (r->inst, r->resource, hDlg, proc);
                freescaleresource (r);
@@ -14902,74 +15187,127 @@ static int GetSettings (int all_options, HWND hwnd)
                        currentpage = LOADSAVE_ID;
        }
 
-       if (all_options || !configstore)
-               CreateConfigStore (NULL, FALSE);
-
-       dialogreturn = -1;
-       hAccelTable = NULL;
-       DragAcceptFiles (hwnd, TRUE);
-       if (first)
-               write_log (_T("Entering GUI idle loop\n"));
-
-       scaleresource_setmaxsize (800, 600);
-       tres = scaleresource (panelresource, hwnd);
-       dhwnd = CreateDialogIndirect (tres->inst, tres->resource, hwnd, DialogProc);
-       dialog_rect.top = dialog_rect.left = 0;
-       dialog_rect.right = tres->width;
-       dialog_rect.bottom = tres->height;
-       freescaleresource (tres);
-       psresult = 0;
-       if (dhwnd != NULL) {
-               MSG msg;
-               DWORD v;
-
-               setguititle (dhwnd);
-               ShowWindow (dhwnd, SW_SHOW);
-               MapDialogRect (dhwnd, &dialog_rect);
+       int fmultx = 0, fmulty = 0;
+       for (;;) {
+               int v = 0;
+               gui_width = GUI_INTERNAL_WIDTH * 90 / 100;
+               gui_height = GUI_INTERNAL_HEIGHT * 90 / 100;
+               regqueryint (NULL, _T("GUIResize"), &v);
+               gui_resize = v != 0;
+               if (full_property_sheet || isfullscreen () == 0) {
+                       regqueryint (NULL, _T("GUISizeX"), &gui_width);
+                       regqueryint (NULL, _T("GUISizeY"), &gui_height);
+                       scaleresource_init (_T(""));
+               } else if (isfullscreen () < 0) {
+                       regqueryint (NULL, _T("GUISizeFWX"), &gui_width);
+                       regqueryint (NULL, _T("GUISizeFWY"), &gui_height);
+                       scaleresource_init (_T("FW"));
+               } else if (isfullscreen () > 0) {
+                       regqueryint (NULL, _T("GUISizeFSX"), &gui_width);
+                       regqueryint (NULL, _T("GUISizeFSY"), &gui_height);
+                       scaleresource_init (_T("FS"));
+               }
+               if (gui_width < MIN_GUI_INTERNAL_WIDTH)
+                       gui_width = MIN_GUI_INTERNAL_WIDTH;
+               if (gui_height < MIN_GUI_INTERNAL_HEIGHT)
+                       gui_height = MIN_GUI_INTERNAL_HEIGHT;
+
+               if (all_options || !configstore)
+                       CreateConfigStore (NULL, FALSE);
 
-               hGUIWnd = dhwnd;
+               dialogreturn = -1;
+               hAccelTable = NULL;
+               DragAcceptFiles (hwnd, TRUE);
+               if (first)
+                       write_log (_T("Entering GUI idle loop\n"));
 
-               for (;;) {
-                       HANDLE IPChandle;
-                       IPChandle = geteventhandleIPC (globalipc);
-                       if (globalipc && IPChandle != INVALID_HANDLE_VALUE) {
-                               MsgWaitForMultipleObjects (1, &IPChandle, FALSE, INFINITE, QS_ALLINPUT);
-                               while (checkIPC (globalipc, &workprefs));
-                       } else {
-                               WaitMessage();
-                       }
-                       dialogmousemove (dhwnd);
-                       while ((v = PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))) {
-                               if (dialogreturn >= 0)
-                                       break;
-                               if (v == -1)
-                                       continue;
-                               if (!IsWindow (dhwnd))
-                                       continue;
-                               if (hAccelTable && panelDlg && !rawmode) {
-                                       if (TranslateAccelerator (panelDlg, hAccelTable, &msg))
-                                               continue;
+               if (fmultx > 0)
+                       scaleresource_setmult (hwnd, -fmultx, -fmulty);
+               else
+                       scaleresource_setmult (hwnd, gui_width, gui_height);
+               tres = scaleresource (panelresource, hwnd, gui_resize);
+               dhwnd = CreateDialogIndirect (tres->inst, tres->resource, hwnd, DialogProc);
+               dialog_rect.top = dialog_rect.left = 0;
+               dialog_rect.right = tres->width;
+               dialog_rect.bottom = tres->height;
+               freescaleresource (tres);
+               psresult = 0;
+               if (dhwnd != NULL) {
+                       MSG msg;
+                       DWORD v;
+
+                       setguititle (dhwnd);
+                       ShowWindow (dhwnd, SW_SHOW);
+                       MapDialogRect (dhwnd, &dialog_rect);
+
+                       hGUIWnd = dhwnd;
+
+                       for (;;) {
+                               HANDLE IPChandle;
+                               IPChandle = geteventhandleIPC (globalipc);
+                               if (globalipc && IPChandle != INVALID_HANDLE_VALUE) {
+                                       MsgWaitForMultipleObjects (1, &IPChandle, FALSE, INFINITE, QS_ALLINPUT);
+                                       while (checkIPC (globalipc, &workprefs));
+                               } else {
+                                       WaitMessage();
                                }
-                               if (rawmode) {
-                                       if (msg.message == WM_INPUT) {
-                                               handlerawinput (msg.hwnd, msg.message, msg.wParam, msg.lParam);
+                               dialogmousemove (dhwnd);
+                               while ((v = PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))) {
+                                       if (dialogreturn >= 0)
+                                               break;
+                                       if (v == -1)
+                                               continue;
+                                       if (!IsWindow (dhwnd))
                                                continue;
+                                       if (hAccelTable && panelDlg && !rawmode) {
+                                               if (TranslateAccelerator (panelDlg, hAccelTable, &msg))
+                                                       continue;
                                        }
-                                       // eat all accelerators
-                                       if (msg.message == WM_KEYDOWN || msg.message == WM_MOUSEMOVE || msg.message == WM_MOUSEWHEEL
-                                               || msg.message == WM_MOUSEHWHEEL || msg.message == WM_LBUTTONDOWN)
+                                       if (rawmode) {
+                                               if (msg.message == WM_INPUT) {
+                                                       handlerawinput (msg.hwnd, msg.message, msg.wParam, msg.lParam);
+                                                       continue;
+                                               }
+                                               // eat all accelerators
+                                               if (msg.message == WM_KEYDOWN || msg.message == WM_MOUSEMOVE || msg.message == WM_MOUSEWHEEL
+                                                       || msg.message == WM_MOUSEHWHEEL || msg.message == WM_LBUTTONDOWN)
+                                                       continue;
+                                       }
+                                       // IsDialogMessage() eats WM_INPUT messages?!?!
+                                       if (!rawmode && IsDialogMessage (dhwnd, &msg))
                                                continue;
+                                       TranslateMessage (&msg);
+                                       DispatchMessage (&msg);
+                               }
+                               if (dialogreturn >= 0)
+                                       break;
+                               if (gui_size_changed > 0 && gui_size_changed < 10) {
+                                       if (gui_size_changed == 2) {
+                                               scaleresource_getmult (&fmultx, &fmulty);
+                                       } else {
+                                               fmultx = fmulty = 0;
+                                       }
+                                       gui_size_changed = 10;
+                                       SendMessage (dhwnd, WM_COMMAND, IDCANCEL, 0);
                                }
-                               // IsDialogMessage() eats WM_INPUT messages?!?!
-                               if (!rawmode && IsDialogMessage (dhwnd, &msg))
-                                       continue;
-                               TranslateMessage (&msg);
-                               DispatchMessage (&msg);
                        }
-                       if (dialogreturn >= 0)
-                               break;
+                       psresult = dialogreturn;
+               }
+               if (!gui_size_changed)
+                       break;
+               if (full_property_sheet || isfullscreen () == 0) {
+                       regsetint (NULL, _T("GUISizeX"), gui_width);
+                       regsetint (NULL, _T("GUISizeY"), gui_height);
+               } else if (isfullscreen () < 0) {
+                       regsetint (NULL, _T("GUISizeFWX"), gui_width);
+                       regsetint (NULL, _T("GUISizeFWY"), gui_height);
+               } else if (isfullscreen () > 0) {
+                       regsetint (NULL, _T("GUISizeFSX"), gui_width);
+                       regsetint (NULL, _T("GUISizeFSY"), gui_height);
                }
-               psresult = dialogreturn;
+               regsetint (NULL, _T("GUIResize"), gui_resize ? 1 : 0);
+               gui_size_changed = 0;
+               quit_program = 0;
        }
 
        hGUIWnd = NULL;
index 654ec5bf5c9745a279d191df724fa423cf1a94d4..7adb57415f3a691900f906d5fe08c133f75aa67a 100644 (file)
@@ -27,12 +27,21 @@ struct newresource
     int width, height;
 };
 
-extern struct newresource *scaleresource(struct newresource *res, HWND);
-extern void freescaleresource(struct newresource*);
-extern void scaleresource_setmaxsize(int w, int h);
+#define GUI_INTERNAL_WIDTH 800
+#define GUI_INTERNAL_HEIGHT 600
+#define GUI_INTERNAL_FONT 8
+
+extern struct newresource *scaleresource (struct newresource *res, HWND, int);
+extern void freescaleresource (struct newresource*);
+extern void scaleresource_setmult (HWND hDlg, int w, int h);
+extern void scaleresource_getmult (int *mx, int *my);
 extern HWND CustomCreateDialog (int templ, HWND hDlg, DLGPROC proc);
 extern INT_PTR CustomDialogBox (int templ, HWND hDlg, DLGPROC proc);
-extern struct newresource *getresource(int tmpl);
-extern struct newresource *resourcefont(struct newresource*, TCHAR *font, int size);
+extern struct newresource *getresource (int tmpl);
+extern struct newresource *resourcefont (struct newresource*, TCHAR *font, int size);
+extern void scaleresource_init (const TCHAR*);
+extern int scaleresource_choosefont (HWND hDlg, int fonttype);
+extern void scaleresource_setdefaults (void);
+extern void scaleresource_setfont (HWND hDlg);
 
 #endif
index 8d6a05b82cf11fdff65e78a9f68ac232ef49a9a8..cfb7b5aae0b704f72632c34e179c1505d318fd8f 100644 (file)
 #include "win32.h"
 #include "win32gui.h"
 
-static int max_w = 800, max_h = 600, mult = 100, pointsize;
+#define MAX_GUI_FONTS 2
+#define DEFAULT_FONTSIZE  8
+
+static double multx, multy;
+
+static TCHAR fontname_gui[32], fontname_list[32];
+static int fontsize_gui = DEFAULT_FONTSIZE;
+static int fontsize_list = DEFAULT_FONTSIZE;
+static int fontstyle_gui = 0;
+static int fontstyle_list = 0;
+static int fontweight_gui = FW_REGULAR;
+static int fontweight_list = FW_REGULAR;
+
+static int listviews[16];
+static int listviewcnt;
+static HFONT listviewfont;
+static const TCHAR *fontprefix;
 
 #include <pshpack2.h>
 typedef struct {
@@ -78,6 +94,22 @@ static wchar_t wfont_old[] = _T("MS Sans Serif");
 static TCHAR font_vista[] = _T("Segoe UI");
 static TCHAR font_xp[] = _T("Tahoma");
 
+static int align (double f)
+{
+       int v = (int)(f + 0.5);
+       return v;
+}
+
+static int mmx (int v)
+{
+       return align ((v * multx) / 100.0 + 0.5);
+}
+static int mmy (int v)
+{
+       return align ((v * multy) / 100.0 + 0.5);
+}
+
+
 static BYTE *skiptextone (BYTE *s)
 {
        s -= sizeof (WCHAR);
@@ -110,31 +142,49 @@ static BYTE *todword (BYTE *p)
        return p;
 }
 
-static void modifytemplate (DLGTEMPLATEEX *d, DLGTEMPLATEEX_END *d2, int id, int mult)
+static void modifytemplate (DLGTEMPLATEEX *d, DLGTEMPLATEEX_END *d2, int id)
 {
-
-       d->cx = d->cx * mult / 100;
-       d->cy = d->cy * mult / 100;
+       d->cx = mmx (d->cx);
+       d->cy = mmy (d->cy);
 }
 
 static void modifytemplatefont (DLGTEMPLATEEX *d, DLGTEMPLATEEX_END *d2)
 {
-       wchar_t *p = NULL;
-
-       if (font_vista_ok)
-               p = wfont_vista;
-       else
-               p = wfont_xp;
-       if (p && !wcscmp (d2->typeface, wfont_old))
-               wcscpy (d2->typeface, p);
+       if (!wcscmp (d2->typeface, wfont_old)) {
+               wcscpy (d2->typeface, fontname_gui);
+               d2->pointsize = fontsize_gui;
+               d2->italic = (fontstyle_gui & ITALIC_FONTTYPE) != 0;
+               d2->weight = fontweight_gui;
+       }
 }
 
-static void modifyitem (DLGTEMPLATEEX *d, DLGTEMPLATEEX_END *d2, DLGITEMTEMPLATEEX *dt, int id, int mult)
+static void modifyitem (DLGTEMPLATEEX *d, DLGTEMPLATEEX_END *d2, DLGITEMTEMPLATEEX *dt, int id)
 {
-       dt->cy = dt->cy * mult / 100;
-       dt->cx = dt->cx * mult / 100;
-       dt->y = dt->y * mult / 100;
-       dt->x = dt->x * mult / 100;
+       bool noyscale = false;
+
+       if (dt->windowClass[0] != 0xffff && (!_tcsicmp (dt->windowClass, WC_LISTVIEWW) || !_tcsicmp (dt->windowClass, WC_TREEVIEWW)))
+               listviews[listviewcnt++] = dt->id;
+
+       if (multy >= 89 && multy <= 111) {
+               int wc = 0;
+
+               if (dt->windowClass[0] == 0xffff)
+                       wc = dt->windowClass[1];
+
+               if (wc == 0x0080 && dt->cy <= 20) // button
+                       noyscale = true;
+               if (wc == 0x0085) // checkbox
+                       noyscale = true;
+               if (wc == 0x0081 && dt->cy <= 20) // edit box
+                       noyscale = true;
+       }
+
+       if (!noyscale)
+               dt->cy = mmy (dt->cy);
+
+       dt->cx = mmx (dt->cx);
+       dt->y = mmy (dt->y);
+       dt->x = mmx (dt->x);
 }
 
 static INT_PTR CALLBACK DummyProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -153,7 +203,7 @@ static INT_PTR CALLBACK DummyProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lP
        return FALSE;
 }
 
-struct newresource *scaleresource (struct newresource *res, HWND parent)
+struct newresource *scaleresource (struct newresource *res, HWND parent, int resize)
 {
        DLGTEMPLATEEX *d;
        DLGTEMPLATEEX_END *d2;
@@ -162,6 +212,8 @@ struct newresource *scaleresource (struct newresource *res, HWND parent)
        int i;
        struct newresource *ns;
 
+       listviewcnt = 0;
+
        d = (DLGTEMPLATEEX*)res->resource;
        d2 = (DLGTEMPLATEEX_END*)res->resource;
 
@@ -174,10 +226,19 @@ struct newresource *scaleresource (struct newresource *res, HWND parent)
        ns->inst = res->inst;
        ns->size = res->size;
        ns->tmpl = res->tmpl;
-       ns->resource = (LPCDLGTEMPLATEW)xmalloc (uae_u8, ns->size);
+       ns->resource = (LPCDLGTEMPLATEW)xmalloc (uae_u8, ns->size + 32);
        memcpy ((void*)ns->resource, res->resource, ns->size);
 
        d = (DLGTEMPLATEEX*)ns->resource;
+
+       if (resize > 0) {
+               d->style &= ~DS_MODALFRAME;
+               d->style |= WS_THICKFRAME;
+       } else if (resize == 0) {
+               d->style |= DS_MODALFRAME;
+               d->style &= ~WS_THICKFRAME;
+       }
+
        d2 = (DLGTEMPLATEEX_END*)ns->resource;
        p = (BYTE*)d + sizeof (DLGTEMPLATEEX);
        p = skiptext (p);
@@ -198,11 +259,11 @@ struct newresource *scaleresource (struct newresource *res, HWND parent)
        if (p != p2)
                memmove (p, p2, ns->size - (p2 - (BYTE*)ns->resource));
 
-       modifytemplate(d, d2, ns->tmpl, mult);
+       modifytemplate(d, d2, ns->tmpl);
 
        for (i = 0; i < d->cDlgItems; i++) {
                dt = (DLGITEMTEMPLATEEX*)p;
-               modifyitem (d, d2, dt, ns->tmpl, mult);
+               modifyitem (d, d2, dt, ns->tmpl);
                p += sizeof (DLGITEMTEMPLATEEX);
                p = skiptextone (p);
                p = skiptext (p);
@@ -222,11 +283,241 @@ void freescaleresource (struct newresource *ns)
        xfree (ns);
 }
 
-void scaleresource_setmaxsize (int w, int h)
+static void openfont (bool force)
+{
+       HDC hdc;
+       int size;
+
+       if (listviewfont && !force)
+               return;
+       if (listviewfont)
+               DeleteObject (listviewfont);
+
+       hdc = GetDC (NULL);
+
+       size = -MulDiv (fontsize_list, GetDeviceCaps (hdc, LOGPIXELSY), 72);
+       listviewfont = CreateFont (size, 0, 0, 0, fontweight_list, (fontstyle_list & ITALIC_FONTTYPE) != 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, fontname_list);
+
+       ReleaseDC (NULL, hdc);
+}
+
+void scaleresource_setfont (HWND hDlg)
+{
+       if (!listviewcnt || (!_tcscmp (fontname_gui, fontname_list) && fontsize_gui == fontsize_list && fontstyle_gui == fontstyle_list && fontweight_gui == fontweight_list))
+               return;
+       openfont (false);
+       if (!listviewfont)
+               return;
+       for (int i = 0; i < listviewcnt; i++) {
+               SendMessage (GetDlgItem (hDlg, listviews[i]), WM_SETFONT, WPARAM(listviewfont), FALSE);
+       }
+}
+
+static void setdeffont (void)
+{
+       _tcscpy (fontname_gui, font_vista_ok ? wfont_vista : wfont_xp);
+       fontsize_gui = DEFAULT_FONTSIZE;
+       fontstyle_gui = 0;
+       fontweight_gui = FW_REGULAR;
+       _tcscpy (fontname_list, font_vista_ok ? wfont_vista : wfont_xp);
+       fontsize_list = DEFAULT_FONTSIZE;
+       fontstyle_list = 0;
+       fontweight_list = FW_REGULAR;
+}
+
+static TCHAR *fontreg[2] = { _T("GUIFont"), _T("GUIListFont") };
+
+static void regsetfont (UAEREG *reg, const TCHAR *prefix, const TCHAR *name, const TCHAR *fontname, int fontsize, int fontstyle, int fontweight)
+{
+       TCHAR tmp[256], tmp2[256];
+
+       _stprintf (tmp, _T("%s:%d:%d:%d"), fontname, fontsize, fontstyle, fontweight);
+       _stprintf (tmp2, _T("%s%s"), name, prefix);
+       regsetstr (reg, tmp2, tmp);
+}
+static void regqueryfont (UAEREG *reg, const TCHAR *prefix, const TCHAR *name, TCHAR *fontname, int *pfontsize, int *pfontstyle, int *pfontweight)
+{
+       TCHAR tmp2[256], tmp[256], *p1, *p2, *p3, *p4;
+       int size;
+       int fontsize, fontstyle, fontweight;
+
+       _tcscpy (tmp2, name);
+       _tcscat (tmp2, prefix);
+       size = sizeof tmp / sizeof (TCHAR);
+       if (!regquerystr (reg, tmp2, tmp, &size))
+               return;
+       p1 = _tcschr (tmp, ':');
+       if (!p1)
+               return;
+       *p1++ = 0;
+       p2 = _tcschr (p1, ':');
+       if (!p2)
+               return;
+       *p2++ = 0;
+       p3 = _tcschr (p2, ':');
+       if (!p3)
+               return;
+       *p3++ = 0;
+       p4 = _tcschr (p3, ':');
+       if (p4)
+               *p4 = 0;
+
+       _tcscpy (fontname, tmp);
+       fontsize = _tstoi (p1);
+       fontstyle = _tstoi (p2);
+       fontweight = _tstoi (p3);
+
+       if (fontsize == 0)
+               fontsize = 8;
+       if (fontsize < 5)
+               fontsize = 5;
+       if (fontsize > 20)
+               fontsize = 20;
+       *pfontsize = fontsize;
+
+       *pfontstyle = fontstyle;
+
+       *pfontweight = fontweight;
+}
+
+void scaleresource_setdefaults (void)
+{
+       setdeffont ();
+       for (int i = 0; i < MAX_GUI_FONTS; i++) {
+               TCHAR tmp[256];
+               _stprintf (tmp, _T("%s%s"), fontreg[i], fontprefix);
+               regdelete (NULL, tmp);
+       }
+       openfont (true);
+}
+
+static int lpx, lpy;
+
+void scaleresource_init (const TCHAR *prefix)
 {
        if (os_vista)
                font_vista_ok = 1;
-       max_w = w;
-       max_h = h;
-       mult = 100;
+
+       fontprefix = prefix;
+
+       HDC hdc = GetDC (NULL);
+       lpx = GetDeviceCaps (hdc, LOGPIXELSX);
+       lpy = GetDeviceCaps (hdc, LOGPIXELSY);
+       ReleaseDC (NULL, hdc);
+
+       setdeffont ();
+
+       regqueryfont (NULL, fontprefix, fontreg[0], fontname_gui, &fontsize_gui, &fontstyle_gui, &fontweight_gui);
+       regqueryfont (NULL, fontprefix, fontreg[1], fontname_list, &fontsize_list, &fontstyle_list, &fontweight_list);
+
+       openfont (true);
+}
+
+static void sizefont (HWND hDlg, const TCHAR *name, int size, int style, int weight, int *width, int *height)
+{
+       /* ARGH!!! */
+
+       HDC hdc = GetDC (hDlg);
+       size = -MulDiv (size, lpy, 72);
+       HFONT font = CreateFont (size, 0, 0, 0, weight,
+               (style & ITALIC_FONTTYPE) != 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, name);
+       HFONT hFontOld = (HFONT)SelectObject (hdc, font);
+       TEXTMETRIC tm;
+       SIZE fsize;
+       GetTextMetrics (hdc, &tm);
+       GetTextExtentPoint32 (hdc, _T("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"), 52, &fsize);
+       *width = (fsize.cx / 26 + 1) / 2;
+       *height = MulDiv (tm.tmHeight, 72, lpy);
+       SelectObject (hdc, hFontOld);
+       DeleteObject (font);
+       ReleaseDC (hDlg, hdc);
+}
+
+void scaleresource_setmult (HWND hDlg, int w, int h)
+{
+       int width, height, width2, height2;
+       
+       if (w < 0) {
+               multx = -w;
+               multy = -h;
+               return;
+       }
+
+       sizefont (hDlg, fontname_gui, fontsize_gui, fontstyle_gui, fontweight_gui, &width, &height);
+       sizefont (hDlg, wfont_old, 8, REGULAR_FONTTYPE, FW_REGULAR, &width2, &height2);
+
+       h += GetSystemMetrics (SM_CYBORDER) * 2 + GetSystemMetrics (SM_CYCAPTION);
+       w += GetSystemMetrics (SM_CXSIZEFRAME) * 2;
+
+       multx = (w * width2) * 100.0 / (GUI_INTERNAL_WIDTH * width);
+       multy = (h * height2) * 100.0 / (GUI_INTERNAL_HEIGHT * height);
+
+       multx = MulDiv (multx, 96, lpx);
+       multy = MulDiv (multy, 96, lpy);
+}
+
+void scaleresource_getmult (int *mx, int *my)
+{
+       if (mx)
+               *mx = (int)(multx + 0.5);
+       if (my)
+               *my = (int)(multy + 0.5);
+}
+
+
+int scaleresource_choosefont (HWND hDlg, int fonttype)
+{
+       CHOOSEFONT cf = { 0 };
+       LOGFONT lf = { 0 };
+       HDC hdc;
+       TCHAR *fontname[2];
+       int *fontsize[2], *fontstyle[2], *fontweight[2];
+       int lm;
+
+       fontname[0] = fontname_gui;
+       fontname[1] = fontname_list;
+       fontsize[0] = &fontsize_gui;
+       fontsize[1] = &fontsize_list;
+       fontstyle[0] = &fontstyle_gui;
+       fontstyle[1] = &fontstyle_list;
+       fontweight[0] = &fontweight_gui;
+       fontweight[1] = &fontweight_list;
+
+       cf.lStructSize = sizeof cf;
+       cf.hwndOwner = hDlg;
+       cf.Flags = CF_FORCEFONTEXIST | CF_INITTOLOGFONTSTRUCT | CF_NOSCRIPTSEL | CF_SCREENFONTS;
+       cf.lpLogFont = &lf;
+       cf.nFontType = REGULAR_FONTTYPE;
+       cf.iPointSize = *fontsize[fonttype];
+
+       hdc = GetDC (NULL);
+       lm = GetDeviceCaps (hdc, LOGPIXELSY);
+
+       _tcscpy (lf.lfFaceName, fontname[fonttype]);
+       lf.lfHeight = -MulDiv (*fontsize[fonttype], lm, 72);
+       lf.lfWeight = *fontweight[fonttype];
+       lf.lfItalic = (*fontstyle[fonttype] & ITALIC_FONTTYPE) != 0;
+
+       if (!ChooseFont (&cf)) {
+               ReleaseDC (NULL, hdc);
+               return 0;
+       }
+
+       _tcscpy (fontname[fonttype], lf.lfFaceName);
+       *fontsize[fonttype] = lf.lfHeight;
+       *fontsize[fonttype] = -MulDiv (*fontsize[fonttype], 72, GetDeviceCaps (hdc, LOGPIXELSY));
+
+       *fontstyle[fonttype] = lf.lfItalic ? ITALIC_FONTTYPE : 0;
+
+       *fontweight[fonttype] = lf.lfWeight;
+
+       ReleaseDC (NULL, hdc);
+
+       regsetfont (NULL, fontprefix, fontreg[fonttype], fontname[fonttype], *fontsize[fonttype], *fontstyle[fonttype], *fontweight[fonttype]);
+
+       openfont (true);
+
+
+       return 1;
 }
+
index 6c33be6f5ee1539f421020931356f179d7847784..d54f5bc57406068138938428e20a27c2d2b78689 100644 (file)
@@ -113,7 +113,6 @@ Global
                {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|Win32.ActiveCfg = Release|Win32
                {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|x64.ActiveCfg = Release|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|Win32.ActiveCfg = Debug|Win32
-               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|Win32.Build.0 = Debug|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|x64.ActiveCfg = Debug|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|Win32.ActiveCfg = Release|Win32
                {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|x64.ActiveCfg = Release|Win32
diff --git a/od-win32/winuae_msvc11/winuae.idc b/od-win32/winuae_msvc11/winuae.idc
new file mode 100644 (file)
index 0000000..428a2ec
--- /dev/null
@@ -0,0 +1 @@
+<Configurations active="Default"><Configuration name="Default"><GuestCommandRemote val="project command through a shared folder"></GuestCommandRemote><ShareFoldersRemote val=""></ShareFoldersRemote><RemoteDebugMonitor val="C:\msvs\Common7\IDE\Remote Debugger\x86\msvsmon.exe"></RemoteDebugMonitor><MonitorName val="VMDebug"></MonitorName><RemoteVM val=""></RemoteVM><StartMode val="No"></StartMode><TerminationModeRemote val="No operation"></TerminationModeRemote><CopyFilesRemote val=""></CopyFilesRemote><PreRemoteCommandLine val=""></PreRemoteCommandLine><PostRemoteCommandLine val=""></PostRemoteCommandLine><RecordingToReplay val=""></RecordingToReplay><ReplayVM val=""></ReplayVM><BaseSnapshotForRecording val=""></BaseSnapshotForRecording><CopyFilesRecord val=""></CopyFilesRecord><PreRecordCommandLine val=""></PreRecordCommandLine><PostRecordCommandLine val=""></PostRecordCommandLine><TerminationModeRecord val="No operation"></TerminationModeRecord><InstanceToDebug val=""></InstanceToDebug><GuestCommandReplay val="project command through a shared folder"></GuestCommandReplay><ShareFoldersRecord val=""></ShareFoldersRecord><RemoteReplayFlag val=""></RemoteReplayFlag><RemoteMachine val=""></RemoteMachine><RemoteReplayVM val=""></RemoteReplayVM><RemoteRecordingToReplay val=""></RemoteRecordingToReplay><RemoteReplayPasscode val=""></RemoteReplayPasscode><HostSearchPath val=""></HostSearchPath></Configuration></Configurations>
diff --git a/od-win32/winuae_msvc11/winuae_msvc.sln b/od-win32/winuae_msvc11/winuae_msvc.sln
new file mode 100644 (file)
index 0000000..6c33be6
--- /dev/null
@@ -0,0 +1,144 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winuae", "winuae_msvc.vcxproj", "{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencpu", "..\gencpu_msvc\gencpu_msvc.vcxproj", "{DEF7ACF7-050E-4069-BB99-5B5D93F60521}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencomp", "..\gencomp_msvc\gencomp_msvc.vcxproj", "{54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genblitter", "..\genblitter_msvc\genblitter_msvc.vcxproj", "{765B0AF0-B8D3-4998-89AF-D6F939E1CD18}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "build68k", "..\build68k_msvc\build68k_msvc.vcxproj", "{AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "singlefilehelper", "..\singlefilehelper\singlefilehelper.vcxproj", "{DAF2EB1A-546A-41B3-9755-187562C01E3C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "resourcedll", "..\resourcedll\resourcedll.vcxproj", "{C85288FB-A035-42CA-B5FB-8E6214319E97}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fdrawcmd", "..\fdrawcmd\fdrawcmd.vcxproj", "{960E83B5-9118-4EBD-AF50-18EFC1DC764B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ipctester", "..\ipctester\ipctester.vcxproj", "{79BDABE6-5308-4D64-8884-A5A35909D8D3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genlinetoscr", "..\genlinetoscr_msvc\genlinetoscr_msvc.vcxproj", "{E9F73E11-A463-45C6-A733-2BED75852BA1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "decompress", "..\decompress\decompress.vcxproj", "{38FAC3FB-A2B7-453F-8A6A-73B97201BB04}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uaeunp", "..\uaeunp\uaeunp.vcxproj", "{6181E50C-5F32-42DC-BEF6-827AA8A5429D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "consolewrapper", "..\consolewrapper\consolewrapper.vcxproj", "{2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "prowizard", "..\prowizard\prowizard.vcxproj", "{8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unpackers", "..\unpackers\unpackers.vcxproj", "{98BA115B-829F-4085-9729-ABD0D779A60A}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Win32 = Debug|Win32
+               Debug|x64 = Debug|x64
+               FullRelease|Win32 = FullRelease|Win32
+               FullRelease|x64 = FullRelease|x64
+               Release|Win32 = Release|Win32
+               Release|x64 = Release|x64
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|Win32.ActiveCfg = Debug|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|Win32.Build.0 = Debug|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|x64.ActiveCfg = Debug|x64
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|x64.Build.0 = Debug|x64
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|Win32.Build.0 = FullRelease|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|x64.ActiveCfg = FullRelease|x64
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|x64.Build.0 = FullRelease|x64
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|Win32.ActiveCfg = Release|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|Win32.Build.0 = Release|Win32
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|x64.ActiveCfg = Release|x64
+               {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|x64.Build.0 = Release|x64
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|Win32.ActiveCfg = Debug|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|x64.ActiveCfg = Debug|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|Win32.ActiveCfg = Release|Win32
+               {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|x64.ActiveCfg = Release|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|Win32.ActiveCfg = Debug|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|x64.ActiveCfg = Debug|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|Win32.ActiveCfg = Release|Win32
+               {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|x64.ActiveCfg = Release|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|Win32.ActiveCfg = Debug|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|x64.ActiveCfg = Debug|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|Win32.ActiveCfg = Release|Win32
+               {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|x64.ActiveCfg = Release|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|Win32.ActiveCfg = Debug|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|x64.ActiveCfg = Debug|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|Win32.ActiveCfg = Release|Win32
+               {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|x64.ActiveCfg = Release|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|Win32.ActiveCfg = Debug|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|x64.ActiveCfg = Debug|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|Win32.ActiveCfg = Release|Win32
+               {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|x64.ActiveCfg = Release|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|Win32.ActiveCfg = Debug|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|x64.ActiveCfg = Debug|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|Win32.ActiveCfg = Release|Win32
+               {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|x64.ActiveCfg = Release|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|Win32.ActiveCfg = Debug|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|x64.ActiveCfg = Debug|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|Win32.ActiveCfg = Release|Win32
+               {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|x64.ActiveCfg = Release|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|Win32.ActiveCfg = Debug|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|x64.ActiveCfg = Debug|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|Win32.ActiveCfg = Release|Win32
+               {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|x64.ActiveCfg = Release|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|Win32.ActiveCfg = Debug|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|x64.ActiveCfg = Debug|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|Win32.ActiveCfg = Release|Win32
+               {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|x64.ActiveCfg = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|Win32.ActiveCfg = Debug|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|x64.ActiveCfg = Debug|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|Win32.ActiveCfg = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|x64.ActiveCfg = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|Win32.ActiveCfg = Release|Win32
+               {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|x64.ActiveCfg = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|Win32.ActiveCfg = Debug|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|Win32.Build.0 = Debug|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|x64.ActiveCfg = Debug|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|Win32.ActiveCfg = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|x64.ActiveCfg = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|Win32.ActiveCfg = Release|Win32
+               {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|x64.ActiveCfg = Release|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|Win32.ActiveCfg = Debug|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|x64.ActiveCfg = Debug|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|Win32.ActiveCfg = Release|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|x64.ActiveCfg = Release|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|Win32.ActiveCfg = Release|Win32
+               {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|x64.ActiveCfg = Release|x64
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|Win32.ActiveCfg = Debug|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|x64.ActiveCfg = Debug|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|Win32.ActiveCfg = Release|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|x64.ActiveCfg = Release|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|Win32.ActiveCfg = Release|Win32
+               {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|x64.ActiveCfg = Release|x64
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|Win32.ActiveCfg = Debug|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|x64.ActiveCfg = Debug|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|Win32.ActiveCfg = Release|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|x64.ActiveCfg = Release|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|Win32.ActiveCfg = Release|Win32
+               {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|x64.ActiveCfg = Release|x64
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/od-win32/winuae_msvc11/winuae_msvc.vcxproj b/od-win32/winuae_msvc11/winuae_msvc.vcxproj
new file mode 100644 (file)
index 0000000..eafbbf7
--- /dev/null
@@ -0,0 +1,791 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="FullRelease|Win32">
+      <Configuration>FullRelease</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="FullRelease|x64">
+      <Configuration>FullRelease</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>winuae</ProjectName>
+    <ProjectGuid>{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}</ProjectGuid>
+    <RootNamespace>winuae</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">d:\amiga\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">d:\amiga\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">d:\amiga\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">d:\amiga\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'">d:\amiga\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'">true</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">d:\amiga\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">true</GenerateManifest>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">winuae64</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">winuae64</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">winuae64</TargetName>
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;C:\dev\include;$(IncludePath)</IncludePath>
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Lib\x86;C:\dev\lib;C:\dev\WinDDK\7600.16385.1\lib\win7\i386;$(LibraryPath)</LibraryPath>
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Lib\x86;C:\dev\lib;C:\dev\WinDDK\7600.16385.1\lib\win7\i386;$(LibraryPath)</LibraryPath>
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;C:\dev\include;$(IncludePath)</IncludePath>
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'">C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;C:\dev\include;$(IncludePath)</IncludePath>
+    <ReferencePath Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'">$(ReferencePath)</ReferencePath>
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'">C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Lib\x86;C:\dev\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\Debug/winuae_msvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;..\..\prowizard\include;..\tun;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WINVER=0x0500;_DEBUG;WIN32_IE=0x0700;WIN32;_CRT_SECURE_NO_WARNINGS;D3D_DEBUG_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <PreprocessSuppressLineNumbers>false</PreprocessSuppressLineNumbers>
+      <PreprocessKeepComments>false</PreprocessKeepComments>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <RuntimeTypeInfo>false</RuntimeTypeInfo>
+      <PrecompiledHeaderOutputFile>.\Debug/winuae_msvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\Debug/</AssemblerListingLocation>
+      <ObjectFileName>.\Debug/</ObjectFileName>
+      <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CallingConvention>StdCall</CallingConvention>
+      <CompileAs>Default</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <EnablePREfast>false</EnablePREfast>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9d.lib;winio.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;libpng15.lib;lglcd.lib;wpcap.lib;packet.lib;openal32.lib;wintab32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;prowizard.lib;lzmalib.lib;libFLAC_static.lib;Avrt.lib;hid.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ShowProgress>NotSet</ShowProgress>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreSpecificDefaultLibraries>LIBCMT;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <DelayLoadDLLs>wpcap.dll;packet.dll;d3dx9_43.dll;openal32.dll;wintab32.dll;portaudio_x86.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;ddraw.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\Debug/winuae.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <StackReserveSize>2621440</StackReserveSize>
+      <StackCommitSize>2621440</StackCommitSize>
+      <LargeAddressAware>true</LargeAddressAware>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
+      <IgnoreAllDefaultLibraries>
+      </IgnoreAllDefaultLibraries>
+    </Link>
+    <Manifest>
+      <AdditionalManifestFiles>..\resources\winuae.exe.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
+    </Manifest>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\Debug/winuae_msvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;..\..\prowizard\include;..\tun;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WINVER=0x0500;_DEBUG;WIN32_IE=0x0700;WIN32;WIN64;_CRT_SECURE_NO_WARNINGS;D3D_DEBUG_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <BufferSecurityCheck>true</BufferSecurityCheck>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)\winuae_msvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
+      <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
+      <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CallingConvention>StdCall</CallingConvention>
+      <CompileAs>Default</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <EnablePREfast>false</EnablePREfast>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>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;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;packet.lib;wpcap.lib;openal32.lib;libpng15.lib;lglcd.lib;wtsapi32.lib;wntab32x.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;avrt.lib;hid.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <DelayLoadDLLs>wpcap.dll;packet.dll;d3dx9_42.dll;openal32.dll;wintab32.dll;portaudio_x64.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;avrt.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(Platform)\$(Configuration)\winuae.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <StackReserveSize>2621440</StackReserveSize>
+      <StackCommitSize>2621440</StackCommitSize>
+      <LargeAddressAware>true</LargeAddressAware>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
+      <IgnoreAllDefaultLibraries>
+      </IgnoreAllDefaultLibraries>
+    </Link>
+    <Manifest>
+      <AdditionalManifestFiles>..\resources\winuae64.exe.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
+    </Manifest>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\Release/winuae_msvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Full</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;..\..\prowizard\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WINVER=0x0500;NDEBUG;_WIN32_IE=0x0700;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+      <FloatingPointModel>Precise</FloatingPointModel>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>false</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\Release/winuae_msvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\Release/</AssemblerListingLocation>
+      <ObjectFileName>.\Release/</ObjectFileName>
+      <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CallingConvention>StdCall</CallingConvention>
+      <CompileAs>Default</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;libpng15.lib;lglcd.lib;wpcap.lib;packet.lib;openal32.lib;wintab32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;Avrt.lib;hid.lib;zlibstat.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
+      <AdditionalManifestDependencies>%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
+      <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <DelayLoadDLLs>wpcap.dll;packet.dll;d3dx9_43.dll;openal32.dll;wintab32.dll;portaudio_x86.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;wininet.dll;avrt.dll;ddraw.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\Release/winuae.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <StackReserveSize>2621440</StackReserveSize>
+      <StackCommitSize>2621440</StackCommitSize>
+      <LargeAddressAware>true</LargeAddressAware>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <LinkTimeCodeGeneration>
+      </LinkTimeCodeGeneration>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <MinimumRequiredVersion>
+      </MinimumRequiredVersion>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+    <Manifest>
+      <AdditionalManifestFiles>..\resources\winuae.exe.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
+    </Manifest>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\Release/winuae_msvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Full</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WINVER=0x0500;NDEBUG;_WIN32_IE=0x0700;WIN32;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+      <FloatingPointModel>Precise</FloatingPointModel>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>false</RuntimeTypeInfo>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)/winuae_msvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
+      <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
+      <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CallingConvention>StdCall</CallingConvention>
+      <CompileAs>Default</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>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;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;packet.lib;wpcap.lib;openal32.lib;libpng15.lib;lglcd.lib;wtsapi32.lib;wntab32x.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;avrt.lib;hid.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ShowProgress>NotSet</ShowProgress>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <DelayLoadDLLs>wpcap.dll;packet.dll;d3dx9_43.dll;openal32.dll;wintab32.dll;portaudio_x64.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;avrt.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(Platform)\$(Configuration)\winuae.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <StackReserveSize>0</StackReserveSize>
+      <StackCommitSize>0</StackCommitSize>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <LinkTimeCodeGeneration>
+      </LinkTimeCodeGeneration>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <Manifest>
+      <AdditionalManifestFiles>..\resources\winuae64.exe.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
+    </Manifest>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>.\Release/winuae_msvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Full</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;..\..\prowizard\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WINVER=0x0500;NDEBUG;_WIN32_IE=0x0700;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+      <FloatingPointModel>Precise</FloatingPointModel>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>false</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\FullRelease/winuae_msvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\FullRelease/</AssemblerListingLocation>
+      <ObjectFileName>.\FullRelease/</ObjectFileName>
+      <ProgramDataBaseFileName>.\FullRelease/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CallingConvention>StdCall</CallingConvention>
+      <CompileAs>Default</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>ws2_32.lib;ddraw.lib;dxguid.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;libpng15.lib;lglcd.lib;wpcap.lib;packet.lib;openal32.lib;wintab32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;avrt.lib;enet.lib;prowizard.lib;lzmalib.lib;libFLAC_static.lib;Avrt.lib;hid.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
+      <AdditionalManifestDependencies>%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
+      <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <DelayLoadDLLs>wpcap.dll;packet.dll;d3dx9_43.dll;openal32.dll;wintab32.dll;portaudio_x86.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;wininet.dll;avrt.dll;ddraw.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>.\FullRelease/winuae.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <StackReserveSize>2621440</StackReserveSize>
+      <StackCommitSize>2621440</StackCommitSize>
+      <LargeAddressAware>true</LargeAddressAware>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <MinimumRequiredVersion>
+      </MinimumRequiredVersion>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+    <Manifest>
+      <AdditionalManifestFiles>..\resources\winuae9.exe.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
+    </Manifest>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>.\Release/winuae_msvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Full</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WINVER=0x0500;NDEBUG;_WIN32_IE=0x0700;WIN32;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+      <FloatingPointModel>Precise</FloatingPointModel>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>false</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>$(Platform)\$(Configuration)\winuae_msvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(Platform)\$(Configuration)\</AssemblerListingLocation>
+      <ObjectFileName>$(Platform)\$(Configuration)\</ObjectFileName>
+      <ProgramDataBaseFileName>$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CallingConvention>StdCall</CallingConvention>
+      <CompileAs>Default</CompileAs>
+      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ForcedIncludeFiles>%(ForcedIncludeFiles)</ForcedIncludeFiles>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>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;setupapi.lib;wininet.lib;dxerr.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;packet.lib;wpcap.lib;openal32.lib;libpng15.lib;lglcd.lib;wtsapi32.lib;wntab32x.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;avrt.lib;hid.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <ShowProgress>NotSet</ShowProgress>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <DelayLoadDLLs>wpcap.dll;packet.dll;d3dx9_43.dll;openal32.dll;wintab32.dll;portaudio_x64.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;avrt.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(Platform)\$(Configuration)\winuae.pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <StackReserveSize>0</StackReserveSize>
+      <StackCommitSize>0</StackCommitSize>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <Manifest>
+      <AdditionalManifestFiles>..\resources\winuae64.exe.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
+    </Manifest>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\archivers\dms\crc_csum.cpp" />
+    <ClCompile Include="..\..\archivers\dms\getbits.cpp" />
+    <ClCompile Include="..\..\archivers\dms\maketbl.cpp" />
+    <ClCompile Include="..\..\archivers\dms\pfile.cpp" />
+    <ClCompile Include="..\..\archivers\dms\tables.cpp" />
+    <ClCompile Include="..\..\archivers\dms\u_deep.cpp" />
+    <ClCompile Include="..\..\archivers\dms\u_heavy.cpp" />
+    <ClCompile Include="..\..\archivers\dms\u_init.cpp" />
+    <ClCompile Include="..\..\archivers\dms\u_medium.cpp" />
+    <ClCompile Include="..\..\archivers\dms\u_quick.cpp" />
+    <ClCompile Include="..\..\archivers\dms\u_rle.cpp" />
+    <ClCompile Include="..\..\archivers\lha\crcio.cpp" />
+    <ClCompile Include="..\..\archivers\lha\dhuf.cpp" />
+    <ClCompile Include="..\..\archivers\lha\header.cpp" />
+    <ClCompile Include="..\..\archivers\lha\huf.cpp" />
+    <ClCompile Include="..\..\archivers\lha\larc.cpp" />
+    <ClCompile Include="..\..\archivers\lha\lhamaketbl.cpp" />
+    <ClCompile Include="..\..\archivers\lha\lharc.cpp" />
+    <ClCompile Include="..\..\archivers\lha\shuf.cpp" />
+    <ClCompile Include="..\..\archivers\lha\slide.cpp" />
+    <ClCompile Include="..\..\archivers\lha\uae_lha.cpp" />
+    <ClCompile Include="..\..\archivers\lha\util.cpp" />
+    <ClCompile Include="..\..\archivers\lzx\unlzx.cpp" />
+    <ClCompile Include="..\..\archivers\wrp\warp.cpp" />
+    <ClCompile Include="..\..\archivers\zip\unzip.cpp" />
+    <ClCompile Include="..\..\aros.rom.cpp" />
+    <ClCompile Include="..\..\calc.cpp" />
+    <ClCompile Include="..\..\cpuemu_21.cpp" />
+    <ClCompile Include="..\..\cpuemu_22.cpp" />
+    <ClCompile Include="..\..\events.cpp" />
+    <ClCompile Include="..\..\hrtmon.rom.cpp" />
+    <ClCompile Include="..\..\inputrecord.cpp" />
+    <ClCompile Include="..\..\isofs.cpp" />
+    <ClCompile Include="..\..\specialmonitors.cpp" />
+    <ClCompile Include="..\..\statusline.cpp" />
+    <ClCompile Include="..\ahidsound_dsonly.cpp" />
+    <ClCompile Include="..\ahidsound_new.cpp" />
+    <ClCompile Include="..\avioutput.cpp" />
+    <ClCompile Include="..\blkdev_win32_ioctl.cpp" />
+    <ClCompile Include="..\blkdev_win32_spti.cpp" />
+    <ClCompile Include="..\bsdsock.cpp" />
+    <ClCompile Include="..\caps\caps_win32.cpp" />
+    <ClCompile Include="..\cda_play.cpp" />
+    <ClCompile Include="..\clipboard_win32.cpp" />
+    <ClCompile Include="..\debug_win32.cpp" />
+    <ClCompile Include="..\dinput.cpp" />
+    <ClCompile Include="..\direct3d.cpp" />
+    <ClCompile Include="..\driveclick_win32.cpp" />
+    <ClCompile Include="..\dxwrap.cpp" />
+    <ClCompile Include="..\fsdb_mywin32.cpp" />
+    <ClCompile Include="..\fsdb_win32.cpp" />
+    <ClCompile Include="..\hardfile_win32.cpp" />
+    <ClCompile Include="..\hq2x_d3d.cpp" />
+    <ClCompile Include="..\ioport.cpp" />
+    <ClCompile Include="..\keyboard_win32.cpp" />
+    <ClCompile Include="..\lcd.cpp" />
+    <ClCompile Include="..\midi.cpp" />
+    <ClCompile Include="..\mman.cpp" />
+    <ClCompile Include="..\mp3decoder.cpp" />
+    <ClCompile Include="..\parser.cpp" />
+    <ClCompile Include="..\picasso96_win.cpp" />
+    <ClCompile Include="..\posixemu.cpp" />
+    <ClCompile Include="..\registry.cpp" />
+    <ClCompile Include="..\cloanto\RetroPlatformGuestIPC.cpp" />
+    <ClCompile Include="..\rp.cpp" />
+    <ClCompile Include="..\scaler.cpp" />
+    <ClCompile Include="..\scaler_more.cpp" />
+    <ClCompile Include="..\screenshot.cpp" />
+    <ClCompile Include="..\serial_win32.cpp" />
+    <ClCompile Include="..\sounddep\sound.cpp" />
+    <ClCompile Include="..\unicode.cpp" />
+    <ClCompile Include="..\win32.cpp" />
+    <ClCompile Include="..\win32_scaler.cpp" />
+    <ClCompile Include="..\win32_uaenet.cpp" />
+    <ClCompile Include="..\win32gfx.cpp" />
+    <ClCompile Include="..\win32gui.cpp" />
+    <ClCompile Include="..\win32gui_extra.cpp" />
+    <ClCompile Include="..\writelog.cpp" />
+    <ClCompile Include="..\..\a2065.cpp" />
+    <ClCompile Include="..\..\a2091.cpp" />
+    <ClCompile Include="..\..\akiko.cpp" />
+    <ClCompile Include="..\..\amax.cpp" />
+    <ClCompile Include="..\..\ar.cpp" />
+    <ClCompile Include="..\..\arcadia.cpp" />
+    <ClCompile Include="..\..\audio.cpp" />
+    <ClCompile Include="..\..\autoconf.cpp" />
+    <ClCompile Include="..\..\blitfunc.cpp" />
+    <ClCompile Include="..\..\blittable.cpp" />
+    <ClCompile Include="..\..\blitter.cpp" />
+    <ClCompile Include="..\..\blkdev.cpp" />
+    <ClCompile Include="..\..\blkdev_cdimage.cpp" />
+    <ClCompile Include="..\..\bsdsocket.cpp" />
+    <ClCompile Include="..\..\catweasel.cpp" />
+    <ClCompile Include="..\..\cd32_fmv.cpp" />
+    <ClCompile Include="..\..\cdrom.cpp" />
+    <ClCompile Include="..\..\cdtv.cpp" />
+    <ClCompile Include="..\..\cfgfile.cpp" />
+    <ClCompile Include="..\..\cia.cpp" />
+    <ClCompile Include="..\..\consolehook.cpp" />
+    <ClCompile Include="..\..\cpudefs.cpp" />
+    <ClCompile Include="..\..\cpuemu_0.cpp" />
+    <ClCompile Include="..\..\cpuemu_11.cpp" />
+    <ClCompile Include="..\..\cpuemu_12.cpp" />
+    <ClCompile Include="..\..\cpuemu_20.cpp" />
+    <ClCompile Include="..\..\cpuemu_31.cpp" />
+    <ClCompile Include="..\..\cpummu.cpp" />
+    <ClCompile Include="..\..\cpustbl.cpp" />
+    <ClCompile Include="..\..\crc32.cpp" />
+    <ClCompile Include="..\..\custom.cpp" />
+    <ClCompile Include="..\..\debug.cpp" />
+    <ClCompile Include="..\..\disk.cpp" />
+    <ClCompile Include="..\..\diskutil.cpp" />
+    <ClCompile Include="..\..\dongle.cpp" />
+    <ClCompile Include="..\..\drawing.cpp" />
+    <ClCompile Include="..\..\driveclick.cpp" />
+    <ClCompile Include="..\..\enforcer.cpp" />
+    <ClCompile Include="..\..\epsonprinter.cpp" />
+    <ClCompile Include="..\..\expansion.cpp" />
+    <ClCompile Include="..\..\fdi2raw.cpp" />
+    <ClCompile Include="..\..\filesys.cpp" />
+    <ClCompile Include="..\..\fpp.cpp" />
+    <ClCompile Include="..\..\fsdb.cpp" />
+    <ClCompile Include="..\..\fsusage.cpp" />
+    <ClCompile Include="..\..\gayle.cpp" />
+    <ClCompile Include="..\..\gfxutil.cpp" />
+    <ClCompile Include="..\..\hardfile.cpp" />
+    <ClCompile Include="..\..\identify.cpp" />
+    <ClCompile Include="..\..\inputdevice.cpp" />
+    <ClCompile Include="..\..\keybuf.cpp" />
+    <ClCompile Include="..\..\main.cpp" />
+    <ClCompile Include="..\..\memory.cpp" />
+    <ClCompile Include="..\..\missing.cpp" />
+    <ClCompile Include="..\..\native2amiga.cpp" />
+    <ClCompile Include="..\..\ncr_scsi.cpp" />
+    <ClCompile Include="..\..\newcpu.cpp" />
+    <ClCompile Include="..\..\readcpu.cpp" />
+    <ClCompile Include="..\..\rommgr.cpp" />
+    <ClCompile Include="..\..\sampler.cpp" />
+    <ClCompile Include="..\..\sana2.cpp" />
+    <ClCompile Include="..\..\savestate.cpp" />
+    <ClCompile Include="..\..\scsi.cpp" />
+    <ClCompile Include="..\..\scsiemul.cpp" />
+    <ClCompile Include="..\..\traps.cpp" />
+    <ClCompile Include="..\..\uaeexe.cpp" />
+    <ClCompile Include="..\..\uaeipc.cpp" />
+    <ClCompile Include="..\..\uaelib.cpp" />
+    <ClCompile Include="..\..\uaeresource.cpp" />
+    <ClCompile Include="..\..\uaeserial.cpp" />
+    <ClCompile Include="..\..\zfile.cpp" />
+    <ClCompile Include="..\..\zfile_archive.cpp" />
+    <ClCompile Include="..\..\jit\compemu.cpp" />
+    <ClCompile Include="..\..\jit\compemu_fpp.cpp" />
+    <ClCompile Include="..\..\jit\compemu_support.cpp" />
+    <ClCompile Include="..\..\jit\compstbl.cpp" />
+    <ClCompile Include="..\..\moduleripper.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\resources\35floppy.ico" />
+    <None Include="..\resources\amigainfo.ico" />
+    <None Include="..\resources\avioutput.ico" />
+    <None Include="..\resources\chip.ico" />
+    <None Include="..\resources\configfile.ico" />
+    <None Include="configfile.ico" />
+    <None Include="..\resources\cpu.ico" />
+    <None Include="diskimage.ico" />
+    <None Include="..\resources\diskimage.ico" />
+    <None Include="..\resources\Drive.ico" />
+    <None Include="..\resources\expansion.ico" />
+    <None Include="expansion.ico" />
+    <None Include="..\resources\file.ico" />
+    <None Include="file.ico" />
+    <None Include="..\resources\folder.ico" />
+    <None Include="..\resources\h_arrow.cur" />
+    <None Include="..\resources\icon3.ico" />
+    <None Include="..\resources\joystick.ico" />
+    <None Include="..\resources\lcd.bmp" />
+    <None Include="..\resources\misc.ico" />
+    <None Include="..\resources\move_dow.ico" />
+    <None Include="..\resources\move_up.ico" />
+    <None Include="..\resources\paths.ico" />
+    <None Include="..\resources\port.ico" />
+    <None Include="port.ico" />
+    <None Include="..\resources\quickstart.ico" />
+    <None Include="..\resources\root.ico" />
+    <None Include="..\resources\screen.ico" />
+    <None Include="..\resources\sound.ico" />
+    <None Include="..\resources\winuae.ico" />
+    <None Include="..\resources\xarcade-winuae.bmp" />
+    <None Include="..\resources\drive_click.wav" />
+    <None Include="..\resources\drive_snatch.wav" />
+    <None Include="..\resources\drive_spin.wav" />
+    <None Include="..\resources\drive_spinnd.wav" />
+    <None Include="..\resources\drive_startup.wav" />
+    <None Include="..\resources\resource" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\resources\winuae.rc">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\projects\winuae\src\od-win32\resources</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\projects\winuae\src\od-win32\resources</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='FullRelease|Win32'">\projects\winuae\src\od-win32\resources</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">\projects\winuae\src\od-win32\resources</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\projects\winuae\src\od-win32\resources</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\projects\winuae\src\od-win32\resources</AdditionalIncludeDirectories>
+    </ResourceCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Library Include="..\hq2x16.obj">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <FileType>Document</FileType>
+    </Library>
+    <Library Include="..\hq2x32.obj">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <FileType>Document</FileType>
+    </Library>
+    <Library Include="..\hq3x16.obj">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <FileType>Document</FileType>
+    </Library>
+    <Library Include="..\hq3x32.obj">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <FileType>Document</FileType>
+    </Library>
+    <Library Include="..\hq4x16.obj">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <FileType>Document</FileType>
+    </Library>
+    <Library Include="..\hq4x32.obj">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='FullRelease|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <FileType>Document</FileType>
+    </Library>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/od-win32/winuae_msvc11/winuae_msvc.vcxproj.filters b/od-win32/winuae_msvc11/winuae_msvc.vcxproj.filters
new file mode 100644 (file)
index 0000000..3418b03
--- /dev/null
@@ -0,0 +1,626 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="win32">
+      <UniqueIdentifier>{86cfeeb5-a9b0-4c06-bd94-69c258884a66}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+    </Filter>
+    <Filter Include="win32\Resource Files">
+      <UniqueIdentifier>{5c4c971a-37b6-4c1e-82f1-d225ebb12808}</UniqueIdentifier>
+      <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+    </Filter>
+    <Filter Include="common">
+      <UniqueIdentifier>{c0e78831-47fa-48a0-a34e-8c3c4410c34b}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+    </Filter>
+    <Filter Include="jit">
+      <UniqueIdentifier>{e76a708a-933c-4af4-bad2-0820d79b6a78}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+    </Filter>
+    <Filter Include="prowizard">
+      <UniqueIdentifier>{dab2f6c7-d741-4002-b0c9-566a1536642a}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="unpackers">
+      <UniqueIdentifier>{a88602d5-1980-49b2-a87a-79afa3ca7346}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="unpackers\dms">
+      <UniqueIdentifier>{6b855260-58da-4be4-b914-621ca2e33ca5}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="unpackers\lha">
+      <UniqueIdentifier>{1af2c9da-63ab-4226-8b97-5544a0a34433}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="unpackers\lzx">
+      <UniqueIdentifier>{99d2fcb7-e014-45fe-a543-4a9b9242a35b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="unpackers\wrp">
+      <UniqueIdentifier>{d2f2439b-d15d-47d5-bb26-1a9436aef770}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="unpackers\xfd">
+      <UniqueIdentifier>{d69b4a6c-84db-480b-8b80-60a2a3646f6e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="unpackers\zip">
+      <UniqueIdentifier>{93fcf20a-8921-43e8-b4b9-e5fceb81332d}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\ahidsound_dsonly.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\ahidsound_new.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\avioutput.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\blkdev_win32_ioctl.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\blkdev_win32_spti.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\bsdsock.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\caps\caps_win32.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\clipboard_win32.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\debug_win32.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\dinput.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\direct3d.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\driveclick_win32.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\dxwrap.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\fsdb_mywin32.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\fsdb_win32.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\hardfile_win32.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\hq2x_d3d.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\ioport.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\keyboard_win32.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\lcd.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\midi.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\mman.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\parser.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\picasso96_win.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\posixemu.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\registry.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\cloanto\RetroPlatformGuestIPC.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\rp.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\scaler.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\scaler_more.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\screenshot.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\serial_win32.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\sounddep\sound.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\unicode.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\win32.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\win32_uaenet.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\win32gfx.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\win32gui.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\win32gui_extra.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\writelog.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\a2065.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\a2091.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\akiko.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\amax.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ar.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\arcadia.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\audio.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\autoconf.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\blitfunc.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\blittable.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\blitter.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\blkdev.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\blkdev_cdimage.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\bsdsocket.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\catweasel.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cd32_fmv.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cdrom.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cdtv.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cfgfile.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cia.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\consolehook.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpudefs.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpuemu_0.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpuemu_11.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpuemu_12.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpuemu_20.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpuemu_31.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpummu.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpustbl.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\crc32.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\custom.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\debug.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\disk.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\diskutil.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\dongle.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\drawing.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\driveclick.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\enforcer.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\epsonprinter.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\expansion.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\fdi2raw.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\filesys.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\fpp.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\fsdb.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\fsusage.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\gayle.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\gfxutil.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\hardfile.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\identify.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\inputdevice.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\keybuf.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\main.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\memory.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\missing.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\native2amiga.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\ncr_scsi.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\newcpu.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\readcpu.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\rommgr.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\sampler.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\sana2.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\savestate.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\scsi.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\scsiemul.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\traps.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\uaeexe.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\uaeipc.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\uaelib.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\uaeresource.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\uaeserial.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\zfile.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\zfile_archive.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\jit\compemu.cpp">
+      <Filter>jit</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\jit\compemu_fpp.cpp">
+      <Filter>jit</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\jit\compemu_support.cpp">
+      <Filter>jit</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\jit\compstbl.cpp">
+      <Filter>jit</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\moduleripper.cpp">
+      <Filter>prowizard</Filter>
+    </ClCompile>
+    <ClCompile Include="..\win32_scaler.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\dms\crc_csum.cpp">
+      <Filter>unpackers\dms</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\dms\getbits.cpp">
+      <Filter>unpackers\dms</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\dms\maketbl.cpp">
+      <Filter>unpackers\dms</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\dms\pfile.cpp">
+      <Filter>unpackers\dms</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\dms\tables.cpp">
+      <Filter>unpackers\dms</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\dms\u_deep.cpp">
+      <Filter>unpackers\dms</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\dms\u_heavy.cpp">
+      <Filter>unpackers\dms</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\dms\u_init.cpp">
+      <Filter>unpackers\dms</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\dms\u_medium.cpp">
+      <Filter>unpackers\dms</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\dms\u_quick.cpp">
+      <Filter>unpackers\dms</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\dms\u_rle.cpp">
+      <Filter>unpackers\dms</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lha\crcio.cpp">
+      <Filter>unpackers\lha</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lha\dhuf.cpp">
+      <Filter>unpackers\lha</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lha\header.cpp">
+      <Filter>unpackers\lha</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lha\huf.cpp">
+      <Filter>unpackers\lha</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lha\larc.cpp">
+      <Filter>unpackers\lha</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lha\lhamaketbl.cpp">
+      <Filter>unpackers\lha</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lha\lharc.cpp">
+      <Filter>unpackers\lha</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lha\shuf.cpp">
+      <Filter>unpackers\lha</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lha\slide.cpp">
+      <Filter>unpackers\lha</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lha\uae_lha.cpp">
+      <Filter>unpackers\lha</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lha\util.cpp">
+      <Filter>unpackers\lha</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\lzx\unlzx.cpp">
+      <Filter>unpackers\lzx</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\wrp\warp.cpp">
+      <Filter>unpackers\wrp</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\archivers\zip\unzip.cpp">
+      <Filter>unpackers\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpuemu_21.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\mp3decoder.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\cda_play.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\inputrecord.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\statusline.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\hrtmon.rom.cpp">
+      <Filter>win32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\aros.rom.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\specialmonitors.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\events.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\calc.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\isofs.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\cpuemu_22.cpp">
+      <Filter>common</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\resources\35floppy.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\amigainfo.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\avioutput.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\chip.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\configfile.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="configfile.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\cpu.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="diskimage.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\diskimage.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\Drive.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\expansion.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="expansion.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\file.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="file.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\folder.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\h_arrow.cur">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\icon3.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\joystick.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\lcd.bmp">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\misc.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\move_dow.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\move_up.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\paths.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\port.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="port.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\quickstart.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\root.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\screen.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\sound.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\winuae.ico">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\xarcade-winuae.bmp">
+      <Filter>win32\Resource Files</Filter>
+    </None>
+    <None Include="..\resources\drive_click.wav" />
+    <None Include="..\resources\drive_snatch.wav" />
+    <None Include="..\resources\drive_spin.wav" />
+    <None Include="..\resources\drive_spinnd.wav" />
+    <None Include="..\resources\drive_startup.wav" />
+    <None Include="..\resources\resource" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\resources\winuae.rc">
+      <Filter>win32\Resource Files</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <Library Include="..\hq2x16.obj" />
+    <Library Include="..\hq2x32.obj" />
+    <Library Include="..\hq3x16.obj" />
+    <Library Include="..\hq3x32.obj" />
+    <Library Include="..\hq4x16.obj" />
+    <Library Include="..\hq4x32.obj" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
index 80810f7513d5dcc2aa3af0366fb38a1ad1a02912..c1520fd12d31bae3bfd2a4bf6a5ed4079d69afe5 100644 (file)
@@ -1,6 +1,52 @@
 
 - restore only single input target to default.
 
+Beta 13:
+
+- Parallel port audio sampler had very bad quality on some systems. NOTE: Sampler requires exact DirectSound
+  recording position reporting = not that good results when using some onboard Realteks etc..
+  (It can be made better but because this is really pointless feature: pay or buy a better PC)
+- Very old statefiles triggered keyboard powerup initialization sequence when restored, caused phantom keypresses.
+- Sinc audio interpolation filter clipping fixed. (Was always wrong in UAE, was much more noticeable after b11 audio update)
+- Input configuration parser didn't parse custom input event strings correctly if it contained '.' or ',' characters.
+- Added experimental (and mostly useless) option that removes DOS reserved name restriction (CON is the most popular because
+  it is also included with WB disks). Note that this causes some interesting side effects: most Windows programs, including
+  Explorer, won't be able to open any file if it has DOS reserved name... You don't need this option, UAE has always
+  mangled illegal names transparently (for example CON becomes something like "__uae__con" on host side)
+  Configuration file only: win32.filesystem_mangle_reserved_names=false (defaults to true if not set)
+- Disable screensaver option didn't work, SetThreadExecutionState() needs to be called periodically, not just once,
+  function documentation is a bit confusing..
+- When deciding first visible line and programmed mode: select which is largest, VBSTOP or VSSTOP. (SuperPlus)
+- Added Keep autoscale aspect ratio checkbox, only sort of working now...
+- Map rom region size mirrors ROM size, address automatically moved to 0xe00000 (512k) or 0xa80000 (1M) if 24-bit CPU.
+- Remove interlace artifacts option halved size of display horizontally in some programmed screen modes.
+- Portaudio sound and sound was deactivated automatically: sound led kept showing buffer underrun state.
+- Disable screen updates if monitor enters power saving mode.
+- When restoring state file with floppy image(s) missing (files moved etc..), there still was rare possibility that floppy
+  drive was reported as empty.
+- Some more manual BPLxDAT emulation updates, Sequential Magnet part garbage introduced in previous update is gone.
+- Color registers were emulated as non-existing instead of write-only in OCS/ECS modes. (I guess only visible difference
+- DENISEID is now non-existing if 68000 prefetch or cycle-exact and OCS Denise. (Programs may misdetect if no prefetch emulated,
+  and now programs, if they even exist, that misdetect it on real OCS A500 will misdetect it on emulation too! :)
+  will be more colorful display if program crashes or does weird things and starts reading from color registers..)
+- Renamed Paths panel "WinUAE defaults"-paths, meaning of selection should make more sense now.
+- Better input qualifier GUI, Windows key default qualifier added.
+- Slot #5-#8 custom events didn't work correctly.
+
+- GUI resize and font selection support added (misc panel). It was possible after all, needed only some hacking..
+  * Default size is now larger then previously.
+  * This is a hack, rebuilds classic Windows dialog resources on the fly while adjusting GUI element coordinates and size.
+  * GUI size after resizing may not be exactly what you expected.
+  * Windows always closes and reopens after resize. It is also normal, can be improved, later if ever..
+  * Window/Fullwindow/Fullscreen have separate position, size and font settings.
+  * Less than 80% size not officially supported, overlapping and clipping is normal. Select smaller font.
+  * Possible future improvements: more preset sizes, some kind of autofit in smaller fullscreen modes.
+  * I hope GUI now appears to be more modern than it actually is :)
+
+- Version bumped to 2.5.0.
+
+Beta 12:
+
 - Moved cycle-exact option to Chipset group in GUI. Other options are minor options/hacks, CE is not.
 - Do not enable wait for blit if immediate blitter is enabled in quickstart mode.
 - Added RTG hardware sprite (mouse cursor) enable/disable option. Enabled by default if D3D mode. Was always enabled
index c08e9c30afad4a6d300a17e8868acc3af197625d..273fbac42b1a01c2122f5aee061bc3ed6976389e 100644 (file)
@@ -31,7 +31,7 @@ static int sampleframes;
 static int recordbufferframes;
 static float clockspersample;
 static int vsynccnt;
-static int safepos;
+static int safediff;
 float sampler_evtime;
 
 static int capture_init (void)
@@ -115,7 +115,6 @@ uae_u8 sampler_getsample (int channel)
 #endif
        static double doffset_offset;
        HRESULT hr;
-       DWORD pos;
        DWORD t;
        void *p1, *p2;
        DWORD len1, len2;
@@ -128,6 +127,7 @@ uae_u8 sampler_getsample (int channel)
                channel = 0;
 
        if (!inited) {
+               DWORD pos;
                if (!capture_init ()) {
                        capture_free ();
                        return 0;
@@ -136,6 +136,18 @@ uae_u8 sampler_getsample (int channel)
                oldcycles = get_cycles ();
                oldoffset = -1;
                doffset_offset = 0;
+               hr = lpDSB2r->GetCurrentPosition (&t, &pos);
+               if (FAILED (hr)) {
+                       sampler_free ();
+                       return 0;
+               }               
+               if (t >= pos)
+                       safediff = t - pos;
+               else
+                       safediff = recordbufferframes * SAMPLESIZE - pos + t;
+               write_log (_T("SAMPLER: safediff %d %d\n"), safediff, safediff + sampleframes * SAMPLESIZE);
+               safediff += 4 * sampleframes * SAMPLESIZE;
+
 #if 0
                diffsample = 0;
                safepos = -recordbufferframes / 10 * SAMPLESIZE;
@@ -174,8 +186,12 @@ uae_u8 sampler_getsample (int channel)
                                samplecnt++;
                        }
                }
-               hr = lpDSB2r->GetCurrentPosition (&t, &pos);
-               hr = lpDSB2r->Lock (t, sampleframes * SAMPLESIZE, &p1, &len1, &p2, &len2, 0);
+               hr = lpDSB2r->GetCurrentPosition (&t, NULL);
+               int pos = t;
+               pos -= safediff;
+               if (pos < 0)
+                       pos += recordbufferframes * SAMPLESIZE;
+               hr = lpDSB2r->Lock (pos, sampleframes * SAMPLESIZE, &p1, &len1, &p2, &len2, 0);
                if (FAILED (hr)) {
                        write_log (_T("SAMPLER: Lock() failed %x\n"), hr);
                        return 0;
index 1eceff658165f8d31f7608cc20ec75d2f3b87cd7..2bb971046c21e259ab276e73c5b47d5bf0681608 100644 (file)
@@ -516,6 +516,7 @@ void restore_state (const TCHAR *filename)
        savestate_file = f;
        restore_header (chunk);
        xfree (chunk);
+       restore_cia_start ();
        changed_prefs.bogomem_size = 0;
        changed_prefs.chipmem_size = 0;
        changed_prefs.fastmem_size = 0;
index e8058462b2b551ebe1c8e51884e32e24215c4c1a..724b1016d4a55f95d2ffc4947524b87011e559c4 100644 (file)
@@ -3,7 +3,7 @@
   */
 
 /* tables are: a500 off, a500 on, a1200 off, a1200 on, vanilla. */
-const int winsinc_integral[5][2048] = {
+const int winsinc_integral[5][SINC_QUEUE_MAX_AGE] = {
     {
 131072,131072,131072,131072,131072,131072,131072,131072,131072,131072,131072,
 131071,131071,131071,131071,131071,131071,131071,131071,131071,131071,131071,131070,