]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
2400b15
authorToni Wilen <twilen@winuae.net>
Sat, 4 Feb 2012 14:53:25 +0000 (16:53 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 4 Feb 2012 14:53:25 +0000 (16:53 +0200)
33 files changed:
a2091.cpp
akiko.cpp
cfgfile.cpp
custom.cpp
disk.cpp
drawing.cpp
filesys_bootrom.cpp
gfxutil.cpp
include/custom.h
include/disk.h
include/options.h
include/xwin.h
main.cpp
od-win32/dinput.cpp
od-win32/direct3d.cpp
od-win32/direct3d.h
od-win32/dxwrap.cpp
od-win32/dxwrap.h
od-win32/midi.cpp
od-win32/parser.cpp
od-win32/parser.h
od-win32/picasso96_win.cpp
od-win32/resources/resource
od-win32/resources/winuae.rc
od-win32/rp.cpp
od-win32/win32.cpp
od-win32/win32.h
od-win32/win32gfx.cpp
od-win32/win32gfx.h
od-win32/win32gui.cpp
od-win32/winuaechangelog.txt
od-win32/writelog.cpp
savestate.cpp

index 5f46980a15b60e8b134a7c695552f7f1adca018c..873027ca670ceaf74be3b16ef74f02be5f2a7933 100644 (file)
--- a/a2091.cpp
+++ b/a2091.cpp
@@ -957,7 +957,6 @@ static int REGPARAM2 dmac_check (uaecptr addr, uae_u32 size)
 
 static uae_u8 *REGPARAM2 dmac_xlate (uaecptr addr)
 {
-       write_log (L"%x ", addr);
        addr &= rom_mask;
        addr += rombank * rom_size;
        return rom + addr;
index 76e8db14179a7161df62b5d4d6234d2d68ca47e4..0ba5d430faae36c020b166974b9986483521cc8b 100644 (file)
--- a/akiko.cpp
+++ b/akiko.cpp
@@ -291,6 +291,7 @@ static uae_u32 akiko_buffer[8];
 static int akiko_read_offset, akiko_write_offset;
 static uae_u32 akiko_result[8];
 
+#if 0
 static void akiko_c2p_do (void)
 {
        int i;
@@ -303,6 +304,61 @@ static void akiko_c2p_do (void)
                        akiko_result[i & 7] |= 1 << (i >> 3);
        }
 }
+#else
+/* Optimised Chunky-to-Planar algorithm by Mequa */
+static uae_u32 akiko_precalc_shift[32];
+static uae_u32 akiko_precalc_bytenum[32][8];
+static void akiko_precalculate (void)
+{
+       uae_u32 i, j;
+       for (i = 0; i < 32; i++) {
+               akiko_precalc_shift  [(int)i] = 1 << i;
+               for (j = 0; j < 8; j++) {
+                       akiko_precalc_bytenum[(int)i][(int)j] = (i >> 3) + ((7 - j) << 2);
+               }
+       }
+}
+
+static void akiko_c2p_do (void)
+{
+       int i;
+
+       for (i = 0; i < 8; i++) {
+               akiko_result[i]    =  (((akiko_buffer[0] & akiko_precalc_shift[i])    != 0) << (akiko_precalc_bytenum[i][0])   )
+                                          |  (((akiko_buffer[1] & akiko_precalc_shift[i])    != 0) << (akiko_precalc_bytenum[i][1])   )
+                                          |  (((akiko_buffer[2] & akiko_precalc_shift[i])    != 0) << (akiko_precalc_bytenum[i][2])   )
+                                          |  (((akiko_buffer[3] & akiko_precalc_shift[i])    != 0) << (akiko_precalc_bytenum[i][3])   )
+                                          |  (((akiko_buffer[4] & akiko_precalc_shift[i])    != 0) << (akiko_precalc_bytenum[i][4])   )
+                                          |  (((akiko_buffer[5] & akiko_precalc_shift[i])    != 0) << (akiko_precalc_bytenum[i][5])   )
+                                          |  (((akiko_buffer[6] & akiko_precalc_shift[i])    != 0) << (akiko_precalc_bytenum[i][6])   )
+                                          |  (((akiko_buffer[7] & akiko_precalc_shift[i])    != 0) << (akiko_precalc_bytenum[i][7])   )
+                                                  |  (((akiko_buffer[0] & akiko_precalc_shift[i+8])  != 0) << (akiko_precalc_bytenum[i+8][0]) )
+                                          |  (((akiko_buffer[1] & akiko_precalc_shift[i+8])  != 0) << (akiko_precalc_bytenum[i+8][1]) )
+                                          |  (((akiko_buffer[2] & akiko_precalc_shift[i+8])  != 0) << (akiko_precalc_bytenum[i+8][2]) )
+                                          |  (((akiko_buffer[3] & akiko_precalc_shift[i+8])  != 0) << (akiko_precalc_bytenum[i+8][3]) )
+                                          |  (((akiko_buffer[4] & akiko_precalc_shift[i+8])  != 0) << (akiko_precalc_bytenum[i+8][4]) )
+                                          |  (((akiko_buffer[5] & akiko_precalc_shift[i+8])  != 0) << (akiko_precalc_bytenum[i+8][5]) )
+                                          |  (((akiko_buffer[6] & akiko_precalc_shift[i+8])  != 0) << (akiko_precalc_bytenum[i+8][6]) )
+                                          |  (((akiko_buffer[7] & akiko_precalc_shift[i+8])  != 0) << (akiko_precalc_bytenum[i+8][7]) )
+                                                  |  (((akiko_buffer[0] & akiko_precalc_shift[i+16]) != 0) << (akiko_precalc_bytenum[i+16][0]))
+                                          |  (((akiko_buffer[1] & akiko_precalc_shift[i+16]) != 0) << (akiko_precalc_bytenum[i+16][1]))
+                                          |  (((akiko_buffer[2] & akiko_precalc_shift[i+16]) != 0) << (akiko_precalc_bytenum[i+16][2]))
+                                          |  (((akiko_buffer[3] & akiko_precalc_shift[i+16]) != 0) << (akiko_precalc_bytenum[i+16][3]))
+                                          |  (((akiko_buffer[4] & akiko_precalc_shift[i+16]) != 0) << (akiko_precalc_bytenum[i+16][4]))
+                                          |  (((akiko_buffer[5] & akiko_precalc_shift[i+16]) != 0) << (akiko_precalc_bytenum[i+16][5]))
+                                          |  (((akiko_buffer[6] & akiko_precalc_shift[i+16]) != 0) << (akiko_precalc_bytenum[i+16][6]))
+                                          |  (((akiko_buffer[7] & akiko_precalc_shift[i+16]) != 0) << (akiko_precalc_bytenum[i+16][7]))
+                                                  |  (((akiko_buffer[0] & akiko_precalc_shift[i+24]) != 0) << (akiko_precalc_bytenum[i+24][0]))
+                                          |  (((akiko_buffer[1] & akiko_precalc_shift[i+24]) != 0) << (akiko_precalc_bytenum[i+24][1]))
+                                          |  (((akiko_buffer[2] & akiko_precalc_shift[i+24]) != 0) << (akiko_precalc_bytenum[i+24][2]))
+                                          |  (((akiko_buffer[3] & akiko_precalc_shift[i+24]) != 0) << (akiko_precalc_bytenum[i+24][3]))
+                                          |  (((akiko_buffer[4] & akiko_precalc_shift[i+24]) != 0) << (akiko_precalc_bytenum[i+24][4]))
+                                          |  (((akiko_buffer[5] & akiko_precalc_shift[i+24]) != 0) << (akiko_precalc_bytenum[i+24][5]))
+                                          |  (((akiko_buffer[6] & akiko_precalc_shift[i+24]) != 0) << (akiko_precalc_bytenum[i+24][6]))
+                                          |  (((akiko_buffer[7] & akiko_precalc_shift[i+24]) != 0) << (akiko_precalc_bytenum[i+24][7]));
+       }
+}
+#endif
 
 static void akiko_c2p_write (int offset, uae_u32 v)
 {
@@ -1712,6 +1768,7 @@ int akiko_init (void)
        if (!currprefs.cs_cd32cd)
                return 0;
        akiko_free ();
+       akiko_precalculate ();
        unitnum = -1;
        sys_cddev_open ();
        sector_buffer_1 = xmalloc (uae_u8, SECTOR_BUFFER_SIZE * 2352);
index 7d7bd5d39e18ab1fd76096e8cd83ceb07e206a81..6c70c1df15d1a5ec65cd6135170d231827dce6a6 100644 (file)
@@ -689,6 +689,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
                cfgfile_write_str (f, L"statefile_quit", p->quitstatefile);
 
        cfgfile_write (f, L"nr_floppies", L"%d", p->nr_floppies);
+       cfgfile_dwrite_bool (f, L"floppy_write_protect", p->floppy_read_only);
        cfgfile_write (f, L"floppy_speed", L"%d", p->floppy_speed);
        cfgfile_write (f, L"floppy_volume", L"%d", p->dfxclickvolume);
        cfgfile_dwrite (f, L"floppy_channel_mask", L"0x%x", p->dfxclickchannelmask);
@@ -2279,6 +2280,7 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, const TCHAR *option, TCH
                || cfgfile_yesno (option, value, L"comp_midopt", &p->comp_midopt)
                || cfgfile_yesno (option, value, L"comp_lowopt", &p->comp_lowopt)
                || cfgfile_yesno (option, value, L"rtg_nocustom", &p->picasso96_nocustom)
+               || cfgfile_yesno (option, value, L"floppy_write_protected", &p->floppy_read_only)
                || cfgfile_yesno (option, value, L"uaeserial", &p->uaeserial))
                return 1;
 
@@ -4084,6 +4086,7 @@ void default_prefs (struct uae_prefs *p, int type)
        p->custom_memory_sizes[1] = 0;
 
        p->nr_floppies = 2;
+       p->floppy_read_only = false;
        p->floppyslots[0].dfxtype = DRV_35_DD;
        p->floppyslots[1].dfxtype = DRV_35_DD;
        p->floppyslots[2].dfxtype = DRV_NONE;
index 245d6149a69546568116d866cd4263661b5ae66d..77859523d47ed83dd6c6f2efd67298b15dbd54ed 100644 (file)
@@ -2777,7 +2777,7 @@ int current_maxvpos (void)
        return maxvpos + (lof_store ? 1 : 0);
 }
 
-static struct chipset_refresh *get_chipset_refresh (void)
+struct chipset_refresh *get_chipset_refresh (void)
 {
        int islace = (bplcon0 & 4) ? 1 : 0;
        int isntsc = (beamcon0 & 0x20) ? 0 : 1;
@@ -3800,9 +3800,6 @@ static void BPLCON0 (int hpos, uae_u16 v)
        if (bplcon0 == v)
                return;
 
-       if ((bplcon0 & 4) != (v & 4))
-               write_log (L"lace=%d\n", v & 4);
-
        if (!issyncstopped ()) {
                vpos_previous = vpos;
                hpos_previous = hpos;
@@ -5175,7 +5172,7 @@ static void framewait (void)
                if (vs == -2 || vs == -3) {
                        // fastest possible
                        curr_time = vsync_busywait_end ();
-                       vsync_busywait_do (NULL);
+                       vsync_busywait_do (NULL, interlace_seen != 0, lof_store);
                        curr_time = read_processor_time ();
                        vsyncmintime = curr_time + vsynctime;
                        vsync_busywait_start ();
@@ -5183,7 +5180,7 @@ static void framewait (void)
                } else {
 
                        render_screen ();
-                       vsync_busywait_do (&freetime);
+                       vsync_busywait_do (&freetime, interlace_seen != 0, lof_store);
                        curr_time = read_processor_time ();
                        vsyncmintime = curr_time + vsynctime;
                        show_screen ();
index 3e1ab0d77133ea74c896209591e5d749e36336fe..edb4144c169bc8ceaf07d927c17b9aa3d14063a8 100644 (file)
--- a/disk.cpp
+++ b/disk.cpp
@@ -674,18 +674,17 @@ static void update_drive_gui (int num)
 
 static void drive_fill_bigbuf (drive * drv,int);
 
-int DISK_validate_filename (const TCHAR *fname, int leave_open, bool *wrprot, uae_u32 *crc32, struct zfile **zf)
+int DISK_validate_filename (struct uae_prefs *p, const TCHAR *fname, int leave_open, bool *wrprot, uae_u32 *crc32, struct zfile **zf)
 {
        if (zf)
                *zf = NULL;
        if (crc32)
                *crc32 = 0;
+       if (wrprot)
+               *wrprot = p->floppy_read_only ? 1 : 0;
        if (leave_open || !zf) {
                struct zfile *f = zfile_fopen (fname, L"r+b", ZFD_NORMAL | ZFD_DISKHISTORY);
-               if (f) {
-                       if (wrprot)
-                               *wrprot = 0;
-               } else {
+               if (!f) {
                        if (wrprot)
                                *wrprot = 1;
                        f = zfile_fopen (fname, L"rb", ZFD_NORMAL | ZFD_DISKHISTORY);
@@ -795,14 +794,14 @@ TCHAR *DISK_get_saveimagepath (const TCHAR *name)
        return name1;
 }
 
-static struct zfile *getwritefile (const TCHAR *name, bool *wrprot)
+static struct zfile *getwritefile (struct uae_prefs *p, const TCHAR *name, bool *wrprot)
 {
        struct zfile *zf;
-       DISK_validate_filename (DISK_get_saveimagepath (name), 1, wrprot, NULL, &zf);
+       DISK_validate_filename (p, DISK_get_saveimagepath (name), 1, wrprot, NULL, &zf);
        return zf;
 }
 
-static int iswritefileempty (const TCHAR *name)
+static int iswritefileempty (struct uae_prefs *p, const TCHAR *name)
 {
        struct zfile *zf;
        bool wrprot;
@@ -810,7 +809,7 @@ static int iswritefileempty (const TCHAR *name)
        trackid td[MAX_TRACKS];
        int tracks, ddhd, i, ret;
 
-       zf = getwritefile (name, &wrprot);
+       zf = getwritefile (p, name, &wrprot);
        if (!zf) return 1;
        zfile_fread (buffer, sizeof (char), 8, zf);
        if (strncmp ((uae_char*)buffer, "UAE-1ADF", 8))
@@ -825,11 +824,11 @@ static int iswritefileempty (const TCHAR *name)
        return 1;
 }
 
-static int openwritefile (drive *drv, int create)
+static int openwritefile (struct uae_prefs *p, drive *drv, int create)
 {
        bool wrprot = 0;
 
-       drv->writediskfile = getwritefile (currprefs.floppyslots[drv - &floppy[0]].df, &wrprot);
+       drv->writediskfile = getwritefile (p, currprefs.floppyslots[drv - &floppy[0]].df, &wrprot);
        if (drv->writediskfile) {
                drv->wrprot = wrprot;
                if (!read_header_ext2 (drv->writediskfile, drv->writetrackdata, &drv->write_num_tracks, 0)) {
@@ -846,7 +845,7 @@ static int openwritefile (drive *drv, int create)
        return drv->writediskfile ? 1 : 0;
 }
 
-static bool diskfile_iswriteprotect (const TCHAR *fname, int *needwritefile, drive_type *drvtype)
+static bool diskfile_iswriteprotect (struct uae_prefs *p, const TCHAR *fname, int *needwritefile, drive_type *drvtype)
 {
        struct zfile *zf1, *zf2;
        bool wrprot1 = 0, wrprot2 = 1;
@@ -854,14 +853,14 @@ static bool diskfile_iswriteprotect (const TCHAR *fname, int *needwritefile, dri
 
        *needwritefile = 0;
        *drvtype = DRV_35_DD;
-       DISK_validate_filename (fname, 1, &wrprot1, NULL, &zf1);
+       DISK_validate_filename (p, fname, 1, &wrprot1, NULL, &zf1);
        if (!zf1)
                return 1;
        if (zfile_iscompressed (zf1)) {
                wrprot1 = 1;
                *needwritefile = 1;
        }
-       zf2 = getwritefile (fname, &wrprot2);
+       zf2 = getwritefile (p, fname, &wrprot2);
        zfile_fclose (zf2);
        zfile_fread (buffer, sizeof (char), 25, zf1);
        zfile_fclose (zf1);
@@ -898,7 +897,7 @@ static int drive_insert (drive * drv, struct uae_prefs *p, int dnum, const TCHAR
        const TCHAR *ext;
 
        drive_image_free (drv);
-       DISK_validate_filename (fname, 1, &drv->wrprot, &drv->crc32, &drv->diskfile);
+       DISK_validate_filename (p, fname, 1, &drv->wrprot, &drv->crc32, &drv->diskfile);
        drv->ddhd = 1;
        drv->num_secs = 0;
        drv->hard_num_cyls = p->floppyslots[dnum].dfxtype == DRV_525_SD ? 40 : 80;
@@ -1128,7 +1127,7 @@ static int drive_insert (drive * drv, struct uae_prefs *p, int dnum, const TCHAR
                        tid->revolutions = 1;
                }
        }
-       openwritefile (drv, 0);
+       openwritefile (p, drv, 0);
        drive_settype_id (drv); /* Set DD or HD drive */
        drive_fill_bigbuf (drv, 1);
        drv->mfmpos = uaerand ();
@@ -1240,7 +1239,7 @@ static int drive_writeprotected (drive * drv)
        if (drv->catweasel)
                return 1;
 #endif
-       return drv->wrprot || drv->diskfile == NULL;
+       return currprefs.floppy_read_only || drv->wrprot || drv->diskfile == NULL;
 }
 
 static int drive_running (drive * drv)
@@ -2171,11 +2170,11 @@ void disk_creatediskfile (const TCHAR *name, int type, drive_type adftype, const
 
 }
 
-int disk_getwriteprotect (const TCHAR *name)
+int disk_getwriteprotect (struct uae_prefs *p, const TCHAR *name)
 {
        int needwritefile;
        drive_type drvtype;
-       return diskfile_iswriteprotect (name, &needwritefile, &drvtype);
+       return diskfile_iswriteprotect (p, name, &needwritefile, &drvtype);
 }
 
 static void diskfile_readonly (const TCHAR *name, bool readonly)
@@ -2215,7 +2214,7 @@ void DISK_reinsert (int num)
        setdskchangetime (&floppy[num], 100);
 }
 
-int disk_setwriteprotect (int num, const TCHAR *name, bool writeprotected)
+int disk_setwriteprotect (struct uae_prefs *p, int num, const TCHAR *name, bool writeprotected)
 {
        int needwritefile, oldprotect;
        struct zfile *zf1, *zf2;
@@ -2224,20 +2223,22 @@ int disk_setwriteprotect (int num, const TCHAR *name, bool writeprotected)
        TCHAR *name2;
        drive_type drvtype;
 
-       oldprotect = diskfile_iswriteprotect (name, &needwritefile, &drvtype);
-       DISK_validate_filename (name, 1, &wrprot1, NULL, &zf1);
+       oldprotect = diskfile_iswriteprotect (p, name, &needwritefile, &drvtype);
+       DISK_validate_filename (p, name, 1, &wrprot1, NULL, &zf1);
        if (!zf1)
                return 0;
+       if (wrprot1 && p->floppy_read_only)
+               return 0;
        if (zfile_iscompressed (zf1))
                wrprot1 = 1;
        zfile_fclose (zf1);
-       zf2 = getwritefile (name, &wrprot2);
+       zf2 = getwritefile (p, name, &wrprot2);
        name2 = DISK_get_saveimagepath (name);
 
        if (needwritefile && zf2 == 0)
                disk_creatediskfile (name2, 1, drvtype, NULL, false, false);
        zfile_fclose (zf2);
-       if (writeprotected && iswritefileempty (name)) {
+       if (writeprotected && iswritefileempty (p, name)) {
                for (i = 0; i < MAX_FLOPPY_DRIVES; i++) {
                        if (!_tcscmp (name, floppy[i].newname))
                                drive_eject (&floppy[i]);
@@ -2611,7 +2612,7 @@ void dumpdisk (void)
                if (!(disabled & (1 << i))) {
                        console_out_f (L"Drive %d: motor %s cylinder %2d sel %s %s mfmpos %d/%d\n",
                                i, drv->motoroff ? L"off" : L" on", drv->cyl, (selected & (1 << i)) ? L"no" : L"yes",
-                               drive_writeprotected(drv) ? L"ro" : L"rw", drv->mfmpos, drv->tracklen);
+                               drive_writeprotected (drv) ? L"ro" : L"rw", drv->mfmpos, drv->tracklen);
                        if (drv->motoroff == 0) {
                                w = word;
                                for (j = 0; j < 15; j++) {
index c52e9baafcc1ca65b0ac758edcc65da4407544e0..006c6ebcc804e4ccf98c4bfa345de0f0e11197e4 100644 (file)
@@ -2328,7 +2328,7 @@ static void init_drawing_frame (void)
                                                if (currprefs.gfx_autoresolution_minv < 0) {
                                                        if (nl < nr)
                                                                nl = nr;
-                                               } else if (nr < currprefs.gfx_autoresolution_minv) {
+                                               } else if (nl < currprefs.gfx_autoresolution_minv) {
                                                        nl = currprefs.gfx_autoresolution_minv;
                                                }
 
index 6671c9424310c76c9f3fc416d334a6db1b2dd42c..42d8a472f51d9beb93407e6b10004239707bfbe4 100644 (file)
@@ -1,13 +1,13 @@
  db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x00); db(0x00); db(0x00); db(0x09); db(0x60); db(0x00); db(0x0b); db(0x8e);
+ db(0x00); db(0x00); db(0x00); db(0x09); db(0x60); db(0x00); db(0x0b); db(0x94);
  db(0x00); db(0x00); db(0x09); db(0x70); db(0x00); db(0x00); db(0x00); db(0xe0);
  db(0x00); db(0x00); db(0x02); db(0x9c); db(0x00); db(0x00); db(0x00); db(0x24);
- db(0x00); db(0x00); db(0x03); db(0x58); db(0x00); db(0x00); db(0x0f); db(0x6a);
- db(0x00); db(0x00); db(0x13); db(0xfa); db(0x43); db(0xfa); db(0x18); db(0xe8);
+ db(0x00); db(0x00); db(0x03); db(0x58); db(0x00); db(0x00); db(0x0f); db(0x70);
+ db(0x00); db(0x00); db(0x14); db(0x00); db(0x43); db(0xfa); db(0x18); db(0xec);
  db(0x4e); db(0xae); db(0xff); db(0xa0); db(0x20); db(0x40); db(0x20); db(0x28);
  db(0x00); db(0x16); db(0x20); db(0x40); db(0x4e); db(0x90); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0xe0); db(0xe2); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x11); db(0x61); db(0x00); db(0x0d); db(0x92); db(0x4e); db(0x90);
+ db(0x72); db(0x11); db(0x61); db(0x00); db(0x0d); db(0x98); db(0x4e); db(0x90);
  db(0x4a); db(0x80); db(0x67); db(0x4c); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x40);
  db(0x70); db(0x14); db(0x24); db(0x00); db(0x72); db(0x01); db(0x4e); db(0xae);
  db(0x20); db(0x68); db(0x00); db(0x02); db(0x2f); db(0x08); db(0x4e); db(0x90);
  db(0x20); db(0x5f); db(0x58); db(0x8f); db(0x48); db(0xe7); db(0xff); db(0x7e);
  db(0x22); db(0x4e); db(0x20); db(0x08); db(0x30); db(0x7c); db(0xff); db(0xb8);
- db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x61); db(0x00); db(0x13); db(0x3c);
- db(0x61); db(0x00); db(0x17); db(0x04); db(0x4c); db(0xdf); db(0x7e); db(0xff);
+ db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x61); db(0x00); db(0x13); db(0x42);
+ db(0x61); db(0x00); db(0x17); db(0x08); db(0x4c); db(0xdf); db(0x7e); db(0xff);
  db(0x4e); db(0x75); db(0x00); db(0x00); db(0x08); db(0x00); db(0x00); db(0x02);
  db(0x67); db(0x06); db(0x4e); db(0xb9); db(0x00); db(0xf0); db(0x00); db(0x00);
- db(0x4e); db(0xf9); db(0x00); db(0xf0); db(0x00); db(0x00); db(0x7c); db(0x00);
+ db(0x4e); db(0xf9); db(0x00); db(0xf0); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00); db(0x0c); db(0xe8);
- db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x18); db(0x49); db(0x70); db(0x24);
+ db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00); db(0x0c); db(0xee);
+ db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x18); db(0x4d); db(0x70); db(0x24);
  db(0x7a); db(0x01); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80);
- db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x18); db(0x39); db(0x70); db(0x00);
+ db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x18); db(0x3d); db(0x70); db(0x00);
  db(0x7a); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40);
  db(0x4a); db(0xad); db(0x01); db(0x0c); db(0x67); db(0x00); db(0x00); db(0x84);
  db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c); db(0x22); db(0x3c);
  db(0x00); db(0x24); db(0x00); db(0x14); db(0x65); db(0x04); db(0x00); db(0x44);
  db(0x01); db(0x00); db(0x43); db(0xf9); db(0x00); db(0x21); db(0x00); db(0x00);
  db(0x4e); db(0xae); db(0xfd); db(0xea); db(0x4a); db(0x80); db(0x66); db(0x20);
- db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x0c); db(0x10);
+ db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x0c); db(0x16);
  db(0x4e); db(0x90); db(0x22); db(0x04); db(0x74); db(0xf6); db(0x20); db(0x7c);
  db(0x00); db(0x20); db(0x00); db(0x00); db(0x90); db(0x88); db(0x65); db(0x08);
  db(0x67); db(0x06); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfd); db(0x96);
- db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x0b); db(0xf0);
+ db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x0b); db(0xf6);
  db(0x4e); db(0x90); db(0x20); db(0x49); db(0x20); db(0x01); db(0x67); db(0x0c);
- db(0x22); db(0x04); db(0x74); db(0xfb); db(0x43); db(0xfa); db(0x17); db(0x6d);
- db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x16); db(0xe4);
+ db(0x22); db(0x04); db(0x74); db(0xfb); db(0x43); db(0xfa); db(0x17); db(0x71);
+ db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x16); db(0xe8);
  db(0x43); db(0xfa); db(0x00); db(0x54); db(0x70); db(0x0a); db(0x61); db(0x00);
- db(0x0c); db(0xaa); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c);
- db(0xff); db(0x48); db(0x61); db(0x00); db(0x0b); db(0xc2); db(0x4e); db(0x90);
+ db(0x0c); db(0xb0); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c);
+ db(0xff); db(0x48); db(0x61); db(0x00); db(0x0b); db(0xc8); db(0x4e); db(0x90);
  db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x48); db(0xe7);
  db(0x38); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x00);
  db(0x28); db(0x01); db(0x26); db(0x09); db(0x24); db(0x48); db(0x43); db(0xfa);
- db(0x16); db(0xde); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x16); db(0xe2); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
  db(0x4a); db(0x80); db(0x67); db(0x14); db(0x2c); db(0x40); db(0x22); db(0x0a);
  db(0xe4); db(0x8b); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x22); db(0x4e);
  db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62);
  db(0x4c); db(0xdf); db(0x44); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x78);
  db(0x00); db(0x04); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x16); db(0x8f);
+ db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x16); db(0x93);
  db(0x43); db(0xfa); db(0x00); db(0x16); db(0x70); db(0x0f); db(0x22); db(0x3c);
  db(0x00); db(0x00); db(0x1f); db(0x40); db(0x61); db(0x00); db(0xff); db(0xa8);
- db(0x60); db(0xdc); db(0x6e); db(0x06); db(0x00); db(0x00); db(0x00); db(0x10);
+ db(0x60); db(0xdc); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x72); db(0x02); db(0x30); db(0x3c);
- db(0xff); db(0x48); db(0x61); db(0x00); db(0x0b); db(0x4a); db(0x4e); db(0x90);
- db(0x22); db(0x00); db(0x6b); db(0x04); db(0x61); db(0x00); db(0x08); db(0x86);
+ db(0xff); db(0x48); db(0x61); db(0x00); db(0x0b); db(0x50); db(0x4e); db(0x90);
+ db(0x22); db(0x00); db(0x6b); db(0x04); db(0x61); db(0x00); db(0x08); db(0x8c);
  db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x20);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x0b); db(0x30);
+ db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x0b); db(0x36);
  db(0x70); db(0x00); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
  db(0x00); db(0xa2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c);
- db(0xff); db(0x50); db(0x61); db(0x00); db(0x0b); db(0x1a); db(0x70); db(0x02);
+ db(0xff); db(0x50); db(0x61); db(0x00); db(0x0b); db(0x20); db(0x70); db(0x02);
  db(0x4e); db(0x90); db(0x0c); db(0x40); db(0x00); db(0x01); db(0x6d); db(0x00);
  db(0x00); db(0x7c); db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x92);
  db(0x60); db(0xe4); db(0x0c); db(0x40); db(0x00); db(0x02); db(0x6e); db(0x08);
  db(0x00); db(0x18); db(0x25); db(0x49); db(0x00); db(0x1a); db(0x20); db(0x69);
  db(0x00); db(0x10); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0x92);
  db(0x60); db(0x00); db(0xff); db(0x74); db(0x30); db(0x3c); db(0xff); db(0x50);
- db(0x61); db(0x00); db(0x0a); db(0x8c); db(0x70); db(0x04); db(0x4e); db(0x90);
+ db(0x61); db(0x00); db(0x0a); db(0x92); db(0x70); db(0x04); db(0x4e); db(0x90);
  db(0x70); db(0x01); db(0x4c); db(0xdf); db(0x04); db(0x00); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0xc0); db(0xc0); db(0x61); db(0x00); db(0xfc); db(0xda);
  db(0x70); db(0x1a); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
  db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); db(0x41); db(0xfa);
- db(0x15); db(0x63); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
+ db(0x15); db(0x67); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
  db(0xff); db(0x24); db(0x23); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xfa);
  db(0xff); db(0x1c); db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c);
  db(0x02); db(0x14); db(0x00); db(0x08); db(0x70); db(0x03); db(0x4e); db(0xae);
- db(0xff); db(0x58); db(0x30); db(0x3a); db(0x0b); db(0xd6); db(0x67); db(0x04);
- db(0x61); db(0x00); db(0x0b); db(0x74); db(0x4c); db(0xdf); db(0x03); db(0x03);
+ db(0xff); db(0x58); db(0x30); db(0x3a); db(0x0b); db(0xdc); db(0x67); db(0x04);
+ db(0x61); db(0x00); db(0x0b); db(0x7a); db(0x4c); db(0xdf); db(0x03); db(0x03);
  db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xf2); db(0x2c); db(0x78);
  db(0x00); db(0x04); db(0x24); db(0x48); db(0x26); db(0x49); db(0x20); db(0x3c);
  db(0x00); db(0x00); db(0x00); db(0xbe); db(0x22); db(0x3c); db(0x00); db(0x01);
  db(0x00); db(0x00); db(0x00); db(0x0e); db(0x52); db(0x40); db(0x0c); db(0x40);
  db(0x00); db(0x8c); db(0x66); db(0xf2); db(0x20); db(0x0a); db(0xe4); db(0x88);
  db(0x21); db(0x40); db(0x00); db(0x36); db(0x22); db(0x48); db(0x41); db(0xfa);
- db(0x14); db(0xf3); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b);
+ db(0x14); db(0xf7); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b);
  db(0x01); db(0x98); db(0x41); db(0xe8); db(0x00); db(0x12); db(0x4e); db(0xae);
  db(0xff); db(0x10); db(0x4c); db(0xdf); db(0x4f); db(0x03); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0x7f); db(0x7e); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x60); db(0xf4); db(0x48); db(0xe7); db(0x40); db(0xe2); db(0x2c); db(0x78);
  db(0x00); db(0x04); db(0x41); db(0xee); db(0x01); db(0x50); db(0x20); db(0x50);
  db(0x4a); db(0x90); db(0x67); db(0x1a); db(0x22); db(0x68); db(0x00); db(0x0a);
- db(0x45); db(0xfa); db(0x14); db(0x45); db(0x10); db(0x19); db(0x12); db(0x1a);
+ db(0x45); db(0xfa); db(0x14); db(0x49); db(0x10); db(0x19); db(0x12); db(0x1a);
  db(0xb0); db(0x01); db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x42);
  db(0x60); db(0xf2); db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20);
  db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
  db(0xff); db(0x3a); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08);
- db(0x00); db(0x08); db(0x41); db(0xfa); db(0x14); db(0x1b); db(0x25); db(0x48);
- db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x13); db(0x97); db(0x25); db(0x48);
+ db(0x00); db(0x08); db(0x41); db(0xfa); db(0x14); db(0x1f); db(0x25); db(0x48);
+ db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x13); db(0x9b); db(0x25); db(0x48);
  db(0x00); db(0x0e); db(0x41); db(0xea); db(0x00); db(0x12); db(0x20); db(0x88);
  db(0x58); db(0x90); db(0x21); db(0x48); db(0x00); db(0x08); db(0x41); db(0xee);
  db(0x01); db(0x50); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x0a);
  db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x20); db(0x6c); db(0x00); db(0x24);
  db(0x4a); db(0x90); db(0x4e); db(0x75); db(0x61); db(0x00); db(0xfc); db(0x7c);
  db(0x21); db(0x40); db(0x01); db(0x98); db(0x2f); db(0x08); db(0x30); db(0x3c);
- db(0xff); db(0xfc); db(0x61); db(0x00); db(0x05); db(0x52); db(0x2a); db(0x50);
- db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00); db(0x05); db(0x48);
+ db(0xff); db(0xfc); db(0x61); db(0x00); db(0x05); db(0x58); db(0x2a); db(0x50);
+ db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00); db(0x05); db(0x4e);
  db(0x22); db(0x48); db(0x20); db(0x5f); db(0x42); db(0xa8); db(0x01); db(0x90);
  db(0x42); db(0xa8); db(0x01); db(0x94); db(0x4e); db(0x91); db(0x4a); db(0x80);
  db(0x67); db(0x00); db(0x00); db(0xcc); db(0x20); db(0x28); db(0x01); db(0x90);
  db(0x20); db(0x5f); db(0x21); db(0x40); db(0x01); db(0x94); db(0x67); db(0x00);
  db(0x00); db(0xae); db(0x2c); db(0x4c); db(0x2f); db(0x08); db(0x4e); db(0xae);
  db(0xff); db(0x70); db(0x20); db(0x5f); db(0x22); db(0x48); db(0x26); db(0x40);
- db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00); db(0x05); db(0x00);
+ db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00); db(0x05); db(0x06);
  db(0x4e); db(0x90); db(0x70); db(0x00); db(0x27); db(0x40); db(0x00); db(0x08);
  db(0x27); db(0x40); db(0x00); db(0x10); db(0x27); db(0x40); db(0x00); db(0x20);
  db(0x20); db(0x29); db(0x01); db(0x94); db(0x67); db(0x22); db(0x20); db(0x40);
  db(0x20); db(0x29); db(0x01); db(0x90); db(0x22); db(0x69); db(0x01); db(0x94);
  db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x2e);
  db(0x4c); db(0xdf); db(0x03); db(0x01); db(0x61); db(0x00); db(0xfa); db(0x94);
- db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00); db(0x04); db(0xc0);
+ db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00); db(0x04); db(0xc6);
  db(0x4e); db(0x90); db(0x16); db(0x29); db(0x00); db(0x4f); db(0x0c); db(0x03);
  db(0x00); db(0x80); db(0x67); db(0x38); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x70); db(0x14); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
  db(0x2c); db(0x4c); db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x4e); db(0x75);
  db(0x61); db(0x00); db(0xfb); db(0x80); db(0x21); db(0x40); db(0x01); db(0x98);
  db(0x2f); db(0x08); db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00);
- db(0x04); db(0x56); db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28);
- db(0x61); db(0x00); db(0x04); db(0x4c); db(0x22); db(0x48); db(0x20); db(0x5f);
+ db(0x04); db(0x5c); db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28);
+ db(0x61); db(0x00); db(0x04); db(0x52); db(0x22); db(0x48); db(0x20); db(0x5f);
  db(0x42); db(0xa8); db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94);
  db(0x4e); db(0x91); db(0x26); db(0x00); db(0x0c); db(0x43); db(0xff); db(0xfe);
  db(0x67); db(0x00); db(0xf8); db(0x7a); db(0x20); db(0x28); db(0x01); db(0x90);
  db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a);
  db(0x20); db(0x5f); db(0x21); db(0x40); db(0x01); db(0x94); db(0x4a); db(0x83);
  db(0x6a); db(0x0e); db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x20);
- db(0x61); db(0x00); db(0x04); db(0x0c); db(0x4e); db(0x90); db(0x60); db(0x26);
+ db(0x61); db(0x00); db(0x04); db(0x12); db(0x4e); db(0x90); db(0x60); db(0x26);
  db(0x2c); db(0x4c); db(0x2f); db(0x08); db(0x4e); db(0xae); db(0xff); db(0x70);
  db(0x20); db(0x5f); db(0x22); db(0x48); db(0x26); db(0x40); db(0x30); db(0x3c);
- db(0xff); db(0x20); db(0x61); db(0x00); db(0x03); db(0xf2); db(0x4e); db(0x90);
+ db(0xff); db(0x20); db(0x61); db(0x00); db(0x03); db(0xf8); db(0x4e); db(0x90);
  db(0x70); db(0x00); db(0x27); db(0x40); db(0x00); db(0x08); db(0x27); db(0x40);
  db(0x00); db(0x10); db(0x27); db(0x40); db(0x00); db(0x20); db(0x4a); db(0xa9);
  db(0x01); db(0x94); db(0x67); db(0x28); db(0x20); db(0x69); db(0x01); db(0x94);
  db(0x4c); db(0xdf); db(0x03); db(0x01); db(0x4a); db(0x80); db(0x67); db(0x04);
  db(0x61); db(0x00); db(0xf9); db(0x80); db(0x4a); db(0x83); db(0x6b); db(0x00);
  db(0xf7); db(0xf4); db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00);
- db(0x03); db(0xa6); db(0x4e); db(0x90); db(0x20); db(0x03); db(0x16); db(0x29);
+ db(0x03); db(0xac); db(0x4e); db(0x90); db(0x20); db(0x03); db(0x16); db(0x29);
  db(0x00); db(0x4f); db(0x4a); db(0x80); db(0x66); db(0x1a); db(0x27); db(0x7c);
  db(0x00); db(0x00); db(0x17); db(0x70); db(0x00); db(0x14); db(0x41); db(0xfa);
  db(0xf5); db(0xb4); db(0x20); db(0x08); db(0xe4); db(0x88); db(0x27); db(0x40);
  db(0x00); db(0x20); db(0x70); db(0xff); db(0x27); db(0x40); db(0x00); db(0x24);
- db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x3a); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x70); db(0x14); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40);
- db(0x30); db(0x3c); db(0x10); db(0x00); db(0x80); db(0x03); db(0x33); db(0x40);
- db(0x00); db(0x08); db(0x23); db(0x6d); db(0x01); db(0x04); db(0x00); db(0x0a);
- db(0x23); db(0x4b); db(0x00); db(0x10); db(0x41); db(0xec); db(0x00); db(0x4a);
- db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x4e); db(0xae); db(0xfe); db(0xf2);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x70); db(0x00); db(0x4e); db(0x75);
- db(0x24); db(0x49); db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41);
- db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x08); db(0x08); db(0x07);
- db(0x00); db(0x02); db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0xec);
- db(0x2c); db(0x4c); db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x08); db(0x07);
- db(0x00); db(0x01); db(0x67); db(0x5c); db(0x08); db(0x07); db(0x00); db(0x02);
- db(0x66); db(0x56); db(0x20); db(0x52); db(0x74); db(0x02); db(0x52); db(0x82);
- db(0x4a); db(0x30); db(0x28); db(0xfd); db(0x66); db(0xf8); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x20); db(0x02); db(0x72); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x3a); db(0x20); db(0x52);
- db(0x24); db(0x40); db(0x22); db(0x4a); db(0x12); db(0xd8); db(0x66); db(0xfc);
- db(0x13); db(0x7c); db(0x00); db(0x3a); db(0xff); db(0xff); db(0x42); db(0x11);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0e); db(0x18);
- db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2c); db(0x40);
- db(0x22); db(0x0a); db(0x4e); db(0xae); db(0xff); db(0x52); db(0x22); db(0x4e);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62);
- db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e);
- db(0x2c); db(0x01); db(0x7e); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x43); db(0xfa); db(0x0e); db(0x13); db(0x70); db(0x24); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87);
- db(0x00); db(0x02); db(0x43); db(0xfa); db(0x0e); db(0x01); db(0x70); db(0x00);
- db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c);
- db(0x00); db(0x00); db(0x02); db(0x2c); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40);
- db(0x4a); db(0x80); db(0x67); db(0x2c); db(0x21); db(0x4c); db(0x01); db(0x9c);
- db(0x48); db(0xe7); db(0x00); db(0x8a); db(0x61); db(0x00); db(0xfe); db(0x0a);
- db(0x4c); db(0xdf); db(0x51); db(0x00); db(0x0c); db(0x80); db(0xff); db(0xff);
- db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46);
- db(0x48); db(0x46); db(0x60); db(0xe4); db(0x22); db(0x48); db(0x20); db(0x3c);
- db(0x00); db(0x00); db(0x02); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf);
- db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40);
- db(0x4b); db(0xe8); db(0x00); db(0x5c); db(0x43); db(0xfa); db(0x0d); db(0x68);
- db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x24); db(0x40);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xb9); db(0x22); db(0x3c);
- db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x26); db(0x40); db(0x7c); db(0x00); db(0x26); db(0x86); db(0x27); db(0x46);
- db(0x00); db(0x04); db(0x27); db(0x46); db(0x00); db(0x08); db(0x27); db(0x4a);
- db(0x00); db(0xa0); db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x93); db(0xc9);
- db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x27); db(0x40); db(0x00); db(0xb0);
- db(0x41); db(0xfa); db(0x0c); db(0x50); db(0x70); db(0x00); db(0x72); db(0x00);
- db(0x61); db(0x00); db(0x02); db(0x8e); db(0x27); db(0x40); db(0x00); db(0xa4);
- db(0x41); db(0xfa); db(0x0c); db(0x4d); db(0x70); db(0x00); db(0x72); db(0x00);
- db(0x61); db(0x00); db(0x02); db(0x7e); db(0x27); db(0x40); db(0x00); db(0xa8);
- db(0x7a); db(0x00); db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x80);
- db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40);
- db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x40);
- db(0x61); db(0x00); db(0x01); db(0xbc); db(0x70); db(0x00); db(0x4e); db(0x90);
- db(0x24); db(0x00); db(0x70); db(0x01); db(0x61); db(0x00); db(0xf9); db(0x3c);
- db(0x08); db(0x02); db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01);
- db(0x61); db(0x00); db(0xfa); db(0xa4); db(0x60); db(0x00); db(0x01); db(0x02);
- db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40);
- db(0x4a); db(0x80); db(0x66); db(0x10); db(0x70); db(0x00); db(0x12); db(0x2d);
- db(0x00); db(0x0f); db(0x03); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x4a); db(0x2b); db(0x00); db(0xac);
- db(0x67); db(0x08); db(0x61); db(0x00); db(0xfb); db(0x50); db(0x42); db(0x2b);
- db(0x00); db(0xac); db(0x20); db(0x0c); db(0x67); db(0x54); db(0x0c); db(0x6c);
- db(0x00); db(0x26); db(0x00); db(0x12); db(0x66); db(0x4c); db(0x0c); db(0xac);
- db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x42);
- db(0x0c); db(0x6c); db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x3a);
- db(0x20); db(0x6c); db(0x00); db(0x1a); db(0x20); db(0x28); db(0x00); db(0x0c);
- db(0x02); db(0x80); db(0x80); db(0x00); db(0x00); db(0x08); db(0x0c); db(0x80);
- db(0x80); db(0x00); db(0x00); db(0x08); db(0x66); db(0x18); db(0x02); db(0xa8);
- db(0x7f); db(0xff); db(0xff); db(0xff); db(0x00); db(0x0c); db(0x20); db(0x68);
- db(0x00); db(0x10); db(0x22); db(0x4c); db(0x12); db(0xbc); db(0x00); db(0x08);
- db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x8a); db(0x22); db(0x4c);
- db(0x70); db(0x26); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00);
- db(0xff); db(0x80); db(0x74); db(0xfe); db(0x20); db(0x0c); db(0x67); db(0x14);
- db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x66); db(0x42); db(0x74); db(0xff);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x01); db(0x08);
- db(0x70); db(0x01); db(0x4e); db(0x90); db(0x45); db(0xeb); db(0x00); db(0x04);
- db(0x20); db(0x52); db(0x20); db(0x08); db(0x67); db(0x00); db(0xff); db(0x5a);
- db(0x22); db(0x50); db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x04);
- db(0xb4); db(0x80); db(0x66); db(0x16); db(0x48); db(0xe7); db(0x00); db(0xc0);
- db(0x28); db(0x68); db(0x00); db(0x0a); db(0x61); db(0x4a); db(0x53); db(0x85);
- db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x89); db(0x20); db(0x49);
- db(0x60); db(0xd8); db(0x24); db(0x48); db(0x20); db(0x49); db(0x60); db(0xd2);
- db(0x0c); db(0x85); db(0x00); db(0x00); db(0x00); db(0x14); db(0x65); db(0x00);
- db(0x00); db(0x0a); db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x04);
- db(0x60); db(0x12); db(0x61); db(0x5c); db(0x30); db(0x3c); db(0xff); db(0x30);
- db(0x61); db(0x00); db(0x00); db(0xb4); db(0x4e); db(0x90); db(0x4a); db(0x80);
- db(0x67); db(0x0e); db(0x52); db(0x85); db(0x28); db(0xab); db(0x00); db(0x04);
- db(0x27); db(0x4c); db(0x00); db(0x04); db(0x60); db(0x00); db(0xff); db(0x02);
- db(0x28); db(0x43); db(0x61); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xfa);
- db(0x0c); db(0xac); db(0x00); db(0x00); db(0x00); db(0x1f); db(0x00); db(0x08);
- db(0x66); db(0x04); db(0x61); db(0x00); db(0xfa); db(0x46); db(0x0c); db(0xac);
- db(0x00); db(0x00); db(0x04); db(0x09); db(0x00); db(0x08); db(0x66); db(0x12);
- db(0x61); db(0x00); db(0xfa); db(0x74); db(0x66); db(0x0c); db(0x30); db(0x3c);
- db(0xff); db(0x58); db(0x61); db(0x00); db(0x00); db(0x72); db(0x4e); db(0x90);
- db(0x60); db(0xee); db(0x22); db(0x54); db(0x20); db(0x6c); db(0x00); db(0x04);
- db(0x29); db(0x4d); db(0x00); db(0x04); db(0x4e); db(0xee); db(0xfe); db(0x92);
- db(0x2f); db(0x05); db(0x7a); db(0xfc); db(0x24); db(0x53); db(0x2e); db(0x0a);
- db(0x22); db(0x0a); db(0x67); db(0x00); db(0x00); db(0x0c); db(0x52); db(0x85);
- db(0x67); db(0x1e); db(0x22); db(0x4a); db(0x24); db(0x52); db(0x60); db(0xf0);
- db(0x52); db(0x85); db(0x67); db(0x3c); db(0x24); db(0x47); db(0x70); db(0x18);
- db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x52); db(0x46);
- db(0x24); db(0x40); db(0x24); db(0x87); db(0x2e); db(0x0a); db(0x60); db(0xe8);
- db(0x20); db(0x12); db(0x67); db(0x24); db(0x20); db(0x40); db(0x20); db(0x10);
- db(0x67); db(0x1e); db(0x20); db(0x40); db(0x20); db(0x10); db(0x67); db(0x18);
- db(0x70); db(0x00); db(0x22); db(0x80); db(0x22); db(0x4a); db(0x24); db(0x51);
- db(0x70); db(0x18); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x06); db(0x86);
- db(0x00); db(0x01); db(0x00); db(0x00); db(0x20); db(0x0a); db(0x66); db(0xec);
- db(0x26); db(0x87); db(0x2a); db(0x1f); db(0x4e); db(0x75); db(0x41); db(0xfa);
- db(0xf2); db(0x1c); db(0x02); db(0x80); db(0x00); db(0x00); db(0xff); db(0xff);
- db(0xd1); db(0xc0); db(0x4e); db(0x75); db(0x20); db(0x88); db(0x58); db(0x90);
- db(0x42); db(0xa8); db(0x00); db(0x04); db(0x21); db(0x48); db(0x00); db(0x08);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6);
- db(0x91); db(0xc8); db(0x24); db(0x00); db(0x6b); db(0x32); db(0x70); db(0x22);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x91); db(0xc8); db(0x24); db(0x40); db(0x4a); db(0x80);
- db(0x67); db(0x1e); db(0x15); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x08);
- db(0x15); db(0x42); db(0x00); db(0x0f); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfe); db(0xda); db(0x25); db(0x40); db(0x00); db(0x10); db(0x41); db(0xea);
- db(0x00); db(0x14); db(0x61); db(0x00); db(0xff); db(0xb0); db(0x20); db(0x4a);
- db(0x20); db(0x08); db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75);
+ db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x40); db(0x0c); db(0x03);
+ db(0x00); db(0x80); db(0x67); db(0x3a); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x70); db(0x14); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); db(0x30); db(0x3c);
+ db(0x10); db(0x00); db(0x80); db(0x03); db(0x33); db(0x40); db(0x00); db(0x08);
+ db(0x23); db(0x6d); db(0x01); db(0x04); db(0x00); db(0x0a); db(0x23); db(0x4b);
+ db(0x00); db(0x10); db(0x41); db(0xec); db(0x00); db(0x4a); db(0x4e); db(0xae);
+ db(0xff); db(0x7c); db(0x4e); db(0xae); db(0xfe); db(0xf2); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x24); db(0x49);
+ db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41); db(0x08); db(0x07);
+ db(0x00); db(0x01); db(0x67); db(0x08); db(0x08); db(0x07); db(0x00); db(0x02);
+ db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0x80); db(0x2c); db(0x4c);
+ db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x5c); db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x56);
+ db(0x20); db(0x52); db(0x74); db(0x02); db(0x52); db(0x82); db(0x4a); db(0x30);
+ db(0x28); db(0xfd); db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x20); db(0x02); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x4a); db(0x80); db(0x67); db(0x3a); db(0x20); db(0x52); db(0x24); db(0x40);
+ db(0x22); db(0x4a); db(0x12); db(0xd8); db(0x66); db(0xfc); db(0x13); db(0x7c);
+ db(0x00); db(0x3a); db(0xff); db(0xff); db(0x42); db(0x11); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0e); db(0x16); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2c); db(0x40); db(0x22); db(0x0a);
+ db(0x4e); db(0xae); db(0xff); db(0x52); db(0x22); db(0x4e); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4a);
+ db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x01);
+ db(0x7e); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa);
+ db(0x0e); db(0x11); db(0x70); db(0x24); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87); db(0x00); db(0x02);
+ db(0x43); db(0xfa); db(0x0d); db(0xff); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x02); db(0x2c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); db(0x4a); db(0x80);
+ db(0x67); db(0x2c); db(0x21); db(0x4c); db(0x01); db(0x9c); db(0x48); db(0xe7);
+ db(0x00); db(0x8a); db(0x61); db(0x00); db(0xfe); db(0x04); db(0x4c); db(0xdf);
+ db(0x51); db(0x00); db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe);
+ db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46);
+ db(0x60); db(0xe4); db(0x22); db(0x48); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x02); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
+ db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9);
+ db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40); db(0x4b); db(0xe8);
+ db(0x00); db(0x5c); db(0x43); db(0xfa); db(0x0d); db(0x66); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x24); db(0x40); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x00); db(0xb9); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40);
+ db(0x7c); db(0x00); db(0x26); db(0x86); db(0x27); db(0x46); db(0x00); db(0x04);
+ db(0x27); db(0x46); db(0x00); db(0x08); db(0x27); db(0x4a); db(0x00); db(0xa0);
+ db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x93); db(0xc9); db(0x4e); db(0xae);
+ db(0xfe); db(0xda); db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa);
+ db(0x0c); db(0x4e); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
+ db(0x02); db(0x8e); db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa);
+ db(0x0c); db(0x4b); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
+ db(0x02); db(0x7e); db(0x27); db(0x40); db(0x00); db(0xa8); db(0x7a); db(0x00);
+ db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x80); db(0x20); db(0x4d);
+ db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x26); db(0x2c);
+ db(0x00); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x40); db(0x61); db(0x00);
+ db(0x01); db(0xbc); db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00);
+ db(0x70); db(0x01); db(0x61); db(0x00); db(0xf9); db(0x36); db(0x08); db(0x02);
+ db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00);
+ db(0xfa); db(0x9e); db(0x60); db(0x00); db(0x01); db(0x02); db(0x20); db(0x4d);
+ db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x4a); db(0x80);
+ db(0x66); db(0x10); db(0x70); db(0x00); db(0x12); db(0x2d); db(0x00); db(0x0f);
+ db(0x03); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae);
+ db(0xfe); db(0xc2); db(0x4a); db(0x2b); db(0x00); db(0xac); db(0x67); db(0x08);
+ db(0x61); db(0x00); db(0xfb); db(0x4a); db(0x42); db(0x2b); db(0x00); db(0xac);
+ db(0x20); db(0x0c); db(0x67); db(0x54); db(0x0c); db(0x6c); db(0x00); db(0x26);
+ db(0x00); db(0x12); db(0x66); db(0x4c); db(0x0c); db(0xac); db(0x40); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x42); db(0x0c); db(0x6c);
+ db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x3a); db(0x20); db(0x6c);
+ db(0x00); db(0x1a); db(0x20); db(0x28); db(0x00); db(0x0c); db(0x02); db(0x80);
+ db(0x80); db(0x00); db(0x00); db(0x08); db(0x0c); db(0x80); db(0x80); db(0x00);
+ db(0x00); db(0x08); db(0x66); db(0x18); db(0x02); db(0xa8); db(0x7f); db(0xff);
+ db(0xff); db(0xff); db(0x00); db(0x0c); db(0x20); db(0x68); db(0x00); db(0x10);
+ db(0x22); db(0x4c); db(0x12); db(0xbc); db(0x00); db(0x08); db(0x4e); db(0xae);
+ db(0xfe); db(0x92); db(0x60); db(0x8a); db(0x22); db(0x4c); db(0x70); db(0x26);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x80);
+ db(0x74); db(0xfe); db(0x20); db(0x0c); db(0x67); db(0x14); db(0x26); db(0x2c);
+ db(0x00); db(0x0a); db(0x66); db(0x42); db(0x74); db(0xff); db(0x30); db(0x3c);
+ db(0xff); db(0x50); db(0x61); db(0x00); db(0x01); db(0x08); db(0x70); db(0x01);
+ db(0x4e); db(0x90); db(0x45); db(0xeb); db(0x00); db(0x04); db(0x20); db(0x52);
+ db(0x20); db(0x08); db(0x67); db(0x00); db(0xff); db(0x5a); db(0x22); db(0x50);
+ db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x04); db(0xb4); db(0x80);
+ db(0x66); db(0x16); db(0x48); db(0xe7); db(0x00); db(0xc0); db(0x28); db(0x68);
+ db(0x00); db(0x0a); db(0x61); db(0x4a); db(0x53); db(0x85); db(0x4c); db(0xdf);
+ db(0x03); db(0x00); db(0x24); db(0x89); db(0x20); db(0x49); db(0x60); db(0xd8);
+ db(0x24); db(0x48); db(0x20); db(0x49); db(0x60); db(0xd2); db(0x0c); db(0x85);
+ db(0x00); db(0x00); db(0x00); db(0x14); db(0x65); db(0x00); db(0x00); db(0x0a);
+ db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x04); db(0x60); db(0x12);
+ db(0x61); db(0x5c); db(0x30); db(0x3c); db(0xff); db(0x30); db(0x61); db(0x00);
+ db(0x00); db(0xb4); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x0e);
+ db(0x52); db(0x85); db(0x28); db(0xab); db(0x00); db(0x04); db(0x27); db(0x4c);
+ db(0x00); db(0x04); db(0x60); db(0x00); db(0xff); db(0x02); db(0x28); db(0x43);
+ db(0x61); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xfa); db(0x0c); db(0xac);
+ db(0x00); db(0x00); db(0x00); db(0x1f); db(0x00); db(0x08); db(0x66); db(0x04);
+ db(0x61); db(0x00); db(0xfa); db(0x40); db(0x0c); db(0xac); db(0x00); db(0x00);
+ db(0x04); db(0x09); db(0x00); db(0x08); db(0x66); db(0x12); db(0x61); db(0x00);
+ db(0xfa); db(0x6e); db(0x66); db(0x0c); db(0x30); db(0x3c); db(0xff); db(0x58);
+ db(0x61); db(0x00); db(0x00); db(0x72); db(0x4e); db(0x90); db(0x60); db(0xee);
+ db(0x22); db(0x54); db(0x20); db(0x6c); db(0x00); db(0x04); db(0x29); db(0x4d);
+ db(0x00); db(0x04); db(0x4e); db(0xee); db(0xfe); db(0x92); db(0x2f); db(0x05);
+ db(0x7a); db(0xfc); db(0x24); db(0x53); db(0x2e); db(0x0a); db(0x22); db(0x0a);
+ db(0x67); db(0x00); db(0x00); db(0x0c); db(0x52); db(0x85); db(0x67); db(0x1e);
+ db(0x22); db(0x4a); db(0x24); db(0x52); db(0x60); db(0xf0); db(0x52); db(0x85);
+ db(0x67); db(0x3c); db(0x24); db(0x47); db(0x70); db(0x18); db(0x72); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x52); db(0x46); db(0x24); db(0x40);
+ db(0x24); db(0x87); db(0x2e); db(0x0a); db(0x60); db(0xe8); db(0x20); db(0x12);
+ db(0x67); db(0x24); db(0x20); db(0x40); db(0x20); db(0x10); db(0x67); db(0x1e);
+ db(0x20); db(0x40); db(0x20); db(0x10); db(0x67); db(0x18); db(0x70); db(0x00);
+ db(0x22); db(0x80); db(0x22); db(0x4a); db(0x24); db(0x51); db(0x70); db(0x18);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x06); db(0x86); db(0x00); db(0x01);
+ db(0x00); db(0x00); db(0x20); db(0x0a); db(0x66); db(0xec); db(0x26); db(0x87);
+ db(0x2a); db(0x1f); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0xf2); db(0x16);
+ db(0x02); db(0x80); db(0x00); db(0x00); db(0xff); db(0xff); db(0xd1); db(0xc0);
+ db(0x4e); db(0x75); db(0x20); db(0x88); db(0x58); db(0x90); db(0x42); db(0xa8);
+ db(0x00); db(0x04); db(0x21); db(0x48); db(0x00); db(0x08); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x4a); db(0x80); db(0x67); db(0x24); db(0x24); db(0x40); db(0x24); db(0x01);
- db(0x66); db(0x02); db(0x74); db(0x30); db(0x20); db(0x02); db(0x22); db(0x3c);
- db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x20); db(0x40); db(0x11); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x08);
- db(0x31); db(0x42); db(0x00); db(0x12); db(0x21); db(0x4a); db(0x00); db(0x0e);
- db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x30); db(0x22); db(0x24); db(0x48); db(0x24); db(0x00);
- db(0x26); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00);
- db(0xff); db(0x6a); db(0x22); db(0x03); db(0x61); db(0x00); db(0xff); db(0xb2);
- db(0x67); db(0x18); db(0x20); db(0x4a); db(0x22); db(0x40); db(0x24); db(0x40);
- db(0x20); db(0x02); db(0x72); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0x44);
- db(0x22); db(0x00); db(0x70); db(0x00); db(0x4a); db(0x81); db(0x66); db(0x02);
- db(0x20); db(0x0a); db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x0c);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x32); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x28); db(0x00); db(0x24); db(0x08); db(0x26); db(0x09);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x08); db(0x5c); db(0x22); db(0x3c);
+ db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x91); db(0xc8);
+ db(0x24); db(0x00); db(0x6b); db(0x32); db(0x70); db(0x22); db(0x22); db(0x3c);
  db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x34); db(0x24); db(0x40);
- db(0x15); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x08); db(0x15); db(0x44);
- db(0x00); db(0x09); db(0x25); db(0x42); db(0x00); db(0x0a); db(0x47); db(0xea);
- db(0x00); db(0x5c); db(0x25); db(0x4b); db(0x00); db(0x3a); db(0x47); db(0xeb);
- db(0x08); db(0x00); db(0x25); db(0x4b); db(0x00); db(0x3e); db(0x25); db(0x4b);
- db(0x00); db(0x36); db(0x22); db(0x4a); db(0x24); db(0x43); db(0x97); db(0xcb);
- db(0x24); db(0x09); db(0x4e); db(0xae); db(0xfe); db(0xe6); db(0x20); db(0x02);
- db(0x4c); db(0xdf); db(0x4c); db(0x1c); db(0x4e); db(0x75); db(0x41); db(0xfa);
- db(0x09); db(0xb2); db(0x43); db(0xfa); db(0x01); db(0x5c); db(0x70); db(0x13);
- db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75); db(0x22); db(0x6d);
- db(0x02); db(0x0c); db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c);
- db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae);
- db(0xfe); db(0x38); db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x25); db(0x69);
- db(0x00); db(0x20); db(0x00); db(0x0e); db(0x25); db(0x69); db(0x00); db(0x24);
- db(0x00); db(0x12); db(0x22); db(0x6d); db(0x02); db(0x08); db(0x13); db(0x7c);
- db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x4e); db(0x75); db(0x42); db(0xaa); db(0x00); db(0x0e); db(0x42); db(0xaa);
- db(0x00); db(0x12); db(0x22); db(0x6d); db(0x02); db(0x08); db(0x13); db(0x7c);
+ db(0x91); db(0xc8); db(0x24); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x1e);
+ db(0x15); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x08); db(0x15); db(0x42);
+ db(0x00); db(0x0f); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
+ db(0x25); db(0x40); db(0x00); db(0x10); db(0x41); db(0xea); db(0x00); db(0x14);
+ db(0x61); db(0x00); db(0xff); db(0xb0); db(0x20); db(0x4a); db(0x20); db(0x08);
+ db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4a); db(0x80);
+ db(0x67); db(0x24); db(0x24); db(0x40); db(0x24); db(0x01); db(0x66); db(0x02);
+ db(0x74); db(0x30); db(0x20); db(0x02); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40);
+ db(0x11); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x08); db(0x31); db(0x42);
+ db(0x00); db(0x12); db(0x21); db(0x4a); db(0x00); db(0x0e); db(0x4a); db(0x80);
+ db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x30); db(0x22); db(0x24); db(0x48); db(0x24); db(0x00); db(0x26); db(0x01);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x6a);
+ db(0x22); db(0x03); db(0x61); db(0x00); db(0xff); db(0xb2); db(0x67); db(0x18);
+ db(0x20); db(0x4a); db(0x22); db(0x40); db(0x24); db(0x40); db(0x20); db(0x02);
+ db(0x72); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00);
+ db(0x70); db(0x00); db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a);
+ db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x0c); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x38); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x28); db(0x00); db(0x24); db(0x08); db(0x26); db(0x09); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x08); db(0x5c); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
+ db(0x67); db(0x00); db(0x00); db(0x34); db(0x24); db(0x40); db(0x15); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x08); db(0x15); db(0x44); db(0x00); db(0x09);
+ db(0x25); db(0x42); db(0x00); db(0x0a); db(0x47); db(0xea); db(0x00); db(0x5c);
+ db(0x25); db(0x4b); db(0x00); db(0x3a); db(0x47); db(0xeb); db(0x08); db(0x00);
+ db(0x25); db(0x4b); db(0x00); db(0x3e); db(0x25); db(0x4b); db(0x00); db(0x36);
+ db(0x22); db(0x4a); db(0x24); db(0x43); db(0x97); db(0xcb); db(0x24); db(0x09);
+ db(0x4e); db(0xae); db(0xfe); db(0xe6); db(0x20); db(0x02); db(0x4c); db(0xdf);
+ db(0x4c); db(0x1c); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x09); db(0xb0);
+ db(0x43); db(0xfa); db(0x01); db(0x5c); db(0x70); db(0x13); db(0x61); db(0x00);
+ db(0xff); db(0x98); db(0x4e); db(0x75); db(0x22); db(0x6d); db(0x02); db(0x0c);
+ db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c);
  db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x4e); db(0x75); db(0x00); db(0x00); db(0xff); db(0xff); db(0x00); db(0x00);
+ db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x25); db(0x69); db(0x00); db(0x20);
+ db(0x00); db(0x0e); db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12);
+ db(0x22); db(0x6d); db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75);
+ db(0x42); db(0xaa); db(0x00); db(0x0e); db(0x42); db(0xaa); db(0x00); db(0x12);
+ db(0x22); db(0x6d); db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75);
+ db(0x00); db(0x00); db(0xff); db(0xff); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x48); db(0xe7);
- db(0xf8); db(0xfe); db(0x2a); db(0x48); db(0x95); db(0xca); db(0x97); db(0xcb);
- db(0x99); db(0xcc); db(0x78); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x18);
- db(0x20); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x28); db(0x00); db(0x3c);
- db(0x67); db(0x5c); db(0x20); db(0x40); db(0x41); db(0xe8); db(0x00); db(0x2c);
- db(0x28); db(0x48); db(0x4e); db(0xae); db(0xfc); db(0xe8); db(0x72); db(0xff);
- db(0x74); db(0xff); db(0xb2); db(0x80); db(0x67); db(0x48); db(0x26); db(0x00);
- db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x41); db(0xed); db(0x00); db(0xc0);
- db(0x70); db(0x66); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xed);
- db(0x00); db(0xc0); db(0x38); db(0x28); db(0x00); db(0x64); db(0x2c); db(0x6d);
- db(0x00); db(0x18); db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x38);
- db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c);
- db(0x80); db(0x00); db(0x10); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae);
- db(0xfd); db(0x0c); db(0x72); db(0xff); db(0x74); db(0xff); db(0x4a); db(0x80);
- db(0x6b); db(0x0c); db(0x45); db(0xed); db(0x00); db(0x38); db(0x22); db(0x2a);
- db(0x00); db(0x32); db(0x24); db(0x2a); db(0x00); db(0x36); db(0x20); db(0x2c);
- db(0x00); db(0x1c); db(0xb8); db(0x6d); db(0x00); db(0x2c); db(0x66); db(0x12);
- db(0xb0); db(0xad); db(0x00); db(0x28); db(0x66); db(0x0c); db(0xb2); db(0xad);
- db(0x00); db(0x20); db(0x66); db(0x06); db(0xb4); db(0xad); db(0x00); db(0x24);
- db(0x67); db(0x40); db(0x2b); db(0x40); db(0x00); db(0x28); db(0x2b); db(0x41);
- db(0x00); db(0x20); db(0x2b); db(0x42); db(0x00); db(0x24); db(0x3b); db(0x44);
- db(0x00); db(0x2c); db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x90);
- db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c);
- db(0x80); db(0x00); db(0x00); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae);
- db(0xfd); db(0x0c); db(0x4a); db(0x80); db(0x6b); db(0x04); db(0x47); db(0xed);
- db(0x00); db(0x90); db(0x34); db(0x2d); db(0x00); db(0x2c); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x01); db(0x61); db(0x00); db(0xfd); db(0x70);
- db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0x1f); db(0x4e); db(0x75);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x3e); db(0x2e); db(0x00); db(0x14);
- db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x7c); db(0x00);
- db(0x01); db(0xc6); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
- db(0x28); db(0x40); db(0x70); db(0x14); db(0x22); db(0x4c); db(0x4e); db(0xae);
- db(0xfe); db(0xd4); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x02); db(0x10);
+ db(0x00); db(0x00); db(0x00); db(0x00); db(0x48); db(0xe7); db(0xf8); db(0xfe);
+ db(0x2a); db(0x48); db(0x95); db(0xca); db(0x97); db(0xcb); db(0x99); db(0xcc);
+ db(0x78); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x20); db(0x6d);
+ db(0x00); db(0x14); db(0x20); db(0x28); db(0x00); db(0x3c); db(0x67); db(0x5c);
+ db(0x20); db(0x40); db(0x41); db(0xe8); db(0x00); db(0x2c); db(0x28); db(0x48);
+ db(0x4e); db(0xae); db(0xfc); db(0xe8); db(0x72); db(0xff); db(0x74); db(0xff);
+ db(0xb2); db(0x80); db(0x67); db(0x48); db(0x26); db(0x00); db(0x2c); db(0x6d);
+ db(0x00); db(0x14); db(0x41); db(0xed); db(0x00); db(0xc0); db(0x70); db(0x66);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xed); db(0x00); db(0xc0);
+ db(0x38); db(0x28); db(0x00); db(0x64); db(0x2c); db(0x6d); db(0x00); db(0x18);
+ db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x38); db(0x70); db(0x00);
+ db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c); db(0x80); db(0x00);
+ db(0x10); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae); db(0xfd); db(0x0c);
+ db(0x72); db(0xff); db(0x74); db(0xff); db(0x4a); db(0x80); db(0x6b); db(0x0c);
+ db(0x45); db(0xed); db(0x00); db(0x38); db(0x22); db(0x2a); db(0x00); db(0x32);
+ db(0x24); db(0x2a); db(0x00); db(0x36); db(0x20); db(0x2c); db(0x00); db(0x1c);
+ db(0xb8); db(0x6d); db(0x00); db(0x2c); db(0x66); db(0x12); db(0xb0); db(0xad);
+ db(0x00); db(0x28); db(0x66); db(0x0c); db(0xb2); db(0xad); db(0x00); db(0x20);
+ db(0x66); db(0x06); db(0xb4); db(0xad); db(0x00); db(0x24); db(0x67); db(0x40);
+ db(0x2b); db(0x40); db(0x00); db(0x28); db(0x2b); db(0x41); db(0x00); db(0x20);
+ db(0x2b); db(0x42); db(0x00); db(0x24); db(0x3b); db(0x44); db(0x00); db(0x2c);
+ db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x90); db(0x70); db(0x00);
+ db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c); db(0x80); db(0x00);
+ db(0x00); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae); db(0xfd); db(0x0c);
+ db(0x4a); db(0x80); db(0x6b); db(0x04); db(0x47); db(0xed); db(0x00); db(0x90);
+ db(0x34); db(0x2d); db(0x00); db(0x2c); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x01); db(0x61); db(0x00); db(0xfd); db(0x70); db(0x4e); db(0x90);
+ db(0x4c); db(0xdf); db(0x7f); db(0x1f); db(0x4e); db(0x75); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x3e); db(0x2e); db(0x00); db(0x14); db(0x70); db(0xff);
+ db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x7c); db(0x00); db(0x01); db(0xc6);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x28); db(0x40);
+ db(0x70); db(0x14); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0xd4);
+ db(0x70); db(0x00); db(0x30); db(0x3c); db(0x02); db(0x10); db(0x22); db(0x3c);
+ db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x2a); db(0x40); db(0x47); db(0xed); db(0x00); db(0x16); db(0x27); db(0x4e);
+ db(0x00); db(0x10); db(0x27); db(0x4c); db(0x00); db(0x08); db(0x27); db(0x46);
+ db(0x00); db(0x0c); db(0x70); db(0xff); db(0x37); db(0x40); db(0x00); db(0x00);
+ db(0x43); db(0xed); db(0x00); db(0x00); db(0x13); db(0x7c); db(0x00); db(0x02);
+ db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x05); db(0x00); db(0x09);
+ db(0x41); db(0xfa); db(0x07); db(0xf4); db(0x23); db(0x48); db(0x00); db(0x0a);
+ db(0x41); db(0xfa); db(0x02); db(0xda); db(0x23); db(0x48); db(0x00); db(0x12);
+ db(0x23); db(0x4d); db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae);
+ db(0xff); db(0x58); db(0x20); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0xc2);
+ db(0x70); db(0x00); db(0x53); db(0xab); db(0x00); db(0x1c); db(0x6a); db(0x06);
+ db(0x70); db(0x0a); db(0x27); db(0x40); db(0x00); db(0x1c); db(0x4a); db(0xab);
+ db(0x00); db(0x14); db(0x66); db(0x16); db(0x4a); db(0xab); db(0x00); db(0x1c);
+ db(0x66); db(0xe0); db(0x43); db(0xfa); db(0x08); db(0x12); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x14);
+ db(0x67); db(0xd0); db(0x4a); db(0xab); db(0x00); db(0x18); db(0x66); db(0x18);
+ db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xc4); db(0x43); db(0xfa);
+ db(0x08); db(0x08); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x27); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00); db(0xff); db(0xb4);
+ db(0x4a); db(0xad); db(0x02); db(0x08); db(0x66); db(0x38); db(0x4a); db(0xab);
+ db(0x00); db(0x1c); db(0x66); db(0xa6); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x06); db(0xe8);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x8c); db(0x41); db(0xfa);
+ db(0x06); db(0xd6); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
+ db(0xfd); db(0x16); db(0x2b); db(0x40); db(0x02); db(0x08); db(0x67); db(0x00);
+ db(0x02); db(0x42); db(0x60); db(0x00); db(0xff); db(0x76); db(0x4a); db(0xad);
+ db(0x02); db(0x0c); db(0x66); db(0x48); db(0x4a); db(0xab); db(0x00); db(0x1c);
+ db(0x66); db(0x00); db(0xff); db(0x68); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x06); db(0xb5);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x00); db(0xff); db(0x4c);
+ db(0x41); db(0xfa); db(0x06); db(0xa1); db(0x70); db(0x00); db(0x72); db(0x00);
+ db(0x61); db(0x00); db(0xfc); db(0xd4); db(0x2b); db(0x40); db(0x02); db(0x0c);
+ db(0x67); db(0x00); db(0x02); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0x20); db(0x4e); db(0x90);
+ db(0x60); db(0x00); db(0xff); db(0x28); db(0x0c); db(0x47); db(0x00); db(0x24);
+ db(0x65); db(0x12); db(0x53); db(0xab); db(0x00); db(0x34); db(0x6a); db(0x0c);
+ db(0x20); db(0x4b); db(0x61); db(0x00); db(0xfd); db(0xc8); db(0x70); db(0x32);
+ db(0x27); db(0x40); db(0x00); db(0x34); db(0x22); db(0x6d); db(0x02); db(0x08);
+ db(0x45); db(0xed); db(0x01); db(0x3c); db(0x33); db(0x7c); db(0x00); db(0x0b);
+ db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16);
+ db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28); db(0x10); db(0x3a);
+ db(0xfd); db(0x78); db(0x0c); db(0x47); db(0x00); db(0x27); db(0x65); db(0x00);
+ db(0x01); db(0x62); db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x00);
+ db(0x01); db(0x5a); db(0x41); db(0xed); db(0x01); db(0x68); db(0x25); db(0x48);
+ db(0x00); db(0x0a); db(0x15); db(0x7c); db(0x00); db(0x13); db(0x00); db(0x04);
+ db(0x15); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x05); db(0x42); db(0x90);
+ db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0x6a); db(0x00); db(0x06);
+ db(0x42); db(0xa8); db(0x00); db(0x08); db(0x42); db(0x68); db(0x00); db(0x0c);
+ db(0x22); db(0x3a); db(0xfd); db(0x60); db(0x02); db(0x41); db(0x00); db(0x07);
+ db(0x70); db(0x07); db(0x90); db(0x41); db(0xe1); db(0x48); db(0xe9); db(0x48);
+ db(0x35); db(0x40); db(0x00); db(0x08); db(0x31); db(0x7a); db(0xfd); db(0x34);
+ db(0x00); db(0x0e); db(0x42); db(0x68); db(0x00); db(0x10); db(0x31); db(0x7a);
+ db(0xfd); db(0x2c); db(0x00); db(0x12); db(0x42); db(0x68); db(0x00); db(0x14);
+ db(0x31); db(0x7a); db(0xfd); db(0x1a); db(0x00); db(0x16); db(0x42); db(0x68);
+ db(0x00); db(0x18); db(0x31); db(0x7a); db(0xfd); db(0x12); db(0x00); db(0x1a);
+ db(0x43); db(0xed); db(0x01); db(0x88); db(0x21); db(0x49); db(0x00); db(0x1c);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x06); db(0x30); db(0x3a);
+ db(0xfd); db(0x18); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x07); db(0x22); db(0xfa);
+ db(0xfd); db(0x0a); db(0x70); db(0x00); db(0x30); db(0x3a); db(0xfc); db(0xf2);
+ db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x09);
+ db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xe6); db(0x6b); db(0x08);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x0a); db(0x22); db(0xc0);
+ db(0x30); db(0x3a); db(0xfc); db(0xce); db(0x6b); db(0x14); db(0x22); db(0xfc);
+ db(0x80); db(0x03); db(0xa0); db(0x02); db(0x22); db(0xc0); db(0x30); db(0x3a);
+ db(0xfc); db(0xc6); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x01);
+ db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xc0); db(0x6b); db(0x10);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x03); db(0x30); db(0x3a);
+ db(0xfc); db(0xba); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
+ db(0x30); db(0x3a); db(0xfc); db(0xac); db(0x6b); db(0x10); db(0x22); db(0xfc);
+ db(0x80); db(0x03); db(0xa0); db(0x04); db(0x30); db(0x3a); db(0xfc); db(0xa6);
+ db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x3a);
+ db(0xfc); db(0x98); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03);
+ db(0xa0); db(0x05); db(0x30); db(0x3a); db(0xfc); db(0x92); db(0x48); db(0xc0);
+ db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x70); db(0x00); db(0x30); db(0x3a);
+ db(0xfc); db(0x8e); db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03);
+ db(0xa0); db(0x08); db(0x22); db(0xc0); db(0x42); db(0x91); db(0x61); db(0x00);
+ db(0xfc); db(0x40); db(0x36); db(0x3c); db(0x00); db(0x68); db(0x74); db(0x01);
+ db(0x28); db(0x3a); db(0xfc); db(0x70); db(0x20); db(0x04); db(0xc0); db(0x82);
+ db(0x22); db(0x2b); db(0x00); db(0x04); db(0xc2); db(0x82); db(0xb2); db(0x80);
+ db(0x67); db(0x22); db(0x42); db(0x92); db(0x35); db(0x7c); db(0x02); db(0x00);
+ db(0x00); db(0x04); db(0x42); db(0xaa); db(0x00); db(0x0a); db(0x32); db(0x03);
+ db(0x4a); db(0x00); db(0x66); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x07);
+ db(0x35); db(0x41); db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08);
+ db(0x61); db(0x00); db(0xfc); db(0x06); db(0x52); db(0x43); db(0xd4); db(0x42);
+ db(0x0c); db(0x42); db(0x00); db(0x08); db(0x66); db(0xc6); db(0x27); db(0x44);
+ db(0x00); db(0x04); db(0x10); db(0x3a); db(0xfc); db(0x0c); db(0x08); db(0x00);
+ db(0x00); db(0x00); db(0x67); db(0x00); db(0xfd); db(0x7e); db(0x42); db(0x92);
+ db(0x35); db(0x7c); db(0x04); db(0x00); db(0x00); db(0x04); db(0x42); db(0x6a);
+ db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08); db(0x20); db(0x6b);
+ db(0x00); db(0x14); db(0x30); db(0x3a); db(0xfc); db(0x14); db(0x32); db(0x28);
+ db(0x00); db(0x30); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02);
+ db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0a); db(0x30); db(0x3a);
+ db(0xfc); db(0x02); db(0x32); db(0x28); db(0x00); db(0x2e); db(0xd2); db(0x41);
+ db(0x90); db(0x41); db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40);
+ db(0x00); db(0x0c); db(0x61); db(0x00); db(0xfb); db(0x78); db(0x60); db(0x00);
+ db(0xfd); db(0x3a); db(0x4e); db(0x75); db(0x4a); db(0xa9); db(0x02); db(0x08);
+ db(0x67); db(0x14); db(0x4a); db(0xa9); db(0x02); db(0x0c); db(0x67); db(0x0e);
+ db(0x30); db(0x3a); db(0xfb); db(0xb0); db(0xb0); db(0x69); db(0x00); db(0x16);
+ db(0x67); db(0x14); db(0x33); db(0x40); db(0x00); db(0x16); db(0x2c); db(0x69);
+ db(0x00); db(0x26); db(0x20); db(0x29); db(0x00); db(0x22); db(0x22); db(0x69);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x53); db(0x69);
+ db(0x00); db(0x46); db(0x6a); db(0x12); db(0x33); db(0x7c); db(0x00); db(0x32);
+ db(0x00); db(0x46); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x02);
+ db(0x61); db(0x00); db(0xf9); db(0xea); db(0x4e); db(0x90); db(0x41); db(0xf9);
+ db(0x00); db(0xdf); db(0xf0); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x00); db(0x06); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x11); db(0x61); db(0x00); db(0xf9); db(0xd0); db(0x4e); db(0x90);
+ db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x42); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x88);
  db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x47); db(0xed); db(0x00); db(0x16);
- db(0x27); db(0x4e); db(0x00); db(0x10); db(0x27); db(0x4c); db(0x00); db(0x08);
- db(0x27); db(0x46); db(0x00); db(0x0c); db(0x70); db(0xff); db(0x37); db(0x40);
- db(0x00); db(0x00); db(0x43); db(0xed); db(0x00); db(0x00); db(0x13); db(0x7c);
- db(0x00); db(0x02); db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x05);
- db(0x00); db(0x09); db(0x41); db(0xfa); db(0x07); db(0xf6); db(0x23); db(0x48);
- db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x02); db(0xda); db(0x23); db(0x48);
- db(0x00); db(0x12); db(0x23); db(0x4d); db(0x00); db(0x0e); db(0x70); db(0x05);
- db(0x4e); db(0xae); db(0xff); db(0x58); db(0x20); db(0x06); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x70); db(0x00); db(0x53); db(0xab); db(0x00); db(0x1c);
- db(0x6a); db(0x06); db(0x70); db(0x0a); db(0x27); db(0x40); db(0x00); db(0x1c);
- db(0x4a); db(0xab); db(0x00); db(0x14); db(0x66); db(0x16); db(0x4a); db(0xab);
- db(0x00); db(0x1c); db(0x66); db(0xe0); db(0x43); db(0xfa); db(0x08); db(0x14);
- db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40);
- db(0x00); db(0x14); db(0x67); db(0xd0); db(0x4a); db(0xab); db(0x00); db(0x18);
- db(0x66); db(0x18); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xc4);
- db(0x43); db(0xfa); db(0x08); db(0x0a); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00);
- db(0xff); db(0xb4); db(0x4a); db(0xad); db(0x02); db(0x08); db(0x66); db(0x38);
- db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xa6); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa);
- db(0x06); db(0xea); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x8c);
- db(0x41); db(0xfa); db(0x06); db(0xd8); db(0x70); db(0x00); db(0x72); db(0x00);
- db(0x61); db(0x00); db(0xfd); db(0x16); db(0x2b); db(0x40); db(0x02); db(0x08);
- db(0x67); db(0x00); db(0x02); db(0x42); db(0x60); db(0x00); db(0xff); db(0x76);
- db(0x4a); db(0xad); db(0x02); db(0x0c); db(0x66); db(0x48); db(0x4a); db(0xab);
- db(0x00); db(0x1c); db(0x66); db(0x00); db(0xff); db(0x68); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa);
- db(0x06); db(0xb7); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x00);
- db(0xff); db(0x4c); db(0x41); db(0xfa); db(0x06); db(0xa3); db(0x70); db(0x00);
- db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0xd4); db(0x2b); db(0x40);
- db(0x02); db(0x0c); db(0x67); db(0x00); db(0x02); db(0x00); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0x20);
- db(0x4e); db(0x90); db(0x60); db(0x00); db(0xff); db(0x28); db(0x0c); db(0x47);
- db(0x00); db(0x24); db(0x65); db(0x12); db(0x53); db(0xab); db(0x00); db(0x34);
- db(0x6a); db(0x0c); db(0x20); db(0x4b); db(0x61); db(0x00); db(0xfd); db(0xc8);
- db(0x70); db(0x32); db(0x27); db(0x40); db(0x00); db(0x34); db(0x22); db(0x6d);
- db(0x02); db(0x08); db(0x45); db(0xed); db(0x01); db(0x3c); db(0x33); db(0x7c);
- db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00);
- db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28);
- db(0x10); db(0x3a); db(0xfd); db(0x78); db(0x0c); db(0x47); db(0x00); db(0x27);
- db(0x65); db(0x00); db(0x01); db(0x62); db(0x08); db(0x00); db(0x00); db(0x01);
- db(0x67); db(0x00); db(0x01); db(0x5a); db(0x41); db(0xed); db(0x01); db(0x68);
- db(0x25); db(0x48); db(0x00); db(0x0a); db(0x15); db(0x7c); db(0x00); db(0x13);
- db(0x00); db(0x04); db(0x15); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x05);
- db(0x42); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0x6a);
- db(0x00); db(0x06); db(0x42); db(0xa8); db(0x00); db(0x08); db(0x42); db(0x68);
- db(0x00); db(0x0c); db(0x22); db(0x3a); db(0xfd); db(0x60); db(0x02); db(0x41);
- db(0x00); db(0x07); db(0x70); db(0x07); db(0x90); db(0x41); db(0xe1); db(0x48);
- db(0xe9); db(0x48); db(0x35); db(0x40); db(0x00); db(0x08); db(0x31); db(0x7a);
- db(0xfd); db(0x34); db(0x00); db(0x0e); db(0x42); db(0x68); db(0x00); db(0x10);
- db(0x31); db(0x7a); db(0xfd); db(0x2c); db(0x00); db(0x12); db(0x42); db(0x68);
- db(0x00); db(0x14); db(0x31); db(0x7a); db(0xfd); db(0x1a); db(0x00); db(0x16);
- db(0x42); db(0x68); db(0x00); db(0x18); db(0x31); db(0x7a); db(0xfd); db(0x12);
- db(0x00); db(0x1a); db(0x43); db(0xed); db(0x01); db(0x88); db(0x21); db(0x49);
- db(0x00); db(0x1c); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x06);
- db(0x30); db(0x3a); db(0xfd); db(0x18); db(0x48); db(0xc0); db(0xe1); db(0x80);
- db(0x22); db(0xc0); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x07);
- db(0x22); db(0xfa); db(0xfd); db(0x0a); db(0x70); db(0x00); db(0x30); db(0x3a);
- db(0xfc); db(0xf2); db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x09); db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xe6);
- db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x0a);
- db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xce); db(0x6b); db(0x14);
- db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x02); db(0x22); db(0xc0);
- db(0x30); db(0x3a); db(0xfc); db(0xc6); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x01); db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xc0);
- db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x03);
- db(0x30); db(0x3a); db(0xfc); db(0xba); db(0x48); db(0xc0); db(0xe1); db(0x80);
- db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xac); db(0x6b); db(0x10);
- db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x04); db(0x30); db(0x3a);
- db(0xfc); db(0xa6); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
- db(0x30); db(0x3a); db(0xfc); db(0x98); db(0x6b); db(0x10); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x05); db(0x30); db(0x3a); db(0xfc); db(0x92);
- db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x70); db(0x00);
- db(0x30); db(0x3a); db(0xfc); db(0x8e); db(0x6b); db(0x08); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x08); db(0x22); db(0xc0); db(0x42); db(0x91);
- db(0x61); db(0x00); db(0xfc); db(0x40); db(0x36); db(0x3c); db(0x00); db(0x68);
- db(0x74); db(0x01); db(0x28); db(0x3a); db(0xfc); db(0x70); db(0x20); db(0x04);
- db(0xc0); db(0x82); db(0x22); db(0x2b); db(0x00); db(0x04); db(0xc2); db(0x82);
- db(0xb2); db(0x80); db(0x67); db(0x22); db(0x42); db(0x92); db(0x35); db(0x7c);
- db(0x02); db(0x00); db(0x00); db(0x04); db(0x42); db(0xaa); db(0x00); db(0x0a);
- db(0x32); db(0x03); db(0x4a); db(0x00); db(0x66); db(0x04); db(0x08); db(0xc1);
- db(0x00); db(0x07); db(0x35); db(0x41); db(0x00); db(0x06); db(0x42); db(0x6a);
- db(0x00); db(0x08); db(0x61); db(0x00); db(0xfc); db(0x06); db(0x52); db(0x43);
- db(0xd4); db(0x42); db(0x0c); db(0x42); db(0x00); db(0x08); db(0x66); db(0xc6);
- db(0x27); db(0x44); db(0x00); db(0x04); db(0x10); db(0x3a); db(0xfc); db(0x0c);
- db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x00); db(0xfd); db(0x7e);
- db(0x42); db(0x92); db(0x35); db(0x7c); db(0x04); db(0x00); db(0x00); db(0x04);
- db(0x42); db(0x6a); db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08);
- db(0x20); db(0x6b); db(0x00); db(0x14); db(0x30); db(0x3a); db(0xfc); db(0x14);
- db(0x32); db(0x28); db(0x00); db(0x30); db(0xd2); db(0x41); db(0x90); db(0x41);
- db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0a);
- db(0x30); db(0x3a); db(0xfc); db(0x02); db(0x32); db(0x28); db(0x00); db(0x2e);
- db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02); db(0x70); db(0x00);
- db(0x35); db(0x40); db(0x00); db(0x0c); db(0x61); db(0x00); db(0xfb); db(0x78);
- db(0x60); db(0x00); db(0xfd); db(0x3a); db(0x4e); db(0x75); db(0x4a); db(0xa9);
- db(0x02); db(0x08); db(0x67); db(0x14); db(0x4a); db(0xa9); db(0x02); db(0x0c);
- db(0x67); db(0x0e); db(0x30); db(0x3a); db(0xfb); db(0xb0); db(0xb0); db(0x69);
- db(0x00); db(0x16); db(0x67); db(0x14); db(0x33); db(0x40); db(0x00); db(0x16);
- db(0x2c); db(0x69); db(0x00); db(0x26); db(0x20); db(0x29); db(0x00); db(0x22);
- db(0x22); db(0x69); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0xbc);
- db(0x53); db(0x69); db(0x00); db(0x46); db(0x6a); db(0x12); db(0x33); db(0x7c);
- db(0x00); db(0x32); db(0x00); db(0x46); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x02); db(0x61); db(0x00); db(0xf9); db(0xea); db(0x4e); db(0x90);
- db(0x41); db(0xf9); db(0x00); db(0xdf); db(0xf0); db(0x00); db(0x70); db(0x00);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x06); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x11); db(0x61); db(0x00); db(0xf9); db(0xd0);
- db(0x4e); db(0x90); db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x42);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x00); db(0x88); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0x00); db(0x40); db(0x2a); db(0x40); db(0x2b); db(0x4e); db(0x00); db(0x14);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00);
- db(0xf9); db(0x9e); db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x41); db(0xfa);
- db(0x04); db(0x6c); db(0x43); db(0xfa); db(0x01); db(0x14); db(0x70); db(0xf6);
- db(0x22); db(0x3c); db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00);
- db(0xed); db(0xce); db(0x70); db(0x00); db(0x4c); db(0xdf); db(0x60); db(0x00);
- db(0x4e); db(0x75); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a);
- db(0x61); db(0x00); db(0xf9); db(0x74); db(0x4e); db(0x90); db(0x4e); db(0x75);
- db(0x61); db(0xf0); db(0x20); db(0x0d); db(0x67); db(0x1c); db(0x2c); db(0x6d);
- db(0x00); db(0x14); db(0x20); db(0x2d); db(0x00); db(0x18); db(0x67); db(0x06);
- db(0x22); db(0x40); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4d);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x88); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x38); db(0x3e); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa);
- db(0x03); db(0xfa); db(0x22); db(0x08); db(0x24); db(0x3c); db(0x00); db(0x00);
- db(0x03); db(0xed); db(0x4e); db(0xae); db(0xff); db(0xe2); db(0x28); db(0x00);
- db(0x67); db(0x4c); db(0x45); db(0xed); db(0x00); db(0x68); db(0x42); db(0x92);
- db(0x34); db(0xaa); db(0x00); db(0x02); db(0x24); db(0x0a); db(0x54); db(0x82);
- db(0x76); db(0x02); db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6);
- db(0xb6); db(0x80); db(0x66); db(0x32); db(0x0c); db(0x92); db(0x50); db(0x4e);
- db(0x54); db(0x52); db(0x66); db(0xe4); db(0x24); db(0x0a); db(0x76); db(0x04);
- db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0x24); db(0x0a);
- db(0x76); db(0x20); db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6);
- db(0xb6); db(0x80); db(0x66); db(0x12); db(0x4a); db(0x6a); db(0x00); db(0x10);
- db(0x66); db(0xc4); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x10);
- db(0x61); db(0x00); db(0xf8); db(0xe4); db(0x4e); db(0x90); db(0x22); db(0x04);
- db(0x67); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xdc); db(0x4c); db(0xdf);
- db(0x7c); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x6d); db(0x00); db(0x18);
- db(0x41); db(0xfa); db(0x03); db(0x72); db(0x22); db(0x08); db(0x74); db(0xfe);
- db(0x4e); db(0xae); db(0xff); db(0xac); db(0x22); db(0x00); db(0x67); db(0x34);
- db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14);
- db(0x45); db(0xed); db(0x00); db(0x38); db(0x70); db(0xff); db(0x4e); db(0xae);
- db(0xfe); db(0xb6); db(0x15); db(0x40); db(0x00); db(0x14); db(0x41); db(0xfa);
- db(0x03); db(0x62); db(0x24); db(0x88); db(0x25); db(0x7c); db(0x00); db(0x00);
- db(0x00); db(0x12); db(0x00); db(0x0c); db(0x25); db(0x6d); db(0x00); db(0x08);
- db(0x00); db(0x10); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x22); db(0x0a);
- db(0x4e); db(0xae); db(0xfc); db(0x88); db(0x2c); db(0x6d); db(0x00); db(0x14);
- db(0x4e); db(0x75); db(0xff); db(0x3a); db(0x00); db(0x00); db(0x00); db(0x10);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x0d); db(0x61); db(0x00); db(0xf8); db(0x72); db(0x4e); db(0x90);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0xfc); db(0x2a); db(0x40);
- db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfe); db(0xda); db(0x2b); db(0x40); db(0x00); db(0x08); db(0x43); db(0xfa);
- db(0x03); db(0x8e); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x2b); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00); db(0xfe); db(0xda);
- db(0x2c); db(0x40); db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x41); db(0xfa); db(0x02); db(0xc6); db(0x22); db(0x08); db(0x74); db(0xfe);
- db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0xea);
- db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x72); db(0x32);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x02); db(0xb0);
+ db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x40);
+ db(0x2a); db(0x40); db(0x2b); db(0x4e); db(0x00); db(0x14); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00); db(0xf9); db(0x9e);
+ db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x41); db(0xfa); db(0x04); db(0x6a);
+ db(0x43); db(0xfa); db(0x01); db(0x12); db(0x70); db(0xf6); db(0x22); db(0x3c);
+ db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00); db(0xed); db(0xc8);
+ db(0x70); db(0x00); db(0x4c); db(0xdf); db(0x60); db(0x00); db(0x4e); db(0x75);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a); db(0x61); db(0x00);
+ db(0xf9); db(0x74); db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x61); db(0xf0);
+ db(0x20); db(0x0d); db(0x67); db(0x1c); db(0x2c); db(0x6d); db(0x00); db(0x14);
+ db(0x20); db(0x2d); db(0x00); db(0x18); db(0x67); db(0x06); db(0x22); db(0x40);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4d); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x00); db(0x88); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x3e);
+ db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa); db(0x03); db(0xf8);
+ db(0x22); db(0x08); db(0x24); db(0x3c); db(0x00); db(0x00); db(0x03); db(0xed);
+ db(0x4e); db(0xae); db(0xff); db(0xe2); db(0x28); db(0x00); db(0x67); db(0x4c);
+ db(0x45); db(0xed); db(0x00); db(0x68); db(0x42); db(0x92); db(0x34); db(0xaa);
+ db(0x00); db(0x02); db(0x24); db(0x0a); db(0x54); db(0x82); db(0x76); db(0x02);
+ db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80);
+ db(0x66); db(0x32); db(0x0c); db(0x92); db(0x50); db(0x4e); db(0x54); db(0x52);
+ db(0x66); db(0xe4); db(0x24); db(0x0a); db(0x76); db(0x04); db(0x22); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0xd6); db(0x24); db(0x0a); db(0x76); db(0x20);
+ db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80);
+ db(0x66); db(0x12); db(0x4a); db(0x6a); db(0x00); db(0x10); db(0x66); db(0xc4);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x10); db(0x61); db(0x00);
+ db(0xf8); db(0xe4); db(0x4e); db(0x90); db(0x22); db(0x04); db(0x67); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0xdc); db(0x4c); db(0xdf); db(0x7c); db(0x1c);
+ db(0x4e); db(0x75); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa);
+ db(0x03); db(0x70); db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae);
+ db(0xff); db(0xac); db(0x22); db(0x00); db(0x67); db(0x34); db(0x4e); db(0xae);
+ db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x45); db(0xed);
+ db(0x00); db(0x38); db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6);
+ db(0x15); db(0x40); db(0x00); db(0x14); db(0x41); db(0xfa); db(0x03); db(0x60);
+ db(0x24); db(0x88); db(0x25); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x12);
+ db(0x00); db(0x0c); db(0x25); db(0x6d); db(0x00); db(0x08); db(0x00); db(0x10);
+ db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x22); db(0x0a); db(0x4e); db(0xae);
+ db(0xfc); db(0x88); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x4e); db(0x75);
+ db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0d); db(0x61); db(0x00);
+ db(0xf8); db(0x74); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0xfe); db(0xfe); db(0x2a); db(0x40); db(0x2c); db(0x6d); db(0x00); db(0x14);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x2b); db(0x40);
+ db(0x00); db(0x08); db(0x43); db(0xfa); db(0x03); db(0x8e); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2b); db(0x40); db(0x00); db(0x18);
+ db(0x67); db(0x00); db(0xfe); db(0xdc); db(0x2c); db(0x40); db(0x72); db(0x32);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x02); db(0xc6);
  db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0xa4); db(0x22); db(0x00);
- db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14);
- db(0x61); db(0x00); db(0xf8); db(0x20); db(0x72); db(0x00); db(0x32); db(0x3c);
- db(0x00); db(0x34); db(0x61); db(0x00); db(0xf8); db(0x64); db(0x28); db(0x40);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0x84); db(0x70); db(0x00);
- db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2);
- db(0x72); db(0x00); db(0x20); db(0x2d); db(0x00); db(0x0c); db(0x41); db(0xfa);
- db(0x02); db(0x89); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44);
- db(0x4a); db(0x80); db(0x66); db(0xe2); db(0x20); db(0x6c); db(0x00); db(0x14);
- db(0x0c); db(0x68); db(0x00); db(0x25); db(0x00); db(0x14); db(0x64); db(0x0c);
- db(0x61); db(0x00); db(0xfe); db(0x48); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x60); db(0xf8); db(0x61); db(0x00); db(0xfe); db(0xe6);
- db(0x41); db(0xed); db(0x00); db(0x1c); db(0x29); db(0x48); db(0x00); db(0x28);
- db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x39); db(0x7c);
- db(0x00); db(0x0c); db(0x00); db(0x1c); db(0x2b); db(0x4d); db(0x00); db(0x2c);
- db(0x41); db(0xfa); db(0x01); db(0x60); db(0x2b); db(0x48); db(0x00); db(0x24);
- db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x0f); db(0x61); db(0x00); db(0xf7); db(0x88);
- db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x00); db(0x66); db(0x1c);
- db(0x70); db(0x00); db(0x74); db(0x00); db(0x14); db(0x2d); db(0x00); db(0x4c);
- db(0x05); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x05); db(0x00); db(0x67); db(0x06); db(0x61); db(0x00);
- db(0xfe); db(0x1e); db(0x60); db(0xe4); db(0x20); db(0x2d); db(0x00); db(0x00);
- db(0x67); db(0x00); db(0x00); db(0x76); db(0x72); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x2b); db(0x40); db(0x00); db(0x04); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x0c); db(0x61); db(0x00); db(0xf7); db(0x48);
- db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x40); db(0x4a); db(0xad);
- db(0x00); db(0x04); db(0x67); db(0x3a); db(0x39); db(0x7c); db(0x00); db(0x03);
- db(0x00); db(0x1c); db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac);
- db(0x00); db(0x20); db(0x29); db(0x6d); db(0x00); db(0x00); db(0x00); db(0x24);
- db(0x29); db(0x6d); db(0x00); db(0x04); db(0x00); db(0x28); db(0x42); db(0xac);
- db(0x00); db(0x2c); db(0x42); db(0xac); db(0x00); db(0x30); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x2b); db(0x6c); db(0x00); db(0x30);
- db(0x00); db(0x10); db(0x39); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x1c);
- db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x20); db(0x2d);
- db(0x00); db(0x00); db(0x42); db(0xad); db(0x00); db(0x00); db(0x22); db(0x2d);
- db(0x00); db(0x04); db(0x67); db(0x00); db(0xff); db(0x74); db(0x22); db(0x41);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x6a);
- db(0x39); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x1c); db(0x41); db(0xed);
- db(0x00); db(0x30); db(0x42); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04);
- db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x2c);
- db(0x42); db(0xac); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28);
- db(0x70); db(0x08); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x0c); db(0xad); db(0x46); db(0x4f);
- db(0x52); db(0x4d); db(0x00); db(0x30); db(0x66); db(0x52); db(0x20); db(0x2d);
- db(0x00); db(0x34); db(0x67); db(0x4c); db(0x6b); db(0x4a); db(0x2b); db(0x6c);
- db(0x00); db(0x30); db(0x00); db(0x10); db(0x50); db(0x80); db(0x24); db(0x00);
- db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
- db(0x67); db(0x36); db(0x24); db(0x40); db(0x20); db(0x4a); db(0x20); db(0xed);
- db(0x00); db(0x30); db(0x20); db(0xed); db(0x00); db(0x34); db(0x29); db(0x48);
- db(0x00); db(0x28); db(0x20); db(0x02); db(0x51); db(0x80); db(0x29); db(0x40);
+ db(0x4a); db(0x80); db(0x67); db(0xea); db(0x22); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0xa6); db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x41); db(0xfa); db(0x02); db(0xb0); db(0x22); db(0x08); db(0x74); db(0xfe);
+ db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0xfe); db(0xa6); db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6);
+ db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x61); db(0x00); db(0xf8); db(0x22);
+ db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34); db(0x61); db(0x00);
+ db(0xf8); db(0x66); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0xfe); db(0x86); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
+ db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x72); db(0x00); db(0x20); db(0x2d);
+ db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x02); db(0x89); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x4a); db(0x80); db(0x66); db(0xe2);
+ db(0x20); db(0x6c); db(0x00); db(0x14); db(0x0c); db(0x68); db(0x00); db(0x25);
+ db(0x00); db(0x14); db(0x64); db(0x0c); db(0x61); db(0x00); db(0xfe); db(0x4a);
+ db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x60); db(0xf8);
+ db(0x61); db(0x00); db(0xfe); db(0xe8); db(0x41); db(0xed); db(0x00); db(0x1c);
+ db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40);
+ db(0x00); db(0x24); db(0x39); db(0x7c); db(0x00); db(0x0c); db(0x00); db(0x1c);
+ db(0x2b); db(0x4d); db(0x00); db(0x2c); db(0x41); db(0xfa); db(0x01); db(0x60);
+ db(0x2b); db(0x48); db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae);
+ db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0f);
+ db(0x61); db(0x00); db(0xf7); db(0x8a); db(0x4e); db(0x90); db(0x4a); db(0xad);
+ db(0x00); db(0x00); db(0x66); db(0x1c); db(0x70); db(0x00); db(0x74); db(0x00);
+ db(0x14); db(0x2d); db(0x00); db(0x4c); db(0x05); db(0xc0); db(0x08); db(0xc0);
+ db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x05); db(0x00);
+ db(0x67); db(0x06); db(0x61); db(0x00); db(0xfe); db(0x20); db(0x60); db(0xe4);
+ db(0x20); db(0x2d); db(0x00); db(0x00); db(0x67); db(0x00); db(0x00); db(0x76);
+ db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2b); db(0x40);
+ db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0c);
+ db(0x61); db(0x00); db(0xf7); db(0x4a); db(0x4e); db(0x90); db(0x4a); db(0x80);
+ db(0x67); db(0x40); db(0x4a); db(0xad); db(0x00); db(0x04); db(0x67); db(0x3a);
+ db(0x39); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x1c); db(0x42); db(0x2c);
+ db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x20); db(0x29); db(0x6d);
+ db(0x00); db(0x00); db(0x00); db(0x24); db(0x29); db(0x6d); db(0x00); db(0x04);
+ db(0x00); db(0x28); db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac);
+ db(0x00); db(0x30); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10); db(0x39); db(0x7c);
+ db(0x00); db(0x04); db(0x00); db(0x1c); db(0x22); db(0x4c); db(0x4e); db(0xae);
+ db(0xfe); db(0x38); db(0x20); db(0x2d); db(0x00); db(0x00); db(0x42); db(0xad);
+ db(0x00); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x04); db(0x67); db(0x00);
+ db(0xff); db(0x74); db(0x22); db(0x41); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x60); db(0x00); db(0xff); db(0x6a); db(0x39); db(0x7c); db(0x00); db(0x02);
+ db(0x00); db(0x1c); db(0x41); db(0xed); db(0x00); db(0x30); db(0x42); db(0x90);
+ db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0x2c); db(0x00); db(0x1f);
+ db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac); db(0x00); db(0x30);
+ db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x08); db(0x29); db(0x40);
  db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0b); db(0x61); db(0x00);
- db(0xf6); db(0x6e); db(0x20); db(0x2c); db(0x00); db(0x20); db(0x4e); db(0x90);
- db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x4a); db(0xac); db(0x00); db(0x20); db(0x67); db(0x00); db(0xfe); db(0xda);
- db(0x41); db(0xed); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28);
- db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x42); db(0xac);
- db(0x00); db(0x20); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x60); db(0xde); db(0x41); db(0xe8); db(0xff); db(0xe4); db(0x20); db(0x29);
- db(0x00); db(0x08); db(0xb0); db(0xa8); db(0x00); db(0x10); db(0x67); db(0x1a);
- db(0x21); db(0x40); db(0x00); db(0x10); db(0x2f); db(0x0e); db(0x2c); db(0x68);
- db(0x00); db(0x14); db(0x22); db(0x68); db(0x00); db(0x08); db(0x70); db(0x00);
- db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xbc);
- db(0x2c); db(0x5f); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x74); db(0xff); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x11); db(0x61); db(0x00); db(0xf6); db(0x02); db(0x4e); db(0x90);
- db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x38); db(0x74); db(0x00);
- db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e);
- db(0x43); db(0xfa); db(0x00); db(0x62); db(0x4e); db(0xae); db(0xfe); db(0xec);
- db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x20); db(0x40); db(0x43); db(0xfa);
- db(0x00); db(0x22); db(0x24); db(0x68); db(0xff); db(0xe4); db(0x21); db(0x49);
- db(0xff); db(0xe4); db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x65); db(0x61); db(0x00); db(0xf5); db(0xca); db(0x4e); db(0x90);
- db(0x74); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x20); db(0x02);
- db(0x4e); db(0x75); db(0x59); db(0x8f); db(0x48); db(0xe7); db(0xc0); db(0x80);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x66); db(0x61); db(0x00);
- db(0xf5); db(0xae); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x01); db(0x03);
- db(0x4e); db(0x75); db(0x69); db(0x6e); db(0x70); db(0x75); db(0x74); db(0x2e);
- db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x74);
- db(0x69); db(0x6d); db(0x65); db(0x72); db(0x2e); db(0x64); db(0x65); db(0x76);
- db(0x69); db(0x63); db(0x65); db(0x00); db(0x63); db(0x6f); db(0x6e); db(0x73);
- db(0x6f); db(0x6c); db(0x65); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69);
- db(0x63); db(0x65); db(0x00); db(0x44); db(0x45); db(0x56); db(0x53); db(0x00);
- db(0x44); db(0x45); db(0x56); db(0x53); db(0x3a); db(0x00); db(0x44); db(0x45);
- db(0x56); db(0x53); db(0x3a); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62);
- db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76);
- db(0x69); db(0x63); db(0x65); db(0x00); db(0x52); db(0x41); db(0x4d); db(0x3a);
- db(0x00); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61);
- db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63);
- db(0x65); db(0x00); db(0x52); db(0x41); db(0x4d); db(0x3a); db(0x45); db(0x6e);
- db(0x76); db(0x2f); db(0x53); db(0x79); db(0x73); db(0x2f); db(0x50); db(0x6f);
- db(0x69); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x2e); db(0x70); db(0x72);
- db(0x65); db(0x66); db(0x73); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20);
- db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72);
- db(0x64); db(0x20); db(0x73); db(0x68); db(0x61); db(0x72); db(0x69); db(0x6e);
- db(0x67); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x6d); db(0x6f);
- db(0x75); db(0x73); db(0x65); db(0x20); db(0x64); db(0x72); db(0x69); db(0x76);
- db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66);
- db(0x69); db(0x6c); db(0x65); db(0x73); db(0x79); db(0x73); db(0x74); db(0x65);
- db(0x6d); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73);
- db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75);
- db(0x6e); db(0x74); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); db(0x45);
- db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f);
- db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x20); db(0x70); db(0x72);
- db(0x6f); db(0x63); db(0x65); db(0x73); db(0x73); db(0x00); db(0x64); db(0x6f);
- db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72);
- db(0x79); db(0x00); db(0x69); db(0x6e); db(0x74); db(0x75); db(0x69); db(0x74);
- db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72);
- db(0x61); db(0x72); db(0x79); db(0x00); db(0x67); db(0x72); db(0x61); db(0x70);
- db(0x68); db(0x69); db(0x63); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62);
- db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x65); db(0x78); db(0x70);
- db(0x61); db(0x6e); db(0x73); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c);
- db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x46);
- db(0x69); db(0x6c); db(0x65); db(0x53); db(0x79); db(0x73); db(0x74); db(0x65);
- db(0x6d); db(0x2e); db(0x72); db(0x65); db(0x73); db(0x6f); db(0x75); db(0x72);
- db(0x63); db(0x65); db(0x00); db(0x6d); db(0x65); db(0x67); db(0x61); db(0x63);
- db(0x68); db(0x69); db(0x70); db(0x20); db(0x6d); db(0x65); db(0x6d); db(0x6f);
- db(0x72); db(0x79); db(0x00); db(0x00); db(0x00); db(0x00); db(0x03); db(0xf2);
+ db(0x0c); db(0xad); db(0x46); db(0x4f); db(0x52); db(0x4d); db(0x00); db(0x30);
+ db(0x66); db(0x52); db(0x20); db(0x2d); db(0x00); db(0x34); db(0x67); db(0x4c);
+ db(0x6b); db(0x4a); db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10);
+ db(0x50); db(0x80); db(0x24); db(0x00); db(0x72); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x36); db(0x24); db(0x40);
+ db(0x20); db(0x4a); db(0x20); db(0xed); db(0x00); db(0x30); db(0x20); db(0xed);
+ db(0x00); db(0x34); db(0x29); db(0x48); db(0x00); db(0x28); db(0x20); db(0x02);
+ db(0x51); db(0x80); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x0b); db(0x61); db(0x00); db(0xf6); db(0x70); db(0x20); db(0x2c);
+ db(0x00); db(0x20); db(0x4e); db(0x90); db(0x22); db(0x4a); db(0x20); db(0x02);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4a); db(0xac); db(0x00); db(0x20);
+ db(0x67); db(0x00); db(0xfe); db(0xda); db(0x41); db(0xed); db(0x00); db(0x30);
+ db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40);
+ db(0x00); db(0x24); db(0x42); db(0xac); db(0x00); db(0x20); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x60); db(0xde); db(0x41); db(0xe8);
+ db(0xff); db(0xe4); db(0x20); db(0x29); db(0x00); db(0x08); db(0xb0); db(0xa8);
+ db(0x00); db(0x10); db(0x67); db(0x1a); db(0x21); db(0x40); db(0x00); db(0x10);
+ db(0x2f); db(0x0e); db(0x2c); db(0x68); db(0x00); db(0x14); db(0x22); db(0x68);
+ db(0x00); db(0x08); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
+ db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x2c); db(0x5f); db(0x70); db(0x00);
+ db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x74); db(0xff);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x11); db(0x61); db(0x00);
+ db(0xf6); db(0x04); db(0x4e); db(0x90); db(0x08); db(0x00); db(0x00); db(0x01);
+ db(0x67); db(0x38); db(0x74); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x00); db(0x62);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x4a); db(0x80); db(0x67); db(0x1e);
+ db(0x20); db(0x40); db(0x43); db(0xfa); db(0x00); db(0x22); db(0x24); db(0x68);
+ db(0xff); db(0xe4); db(0x21); db(0x49); db(0xff); db(0xe4); db(0x22); db(0x48);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x65); db(0x61); db(0x00);
+ db(0xf5); db(0xcc); db(0x4e); db(0x90); db(0x74); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x20); db(0x02); db(0x4e); db(0x75); db(0x59); db(0x8f);
+ db(0x48); db(0xe7); db(0xc0); db(0x80); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x66); db(0x61); db(0x00); db(0xf5); db(0xb0); db(0x4e); db(0x90);
+ db(0x4c); db(0xdf); db(0x01); db(0x03); db(0x4e); db(0x75); db(0x69); db(0x6e);
+ db(0x70); db(0x75); db(0x74); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69);
+ db(0x63); db(0x65); db(0x00); db(0x74); db(0x69); db(0x6d); db(0x65); db(0x72);
+ db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00);
+ db(0x63); db(0x6f); db(0x6e); db(0x73); db(0x6f); db(0x6c); db(0x65); db(0x2e);
+ db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x44);
+ db(0x45); db(0x56); db(0x53); db(0x00); db(0x44); db(0x45); db(0x56); db(0x53);
+ db(0x3a); db(0x00); db(0x44); db(0x45); db(0x56); db(0x53); db(0x3a); db(0x63);
+ db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64);
+ db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00);
+ db(0x52); db(0x41); db(0x4d); db(0x3a); db(0x00); db(0x63); db(0x6c); db(0x69);
+ db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e); db(0x64);
+ db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x52); db(0x41);
+ db(0x4d); db(0x3a); db(0x45); db(0x6e); db(0x76); db(0x2f); db(0x53); db(0x79);
+ db(0x73); db(0x2f); db(0x50); db(0x6f); db(0x69); db(0x6e); db(0x74); db(0x65);
+ db(0x72); db(0x2e); db(0x70); db(0x72); db(0x65); db(0x66); db(0x73); db(0x00);
+ db(0x55); db(0x41); db(0x45); db(0x20); db(0x63); db(0x6c); db(0x69); db(0x70);
+ db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x20); db(0x73); db(0x68);
+ db(0x61); db(0x72); db(0x69); db(0x6e); db(0x67); db(0x00); db(0x55); db(0x41);
+ db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20);
+ db(0x64); db(0x72); db(0x69); db(0x76); db(0x65); db(0x72); db(0x00); db(0x55);
+ db(0x41); db(0x45); db(0x20); db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73);
+ db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); db(0x00); db(0x55); db(0x41);
+ db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74);
+ db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x65); db(0x72);
+ db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20);
+ db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e);
+ db(0x74); db(0x20); db(0x70); db(0x72); db(0x6f); db(0x63); db(0x65); db(0x73);
+ db(0x73); db(0x00); db(0x64); db(0x6f); db(0x73); db(0x2e); db(0x6c); db(0x69);
+ db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x69); db(0x6e);
+ db(0x74); db(0x75); db(0x69); db(0x74); db(0x69); db(0x6f); db(0x6e); db(0x2e);
+ db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00);
+ db(0x67); db(0x72); db(0x61); db(0x70); db(0x68); db(0x69); db(0x63); db(0x73);
+ db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79);
+ db(0x00); db(0x65); db(0x78); db(0x70); db(0x61); db(0x6e); db(0x73); db(0x69);
+ db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61);
+ db(0x72); db(0x79); db(0x00); db(0x46); db(0x69); db(0x6c); db(0x65); db(0x53);
+ db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); db(0x2e); db(0x72); db(0x65);
+ db(0x73); db(0x6f); db(0x75); db(0x72); db(0x63); db(0x65); db(0x00); db(0x6d);
+ db(0x65); db(0x67); db(0x61); db(0x63); db(0x68); db(0x69); db(0x70); db(0x20);
+ db(0x6d); db(0x65); db(0x6d); db(0x6f); db(0x72); db(0x79); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x03); db(0xf2);
 
index 44792f2334ddf65ebfc4ebdc336210283c381cae..3011a37c4f91723686afa0e762a608837505c639 100644 (file)
 
 double getvsyncrate (double hz, int *mult)
 {
+       if (hz < 0)
+               return 0;
        if (hz > 85) {
                *mult = -1;
                return hz / 2;
        }
-       if (hz < 35) {
+       if (hz < 35 && hz > 0) {
                *mult = 1;
                return hz * 2;
        }
index 93e6d2bf8f10dc152305c8bb8d0561dddb8b0cde..00c8e1af4037d012b140ffc1bed26e651fd4b78d 100644 (file)
@@ -213,4 +213,5 @@ void customhack_put (struct customhack *ch, uae_u16 v, int hpos);
 uae_u16 customhack_get (struct customhack *ch, int hpos);
 extern void alloc_cycle_ext (int, int);
 extern bool ispal (void);
-extern int current_maxvpos (void);
\ No newline at end of file
+extern int current_maxvpos (void);
+struct chipset_refresh *get_chipset_refresh (void);
index 45514d4dcfde4aced36f7b65d4f89fc8dfe9547d..4b28839c2dbf54dd6dcfc801a1695b28cdc5c42e 100644 (file)
@@ -21,14 +21,14 @@ extern int disk_empty (int num);
 extern void disk_insert (int num, const TCHAR *name);
 extern void disk_insert_force (int num, const TCHAR *name, bool writeprotected);
 extern void DISK_vsync (void);
-extern int DISK_validate_filename (const TCHAR *fname, int leave_open, bool *wrprot, uae_u32 *crc32, struct zfile **zf);
+extern int DISK_validate_filename (struct uae_prefs *p, const TCHAR *fname, int leave_open, bool *wrprot, uae_u32 *crc32, struct zfile **zf);
 extern void DISK_handler (uae_u32);
 extern void DISK_update (int hpos);
 extern void DISK_update_adkcon (int hpos, uae_u16 v);
 extern void DISK_hsync (void);
 extern void DISK_reset (void);
-extern int disk_getwriteprotect (const TCHAR *name);
-extern int disk_setwriteprotect (int num, const TCHAR *name, bool writeprotected);
+extern int disk_getwriteprotect (struct uae_prefs *p, const TCHAR *name);
+extern int disk_setwriteprotect (struct uae_prefs *p, int num, const TCHAR *name, bool writeprotected);
 extern void disk_creatediskfile (const TCHAR *name, int type, drive_type adftype, const TCHAR *disk_name, bool ffs, bool bootable);
 extern void dumpdisk (void);
 extern int DISK_history_add (const TCHAR *name, int idx, int type, int donotcheck);
index 2df5ae4cecc39cf318df923b909ca31933db4929..b6d48e07809cf0e834efda0ff2b4dbfcdaa1989d 100644 (file)
@@ -414,6 +414,7 @@ struct uae_prefs {
 
        int nr_floppies;
        struct floppyslot floppyslots[4];
+       bool floppy_read_only;
        TCHAR dfxlist[MAX_SPARE_DRIVES][MAX_DPATH];
        int dfxclickvolume;
        int dfxclickchannelmask;
index e836f579565cc06d400bb7576eeebc644cbc20f7..7f4bd30eda59c45bfdcdcb05acbf692f25539363 100644 (file)
@@ -29,9 +29,9 @@ extern void toggle_mousegrab (void);
 extern void desktop_coords (int *dw, int *dh, int *x, int *y, int *w, int *h);
 extern bool vsync_switchmode (int);
 extern frame_time_t vsync_busywait_end (void);
-extern bool vsync_busywait_do (int*);
+extern bool vsync_busywait_do (int*, bool, bool);
 extern void vsync_busywait_start (void);
-bool vsync_busywait_check (void);
+extern bool vsync_busywait_check (void);
 extern double vblank_calibrate (double, bool);
 extern void doflashscreen (void);
 extern int flashscreen;
index 5158af0e1033d897b9a1aa08ac5cda9eb55ae093..8403ddcdbb7d42a31f6f0e3dee93c4eef329c0bf 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -186,6 +186,9 @@ void fixup_cpu (struct uae_prefs *p)
        if (p->cachesize && p->cpu_cycle_exact)
                p->cachesize = 0;
 
+       if (p->cpu_cycle_exact && p->m68k_speed < 0)
+               p->m68k_speed = 0;
+
        if (p->immediate_blits && p->blitter_cycle_exact)
                p->immediate_blits = false;
 }
index da12323ae9cc7ab45b0e63ecf4f808fdc5cc17c7..36930c7ed1c90f439485128437396529b6a217cf 100644 (file)
@@ -1183,12 +1183,17 @@ static const struct hiddesc hidtable[] =
        { 0 }
 };
 
+static uae_u32 hidmask (int bits)
+{
+        return bits >= 32 ? 0xffffffff : (1 << bits) - 1;
+}
+
 static int extractbits (uae_u32 val, int bits, bool issigned)
 {
        if (issigned)
-               return val & (1 << (bits - 1)) ? val | (-1 << bits) : val;
+               return val & (hidmask (bits)) ? val | (bits >= 32 ? 0x80000000 : (-1 << bits)) : val;
        else
-               return val & ((1 << bits) - 1);
+               return val & hidmask (bits);
 }
 
 struct hidquirk
@@ -1247,7 +1252,7 @@ static void fixhidvcaps (RID_DEVICE_INFO_HID *hid, HIDP_VALUE_CAPS *caps)
 {
        int pid = hid->dwProductId;
        int vid = hid->dwVendorId;
-       ULONG mask = (1 << caps->BitSize) - 1;
+       ULONG mask = hidmask (caps->BitSize);
        /* min is always signed.
         * if min < 0, max is signed, otherwise it is unsigned
         */
@@ -1826,7 +1831,7 @@ static void handle_rawinput_2 (RAWINPUT *raw)
                                                        HIDP_VALUE_CAPS *vcaps = &did->hidvcaps[axisnum];
                                                        int type = did->axistype[axisnum];
                                                        int logicalrange = (vcaps->LogicalMax - vcaps->LogicalMin) / 2;
-                                                       uae_u32 mask = (1 << vcaps->BitSize) - 1;
+                                                       uae_u32 mask = hidmask (vcaps->BitSize);
 
                                                        if (type == AXISTYPE_POV_X || type == AXISTYPE_POV_Y) {
 
@@ -2407,7 +2412,7 @@ static int di_do_init (void)
                rawinput_enabled_hid = 0;
 
        hr = DirectInput8Create (hInst, DIRECTINPUT_VERSION, IID_IDirectInput8, (LPVOID *)&g_lpdi, NULL);
-       if (FAILED(hr)) {
+       if (FAILED (hr)) {
                write_log (L"DirectInput8Create failed, %s\n", DXError (hr));
        } else {
                if (dinput_enum_all) {
index 5eb71b0114079813f4db4166ce8b72b6810d4a5f..b868f7736a7ff2fee627dac0b01ccbcda11db116 100644 (file)
@@ -96,6 +96,7 @@ struct TLVERTEX {
 };
 
 static int ddraw_fs;
+static int ddraw_fs_attempt;
 static LPDIRECTDRAW7 ddraw;
 
 static void ddraw_fs_hack_free (void)
@@ -122,10 +123,11 @@ static int ddraw_fs_hack_init (void)
        struct MultiDisplay *md;
 
        ddraw_fs_hack_free ();
+       DirectDraw_get_GUIDs ();
        md = getdisplay (&currprefs);
        if (!md)
                return 0;
-       hr = DirectDrawCreateEx (md->primary ? NULL : &md->guid, (LPVOID*)&ddraw, IID_IDirectDraw7, NULL);
+       hr = DirectDrawCreateEx (md->primary ? NULL : &md->ddguid, (LPVOID*)&ddraw, IID_IDirectDraw7, NULL);
        if (FAILED (hr)) {
                write_log (L"DirectDrawCreateEx failed, %s\n", DXError (hr));
                return 0;
@@ -139,9 +141,17 @@ static int ddraw_fs_hack_init (void)
        }
        hr = ddraw->SetDisplayMode (dpp.BackBufferWidth, dpp.BackBufferHeight, t_depth, dpp.FullScreen_RefreshRateInHz, 0);
        if (FAILED (hr)) {
-               write_log (L"IDirectDraw7_SetDisplayMode: %s\n", DXError (hr));
-               ddraw_fs_hack_free ();
-               return 0;
+               write_log (L"1:IDirectDraw7_SetDisplayMode: %s\n", DXError (hr));
+               if (dpp.FullScreen_RefreshRateInHz && isvsync_chipset () < 0) {
+                       hr = ddraw->SetDisplayMode (dpp.BackBufferWidth, dpp.BackBufferHeight, t_depth, 0, 0);
+                       if (FAILED (hr))
+                               write_log (L"2:IDirectDraw7_SetDisplayMode: %s\n", DXError (hr));
+               }
+               if (FAILED (hr)) {
+                       write_log (L"IDirectDraw7_SetDisplayMode: %s\n", DXError (hr));
+                       ddraw_fs_hack_free ();
+                       return 0;
+               }
        }
        ddraw_fs = 2;
        return 1;
@@ -1867,7 +1877,7 @@ bool D3D_getvblankpos (int *vpos)
        return true;
 }
 
-void D3D_vblank_reset (void)
+void D3D_vblank_reset (double freq)
 {
        if (!isd3d ())
                return;
@@ -1987,22 +1997,29 @@ const TCHAR *D3D_init (HWND ahwnd, int w_w, int w_h, int t_w, int t_h, int depth
        modeex.Format = mode.Format;
 
        vsync2 = 0;
+       int hzmult = 0;
        if (isfullscreen () > 0) {
                dpp.FullScreen_RefreshRateInHz = currprefs.gfx_refreshrate > 0 ? currprefs.gfx_refreshrate : 0;
                modeex.RefreshRate = dpp.FullScreen_RefreshRateInHz;
                if (vsync > 0) {
                        dpp.PresentationInterval = D3DPRESENT_INTERVAL_ONE;
-                       getvsyncrate (dpp.FullScreen_RefreshRateInHz, &mult);
-                       if (mult < 0) {
+                       getvsyncrate (dpp.FullScreen_RefreshRateInHz, &hzmult);
+                       if (hzmult < 0) {
                                if (d3dCaps.PresentationIntervals & D3DPRESENT_INTERVAL_TWO)
                                        dpp.PresentationInterval = D3DPRESENT_INTERVAL_TWO;
                                else
                                        vsync2 = -1;
-                       } else if (mult > 0) {
+                       } else if (hzmult > 0) {
                                vsync2 = 1;
                        }
                }
        }
+       if (vsync < 0) {
+               vsync2 = 0;
+               getvsyncrate (dpp.FullScreen_RefreshRateInHz, &hzmult);
+               if (hzmult > 0)
+                       vsync2 = 1;
+       }
 
        d3dhwnd = ahwnd;
        t_depth = depth;
@@ -2184,6 +2201,7 @@ static HRESULT reset (void)
 int D3D_needreset (void)
 {
        HRESULT hr;
+       bool do_dd = false;
 
        if (!devicelost)
                return -1;
@@ -2212,11 +2230,25 @@ int D3D_needreset (void)
                restoredeviceobjects ();
                return -1;
        } else if (hr == D3DERR_DEVICELOST) {
+               write_log (L"%s: D3DERR_DEVICELOST\n", D3DHEAD);
                invalidatedeviceobjects ();
                return 0;
-       } else if (SUCCEEDED (hr)) {
+       } else if (hr == S_PRESENT_MODE_CHANGED) {
+               write_log (L"%s: S_PRESENT_MODE_CHANGED (%d,%d)\n", D3DHEAD, ddraw_fs, ddraw_fs_attempt);
+               if (!ddraw_fs) {
+                       ddraw_fs_attempt++;
+                       if (ddraw_fs_attempt >= 5) {
+                               do_dd = true;
+                       }
+               }
+       } 
+       if (SUCCEEDED (hr)) {
                devicelost = 0;
                invalidatedeviceobjects ();
+               if (do_dd) {
+                       write_log (L"%s: S_PRESENT_MODE_CHANGED, Retrying fullscreen with DirectDraw\n", D3DHEAD);
+                       ddraw_fs_hack_init ();
+               }
                hr = reset ();
                if (FAILED (hr))
                        write_log (L"%s: Reset failed %s\n", D3DHEAD, D3D_ErrorString (hr));
@@ -2240,20 +2272,27 @@ static void D3D_showframe2 (bool dowait)
                        hr = d3ddev->Present (NULL, NULL, NULL, NULL);
                if (hr == D3DERR_WASSTILLDRAWING) {
                        wasstilldrawing_broken = false;
+                       if (!dowait)
+                               return;
+                       sleep_millis (1);
+                       continue;
                } else if (hr == S_PRESENT_OCCLUDED) {
-                       return;
-               } else {
-                       if (hr != FAILED (hr)) {
-                               write_log (L"%s: Present() %s\n", D3DHEAD, D3D_ErrorString (hr));
-                               if (hr == D3DERR_DEVICELOST || hr == S_PRESENT_MODE_CHANGED) {
-                                       devicelost = 1;
-                               }
+                       ;
+               } else if (hr == S_PRESENT_MODE_CHANGED) {
+                       // In most cases mode actually didn't change but
+                       // D3D is just being stupid and not accepting
+                       // all modes that DirectDraw does accept,
+                       // for example interlaced or EDS_RAWMODE modes!
+                       devicelost = 1;
+               } else if (FAILED (hr)) {
+                       write_log (L"%s: Present() %s\n", D3DHEAD, D3D_ErrorString (hr));
+                       if (hr == D3DERR_DEVICELOST || hr == S_PRESENT_MODE_CHANGED) {
+                               devicelost = 1;
                        }
-                       return;
+               } else {
+                       ddraw_fs_attempt = 0;
                }
-               if (!dowait)
-                       return;
-               sleep_millis (1);
+               return;
        }
 }
 
index e8a0838b68aa9e116c9dd57e0c820947a80d3b26..473aa72cabd4911752c1629f24999d52dac2cbcd 100644 (file)
@@ -18,7 +18,7 @@ extern int D3D_goodenough (void);
 extern void D3D_setcursor (int x, int y, int width, int height, bool visible);
 extern bool D3D_getvblankpos (int *vpos);
 extern double D3D_getrefreshrate (void);
-extern void D3D_vblank_reset (void);
+extern void D3D_vblank_reset (double freq);
 extern LPDIRECT3DTEXTURE9 cursorsurfaced3d;
 
 #define CURSORMAXWIDTH 64
index 2c5029448e933a5a5c93f7e4bb2a3de452d45d29..78e73a75d5d11811113ca420ac7705c83cf4b771 100644 (file)
@@ -1120,15 +1120,24 @@ static BOOL CALLBACK displaysCallback (GUID *guid, char *adesc, char *aname, LPV
                winmon = MonitorFromPoint (pt, MONITOR_DEFAULTTONEAREST);
                if (hm == winmon) {
                        memcpy (&monitorguids[i], guid, sizeof GUID);
+                       memcpy (&md->ddguid, guid, sizeof GUID);
                        return TRUE;
                }
        }
        return TRUE;
 }
 
-int DirectDraw_Start (void)
+void DirectDraw_get_GUIDs (void)
 {
        static bool guidsenumerated;
+       if (guidsenumerated)
+               return;
+       guidsenumerated = true;
+       DirectDrawEnumerateExA (displaysCallback, 0, DDENUM_DETACHEDSECONDARYDEVICES | DDENUM_ATTACHEDSECONDARYDEVICES);
+}
+
+int DirectDraw_Start (void)
+{
        static int first, firstdd;
        HRESULT ddrval;
        LPDIRECT3D9 d3d;
@@ -1165,10 +1174,7 @@ int DirectDraw_Start (void)
                return 1;
        }
 
-       if (!guidsenumerated) {
-               guidsenumerated = true;
-               DirectDrawEnumerateExA (displaysCallback, 0, DDENUM_DETACHEDSECONDARYDEVICES | DDENUM_ATTACHEDSECONDARYDEVICES);
-       }
+       DirectDraw_get_GUIDs ();
 
        guid = NULL;
        if (isfullscreen () > 0) {
@@ -1251,10 +1257,10 @@ void dx_check (void)
 bool DD_getvblankpos (int *vpos)
 {
        HRESULT hr;
-       DWORD sl;
+       DWORD sl, slstate;
        BOOL vbs;
 
-       *vpos = -2;
+       *vpos = -10;
        if ((dxdata.primary == NULL && dxdata.fsmodeset > 0) || dxdata.islost || !dxdata.maindd)
                return false;
        hr = IDirectDraw7_GetVerticalBlankStatus (dxdata.maindd, &vbs);
@@ -1262,24 +1268,41 @@ bool DD_getvblankpos (int *vpos)
                write_log (L"IDirectDraw7_GetVerticalBlankStatus() failed, %s\n", DXError (hr));
                return false;
        }
-       sl = -2;
+       slstate = 4;
+       sl = -1;
        if (!vbs) {
+               slstate = 3;
                hr = IDirectDraw7_GetScanLine (dxdata.maindd, &sl);
                if (hr == 0x88760219) { // "vertical blank is in progress"
                        vbs = TRUE;
+                       slstate = 2;
+                       sl = -1;
                } else if (FAILED (hr) ) {
                        write_log (L"IDirectDraw7_GetScanLine() failed, %s\n", DXError (hr));
                        return false;
                }
        }
-       *vpos = sl;
        if (vbs)
                *vpos = -1;
+       else
+               *vpos = sl;
+
+#if 0
+       static DWORD oldsl, oldslstate;
+       if (oldsl != sl || oldslstate != slstate) {
+               write_log (L"%d:%d ", sl, slstate);
+               oldsl = sl;
+               oldslstate = slstate;
+       }
+#endif
+
        return true;
 }
 
-void DD_vblank_reset (void)
+void DD_vblank_reset (double freq)
 {
+       getvsyncrate (freq, &dxdata.vblank_skip);
+       dxdata.vblank_skip_cnt = 0;
        dx_check ();
        if ((dxdata.primary == NULL && dxdata.fsmodeset > 0) || dxdata.islost || !dxdata.maindd)
                return;
index 08fc91feb019b67fd674ff5bea506acf8cc58f95..6f332b3ed06cb937ccefb2e669f4f3a550f7acc6 100644 (file)
@@ -64,11 +64,12 @@ struct PicassoResolution
        /* Bit mask of RGBFF_xxx values.  */
        uae_u32 colormodes;
        int rawmode;
+       bool lace;
 };
 
 struct MultiDisplay {
        bool primary;
-       GUID guid;
+       GUID ddguid;
        TCHAR *adaptername, *adapterid, *adapterkey;
        TCHAR *monitorname, *monitorid;
        TCHAR *fullname;
@@ -90,6 +91,7 @@ extern TCHAR *outGUID (const GUID *guid);
 HRESULT DirectDraw_GetDisplayMode (void);
 void DirectDraw_Release(void);
 int DirectDraw_Start(void);
+void DirectDraw_get_GUIDs (void);
 void clearsurface(LPDIRECTDRAWSURFACE7 surf);
 int locksurface (LPDIRECTDRAWSURFACE7 surf, LPDDSURFACEDESC2 desc);
 void unlocksurface (LPDIRECTDRAWSURFACE7 surf);
@@ -132,7 +134,7 @@ void DirectDraw_FillSurface (LPDIRECTDRAWSURFACE7 dst, RECT *rect, uae_u32 color
 void DirectDraw_Fill (RECT *rect, uae_u32 color);
 void DirectDraw_FillPrimary (void);
 bool DD_getvblankpos (int *vpos);
-void DD_vblank_reset (void);
+void DD_vblank_reset (double freq);
 
 void dx_check (void);
 int dx_islost (void);
index 8a07533bf0a9dd84ec1b1c6df3cd205a3ff6400d..43b8a6cd51470aa42ac556db962d0a27ebf24c6c 100644 (file)
@@ -300,7 +300,7 @@ static void MidiIn_Free( void )
        only_one_time = 0;
 }
 
-static uae_u8 plen[128] = {
+static const uae_u8 plen[128] = {
        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
@@ -507,7 +507,6 @@ static void CALLBACK MidiInProc(HMIDIIN hMidiIn,UINT wMsg,DWORD_PTR dwInstance,D
        }
        if(wMsg == MIM_LONGDATA) {
                LPMIDIHDR midiin = (LPMIDIHDR)dwParam1;
-               static long synum;
                TRACE(("MIM_LONGDATA bytes=%d ts=%u\n", midiin->dwBytesRecorded, dwParam2));
                if (exitin == 1)
                        goto end; //for safeness midi want close
@@ -615,6 +614,8 @@ int Midi_Open(void)
        unsigned long result = 0, i;
        TCHAR err[MAX_DPATH];
 
+       if (currprefs.win32_midioutdev < -1)
+               return 0;
        if((result = midiOutOpen(&outHandle, currprefs.win32_midioutdev, 0, 0,CALLBACK_NULL))) {
                write_log (L"MIDI OUT: error %s / %d while opening port %d\n", getmidiouterr(err, result), result, currprefs.win32_midioutdev);
                result = 0;
@@ -622,7 +623,7 @@ int Midi_Open(void)
                InitializeCriticalSection(&cs_proc);
                // We don't need input for output...
                if((currprefs.win32_midiindev >= 0) &&
-                       (result = midiInOpen( &inHandle, currprefs.win32_midiindev, (DWORD_PTR)MidiInProc, 0, CALLBACK_FUNCTION|MIDI_IO_STATUS))) {
+                       (result = midiInOpen(&inHandle, currprefs.win32_midiindev, (DWORD_PTR)MidiInProc, 0, CALLBACK_FUNCTION|MIDI_IO_STATUS))) {
                                write_log (L"MIDI IN: error %s / %d while opening port %d\n", getmidiinerr(err, result), result, currprefs.win32_midiindev);
                } else {
                        midi_in_ready = TRUE;
index 2e89521ac1a309cbf468b564bab36e11c3d49ffc..05f07f90193c07b4e16e04943912bb82e8f9519a 100644 (file)
@@ -1545,7 +1545,8 @@ int enummidiports (void)
                        break;
                midioutportinfo[i] = xcalloc (struct midiportinfo, 1);
                midioutportinfo[i]->name = my_strdup (midiOutCaps.szPname);
-               write_log (L"MIDI OUT: '%s' (%d/%d)\n", midioutportinfo[i]->name, midiOutCaps.wMid, midiOutCaps.wPid);
+               midioutportinfo[i]->devid = i - 1;
+               write_log (L"MIDI OUT: %d:'%s' (%d/%d)\n", midioutportinfo[i]->devid, midioutportinfo[i]->name, midiOutCaps.wMid, midiOutCaps.wPid);
        }
        total = num + 1;
        for (i = 1; i < num + 1; i++) {
@@ -1565,7 +1566,8 @@ int enummidiports (void)
                        break;
                midiinportinfo[i] = xcalloc (struct midiportinfo, 1);
                midiinportinfo[i]->name = my_strdup (midiInCaps.szPname);
-               write_log (L"MIDI IN: '%s' (%d/%d)\n", midiinportinfo[i]->name, midiInCaps.wMid, midiInCaps.wPid);
+               midiinportinfo[i]->devid = i;
+               write_log (L"MIDI IN: %d:'%s' (%d/%d)\n", midiinportinfo[i]->devid, midiinportinfo[i]->name, midiInCaps.wMid, midiInCaps.wPid);
        }
        total += num;
        for (i = 0; i < num; i++) {
index cdc4c9dd4e80f605b4a4dbe5ce326b5f2c63ce58..1317ccfb43942bff96bf49cb62382a414b52b37b 100644 (file)
@@ -37,6 +37,7 @@ extern int load_ghostscript (void);
 struct midiportinfo
 {
     TCHAR *name;
+       UINT devid;
 };
 extern struct midiportinfo *midiinportinfo[MAX_MIDI_PORTS];
 extern struct midiportinfo *midioutportinfo[MAX_MIDI_PORTS];
index 95554ab55d36c4e5b648616dcdb2094f3a95a236..ad6602ed5bac296a1546478826267c0f8134e768 100644 (file)
@@ -726,7 +726,7 @@ void picasso_handle_vsync (void)
 
        if (vsync < 0) {
                vsync_busywait_end ();
-               vsync_busywait_do (NULL);
+               vsync_busywait_do (NULL, false, false);
                framecnt++;
                bool rendered = rtg_render ();
                picasso_trigger_vblank ();
index 444f4073612d9caa0404941fd3cc059cac608080..debc7aa15dc19db4681cdb6007f5a2b24016838b 100644 (file)
 #define IDS_STMENUNOCD                  270
 #define IDS_ON                          271
 #define IDS_INPUTQUALIFIER              272
+#define IDS_GENERIC                     273
+#define IDS_AUTODETECT                  274
 #define IDS_NUMSG_NEEDEXT2              300
 #define IDS_NUMSG_NOROMKEY              301
 #define IDS_NUMSG_KSROMCRCERROR         302
 #define IDC_AVIOUTPUT_VIDEO             1613
 #define IDC_INPUTAUTOFIRE               1613
 #define IDC_PORT_MOUSETRICK             1613
-#define IDC_CLIPBOARDSHARE2             1613
 #define IDC_NATIVECODE                  1613
 #define IDC_AVIOUTPUT_AUDIO             1614
 #define IDC_INPUTCOPYFROM               1614
index bde0a3a634f7276052513fdfd7371f79580b7b47..c805adf2ee54956675e0362ecc7dcb5685dba61e 100644 (file)
@@ -1703,6 +1703,8 @@ END
 STRINGTABLE\r
 BEGIN\r
     IDS_INPUTQUALIFIER      "Qualifiers"\r
+    IDS_GENERIC             "Generic"\r
+    IDS_AUTODETECT          "Autodetect"\r
 END\r
 \r
 #endif    // English resources\r
index 2b03a279890beceac9c21a990dc4d4571eadca1b..361837abf92d1d143d7e79db53da125567dbbb92 100644 (file)
@@ -752,7 +752,7 @@ static LRESULT CALLBACK RPHostMsgFunction2 (UINT uMessage, WPARAM wParam, LPARAM
                        if (device == RP_DEVICE_FLOPPY) {
                                int num = HIBYTE(wParam);
                                if (lParam == RP_DEVICE_READONLY || lParam == RP_DEVICE_READWRITE) {
-                                       ret = disk_setwriteprotect (num, currprefs.floppyslots[num].df, lParam == RP_DEVICE_READONLY);
+                                       ret = disk_setwriteprotect (&currprefs, num, currprefs.floppyslots[num].df, lParam == RP_DEVICE_READONLY);
                                }
                        }
                        return ret ? (LPARAM)1 : 0;
index 92fda294563e2deedd11dae691c7b693ff02bcaa..5af8a3045daedf7613eaaf913e1e275c990f3b50 100644 (file)
@@ -2826,8 +2826,19 @@ void target_default_options (struct uae_prefs *p, int type)
 static const TCHAR *scsimode[] = { L"SCSIEMU", L"SPTI", L"SPTI+SCSISCAN", L"AdaptecASPI", L"NeroASPI", L"FrogASPI", NULL };
 static const TCHAR *statusbarmode[] = { L"none", L"normal", L"extended", NULL };
 
+static struct midiportinfo *getmidiport (struct midiportinfo **mi, int devid)
+{
+       for (int i = 0; i < MAX_MIDI_PORTS; i++) {
+               if (mi[i] != NULL && mi[i]->devid == devid)
+                       return mi[i];
+       }
+       return NULL;
+}
+
 void target_save_options (struct zfile *f, struct uae_prefs *p)
 {
+       struct midiportinfo *midp;
+
        cfgfile_target_dwrite_bool (f, L"middle_mouse", p->win32_middle_mouse);
        cfgfile_target_dwrite_bool (f, L"logfile", p->win32_logfile);
        cfgfile_target_dwrite_bool (f, L"map_drives", p->win32_automount_drives);
@@ -2853,24 +2864,20 @@ void target_save_options (struct zfile *f, struct uae_prefs *p)
 
        cfgfile_target_dwrite (f, L"midiout_device", L"%d", p->win32_midioutdev);
        cfgfile_target_dwrite (f, L"midiin_device", L"%d", p->win32_midiindev);
+
+       midp = getmidiport (midioutportinfo, p->win32_midioutdev);
        if (p->win32_midioutdev < -1)
                cfgfile_target_dwrite_str (f, L"midiout_device_name", L"none");
-       else if (p->win32_midioutdev == -1)
+       else if (p->win32_midioutdev == -1 || midp == NULL)
                cfgfile_target_dwrite_str (f, L"midiout_device_name", L"default");
-       else if (p->win32_midioutdev >= 0 && p->win32_midioutdev < MAX_MIDI_PORTS - 1) {
-               if (midioutportinfo[p->win32_midioutdev + 1] == NULL)
-                       p->win32_midioutdev = -1;
-               else
-                       cfgfile_target_dwrite_str (f, L"midiout_device_name", midioutportinfo[p->win32_midioutdev + 1]->name);
-       }
-       if (p->win32_midiindev < 0)
+       else
+               cfgfile_target_dwrite_str (f, L"midiout_device_name", midp->name);
+
+       midp = getmidiport (midiinportinfo, p->win32_midiindev);
+       if (p->win32_midiindev < 0 || midp == NULL)
                cfgfile_target_dwrite_str (f, L"midiin_device_name", L"none");
-       else if (p->win32_midiindev >= 0 && p->win32_midiindev < MAX_MIDI_PORTS) {
-               if (midiinportinfo[p->win32_midiindev] == NULL)
-                       p->win32_midiindev = -1;
-               else
-                       cfgfile_target_dwrite_str (f, L"midiin_device_name", midiinportinfo[p->win32_midiindev]->name);
-       }
+       else
+               cfgfile_target_dwrite_str (f, L"midiin_device_name", midp->name);
                        
        cfgfile_target_dwrite_bool (f, L"rtg_match_depth", p->win32_rtgmatchdepth);
        cfgfile_target_dwrite_bool (f, L"rtg_scale_small", p->win32_rtgscaleifsmall);
@@ -3131,7 +3138,7 @@ int target_parse_option (struct uae_prefs *p, const TCHAR *option, const TCHAR *
                        p->win32_midioutdev = -1;
                for (int i = 0; i < MAX_MIDI_PORTS && midioutportinfo[i]; i++) {
                        if (!_tcsicmp (midioutportinfo[i]->name, tmpbuf)) {
-                               p->win32_midioutdev = i - 1;
+                               p->win32_midioutdev = midioutportinfo[i]->devid;
                        }
                }
                return 1;
@@ -3140,7 +3147,7 @@ int target_parse_option (struct uae_prefs *p, const TCHAR *option, const TCHAR *
                p->win32_midiindev = -1;
                for (int i = 0; i < MAX_MIDI_PORTS && midiinportinfo[i]; i++) {
                        if (!_tcsicmp (midiinportinfo[i]->name, tmpbuf)) {
-                               p->win32_midiindev = i;
+                               p->win32_midiindev = midiinportinfo[i]->devid;
                        }
                }
                return 1;
index 210afd8ee5ad890f5d8c29b3eed28f027dcdd329..99ada650810822e318578e3920a958daac3df355 100644 (file)
@@ -19,8 +19,8 @@
 #define LANG_DLL 1
 
 //#define WINUAEBETA L""
-#define WINUAEBETA L"Beta 14"
-#define WINUAEDATE MAKEBD(2012, 1, 28)
+#define WINUAEBETA L"Beta 15"
+#define WINUAEDATE MAKEBD(2012, 2, 4)
 #define WINUAEEXTRA L""
 //#define WINUAEEXTRA L"AmiKit Preview"
 #define WINUAEREV L""
index c529a9d78c58800f6083ebcaeb568fa5a86c367e..287d68f720f31a2310d64906851ae4097cf4724b 100644 (file)
@@ -104,6 +104,9 @@ int window_extra_width, window_extra_height;
 static struct winuae_currentmode *currentmode = &currentmodestruct;
 static int wasfullwindow_a, wasfullwindow_p;
 static int vblankbasewait, vblankbasewait2, vblankbasewait3, vblankbasefull;
+static bool vblankbaselace;
+static int vblankbaselace_chipset;
+static bool vblankthread_oddeven;
 
 int screen_is_picasso = 0;
 
@@ -434,10 +437,24 @@ oops:
        return 0;
 }
 
-static void addmode (struct MultiDisplay *md, int w, int h, int d, int rate, int rawmode)
+static void addmode (struct MultiDisplay *md, DEVMODE *dm, int rawmode)
 {
        int ct;
        int i, j;
+       int w = dm->dmPelsWidth;
+       int h = dm->dmPelsHeight;
+       int d = dm->dmBitsPerPel;
+       bool lace = false;
+
+       int freq = 0;
+       if (dm->dmFields & DM_DISPLAYFREQUENCY) {
+               freq = dm->dmDisplayFrequency;
+               if (freq < 10)
+                       freq = 0;
+       }
+       if (dm->dmFields & DM_DISPLAYFLAGS) {
+               lace = (dm->dmDisplayFlags & DM_INTERLACED) != 0;
+       }
 
        ct = 0;
        if (d == 8)
@@ -457,11 +474,11 @@ static void addmode (struct MultiDisplay *md, int w, int h, int d, int rate, int
        while (md->DisplayModes[i].depth >= 0) {
                if (md->DisplayModes[i].depth == d && md->DisplayModes[i].res.width == w && md->DisplayModes[i].res.height == h) {
                        for (j = 0; j < MAX_REFRESH_RATES; j++) {
-                               if (md->DisplayModes[i].refresh[j] == 0 || md->DisplayModes[i].refresh[j] == rate)
+                               if (md->DisplayModes[i].refresh[j] == 0 || md->DisplayModes[i].refresh[j] == freq)
                                        break;
                        }
                        if (j < MAX_REFRESH_RATES) {
-                               md->DisplayModes[i].refresh[j] = rate;
+                               md->DisplayModes[i].refresh[j] = freq;
                                md->DisplayModes[i].refreshtype[j] = rawmode;
                                md->DisplayModes[i].refresh[j + 1] = 0;
                                return;
@@ -475,16 +492,19 @@ static void addmode (struct MultiDisplay *md, int w, int h, int d, int rate, int
        if (i >= MAX_PICASSO_MODES - 1)
                return;
        md->DisplayModes[i].rawmode = rawmode;
+       md->DisplayModes[i].lace = lace;
        md->DisplayModes[i].res.width = w;
        md->DisplayModes[i].res.height = h;
        md->DisplayModes[i].depth = d;
-       md->DisplayModes[i].refresh[0] = rate;
+       md->DisplayModes[i].refresh[0] = freq;
        md->DisplayModes[i].refreshtype[0] = rawmode;
        md->DisplayModes[i].refresh[1] = 0;
        md->DisplayModes[i].colormodes = ct;
        md->DisplayModes[i + 1].depth = -1;
-       _stprintf (md->DisplayModes[i].name, L"%dx%d, %d-bit",
-               md->DisplayModes[i].res.width, md->DisplayModes[i].res.height, md->DisplayModes[i].depth * 8);
+       _stprintf (md->DisplayModes[i].name, L"%dx%d%s, %d-bit",
+               md->DisplayModes[i].res.width, md->DisplayModes[i].res.height,
+               lace ? L"i" : L"",
+               md->DisplayModes[i].depth * 8);
 }
 
 static int _cdecl resolution_compare (const void *a, const void *b)
@@ -676,13 +696,8 @@ void sortdisplays (void)
                                        write_log (L"EnumDisplaySettings(%dx%dx%d %dHz %08x)\n",
                                                dm.dmPelsWidth, dm.dmPelsHeight, dm.dmBitsPerPel, dm.dmDisplayFrequency, dm.dmFields);
 #endif
-                                       if (dm.dmFields & DM_DISPLAYFREQUENCY) {
-                                               freq = dm.dmDisplayFrequency;
-                                               if (freq < 10)
-                                                       freq = 0;
-                                       }
                                        if ((dm.dmFields & DM_PELSWIDTH) && (dm.dmFields & DM_PELSHEIGHT) && (dm.dmFields & DM_BITSPERPEL)) {
-                                               addmode (md1, dm.dmPelsWidth, dm.dmPelsHeight, dm.dmBitsPerPel, freq, mode);
+                                               addmode (md1, &dm, mode);
                                        }
                                }
                                idx++;
@@ -1362,6 +1377,8 @@ int check_prefs_changed_gfx (void)
 
        c |= currprefs.gfx_resolution != changed_prefs.gfx_resolution ? (128) : 0;
        c |= currprefs.gfx_vresolution != changed_prefs.gfx_vresolution ? (128) : 0;
+       c |= currprefs.gfx_autoresolution_minh != changed_prefs.gfx_autoresolution_minh ? (128) : 0;
+       c |= currprefs.gfx_autoresolution_minv != changed_prefs.gfx_autoresolution_minv ? (128) : 0;
        c |= currprefs.gfx_scanlines != changed_prefs.gfx_scanlines ? (2 | 8) : 0;
        c |= currprefs.monitoremu != changed_prefs.monitoremu ? (2 | 8) : 0;
 
@@ -1429,6 +1446,8 @@ int check_prefs_changed_gfx (void)
 
                currprefs.gfx_resolution = changed_prefs.gfx_resolution;
                currprefs.gfx_vresolution = changed_prefs.gfx_vresolution;
+               currprefs.gfx_autoresolution_minh = changed_prefs.gfx_autoresolution_minh;
+               currprefs.gfx_autoresolution_minv = changed_prefs.gfx_autoresolution_minv;
                currprefs.gfx_scanlines = changed_prefs.gfx_scanlines;
                currprefs.monitoremu = changed_prefs.monitoremu;
 
@@ -2243,6 +2262,8 @@ static bool getvblankpos (int *vp)
        prevvblankpos = sl;
        if (sl > maxscanline)
                maxscanline = sl;
+       if (sl > 0)
+               vblankthread_oddeven = (sl & 1) != 0;
        *vp = sl;
        return true;
 }
@@ -2307,12 +2328,12 @@ static bool vblank_getstate (bool *state)
        return true;
 }
 
-void vblank_reset (void)
+void vblank_reset (double freq)
 {
        if (currprefs.gfx_api)
-               D3D_vblank_reset ();
+               D3D_vblank_reset (freq);
        else
-               DD_vblank_reset ();
+               DD_vblank_reset (freq);
 }
 
 static unsigned int __stdcall flipthread (void *dummy)
@@ -2328,6 +2349,17 @@ static unsigned int __stdcall flipthread (void *dummy)
        return 0;
 }
 
+static bool vblanklaceskip (void)
+{
+       if (vblankbaselace_chipset >= 0 && vblankbaselace) {
+               if ((vblankbaselace_chipset && !vblankthread_oddeven) || (!vblankbaselace_chipset && vblankthread_oddeven)) {
+                       write_log (L"Interlaced frame type mismatch %d<>%d\n", vblankbaselace_chipset, vblankthread_oddeven);
+                       return true;
+               }
+       }
+       return false;
+}
+
 static unsigned int __stdcall vblankthread (void *dummy)
 {
        while (vblankthread_mode > VBLANKTH_KILL) {
@@ -2357,7 +2389,13 @@ static unsigned int __stdcall vblankthread (void *dummy)
                        frame_time_t t = read_processor_time ();
                        bool donotwait = false;
                        if (!vblank_found) {
-                               if (t - thread_vblank_time > vblankbasewait2) {
+                               // immediate vblank if mismatched frame type 
+                               if (isvsync_chipset () < 0 && vblanklaceskip ()) {
+                                       vblank_found = true;
+                                       vblank_found_chipset = true;
+                                       vblankthread_mode = VBLANKTH_ACTIVE_WAIT;
+                                       donotwait = true;
+                               } else if (t - thread_vblank_time > vblankbasewait2) {
                                        bool vb = false;
                                        bool ok = vblank_getstate (&vb);
                                        if (!ok || vb) {
@@ -2398,22 +2436,28 @@ bool vsync_busywait_check (void)
        return vblankthread_mode == VBLANKTH_ACTIVE || vblankthread_mode == VBLANKTH_ACTIVE_WAIT;
 }
 
-frame_time_t vsync_busywait_end (void)
+static void vsync_notvblank (void)
 {
-
-       while (!vblank_found && vblankthread_mode == VBLANKTH_ACTIVE) {
-               vsync_sleep (true);
-       }
-       changevblankthreadmode (VBLANKTH_ACTIVE_WAIT);
        for (;;) {
                int vp;
-               getvblankpos (&vp);
-               if (vp != -1) {
+               if (!getvblankpos (&vp))
+                       return;
+               if (vp > 0) {
                        //write_log (L"%d ", vpos);
                        break;
                }
                vsync_sleep (true);
        }
+}
+
+frame_time_t vsync_busywait_end (void)
+{
+
+       while (!vblank_found && vblankthread_mode == VBLANKTH_ACTIVE) {
+               vsync_sleep (true);
+       }
+       changevblankthreadmode (VBLANKTH_ACTIVE_WAIT);
+       vsync_notvblank ();
        return thread_vblank_time;
 }
 
@@ -2428,7 +2472,7 @@ static bool isthreadedvsync (void)
        return isvsync_chipset () <= -2 || isvsync_rtg () < 0;
 }
 
-bool vsync_busywait_do (int *freetime)
+bool vsync_busywait_do (int *freetime, bool lace, bool oddeven)
 {
        bool v;
        static bool framelost;
@@ -2436,6 +2480,11 @@ bool vsync_busywait_do (int *freetime)
        frame_time_t t;
        frame_time_t prevtime = vblank_prev_time;
 
+       if (lace)
+               vblankbaselace_chipset = oddeven;
+       else
+               vblankbaselace_chipset = -1;
+
        t = read_processor_time ();
        ti = t - prevtime;
        if (ti > 2 * vblankbasefull || ti < -2 * vblankbasefull) {
@@ -2477,19 +2526,28 @@ bool vsync_busywait_do (int *freetime)
                v = true;
 
        } else {
+               bool doskip = false;
 
                if (!framelost && t - prevtime > vblankbasefull) {
                        framelost = true;
                        frame_missed++;
                        return true;
                }
+               
+               vsync_notvblank ();
 
-               while (!framelost && read_processor_time () - prevtime < vblankbasewait) {
-                       vsync_sleep (false);
-               }
+               if (vblanklaceskip ())
+                       doskip = true;
 
+               if (!doskip) {
+                       while (!framelost && read_processor_time () - prevtime < vblankbasewait) {
+                               vsync_sleep (false);
+                       }
+                       v = vblank_wait ();
+               } else {
+                       v = true;
+               }
                framelost = false;
-               v = vblank_wait ();
 
        }
 
@@ -2508,7 +2566,7 @@ struct remembered_vsync
 {
        struct remembered_vsync *next;
        int width, height, depth, rate, mode;
-       bool rtg;
+       bool rtg, lace;
        double remembered_rate, remembered_rate2;
        int maxscanline, maxvpos;
 };
@@ -2525,6 +2583,7 @@ double vblank_calibrate (double approx_vblank, bool waitonly)
        double rval = -1;
        struct apmode *ap = picasso_on ? &currprefs.gfx_apmode[1] : &currprefs.gfx_apmode[0];
        bool remembered = false;
+       bool lace = false;
 
        if (picasso_on) {
                width = picasso96_state.Width;
@@ -2545,6 +2604,7 @@ double vblank_calibrate (double approx_vblank, bool waitonly)
                        rval = rv->remembered_rate;
                        maxscanline = rv->maxscanline;
                        maxvpos = rv->maxvpos;
+                       lace = rv->lace;
                        waitonly = true;
                        remembered = true;
                        goto skip;
@@ -2573,10 +2633,11 @@ double vblank_calibrate (double approx_vblank, bool waitonly)
        tsum2 = 0;
        tcnt2 = 0;
        for (maxcnt = 0; maxcnt < maxtotal; maxcnt++) {
-               total = 10;
+               total = 5;
                tsum = 0;
                cnt = total;
                for (cnt = 0; cnt < total; cnt++) {
+                       int maxvpos1, maxvpos2;
                        if (!waitvblankstate (true, NULL))
                                goto fail;
                        if (!waitvblankstate (false, NULL))
@@ -2586,10 +2647,18 @@ double vblank_calibrate (double approx_vblank, bool waitonly)
                        t1 = read_processor_time ();
                        if (!waitvblankstate (false, NULL))
                                goto fail;
-                       if (!waitvblankstate (true, &maxvpos))
+                       maxscanline = 0;
+                       if (!waitvblankstate (true, &maxvpos1))
+                               goto fail;
+                       if (!waitvblankstate (false, NULL))
+                               goto fail;
+                       maxscanline = 0;
+                       if (!waitvblankstate (true, &maxvpos2))
                                goto fail;
                        t2 = read_processor_time ();
-                       tval = (double)syncbase / (t2 - t1);
+                       maxvpos = maxvpos1 > maxvpos2 ? maxvpos1 : maxvpos2;
+                       // count two fields: works with interlaced modes too.
+                       tval = (double)syncbase * 2.0 / (t2 - t1);
                        if (cnt == 0)
                                tfirst = tval;
                        if (abs (tval - tfirst) > 1) {
@@ -2603,6 +2672,8 @@ double vblank_calibrate (double approx_vblank, bool waitonly)
                                break;
                        }
                        tsum += tval;
+                       if (abs (maxvpos1 - maxvpos2) == 1)
+                               lace = true;
                }
                if (cnt >= total)
                        break;
@@ -2633,7 +2704,9 @@ skip:
        vblankbasewait = (syncbase / tsum2) * 3 / 4;
        vblankbasewait2 = (syncbase / tsum2) * 70 / 100;
        vblankbasewait3 = (syncbase / tsum2) * 90 / 100;
-       write_log (L"VSync %s: %.6fHz/%.1f=%.6fHz. MaxV=%d Units=%d\n", waitonly ? L"remembered" : L"calibrated", tsum, div, tsum2, maxvpos, vblankbasefull);
+       vblankbaselace = lace;
+       write_log (L"VSync %s: %.6fHz/%.1f=%.6fHz. MaxV=%d%s Units=%d\n",
+               waitonly ? L"remembered" : L"calibrated", tsum, div, tsum2, maxvpos, lace ? L"i" : L"", vblankbasefull);
        remembered_vblank = tsum;
        vblank_prev_time = read_processor_time ();
        
@@ -2649,6 +2722,7 @@ skip:
                rv->remembered_rate2 = tsum2;
                rv->maxscanline = maxscanline;
                rv->maxvpos = maxvpos;
+               rv->lace = lace;
                if (vsyncmemory == NULL) {
                        vsyncmemory = rv;
                } else {
@@ -2657,7 +2731,7 @@ skip:
                }
        }
        
-       vblank_reset ();
+       vblank_reset (tsum);
        return tsum;
 fail:
        write_log (L"VSync calibration failed\n");
index 6f50d9beed9df76fafdd064d410760574eaad82d..4438dd0d58efdb8f0d09f48a0f1df59c3e288b30 100644 (file)
@@ -41,5 +41,5 @@ void DX_Blit (int x, int y, int w, int h);
 void centerdstrect (RECT *);
 struct MultiDisplay *getdisplay (struct uae_prefs *p);
 double getcurrentvblankrate (void);
-void vblank_reset (void);
+void vblank_reset (double freq);
 #endif
index b39c223593a3f23e506128ec768ab3fcd9aa3f6f..b4a0e93f0f3d4876d7a582dc233917eba71aedf2 100644 (file)
@@ -1780,7 +1780,7 @@ static void flipgui (bool opengui)
        if (opengui)
                DirectDraw_FlipToGDISurface ();
        else
-               vblank_reset ();
+               vblank_reset (-1);
 }
 
 static int GetSettings (int all_options, HWND hwnd);
@@ -5645,6 +5645,7 @@ static void values_to_displaydlg (HWND hDlg)
 
        SendDlgItemMessage(hDlg, IDC_RATE2BOX, CB_RESETCONTENT, 0, 0);
        v = 0;
+       struct chipset_refresh *selectcr = full_property_sheet ? (workprefs.ntscmode ? &workprefs.cr[CHIPSET_REFRESH_NTSC] : &workprefs.cr[CHIPSET_REFRESH_PAL]) : get_chipset_refresh () ;
        for (int i = 0; i < MAX_CHIPSET_REFRESH_TOTAL; i++) {
                struct chipset_refresh *cr = &workprefs.cr[i];
                if (cr->rate > 0) {
@@ -5655,16 +5656,17 @@ static void values_to_displaydlg (HWND hDlg)
                        d = workprefs.chipset_refreshrate;
                        if (abs (d) < 1)
                                d = currprefs.ntscmode ? 60.0 : 50.0;
-                       if (abs (cr->rate - d) < 1.5 && workprefs.cr_selected < 0) {
+                       if (selectcr && selectcr->index == cr->index)
                                workprefs.cr_selected = i;
-                       }
                        rates[i] = v;
                        v++;
                }
        }
+
+
        if (workprefs.cr_selected < 0 || workprefs.cr[workprefs.cr_selected].rate <= 0)
                workprefs.cr_selected = CHIPSET_REFRESH_PAL;
-       struct chipset_refresh *selectcr = &workprefs.cr[workprefs.cr_selected];
+       selectcr = &workprefs.cr[workprefs.cr_selected];
        SendDlgItemMessage(hDlg, IDC_RATE2BOX, CB_SETCURSEL, rates[workprefs.cr_selected], 0);
        SendDlgItemMessage (hDlg, IDC_FRAMERATE2, TBM_SETPOS, TRUE, (LPARAM)(selectcr->rate + 0.5));
        _stprintf (buffer, L"%.6f", selectcr->locked || full_property_sheet ? selectcr->rate : workprefs.chipset_refreshrate);
@@ -5773,7 +5775,7 @@ static void init_resolution_combo (HWND hDlg)
        SendDlgItemMessage(hDlg, IDC_RESOLUTION, CB_RESETCONTENT, 0, 0);
        for (i = 0; md->DisplayModes[i].depth >= 0; i++) {
                if (md->DisplayModes[i].depth > 1 && md->DisplayModes[i].residx != idx) {
-                       _stprintf (tmp, L"%dx%d", md->DisplayModes[i].res.width, md->DisplayModes[i].res.height);
+                       _stprintf (tmp, L"%dx%d%s", md->DisplayModes[i].res.width, md->DisplayModes[i].res.height, md->DisplayModes[i].lace ? L"i" : L"");
                        if (md->DisplayModes[i].rawmode)
                                _tcscat (tmp, L" (*)");
                        SendDlgItemMessage(hDlg, IDC_RESOLUTION, CB_ADDSTRING, 0, (LPARAM)tmp);
@@ -6172,6 +6174,7 @@ static void values_from_chipsetdlg (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l
 static INT_PTR CALLBACK ChipsetDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
        static int recursive = 0;
+       TCHAR buffer[MAX_DPATH];
 
        switch (msg) {
        case WM_INITDIALOG:
@@ -6180,7 +6183,8 @@ static INT_PTR CALLBACK ChipsetDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR
 
                SendDlgItemMessage (hDlg, IDC_CS_EXT, CB_RESETCONTENT, 0, 0);
                SendDlgItemMessage (hDlg, IDC_CS_EXT, CB_ADDSTRING, 0, (LPARAM)L"");
-               SendDlgItemMessage (hDlg, IDC_CS_EXT, CB_ADDSTRING, 0, (LPARAM)L"Generic");
+               WIN32GUI_LoadUIString(IDS_GENERIC, buffer, sizeof buffer / sizeof (TCHAR));
+               SendDlgItemMessage (hDlg, IDC_CS_EXT, CB_ADDSTRING, 0, (LPARAM)buffer);
                SendDlgItemMessage (hDlg, IDC_CS_EXT, CB_ADDSTRING, 0, (LPARAM)L"CDTV");
                SendDlgItemMessage (hDlg, IDC_CS_EXT, CB_ADDSTRING, 0, (LPARAM)L"CD32");
                SendDlgItemMessage (hDlg, IDC_CS_EXT, CB_ADDSTRING, 0, (LPARAM)L"A500");
@@ -6196,7 +6200,8 @@ static INT_PTR CALLBACK ChipsetDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR
 
                SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_RESETCONTENT, 0, 0);
                SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_ADDSTRING, 0, (LPARAM)L"-");
-               SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_ADDSTRING, 0, (LPARAM)L"Autodetect");
+               WIN32GUI_LoadUIString(IDS_AUTODETECT, buffer, sizeof buffer / sizeof (TCHAR));
+               SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_ADDSTRING, 0, (LPARAM)buffer);
                SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_ADDSTRING, 0, (LPARAM)L"A2024");
                SendDlgItemMessage (hDlg, IDC_MONITOREMU, CB_ADDSTRING, 0, (LPARAM)L"Graffiti");
 
@@ -9774,10 +9779,10 @@ static void addfloppytype (HWND hDlg, int n)
                }
                CheckDlgButton (hDlg, f_enable, state ? BST_CHECKED : BST_UNCHECKED);
        }
-       chk = !showcd && disk_getwriteprotect (text) && state == TRUE ? BST_CHECKED : 0;
+       chk = !showcd && disk_getwriteprotect (&workprefs, text) && state == TRUE ? BST_CHECKED : 0;
        if (f_wp >= 0)
                CheckDlgButton (hDlg, f_wp, chk);
-       chk = !showcd && state && DISK_validate_filename (text, 0, NULL, NULL, NULL) ? TRUE : FALSE;
+       chk = !showcd && state && DISK_validate_filename (&workprefs, text, 0, NULL, NULL, NULL) ? TRUE : FALSE;
        if (f_wp >= 0) {
                ew (hDlg, f_wp, chk);
                if (f_wptext >= 0)
@@ -9888,7 +9893,7 @@ static void addallfloppies (HWND hDlg)
 static void floppysetwriteprotect (HWND hDlg, int n, bool writeprotected)
 {
        if (!iscd (n)) {
-               disk_setwriteprotect (n, workprefs.floppyslots[n].df, writeprotected);
+               disk_setwriteprotect (&workprefs, n, workprefs.floppyslots[n].df, writeprotected);
                addfloppytype (hDlg, n);
        }
 }
@@ -10729,6 +10734,23 @@ static void values_from_gameportsdlg (HWND hDlg, int d)
 
 }
 
+static int midi2dev (struct midiportinfo **mid, int idx, int def)
+{
+       if (idx < 0)
+               return def;
+       if (mid[idx] == NULL)
+               return def;
+       return mid[idx]->devid;
+}
+static int midi2devidx (struct midiportinfo **mid, int devid)
+{
+       for (int i = 0; i < MAX_MIDI_PORTS; i++) {
+               if (mid[i] != NULL && mid[i]->devid == devid)
+                       return i;
+       }
+       return -1;
+}
+
 static void values_from_portsdlg (HWND hDlg)
 {
        int v;
@@ -10774,11 +10796,11 @@ static void values_from_portsdlg (HWND hDlg)
 #endif
        }
 
-       workprefs.win32_midioutdev = SendDlgItemMessage (hDlg, IDC_MIDIOUTLIST, CB_GETCURSEL, 0, 0) - 2;
+       workprefs.win32_midioutdev = midi2dev (midioutportinfo, SendDlgItemMessage (hDlg, IDC_MIDIOUTLIST, CB_GETCURSEL, 0, 0) - 1, -2);
        if (bNoMidiIn || workprefs.win32_midioutdev < -1) {
                workprefs.win32_midiindev = -1;
        } else {
-               workprefs.win32_midiindev = SendDlgItemMessage (hDlg, IDC_MIDIINLIST, CB_GETCURSEL, 0, 0) - 1;
+               workprefs.win32_midiindev = midi2dev (midiinportinfo, SendDlgItemMessage (hDlg, IDC_MIDIINLIST, CB_GETCURSEL, 0, 0) - 1, -1);
        }
        ew (hDlg, IDC_MIDIINLIST, workprefs.win32_midioutdev < -1 ? FALSE : TRUE);
 
@@ -10859,9 +10881,9 @@ static void values_to_portsdlg (HWND hDlg)
        SetDlgItemText (hDlg, IDC_PS_PARAMS, workprefs.ghostscript_parameters);
 
        SendDlgItemMessage (hDlg, IDC_PRINTERLIST, CB_SETCURSEL, result, 0);
-       SendDlgItemMessage (hDlg, IDC_MIDIOUTLIST, CB_SETCURSEL, workprefs.win32_midioutdev + 2, 0);
+       SendDlgItemMessage (hDlg, IDC_MIDIOUTLIST, CB_SETCURSEL, midi2devidx (midioutportinfo, workprefs.win32_midioutdev) + 1, 0);
        if (workprefs.win32_midiindev >= 0)
-               SendDlgItemMessage (hDlg, IDC_MIDIINLIST, CB_SETCURSEL, workprefs.win32_midiindev + 1, 0);
+               SendDlgItemMessage (hDlg, IDC_MIDIINLIST, CB_SETCURSEL, midi2devidx (midiinportinfo, workprefs.win32_midiindev) + 1, 0);
        else
                SendDlgItemMessage (hDlg, IDC_MIDIINLIST, CB_SETCURSEL, 0, 0);
        ew (hDlg, IDC_MIDIINLIST, workprefs.win32_midioutdev < -1 ? FALSE : TRUE);
index 805693b5e852fbf090d4dc4a13815b8842c2b2a1..0ed511faf6ca46eb41340a1b593cbe39f8b35fe2 100644 (file)
@@ -1,8 +1,25 @@
 
+Beta 15:
+
+- Append 'i' to PC resolutions that are interlaced. (TV Out, VGA + 15KHz hacks etc..)
+- Low latency Amiga interlace mode odd/even fields are now in sync with output's odd/even fields,
+  if output resolution is also interlaced.
+- Set cpu speed to "real" if it was fastest possible originally when switching cycle-exact on the fly
+  using uae-configuration.
+- MIDI device IDs are correct again (b1)
+- Display panel displaydata PAL/NTSC/etc select box now mirrors currently active emulated setting.
+- "Default refresh rate" skipped every other frame in DirectDraw mode (b14)
+- gfx_autoresolution_min_vertical and gfx_autoresolution_min_horizontal support on the fly adjustment
+  using uae-configuration.
+- Write winuaebootlog.txt to Windows temp directory if original directory is read-only.
+- Directory harddrives configured as unbootable are now really unbootable under KS 1.3.
+- Mequa's optimized Akiko C2P added.
+- HID raw input mask overflow when HID bitsize was 32. (PPJoy)
+
 Beta 14:
 
 - Input panel qualifier key/button support. I think this was requested many many years ago.
-  (I didn't originally plan to this now but someone reminded me few days ago..)
+  (I didn't originally plan to do this now but someone reminded me few days ago..)
   - Any key or button can be configured as a qualifier (like a shift or control key that modifies behavior
     of other keys)
   - Any Input Target can be configured to require qualifiers. Input Target only triggers if it's
@@ -105,7 +122,7 @@ Beta 9:
   accept it and new vsync can work with buffer smaller than old 1. (Buffer size "0" or "1/2" would have
   been too confusing..) In other words, if you load old configuration, only value shown in GUI increases by one,
   real buffer size does not change.
-- Fixed Graffiti emulation crash in if Graffiti hires mode was detected but emulation was
+- Fixed Graffiti emulation crash if Graffiti hires mode was detected but emulation was
   not configured for superhires support. (Only in some situations)
 - Disable genlock detected option if A2024 or Graffiti enabled, this is impossible configuration and would only slow down
   emulation (forces Graffiti emulation to keep looking for command codes continuously)
index 42adb507d9c5b5ade9c841d895e7dee65041948b..53f6ff2a25e0a5ab23f9fcfe4c24ca20f821ceb6 100644 (file)
@@ -546,8 +546,17 @@ FILE *log_open (const TCHAR *name, int append, int bootlog)
        cs_init = 1;
 
        if (name != NULL) {
-               if (bootlog >= 0)
+               if (bootlog >= 0) {
                        f = _tfopen (name, append ? L"a, ccs=UTF-8" : L"wt, ccs=UTF-8");
+                       if (!f && bootlog) {
+                               TCHAR tmp[MAX_DPATH];
+                               tmp[0] = 0;
+                               if (GetTempPath (MAX_DPATH, tmp) > 0) {
+                                       _tcscat (tmp, L"glog.txt");
+                                       f = _tfopen (tmp, append ? L"a, ccs=UTF-8" : L"wt, ccs=UTF-8");
+                               }
+                       }
+               }
                bootlogmode = bootlog;
        } else if (1) {
                TCHAR *c = GetCommandLine ();
index 0fb9a714ab8fc65a7ddbdd5141a342c4e1db06cd..5d539b62290cd659f3333e0621efd65c81d37002 100644 (file)
@@ -1657,7 +1657,7 @@ retry2:
                input_record++;
                for (i = 0; i < 4; i++) {
                        bool wp = true;
-                       DISK_validate_filename (currprefs.floppyslots[i].df, false, &wp, NULL, NULL);
+                       DISK_validate_filename (&currprefs, currprefs.floppyslots[i].df, false, &wp, NULL, NULL);
                        inprec_recorddiskchange (i, currprefs.floppyslots[i].df, wp);
                }
                input_record--;