]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
2700b12
authorToni Wilen <twilen@winuae.net>
Sun, 10 Nov 2013 13:38:32 +0000 (15:38 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 10 Nov 2013 13:38:32 +0000 (15:38 +0200)
17 files changed:
blitter.cpp
custom.cpp
gencpu.cpp
include/memory.h
include/newcpu.h
memory.cpp
newcpu.cpp
od-win32/avioutput.cpp
od-win32/dinput.cpp
od-win32/graphics/amiga_header_2013.bmp [new file with mode: 0644]
od-win32/graphics/amiga_welcome_2013.bmp [new file with mode: 0644]
od-win32/win32.h
od-win32/win32gui_extra.cpp
od-win32/winuaechangelog.txt
od-win32/wix/Product.wxs
od-win32/wix/WixUI_FeatureTree_NL.wxs [new file with mode: 0644]
od-win32/wix/wix.wixproj

index c17cb4f485263eeb271c39ecb318856f36c5a76c..02f53e71c0d290bcc5e0b3a89bb85aa2f9af8241 100644 (file)
@@ -48,6 +48,7 @@ static int original_ch, original_fill, original_line;
 static int blinea_shift;
 static uae_u16 blinea, blineb;
 static int blitline, blitfc, blitfill, blitife, blitsing, blitdesc;
+static int blitline_started;
 static int blitonedot, blitsign, blitlinepixel;
 static int blit_add;
 static int blit_modadda, blit_modaddb, blit_modaddc, blit_modaddd;
@@ -1175,6 +1176,10 @@ static void blit_bltset (int con)
                blitdesc = bltcon1 & 2;
                blt_info.blitbshift = bltcon1 >> 12;
                blt_info.blitdownbshift = 16 - blt_info.blitbshift;
+               if ((bltcon1 & 1) && !blitline_started) {
+                       write_log (_T("BLITTER: linedraw enabled after starting normal blit! %08x\n"), M68K_GETPC);
+                       return;
+               }
        }
 
        if (con & 1) {
@@ -1187,11 +1192,11 @@ static void blit_bltset (int con)
        blitfill = !!(bltcon1 & 0x18);
 
        // disable line draw if bltcon0 is written while it is active
-       if (!savestate_state && bltstate != BLT_done && bltstate != BLT_init && blitline) {
+       if (!savestate_state && bltstate != BLT_done && bltstate != BLT_init && blitline && blitline_started) {
                blitline = 0;
                bltstate = BLT_done;
                blit_interrupt = 1;
-               write_log (_T("BLITTER: register modification during linedraw!\n"));
+               write_log (_T("BLITTER: register modification during linedraw! %08x\n"), M68K_GETPC);
        }
 
        if (blitline) {
@@ -1327,6 +1332,7 @@ static void blitter_start_init (void)
        preva = 0;
        prevb = 0;
        blit_frozen = 0;
+       blitline_started = bltcon1 & 1;
 
        blit_bltset (1 | 2);
        blit_modset ();
index 5156b1ddc424e1cb759dc65413f97136424993ae..ea14f9a792ae1065aea95ad42cf5b1b78e445afd 100644 (file)
@@ -1206,7 +1206,7 @@ STATIC_INLINE void fetch (int nr, int fm, int hpos)
                bplpt[nr] += 2 << fm;
                bplptx[nr] += 2 << fm;
 
-               if (hpos == 0xe2 && !(beamcon0 & 0x80)) {
+               if (hpos >= 0xe1 && !(beamcon0 & 0x80)) {
                        static int warned = 30;
                        if (warned > 0) {
                                write_log (_T("WARNING: BPL fetch at hpos 0x%02X!\n"), hpos);
@@ -3694,6 +3694,7 @@ static uae_u16 VPOSR (void)
 
 static void VPOSW (uae_u16 v)
 {
+       int oldvpos = vpos;
 #if 0
        if (M68K_GETPC < 0xf00000 || 1)
                write_log (_T("VPOSW %04X PC=%08x\n"), v, M68K_GETPC);
@@ -3714,10 +3715,13 @@ static void VPOSW (uae_u16 v)
        if (!(currprefs.chipset_mask & CSMASK_ECS_AGNUS))
                v &= 1;
        vpos |= v << 8;
+       if (vpos < oldvpos)
+               vpos = oldvpos;
 }
 
 static void VHPOSW (uae_u16 v)
 {
+       int oldvpos = vpos;
 #if 0
        if (M68K_GETPC < 0xf00000 || 1)
                write_log (_T("VHPOSW %04X PC=%08x\n"), v, M68K_GETPC);
@@ -3725,6 +3729,11 @@ static void VHPOSW (uae_u16 v)
        v >>= 8; // lets ignore hpos for now
        vpos &= 0xff00;
        vpos |= v;
+       if (vpos < oldvpos) {
+               vpos = oldvpos;
+       } else if (vpos < minfirstline && oldvpos < minfirstline) {
+               vpos = oldvpos;
+       }
 }
 
 static uae_u16 VHPOSR (void)
@@ -6310,7 +6319,9 @@ static void vsync_handler_post (void)
                gfxboard_vsync_handler ();
 #endif
 
-       if ((beamcon0 & (0x20 | 0x80)) != (new_beamcon0 & (0x20 | 0x80)) || (vpos_count > 0 && abs (vpos_count - vpos_count_diff) > 1)) {
+       if ((beamcon0 & (0x20 | 0x80)) != (new_beamcon0 & (0x20 | 0x80))) {
+               init_hz ();
+       } else if (vpos_count > 0 && abs (vpos_count - vpos_count_diff) > 1) {
                init_hz ();
        } else if (interlace_changed || changed_chipset_refresh () || lof_changed) {
                compute_framesync ();
@@ -8498,6 +8509,8 @@ uae_u32 wait_cpu_cycle_read (uaecptr addr, int mode)
 #endif
 
        x_do_cycles_post (CYCLE_UNIT, v);
+
+       regs.chipset_latch_rw = regs.chipset_latch_read = v;
        return v;
 }
 
@@ -8538,6 +8551,7 @@ uae_u32 wait_cpu_cycle_read_ce020 (uaecptr addr, int mode)
        if (currprefs.cpu_model == 68020)
                x_do_cycles_post (CYCLE_UNIT / 2, v);
 
+       regs.chipset_latch_rw = regs.chipset_latch_read = v;
        return v;
 }
 
@@ -8571,6 +8585,7 @@ void wait_cpu_cycle_write (uaecptr addr, int mode, uae_u32 v)
 
        x_do_cycles_post (CYCLE_UNIT, v);
 
+       regs.chipset_latch_rw = regs.chipset_latch_write = v;
 }
 
 void wait_cpu_cycle_write_ce020 (uaecptr addr, int mode, uae_u32 v)
@@ -8604,6 +8619,8 @@ void wait_cpu_cycle_write_ce020 (uaecptr addr, int mode, uae_u32 v)
 
        if (currprefs.cpu_model == 68020)
                x_do_cycles_post (CYCLE_UNIT / 2, v);
+
+       regs.chipset_latch_rw = regs.chipset_latch_write = v;
 }
 
 void do_cycles_ce (unsigned long cycles)
index 101c6b9f74efe9ab3fe3463a93b9d6504616ccfb..a81e38c39443818427d1981dca080d611d008ff9 100644 (file)
@@ -2436,7 +2436,7 @@ static void bsetcycles (struct instr *curi)
 
 static int islongimm (struct instr *curi)
 {
-       return (curi->size == sz_long && (curi->smode == Dreg || curi->smode == imm));
+       return (curi->size == sz_long && (curi->smode == Dreg || curi->smode == imm || curi->smode == Areg));
 }
 
 
@@ -2802,7 +2802,7 @@ static void gen_opcode (unsigned long int opcode)
                if (curi->dmode == Dreg) {
                        if (curi->size == sz_long) {
                                c += 2;
-                               if (curi->smode == imm || curi->smode == immi || curi->smode == Dreg)
+                               if (curi->smode == imm || curi->smode == immi || curi->smode == Dreg || curi->smode == Areg)
                                        c += 2;
                        }
                }
@@ -2893,7 +2893,7 @@ static void gen_opcode (unsigned long int opcode)
                if (curi->dmode == Dreg) {
                        if (curi->size == sz_long) {
                                c += 2;
-                               if (curi->smode == imm || curi->smode == immi || curi->smode == Dreg)
+                               if (curi->smode == imm || curi->smode == immi || curi->smode == Dreg || curi->smode == Areg)
                                        c += 2;
                        }
                }
@@ -3240,8 +3240,11 @@ static void gen_opcode (unsigned long int opcode)
                                int prefetch_done = 0, flags;
                                int dualprefetch = curi->dmode == absl && (curi->smode != Dreg && curi->smode != Areg && curi->smode != imm);
                                genamode (curi, curi->smode, "srcreg", curi->size, "src", 1, 0, GF_MOVE);
-                               flags = 1 | (dualprefetch ? GF_NOREFILL : 0);
-                               genamode (curi, curi->dmode, "dstreg", curi->size, "dst", 2, 0, flags | GF_MOVE);
+                               flags = GF_MOVE | GF_APDI;
+                               //if (curi->size == sz_long && (curi->smode == Dreg || curi->smode == Areg))
+                               //      flags &= ~GF_APDI;
+                               flags |= dualprefetch ? GF_NOREFILL : 0;
+                               genamode (curi, curi->dmode, "dstreg", curi->size, "dst", 2, 0, flags);
                                if (curi->mnemo == i_MOVEA && curi->size == sz_word)
                                        printf ("\tsrc = (uae_s32)(uae_s16)src;\n");
                                if (curi->dmode == Apdi) {
@@ -3855,12 +3858,12 @@ static void gen_opcode (unsigned long int opcode)
                printf ("\t} else {\n");
                printf ("\t\tuae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;\n");
                printf ("\t\tuae_u32 rem = (uae_u32)dst %% (uae_u32)(uae_u16)src;\n");
-               fill_prefetch_next ();
                if (using_ce) {
                        start_brace ();
                        printf ("\t\tint cycles = (getDivu68kCycles((uae_u32)dst, (uae_u16)src));\n");
                        addcycles000_3 ("\t\t");
                }
+               fill_prefetch_next ();
                /* The N flag appears to be set each time there is an overflow.
                 * Weird. but 68020 only sets N when dst is negative.. */
                printf ("\t\tif (newv > 0xffff) {\n");
@@ -3897,12 +3900,12 @@ static void gen_opcode (unsigned long int opcode)
                printf ("\t\tgoto %s;\n", endlabelstr);
                printf ("\t}\n");
                printf ("\tCLEAR_CZNV ();\n");
-               fill_prefetch_next ();
                if (using_ce) {
                        start_brace ();
                        printf ("\t\tint cycles = (getDivs68kCycles((uae_s32)dst, (uae_s16)src));\n");
                        addcycles000_3 ("\t\t");
                }
+               fill_prefetch_next ();
                printf ("\tif (dst == 0x80000000 && src == -1) {\n");
                printf ("\t\tSET_VFLG (1);\n");
                printf ("\t\tSET_NFLG (1);\n");
index 204a65399a3094d1a12e4d107181cc683994a784..f847d698ba95b09dd8c0ef81ac3587a9748dd0de 100644 (file)
@@ -53,6 +53,9 @@ extern void wait_cpu_cycle_write_ce020 (uaecptr addr, int mode, uae_u32 v);
 #define cardmem_start_addr 0x00E00000
 #define kickmem_start_addr 0x00F80000
 
+#define ROM_SIZE_512 524288
+#define ROM_SIZE_256 262144
+
 extern bool ersatzkickfile;
 extern bool cloanto_rom, kickstart_rom;
 extern uae_u16 kickstart_version;
index e61cd3291007f5ec25650943a99f452b40c80339..f410e5025deecfbb8026ebd0ad25c45e3fb5654b 100644 (file)
@@ -138,6 +138,10 @@ struct regstruct
 
        uae_u16 irc, ir;
        uae_u32 spcflags;
+       uae_u32 last_prefetch;
+       uae_u32 chipset_latch_rw;
+       uae_u32 chipset_latch_read;
+       uae_u32 chipset_latch_write;
 
        uaecptr usp, isp, msp;
        uae_u16 sr;
index bdaff4d7b8fa99090f1581c0217c37c4af1c672e..41905ecde2da3664021d581644453157c798b829 100644 (file)
@@ -180,15 +180,25 @@ static void dummylog (int rw, uaecptr addr, int size, uae_u32 val, int ins)
 
 static uae_u32 dummy_get (uaecptr addr, int size)
 {
-       uae_u32 v;
-       if (currprefs.cpu_model >= 68020)
-               return NONEXISTINGDATA;
-       v = (regs.irc << 16) | regs.irc;
+       uae_u32 v = NONEXISTINGDATA;
+
+       if (currprefs.cpu_model >= 68040)
+               return v;
+       if (!currprefs.cpu_compatible)
+               return v;
+       if (currprefs.address_space_24)
+               addr &= 0x00ffffff;
+       if (addr >= 0x10000000)
+               return v;
+       /* fixme: emulate correct hardware behavior */
+       if (munge24 (m68k_getpc () & 0xFFF80000) == 0xF80000)
+               return v;
        if (size == 4) {
-               ;
+               v = (regs.irc << 16) | regs.irc;
        } else if (size == 2) {
-               v &= 0xffff;
+               v = regs.irc & 0xffff;
        } else {
+               v = regs.irc;
                v = (addr & 1) ? (v & 0xff) : ((v >> 8) & 0xff);
        }
 #if 0
@@ -665,11 +675,11 @@ static void a1000_handle_kickstart (int mode)
        protect_roms (false);
        if (mode == 0) {
                a1000_kickstart_mode = 0;
-               memcpy (kickmem_bank.baseaddr, kickmem_bank.baseaddr + 262144, 262144);
-               kickstart_version = (kickmem_bank.baseaddr[262144 + 12] << 8) | kickmem_bank.baseaddr[262144 + 13];
+               memcpy (kickmem_bank.baseaddr, kickmem_bank.baseaddr + ROM_SIZE_256, ROM_SIZE_256);
+               kickstart_version = (kickmem_bank.baseaddr[ROM_SIZE_256 + 12] << 8) | kickmem_bank.baseaddr[ROM_SIZE_256 + 13];
        } else {
                a1000_kickstart_mode = 1;
-               memcpy (kickmem_bank.baseaddr, a1000_bootrom, 262144);
+               memcpy (kickmem_bank.baseaddr, a1000_bootrom, ROM_SIZE_256);
                kickstart_version = 0;
        }
        if (kickstart_version == 0xffff)
@@ -702,7 +712,7 @@ static void REGPARAM2 kickmem_lput (uaecptr addr, uae_u32 b)
                m = (uae_u32 *)(kickmem_bank.baseaddr + addr);
                do_put_mem_long (m, b);
 #if 0
-               if (addr == 524288-4) {
+               if (addr == ROM_SIZE_512-4) {
                        rom_write_enabled = false;
                        write_log (_T("ROM write disabled\n"));
                }
@@ -1037,7 +1047,7 @@ addrbank custmem2_bank = {
        custmem2_lget, custmem2_wget, ABFLAG_RAM
 };
 
-#define fkickmem_size 524288
+#define fkickmem_size ROM_SIZE_512
 static int a3000_f0;
 void a3000_fakekick (int map)
 {
@@ -1096,7 +1106,7 @@ static int read_kickstart (struct zfile *f, uae_u8 *mem, int size, int dochecksu
                zfile_fseek (f, 512, SEEK_SET);
                kickdisk = 1;
 #if 0
-       } else if (size >= 524288 && !memcmp (buffer, "AMIG", 4)) {
+       } else if (size >= ROM_SIZE_512 && !memcmp (buffer, "AMIG", 4)) {
                /* ReKick */
                zfile_fseek (f, oldpos + 0x6c, SEEK_SET);
                cr = 2;
@@ -1118,10 +1128,10 @@ static int read_kickstart (struct zfile *f, uae_u8 *mem, int size, int dochecksu
 
        i = zfile_fread (mem, 1, size, f);
 
-       if (kickdisk && i > 262144)
-               i = 262144;
+       if (kickdisk && i > ROM_SIZE_256)
+               i = ROM_SIZE_256;
 #if 0
-       if (i >= 262144 && (i != 262144 && i != 524288 && i != 524288 * 2 && i != 524288 * 4)) {
+       if (i >= ROM_SIZE_256 && (i != ROM_SIZE_256 && i != ROM_SIZE_512 && i != ROM_SIZE_512 * 2 && i != ROM_SIZE_512 * 4)) {
                notify_user (NUMSG_KSROMREADERROR);
                return 0;
        }
@@ -1143,23 +1153,23 @@ static int read_kickstart (struct zfile *f, uae_u8 *mem, int size, int dochecksu
        }
        if (currprefs.cs_a1000ram) {
                int off = 0;
-               a1000_bootrom = xcalloc (uae_u8, 262144);
-               while (off + i < 262144) {
+               a1000_bootrom = xcalloc (uae_u8, ROM_SIZE_256);
+               while (off + i < ROM_SIZE_256) {
                        memcpy (a1000_bootrom + off, kickmem_bank.baseaddr, i);
                        off += i;
                }
                memset (kickmem_bank.baseaddr, 0, kickmem_bank.allocated);
                a1000_handle_kickstart (1);
                dochecksum = 0;
-               i = 524288;
+               i = ROM_SIZE_512;
        }
 
-       for (j = 0; j < 256 && i >= 262144; j++) {
+       for (j = 0; j < 256 && i >= ROM_SIZE_256; j++) {
                if (!memcmp (mem + j, kickstring, strlen (kickstring) + 1))
                        break;
        }
 
-       if (j == 256 || i < 262144)
+       if (j == 256 || i < ROM_SIZE_256)
                dochecksum = 0;
        if (dochecksum)
                kickstart_checksum (mem, size);
@@ -1185,7 +1195,7 @@ static bool load_extendedkickstart (const TCHAR *romextfile, int type)
        }
        zfile_fseek (f, 0, SEEK_END);
        size = zfile_ftell (f);
-       extendedkickmem_bank.allocated = 524288;
+       extendedkickmem_bank.allocated = ROM_SIZE_512;
        off = 0;
        if (type == 0) {
                if (currprefs.cs_cd32cd) {
@@ -1251,7 +1261,7 @@ static int patch_residents (uae_u8 *kickmemory, int size)
        int i, j, patched = 0;
        uae_char *residents[] = { "NCR scsi.device", 0 };
        // "scsi.device", "carddisk.device", "card.resource" };
-       uaecptr base = size == 524288 ? 0xf80000 : 0xfc0000;
+       uaecptr base = size == ROM_SIZE_512 ? 0xf80000 : 0xfc0000;
 
        if (currprefs.cs_mbdmac == 2)
                residents[0] = NULL;
@@ -1284,7 +1294,7 @@ static int patch_residents (uae_u8 *kickmemory, int size)
 static void patch_kick (void)
 {
        int patched = 0;
-       if (kickmem_bank.allocated >= 524288 && currprefs.kickshifter)
+       if (kickmem_bank.allocated >= ROM_SIZE_512 && currprefs.kickshifter)
                patched += patch_shapeshifter (kickmem_bank.baseaddr);
        patched += patch_residents (kickmem_bank.baseaddr, kickmem_bank.allocated);
        if (extendedkickmem_bank.baseaddr) {
@@ -1309,14 +1319,17 @@ static bool load_kickstart_replacement (void)
        f = zfile_gunzip (f);
        if (!f)
                return false;
-       kickmem_bank.mask = 0x80000 - 1;
-       kickmem_bank.allocated = 0x80000;
-       extendedkickmem_bank.allocated = 0x80000;
+
+       extendedkickmem_bank.allocated = ROM_SIZE_512;
+       extendedkickmem_bank.mask = ROM_SIZE_512 - 1;
        extendedkickmem_type = EXTENDED_ROM_KS;
        extendedkickmem_bank.baseaddr = mapped_malloc (extendedkickmem_bank.allocated, _T("rom_e0"));
-       read_kickstart (f, extendedkickmem_bank.baseaddr, extendedkickmem_bank.allocated, 0, 1);
-       extendedkickmem_bank.mask = extendedkickmem_bank.allocated - 1;
-       read_kickstart (f, extendedkickmem_bank.baseaddr, 0x80000, 1, 0);
+       read_kickstart (f, extendedkickmem_bank.baseaddr, ROM_SIZE_512, 0, 1);
+
+       kickmem_bank.allocated = ROM_SIZE_512;
+       kickmem_bank.mask = ROM_SIZE_512 - 1;
+       read_kickstart (f, kickmem_bank.baseaddr, ROM_SIZE_512, 1, 0);
+
        zfile_fclose (f);
        seriallog = -1;
        return true;
@@ -1363,27 +1376,27 @@ static int load_kickstart (void)
 
        if (f != NULL) {
                int filesize, size, maxsize;
-               int kspos = 524288;
+               int kspos = ROM_SIZE_512;
                int extpos = 0;
 
-               maxsize = 524288;
+               maxsize = ROM_SIZE_512;
                zfile_fseek (f, 0, SEEK_END);
                filesize = zfile_ftell (f);
                zfile_fseek (f, 0, SEEK_SET);
                if (filesize == 1760 * 512) {
-                       filesize = 262144;
-                       maxsize = 262144;
+                       filesize = ROM_SIZE_256;
+                       maxsize = ROM_SIZE_256;
                }
-               if (filesize == 524288 + 8) {
+               if (filesize == ROM_SIZE_512 + 8) {
                        /* GVP 0xf0 kickstart */
                        zfile_fseek (f, 8, SEEK_SET);
                }
-               if (filesize >= 524288 * 2) {
+               if (filesize >= ROM_SIZE_512 * 2) {
                        struct romdata *rd = getromdatabyzfile(f);
                        zfile_fseek (f, kspos, SEEK_SET);
                }
-               if (filesize >= 524288 * 4) {
-                       kspos = 524288 * 3;
+               if (filesize >= ROM_SIZE_512 * 4) {
+                       kspos = ROM_SIZE_512 * 3;
                        extpos = 0;
                        zfile_fseek (f, kspos, SEEK_SET);
                }
@@ -1392,8 +1405,8 @@ static int load_kickstart (void)
                        goto err;
                kickmem_bank.mask = size - 1;
                kickmem_bank.allocated = size;
-               if (filesize >= 524288 * 2 && !extendedkickmem_type) {
-                       extendedkickmem_bank.allocated = 0x80000;
+               if (filesize >= ROM_SIZE_512 * 2 && !extendedkickmem_type) {
+                       extendedkickmem_bank.allocated = ROM_SIZE_512;
                        if (currprefs.cs_cdtvcd || currprefs.cs_cdtvram) {
                                extendedkickmem_type = EXTENDED_ROM_CDTV;
                                extendedkickmem_bank.allocated *= 2;
@@ -1408,13 +1421,13 @@ static int load_kickstart (void)
                        read_kickstart (f, extendedkickmem_bank.baseaddr, extendedkickmem_bank.allocated, 0, 1);
                        extendedkickmem_bank.mask = extendedkickmem_bank.allocated - 1;
                }
-               if (filesize > 524288 * 2) {
-                       extendedkickmem2_bank.allocated = 524288 * 2;
+               if (filesize > ROM_SIZE_512 * 2) {
+                       extendedkickmem2_bank.allocated = ROM_SIZE_512 * 2;
                        extendedkickmem2_bank.baseaddr = mapped_malloc (extendedkickmem2_bank.allocated, _T("rom_a8"));
-                       zfile_fseek (f, extpos + 524288, SEEK_SET);
-                       read_kickstart (f, extendedkickmem2_bank.baseaddr, 524288, 0, 1);
-                       zfile_fseek (f, extpos + 524288 * 2, SEEK_SET);
-                       read_kickstart (f, extendedkickmem2_bank.baseaddr + 524288, 524288, 0, 1);
+                       zfile_fseek (f, extpos + ROM_SIZE_512, SEEK_SET);
+                       read_kickstart (f, extendedkickmem2_bank.baseaddr, ROM_SIZE_512, 0, 1);
+                       zfile_fseek (f, extpos + ROM_SIZE_512 * 2, SEEK_SET);
+                       read_kickstart (f, extendedkickmem2_bank.baseaddr + ROM_SIZE_512, ROM_SIZE_512, 0, 1);
                        extendedkickmem2_bank.mask = extendedkickmem2_bank.allocated - 1;
                        extendedkickmem2_bank.start = 0xa80000;
                }
@@ -2006,7 +2019,7 @@ void memory_reset (void)
                extendedkickmem_type = 0;
                load_extendedkickstart (currprefs.romextfile, 0);
                load_extendedkickstart (currprefs.romextfile2, EXTENDED_ROM_CDTV);
-               kickmem_bank.mask = 524288 - 1;
+               kickmem_bank.mask = ROM_SIZE_512 - 1;
                if (!load_kickstart ()) {
                        if (_tcslen (currprefs.romfile) > 0) {
                                write_log (_T("Failed to open '%s'\n"), currprefs.romfile);
@@ -2164,7 +2177,7 @@ void memory_reset (void)
                break;
 #ifdef CDTV
        case EXTENDED_ROM_CDTV:
-               map_banks (&extendedkickmem_bank, 0xF0, extendedkickmem_bank.allocated == 2 * 524288 ? 16 : 8, 0);
+               map_banks (&extendedkickmem_bank, 0xF0, extendedkickmem_bank.allocated == 2 * ROM_SIZE_512 ? 16 : 8, 0);
                break;
 #endif
 #ifdef CD32
@@ -2260,8 +2273,8 @@ void memory_init (void)
        custmem1_bank.baseaddr = NULL;
        custmem2_bank.baseaddr = NULL;
 
-       kickmem_bank.baseaddr = mapped_malloc (0x80000, _T("kick"));
-       memset (kickmem_bank.baseaddr, 0, 0x80000);
+       kickmem_bank.baseaddr = mapped_malloc (ROM_SIZE_512, _T("kick"));
+       memset (kickmem_bank.baseaddr, 0, ROM_SIZE_512);
        _tcscpy (currprefs.romfile, _T("<none>"));
        currprefs.romextfile[0] = 0;
 
@@ -2566,7 +2579,7 @@ uae_u8 *save_rom (int first, int *len, uae_u8 *dstptr)
                        }
                        if (i == mem_size / 2 - 4) {
                                mem_size /= 2;
-                               mem_start += 262144;
+                               mem_start += ROM_SIZE_256;
                        }
                        version = longget (mem_start + 12); /* version+revision */
                        _stprintf (tmpname, _T("Kickstart %d.%d"), wordget (mem_start + 12), wordget (mem_start + 14));
index 6e2d3e98e1cac827fa1f4416def9a1d1cbbbcd2d..e2683954285ad321716dba68ba80c7c36c30d2ef 100644 (file)
@@ -5537,7 +5537,7 @@ void m68k_dumpstate (uaecptr pc, uaecptr *nextpc)
                for (lookup1 = lookuptab; lookup1->mnemo != dp->mnemo; lookup1++);
                dp = table68k + regs.ir;
                for (lookup2 = lookuptab; lookup2->mnemo != dp->mnemo; lookup2++);
-               console_out_f (_T("Prefetch %04x (%s) %04x (%s)\n"), regs.irc, lookup1->name, regs.ir, lookup2->name);
+               console_out_f (_T("Prefetch %04x (%s) %04x (%s) Chip latch %08X\n"), regs.irc, lookup1->name, regs.ir, lookup2->name, regs.chipset_latch_rw);
        }
 
        if (pc != 0xffffffff) {
@@ -5697,6 +5697,11 @@ uae_u8 *restore_cpu (uae_u8 *src)
                        restore_u32 ();
                }
        }
+       if (flags & 0x10000000) {
+               regs.chipset_latch_rw = restore_u32 ();
+               regs.chipset_latch_read = restore_u32 ();
+               regs.chipset_latch_write = restore_u32 ();
+       }
 
        write_log (_T("CPU: %d%s%03d, PC=%08X\n"),
                model / 1000, flags & 1 ? _T("EC") : _T(""), model % 1000, regs.pc);
@@ -5921,7 +5926,7 @@ uae_u8 *save_cpu (int *len, uae_u8 *dstptr)
                dstbak = dst = xmalloc (uae_u8, 1000);
        model = currprefs.cpu_model;
        save_u32 (model);                                       /* MODEL */
-       save_u32 (0x80000000 | 0x40000000 | 0x20000000 | (currprefs.address_space_24 ? 1 : 0)); /* FLAGS */
+       save_u32 (0x80000000 | 0x40000000 | 0x20000000 | 0x10000000 | (currprefs.address_space_24 ? 1 : 0)); /* FLAGS */
        for (i = 0;i < 15; i++)
                save_u32 (regs.regs[i]);                /* D0-D7 A0-A6 */
        save_u32 (m68k_getpc ());                       /* PC */
@@ -6016,6 +6021,9 @@ uae_u8 *save_cpu (int *len, uae_u8 *dstptr)
                save_u32 (regs.ce020memcycles);
                save_u32 (0);
        }
+       save_u32 (regs.chipset_latch_rw);
+       save_u32 (regs.chipset_latch_read);
+       save_u32 (regs.chipset_latch_write);
        *len = dst - dstbak;
        return dstbak;
 }
index 2f987d2b8d3d6bcfe6585b84292944c97c8936f9..765e04b5fc86b63cd6b4a9f9695bf578403c8c27 100644 (file)
@@ -485,7 +485,7 @@ static int AVIOutput_AllocateVideo (void)
        avioutput_fps = (int)(vblank_hz + 0.5);
        if (!avioutput_fps)
                avioutput_fps = ispal () ? 50 : 60;
-       if (avioutput_originalsize) {
+       if (avioutput_originalsize || WIN32GFX_IsPicassoScreen ()) {
                int pitch;
                if (!WIN32GFX_IsPicassoScreen ()) {
                        getfilterbuffer (&avioutput_width, &avioutput_height, &pitch, &avioutput_bits);
@@ -864,26 +864,34 @@ static int getFromBuffer (struct avientry *ae, int original)
        uae_u8 *src, *mem;
        uae_u8 *dst = ae->lpVideo;
        int spitch, dpitch;
+       int maxw, maxh;
 
        mem = NULL;
        dpitch = ((avioutput_width * avioutput_bits + 31) & ~31) / 8;
-       if (original) {
-               if (!WIN32GFX_IsPicassoScreen ())
+       if (original || WIN32GFX_IsPicassoScreen ()) {
+               if (!WIN32GFX_IsPicassoScreen ()) {
                        src = getfilterbuffer (&w, &h, &spitch, &d);
-               else
+                       maxw = gfxvidinfo.outbuffer->outwidth;
+                       maxh = gfxvidinfo.outbuffer->outheight;
+               } else {
                        src = mem = getrtgbuffer (&w, &h, &spitch, &d, NULL);
+                       maxw = w;
+                       maxh = h;
+               }
        } else {
                spitch = gfxvidinfo.outbuffer->rowbytes;
                src = bufmem_ptr;
+               maxw = gfxvidinfo.outbuffer->outwidth;
+               maxh = gfxvidinfo.outbuffer->outheight;
        }
        if (!src)
                return 0;
        dst += dpitch * avioutput_height;
-       for (y = 0; y < (gfxvidinfo.outbuffer->outheight > avioutput_height ? avioutput_height : gfxvidinfo.outbuffer->outheight); y++) {
+       for (y = 0; y < (maxh > avioutput_height ? avioutput_height : maxh); y++) {
                uae_u8 *d;
                dst -= dpitch;
                d = dst;
-               for (x = 0; x < (gfxvidinfo.outbuffer->outwidth > avioutput_width ? avioutput_width : gfxvidinfo.outbuffer->outwidth); x++) {
+               for (x = 0; x < (maxw > avioutput_width ? avioutput_width : maxw); x++) {
                        if (avioutput_bits == 8) {
                                *d++ = src[x];
                        } else if (avioutput_bits == 16) {
@@ -934,7 +942,7 @@ void AVIOutput_WriteVideo (void)
                dorestart ();
        waitqueuefull ();
        ae = allocavientry_video ();
-       if (avioutput_originalsize) {
+       if (avioutput_originalsize || WIN32GFX_IsPicassoScreen ()) {
                v = getFromBuffer (ae, 1);
        } else {
 #if defined (GFXFILTER)
@@ -1328,8 +1336,10 @@ static void *AVIOutput_worker (void *arg)
                        EnterCriticalSection (&AVIOutput_CriticalSection);
                        ae = getavientry ();
                        LeaveCriticalSection (&AVIOutput_CriticalSection);
-                       if (ae == NULL)
+                       if (ae == NULL) {
+                               write_log (_T("AVIOutput worker thread: out of entries!?\n"));
                                break;
+                       }
                        write_comm_pipe_u32 (&queuefull, 0, 1);
                        if (!avioutput_failed) {
                                if (ae->lpAudio)
index 5053403a7ca920ccbb23dfbb5f3b4ffbf9b5ac73..d4b78416c97165c9b7a808f0f651fb10d5857c3f 100644 (file)
@@ -1408,7 +1408,9 @@ static void dumphidcaps (struct didata *did)
 static void dumphidend (void)
 {
        write_log (_T("\n"));
-       }
+}
+
+#define MAX_RAW_KEYBOARD 0
 
 static bool initialize_rawinput (void)
 {
@@ -1486,6 +1488,9 @@ static bool initialize_rawinput (void)
                else if (type == RIM_TYPEHID)
                        rnum_hid++;
        }
+       if (MAX_RAW_KEYBOARD > 0 && rnum_kb > MAX_RAW_KEYBOARD)
+               rnum_kb = MAX_RAW_KEYBOARD;
+
 
        for (int rawcnt = 0; rawcnt < gotnum; rawcnt++) {
                HANDLE h = ridl[rawcnt].hDevice;
@@ -1506,11 +1511,13 @@ static bool initialize_rawinput (void)
                                if (type == RIM_TYPEHID && !rawinput_enabled_hid)
                                        continue;
                        }
-                       if (type == RIM_TYPEKEYBOARD)
+                       if (type == RIM_TYPEKEYBOARD) {
+                               if (num_keyboard >= rnum_kb)
+                                       continue;
                                did = di_keyboard;
-                       else if (type == RIM_TYPEMOUSE)
+                       } else if (type == RIM_TYPEMOUSE) {
                                did = di_mouse;
-                       else if (type == RIM_TYPEHID) {
+                       else if (type == RIM_TYPEHID) {
                                if (!rawinput_enabled_hid)
                                        continue;
                                did = di_joystick;
@@ -1635,7 +1642,10 @@ static bool initialize_rawinput (void)
                                                did->axles++;
                                                addplusminus (did, 3);
                                        }
-                                       did->priority = -1;
+                                       if (num_mouse == 1)
+                                               did->priority = -1;
+                                       else
+                                               did->priority = -2;
                                }
                        } else if (type == RIM_TYPEKEYBOARD) {
                                PRID_DEVICE_INFO_KEYBOARD rdik = &rdi->keyboard;
@@ -1643,6 +1653,10 @@ static bool initialize_rawinput (void)
                                        rdik->dwType, rdik->dwSubType, rdik->dwKeyboardMode,
                                        rdik->dwNumberOfFunctionKeys, rdik->dwNumberOfIndicators, rdik->dwNumberOfKeysTotal);
                                addrkblabels (did);
+                               if (num_keyboard == 1)
+                                       did->priority = -1;
+                               else
+                                       did->priority = -2;
                        } else {
                                bool ok = false;
                                if (hhid != INVALID_HANDLE_VALUE && HidD_GetPreparsedData (hhid, &did->hidpreparseddata)) {
@@ -1779,7 +1793,7 @@ static bool initialize_rawinput (void)
                did->rawinput = NULL;
                did->connection = DIDC_RAW;
                did->sortname = my_strdup (_T("NULLKEYBOARD"));
-               did->priority = -2;
+               did->priority = -3;
                did->configname = my_strdup (_T("NULLKEYBOARD"));
                addrkblabels (did);
        }
diff --git a/od-win32/graphics/amiga_header_2013.bmp b/od-win32/graphics/amiga_header_2013.bmp
new file mode 100644 (file)
index 0000000..71ee595
Binary files /dev/null and b/od-win32/graphics/amiga_header_2013.bmp differ
diff --git a/od-win32/graphics/amiga_welcome_2013.bmp b/od-win32/graphics/amiga_welcome_2013.bmp
new file mode 100644 (file)
index 0000000..8578bdb
Binary files /dev/null and b/od-win32/graphics/amiga_welcome_2013.bmp differ
index b31745deb188ef565e8931e398829ccefef34c8c..284b90cedcaf43cf7fbc27726a4090d372c803f5 100644 (file)
 #define LANG_DLL 1
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("11")
+#define WINUAEBETA _T("12")
 #else
 #define WINUAEBETA _T("")
 #endif
-#define WINUAEDATE MAKEBD(2013, 11, 2)
+#define WINUAEDATE MAKEBD(2013, 11, 10)
 #define WINUAEEXTRA _T("")
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
index 7b469c1d1e7bc82d4259e919fe665f4312221326..b17bcfb9acddc0237c9555879395f599690ad1b5 100644 (file)
@@ -243,6 +243,7 @@ struct newresource *scaleresource (struct newresource *res, HWND parent, int res
                d->style |= DS_MODALFRAME;
                d->style &= ~WS_THICKFRAME;
        }
+       d->style |= WS_MINIMIZEBOX;
 
        d2 = (DLGTEMPLATEEX_END*)ns->resource;
        p = (BYTE*)d + sizeof (DLGTEMPLATEEX);
index 51cdf1e0bb044f13c82abdb167365dc77428f457..9b9d5b3c9875f86ba55484fb1468823b67b86306 100644 (file)
@@ -2,6 +2,19 @@
 
 - restore only single input target to default.
 
+Beta 12:
+
+- AROS rom memory mapping fixed (b1).
+- RTG mode video recording image size was accidentally restricted to native chipset size.
+- Ignore VPOSW writes if it would move vertical position backwards or if vpos is changed during vertical
+  blanking and new value is also inside vblank period. (Prevents strange behavior if program tries to
+  do weird things)
+- Added minimize button to GUI window.
+- 68000 CE ADDA.x/SUBA.x Rn,An was 2 cycles too fast.
+- DIVS/DIVU prefetch is after division operation, not before like with MULS/MULU.
+- Adjusted data returned when accessing non-existing memory.
+- New Wix based installer test version included. Remove old installation first.
+
 Beta 11:
 
 - 68000/010 CPU core merge accidentally removed 68000 CLR to memory and Scc to memory dummy read
index 50c537e1493db84c94d4cf69e45ca7eb7afcef8e..4e377945353cb4be243beeed7d2376581f18cad6 100644 (file)
@@ -3,25 +3,29 @@
   <Product Id="18550701-62DA-4256-B2EA-5F7E8FA564CE" Name="WinUAE" Language="1033" Version="2.7.0.0" Manufacturer="Arabuusimiehet" UpgradeCode="88C6D045-E416-4AEA-9EE9-0B7A53EE0F16">
     <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
 
+    <?define SRCDIST="$(var.winuae.ProjectDir)/../../../distribution/"?>
+
     <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
     <MediaTemplate EmbedCab="yes"/>
 
     <Icon Id="ICON" SourceFile="$(var.winuae.ProjectDir)/../resources/winuae.ico"/>
     <Property Id="ARPPRODUCTICON" Value="ICON" />
 
-    <UIRef Id="WixUI_FeatureTree" />
+    <UIRef Id="WixUI_FeatureTree_NL" />
     <UIRef Id="WixUI_ErrorProgressText" />
     <Property Id="WIXUI_INSTALLDIR" Value="APPLICATIONROOTDIRECTORY" />
 
-    <WixVariable Id="WixUIBannerBmp" Value="$(var.winuae.ProjectDir)/../graphics/amiga_header.bmp" />
-    <WixVariable Id="WixUIDialogBmp" Value="$(var.winuae.ProjectDir)/../graphics/amiga_welcome.bmp" />
+    <WixVariable Id="WixUIBannerBmp" Value="$(var.winuae.ProjectDir)/../graphics/amiga_header_2013.bmp" />
+    <WixVariable Id="WixUIDialogBmp" Value="$(var.winuae.ProjectDir)/../graphics/amiga_welcome_2013.bmp" />
 
     <Directory Id="TARGETDIR" Name="SourceDir">
       <Directory Id="ProgramFilesFolder">
         <Directory Id="APPLICATIONROOTDIRECTORY" Name="WinUAE">
-          <Directory Id="CONFIGURATIONS" Name="Configurations"/>
-          <Directory Id="DOCS" Name="Docs"/>
+          <Directory Id="CONFIGURATIONS" Name="Configurations">
+            <Directory Id="CONFIGURATIONSHOST" Name="Host"/>
+          </Directory>
           <Directory Id="AMIGAPROGRAMS" Name="Amiga Programs"/>
+          <Directory Id="DOCS" Name="Docs"/>
         </Directory>
       </Directory>
     </Directory>
     </DirectoryRef>
 
     <DirectoryRef Id="AMIGAPROGRAMS">
-      <Component Id="AdditionalFiles" Guid="D6062FDF-E323-43B6-A506-344FEDD06081">
-        <File Source="$(var.winuae.ProjectDir)/../winuaechangelog.txt" KeyPath="yes"/>
+      <Component Id="AdditionalFiles1" Guid="D6062FDF-E323-43B6-A506-344FEDD06081">
+        <File Source="$(var.SRCDIST)/Amiga Programs/amigaprog.txt" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles2" Guid="E1E4A638-16B9-4EA3-8F35-01CDD020B5DE">
+        <File Source="$(var.SRCDIST)/Amiga Programs/winuaeenforcer" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles3" Guid="FA668233-1BAA-4C51-887D-3C1369530625">
+        <File Source="$(var.SRCDIST)/Amiga Programs/winuaeenforcer.txt" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles4" Guid="EE72540B-BE4C-4B89-A4C6-4B2BED789968">
+        <File Source="$(var.SRCDIST)/Amiga Programs/winuaeclip" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles5" Guid="5D219AB7-3738-40B9-A764-EE699E8EF7BB">
+        <File Source="$(var.SRCDIST)/Amiga Programs/winuaeclip.txt" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles6" Guid="F0337F4B-3A62-40DB-830F-4862F89D2330">
+        <File Source="$(var.SRCDIST)/Amiga Programs/winuaeclip.info" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles7" Guid="CA71C0B6-D3A0-4E31-85C1-97A4309998FA">
+        <File Source="$(var.SRCDIST)/Amiga Programs/uae-configuration" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles8" Guid="B88BB19C-0897-44C4-8FEA-A9F796C3E780">
+        <File Source="$(var.SRCDIST)/Amiga Programs/uaectrl" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles9" Guid="EC34EF4B-4A83-4F03-99FC-24BD09A3089F">
+        <File Source="$(var.SRCDIST)/Amiga Programs/uae-control.info" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles10" Guid="257DD4B7-B0A7-4B86-9E00-446741453312">
+        <File Source="$(var.SRCDIST)/Amiga Programs/uae-control" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles11" Guid="4954F247-20E8-43FD-9C67-5195F4128F6F">
+        <File Source="$(var.SRCDIST)/Amiga Programs/uae_rcli" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles12" Guid="3169B1E2-D009-42E5-A4A1-2777019B1995">
+        <File Source="$(var.SRCDIST)/Amiga Programs/transdisk" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles13" Guid="66C7D080-B50D-41F7-BDBD-4A5EE2F70D2F">
+        <File Source="$(var.SRCDIST)/Amiga Programs/transrom" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles14" Guid="92BD1DA6-AB73-4DAA-97EF-617AF09C647B">
+        <File Source="$(var.SRCDIST)/Amiga Programs/rtg.library" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles15" Guid="41DBB732-7ACB-4B5A-ADBA-0B48A08D5DC3">
+        <File Source="$(var.SRCDIST)/Amiga Programs/p96refresh" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles16" Guid="5187795E-4423-4FE6-8C5D-8B306CD7EAB7">
+        <File Source="$(var.SRCDIST)/Amiga Programs/german_KeyMap_new.zip" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles17" Guid="3B979B6D-BEBE-487B-9CD3-CAF9211221A1">
+        <File Source="$(var.SRCDIST)/Amiga Programs/UAE_German" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles18" Guid="643C76B3-E146-4431-9CF8-7D6A1130588C">
+        <File Source="$(var.SRCDIST)/Amiga Programs/UAE_German.info" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles19" Guid="4564B037-8446-40FE-AEEC-493D93DCE0EA">
+        <File Source="$(var.SRCDIST)/Amiga Programs/ahidriver.zip" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles20" Guid="A3DA1CD6-9090-4BD0-8967-99561277FB0C">
+        <File Source="$(var.SRCDIST)/Amiga Programs/timehack" KeyPath="yes"/>
+      </Component>
+      <Component Id="AdditionalFiles21" Guid="867BE54B-E842-4FB8-8306-72A09F1C8735">
+        <File Source="$(var.SRCDIST)/Amiga Programs/sources.zip" KeyPath="yes"/>
       </Component>
     </DirectoryRef>
 
-    <DirectoryRef Id="CONFIGURATIONS">
-      <Component Id="ConfigFiles" Guid="F529ED5F-DA94-4871-8616-0207DCAA9859">
-        <File Source="$(var.winuae.ProjectDir)/../asm.cmd" KeyPath="yes"/>
+    <DirectoryRef Id="CONFIGURATIONSHOST">
+      <Component Id="ConfigFiles1" Guid="F529ED5F-DA94-4871-8616-0207DCAA9859">
+        <File Source="$(var.SRCDIST)/Configurations/Host/Windowed.uae" KeyPath="yes"/>
+      </Component>
+      <Component Id="ConfigFiles2" Guid="A9FD208E-BFA4-4136-8BCA-5B473EA08519">
+        <File Source="$(var.SRCDIST)/Configurations/Host/Fullscreen (800x600).uae" KeyPath="yes"/>
+      </Component>
+      <Component Id="ConfigFiles3" Guid="D966C10C-AA37-4DC1-A96A-2EACE1CBBB69">
+        <File Source="$(var.SRCDIST)/Configurations/Host/Fullscreen PAL VSync.uae" KeyPath="yes"/>
+      </Component>
+      <Component Id="ConfigFiles4" Guid="E5DD85B1-29E5-4B1C-99E9-C284C940A4F7">
+        <File Source="$(var.SRCDIST)/Configurations/Host/FullwindowD3D.uae" KeyPath="yes"/>
+      </Component>
+    </DirectoryRef>
+
+    <DirectoryRef Id="DOCS">
+      <Component Id="Docs1" Guid="1C0D979E-5C00-45BD-8C08-A78AA7E58530">
+        <File Source="$(var.SRCDIST)/Docs/Readme.txt" KeyPath="yes"/>
+      </Component>
+      <Component Id="Docs2" Guid="ABE181C5-547C-4D9D-A486-DCB17F72C1B0">
+        <File Source="$(var.SRCDIST)/Docs/winuaechangelog.txt" KeyPath="yes"/>
+      </Component>
+      <Component Id="Docs3" Guid="D27F0463-C878-46C8-8D02-028D14BDD4A0">
+        <File Source="$(var.SRCDIST)/Docs/History_old.txt" KeyPath="yes"/>
+      </Component>
+      <Component Id="Docs4" Guid="82556236-9A44-4894-84BB-4066820E1B35">
+        <File Source="$(var.SRCDIST)/Docs/README.compemu.txt" KeyPath="yes"/>
+      </Component>
+      <Component Id="Docs5" Guid="E7AE8546-62E0-4537-989C-02E10C62E06E">
+        <File Source="$(var.SRCDIST)/Docs/README.JIT.txt" KeyPath="yes"/>
+      </Component>
+      <Component Id="Docs6" Guid="33C9D310-7722-48B4-845B-48933023D647">
+        <File Source="$(var.SRCDIST)/Docs/README.JIT-tuning.txt" KeyPath="yes"/>
       </Component>
     </DirectoryRef>
 
       <ComponentRef Id="RegistryEntries" />
     </Feature>
 
-    <Feature Id="ConfigFiles" Title="Configuration files" Description="Example host configuration files" Level="1000" AllowAdvertise="no">
-      <ComponentRef Id="ConfigFiles" />
+    <Feature Id="Docs" Title="Documentation" Description="Read me and information files" Level="1" AllowAdvertise="no">
+      <ComponentRef Id="Docs1" />
+      <ComponentRef Id="Docs2" />
+      <ComponentRef Id="Docs3" />
+      <ComponentRef Id="Docs4" />
+      <ComponentRef Id="Docs5" />
+      <ComponentRef Id="Docs6" />
     </Feature>
 
-    <Feature Id="AdditionalFiles" Title="Amiga files" Description="Miscellaneous utilities" Level="1001" AllowAdvertise="no">
-      <ComponentRef Id="AdditionalFiles" />
+    <Feature Id="ConfigFiles" Title="Configuration files" Description="Example host configuration files" Level="1" AllowAdvertise="no">
+      <ComponentRef Id="ConfigFiles1" />
+      <ComponentRef Id="ConfigFiles2" />
+      <ComponentRef Id="ConfigFiles3" />
+      <ComponentRef Id="ConfigFiles4" />
     </Feature>
 
+    <Feature Id="AdditionalFiles" Title="Amiga files" Description="Miscellaneous Amiga utilities" Level="1" AllowAdvertise="no">
+      <ComponentRef Id="AdditionalFiles1" />
+      <ComponentRef Id="AdditionalFiles2" />
+      <ComponentRef Id="AdditionalFiles3" />
+      <ComponentRef Id="AdditionalFiles4" />
+      <ComponentRef Id="AdditionalFiles5" />
+      <ComponentRef Id="AdditionalFiles6" />
+      <ComponentRef Id="AdditionalFiles7" />
+      <ComponentRef Id="AdditionalFiles8" />
+      <ComponentRef Id="AdditionalFiles9" />
+      <ComponentRef Id="AdditionalFiles10" />
+      <ComponentRef Id="AdditionalFiles11" />
+      <ComponentRef Id="AdditionalFiles12" />
+      <ComponentRef Id="AdditionalFiles13" />
+      <ComponentRef Id="AdditionalFiles14" />
+      <ComponentRef Id="AdditionalFiles15" />
+      <ComponentRef Id="AdditionalFiles16" />
+      <ComponentRef Id="AdditionalFiles17" />
+      <ComponentRef Id="AdditionalFiles18" />
+      <ComponentRef Id="AdditionalFiles19" />
+      <ComponentRef Id="AdditionalFiles20" />
+      <ComponentRef Id="AdditionalFiles21" />
+    </Feature>
+
+
+
   </Product>
 </Wix>
diff --git a/od-win32/wix/WixUI_FeatureTree_NL.wxs b/od-win32/wix/WixUI_FeatureTree_NL.wxs
new file mode 100644 (file)
index 0000000..349b8c6
--- /dev/null
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  <copyright file="WixUI_FeatureTree.wxs" company="Outercurve Foundation">
+    Copyright (c) 2004, Outercurve Foundation.
+    This software is released under Microsoft Reciprocal License (MS-RL).
+    The license and further copyright text can be found in the file
+    LICENSE.TXT at the root directory of the distribution.
+  </copyright>
+-->
+
+<!--
+First-time install dialog sequence:
+ - WixUI_WelcomeDlg
+ - WixUI_LicenseAgreementDlg
+ - WixUI_CustomizeDlg
+ - WixUI_VerifyReadyDlg
+ - WixUI_DiskCostDlg
+
+Maintenance dialog sequence:
+ - WixUI_MaintenanceWelcomeDlg
+ - WixUI_MaintenanceTypeDlg
+ - WixUI_CustomizeDlg
+ - WixUI_VerifyReadyDlg
+
+Patch dialog sequence:
+ - WixUI_WelcomeDlg
+ - WixUI_VerifyReadyDlg
+-->
+
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+    <Fragment>
+        <UI Id="WixUI_FeatureTree_NL">
+            <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
+            <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
+            <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
+
+            <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
+            <Property Id="WixUI_Mode" Value="FeatureTree" />
+
+            <DialogRef Id="ErrorDlg" />
+            <DialogRef Id="FatalError" />
+            <DialogRef Id="FilesInUse" />
+            <DialogRef Id="MsiRMFilesInUse" />
+            <DialogRef Id="PrepareDlg" />
+            <DialogRef Id="ProgressDlg" />
+            <DialogRef Id="ResumeDlg" />
+            <DialogRef Id="UserExit" />
+
+            <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
+
+            <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg">NOT Installed</Publish>
+            <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish>
+
+            <Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
+            <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg">LicenseAccepted = "1"</Publish>
+
+            <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">Installed</Publish>
+            <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2">NOT Installed</Publish>
+            <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
+
+            <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">NOT Installed OR WixUI_InstallMode = "Change"</Publish>
+            <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish>
+            <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">Installed AND PATCH</Publish>
+
+            <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
+
+            <Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
+            <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
+            <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
+            <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
+        </UI>
+
+        <UIRef Id="WixUI_Common" />
+    </Fragment>
+</Wix>
\ No newline at end of file
index a237e88e500b4027a6622507f920e30e91b22447..0bd3b62ca9cf87a24b9bead6e2f781af0f3d554d 100644 (file)
@@ -22,6 +22,7 @@
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="Product.wxs" />
+    <Compile Include="WixUI_FeatureTree_NL.wxs" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\winuae_msvc11\winuae_msvc.vcxproj">