From: Toni Wilen Date: Wed, 27 Jun 2007 12:54:01 +0000 (+0300) Subject: imported winuaesrc1430b7.zip X-Git-Tag: 2100~215 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=96ac9184f4135f519449a2a4a7b4134eded63207;p=francis%2Fwinuae.git imported winuaesrc1430b7.zip --- diff --git a/ar.c b/ar.c index c1d21665..5f784e66 100755 --- a/ar.c +++ b/ar.c @@ -1494,7 +1494,7 @@ static int superiv_init(struct zfile *f) memset (hrtmemory, 0x00, hrtmem_size); if (f) { zfile_fseek (f, 0, SEEK_SET); - zfile_fread (hrtmemory, hrtmem_size, 1, f); + zfile_fread (hrtmemory, 1, hrtmem_size, f); zfile_fclose (f); } @@ -1573,7 +1573,7 @@ int action_replay_load(void) } action_replay_flag = ACTION_REPLAY_INACTIVE; armemory_rom = (uae_u8*)xmalloc (ar_rom_file_size); - zfile_fread (armemory_rom, ar_rom_file_size, 1, f); + zfile_fread (armemory_rom, 1, ar_rom_file_size, f); zfile_fclose (f); if (ar_rom_file_size == 65536) { armodel = 1; @@ -1723,7 +1723,7 @@ int hrtmon_load(void) hrtmemory = mapped_malloc (hrtmem_size, cart_memnames[cart_type]); memset (hrtmemory, 0xff, 0x80000); zfile_fseek (f, 0, SEEK_SET); - zfile_fread (hrtmemory, 524288, 1, f); + zfile_fread (hrtmemory, 1, 524288, f); zfile_fclose (f); hrtmon_configure(); hrtmon_custom = hrtmemory + 0x08f000; diff --git a/archivers/dms/pfile.c b/archivers/dms/pfile.c index dd5f1cc1..540d47e0 100755 --- a/archivers/dms/pfile.c +++ b/archivers/dms/pfile.c @@ -239,6 +239,7 @@ USHORT DMS_Process_File(struct zfile *fi, struct zfile *fo, USHORT cmd, USHORT o static USHORT Process_Track(struct zfile *fi, struct zfile *fo, UCHAR *b1, UCHAR *b2, USHORT cmd, USHORT opt, USHORT pwd){ USHORT hcrc, dcrc, usum, number, pklen1, pklen2, unpklen, l; UCHAR cmode, flags; + int crcerr = 0; l = (USHORT)zfile_fread(b1,1,THLEN,fi); @@ -286,7 +287,7 @@ static USHORT Process_Track(struct zfile *fi, struct zfile *fo, UCHAR *b1, UCHAR if (CreateCRC(b1,(ULONG)pklen1) != dcrc) { log_error (number); - //return ERR_TDCRC; + crcerr = 1; } /* track 80 is FILEID.DIZ, track 0xffff (-1) is Banner */ /* and track 0 with 1024 bytes only is a fake boot block with more advertising */ @@ -295,10 +296,15 @@ static USHORT Process_Track(struct zfile *fi, struct zfile *fo, UCHAR *b1, UCHAR //if (pwd && (number!=80)) dms_decrypt(b1,pklen1); if ((cmd == CMD_UNPACK) && (number<80) && (unpklen>2048)) { - Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum); + memset(b2, 0, unpklen); + if (!crcerr) + Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum); if (zfile_fwrite(b2,1,(size_t)unpklen,fo) != unpklen) return ERR_CANTWRITE; } + if (crcerr) + return NO_PROBLEM; + if ((cmd == CMD_SHOWBANNER) && (number == 0xffff)){ Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum); printbandiz(b2,unpklen); @@ -382,11 +388,12 @@ static void dms_decrypt(UCHAR *p, USHORT len, UCHAR *src){ static USHORT Unpack_Track(UCHAR *b1, UCHAR *b2, USHORT pklen2, USHORT unpklen, UCHAR cmode, UCHAR flags, USHORT number, USHORT pklen1, USHORT usum1) { - USHORT r, err = NO_PROBLEM, prevpass; + USHORT r, err = NO_PROBLEM; static USHORT pass; int maybeencrypted; int pwrounds; UCHAR *tmp; + USHORT prevpass = 0; if (passfound) { if (number != 80) @@ -406,6 +413,7 @@ static USHORT Unpack_Track(UCHAR *b1, UCHAR *b2, USHORT pklen2, USHORT unpklen, maybeencrypted = 0; tmp = (unsigned char*)malloc (pklen1); memcpy (tmp, b1, pklen1); + memset(b2, 0, unpklen); for (;;) { r = Unpack_Track_2(b1, b2, pklen2, unpklen, cmode, flags); if (r == NO_PROBLEM) { diff --git a/archivers/dms/u_heavy.c b/archivers/dms/u_heavy.c index d717bb59..8b456cb4 100755 --- a/archivers/dms/u_heavy.c +++ b/archivers/dms/u_heavy.c @@ -24,7 +24,7 @@ USHORT left[2 * NC - 1], right[2 * NC - 1 + 9]; static UCHAR c_len[NC], pt_len[NPT]; static USHORT c_table[4096], pt_table[256]; -static USHORT lastlen, np; +USHORT lastlen, np; USHORT heavy_text_loc; diff --git a/archivers/dms/u_init.c b/archivers/dms/u_init.c index 8b002882..480c2d8d 100755 --- a/archivers/dms/u_init.c +++ b/archivers/dms/u_init.c @@ -16,6 +16,7 @@ #include "u_deep.h" #include "u_heavy.h" +extern USHORT lastlen, np; void Init_Decrunchers(void){ quick_text_loc = 251; @@ -24,5 +25,7 @@ void Init_Decrunchers(void){ deep_text_loc = 0x3fc4; init_deep_tabs = 1; memset(text,0,0x3fc8); + lastlen = 0; + np = 0; } diff --git a/cdtv.c b/cdtv.c index c2d8ad8c..6649a58e 100755 --- a/cdtv.c +++ b/cdtv.c @@ -9,8 +9,8 @@ * */ -#define CDTV_DEBUG -#define CDTV_DEBUG_CMD +//#define CDTV_DEBUG +//#define CDTV_DEBUG_CMD //#define CDTV_DEBUG_6525 #include "sysconfig.h" diff --git a/cfgfile.c b/cfgfile.c index 1d897fac..9e1dabf1 100755 --- a/cfgfile.c +++ b/cfgfile.c @@ -1639,7 +1639,7 @@ static void subst (char *p, char *f, int n) free (str); } -static char *cfg_fgets (char *line, int max, FILE *fh) +static char *cfg_fgets (char *line, int max, struct zfile *fh) { #ifdef SINGLEFILE extern char singlefile_config[]; @@ -1648,7 +1648,7 @@ static char *cfg_fgets (char *line, int max, FILE *fh) #endif if (fh) - return fgets (line, max, fh); + return zfile_fgets (line, max, fh); #ifdef SINGLEFILE if (sfile_ptr == 0) { sfile_ptr = singlefile_config; @@ -1678,7 +1678,7 @@ static char *cfg_fgets (char *line, int max, FILE *fh) static int cfgfile_load_2 (struct uae_prefs *p, const char *filename, int real, int *type) { int i; - FILE *fh; + struct zfile *fh; char line[CONFIG_BLEN], line1b[CONFIG_BLEN], line2b[CONFIG_BLEN]; struct strlist *sl; int type1 = 0, type2 = 0, askedtype = 0; @@ -1693,7 +1693,7 @@ static int cfgfile_load_2 (struct uae_prefs *p, const char *filename, int real, reset_inputdevice_config (p); } - fh = fopen (filename, "r"); + fh = zfile_fopen (filename, "r"); #ifndef SINGLEFILE if (! fh) return 0; @@ -1730,8 +1730,7 @@ static int cfgfile_load_2 (struct uae_prefs *p, const char *filename, int real, if (type && *type == 0) *type = CONFIG_TYPE_HARDWARE | CONFIG_TYPE_HOST; - if (fh) - fclose (fh); + zfile_fclose (fh); if (!real) return 1; diff --git a/custom.c b/custom.c index 30ec4efc..f6819ea3 100755 --- a/custom.c +++ b/custom.c @@ -2473,6 +2473,7 @@ static void perform_copper_write (int old_hpos); static void immediate_copper (int num) { int pos = 0; + int oldpos = 0; cop_state.state = COP_stop; cop_state.vpos = vpos; @@ -2480,16 +2481,19 @@ static void immediate_copper (int num) cop_state.ip = num == 1 ? cop1lc : cop2lc; while (pos < (maxvpos << 5)) { + if (oldpos > pos) + pos = oldpos; if (!dmaen(DMA_COPPER)) break; if (cop_state.ip >= currprefs.chipmem_size) break; pos++; + oldpos = pos; cop_state.i1 = chipmem_agnus_wget (cop_state.ip); cop_state.i2 = chipmem_agnus_wget (cop_state.ip + 2); cop_state.ip += 4; if (!(cop_state.i1 & 1)) { // move - cop_state.i1 &= 0x1ff; + cop_state.i1 &= 0x1fe; if (cop_state.i1 == 0x88) { cop_state.ip = cop1lc; continue; diff --git a/filesys.c b/filesys.c index 46c90262..347cf7b5 100755 --- a/filesys.c +++ b/filesys.c @@ -106,7 +106,8 @@ typedef struct { uaecptr startup; char *volname; /* volume name, e.g. CDROM, WORK, etc. */ int volflags; /* volume flags, readonly, stream uaefsdb support */ - char *rootdir; /* root unix directory */ + char *rootdir; /* root native directory/hdf */ + char *rootdirdiff; /* "diff" file/directory */ int readonly; /* disallow write access? */ int bootpri; /* boot priority */ int devno; diff --git a/include/memory.h b/include/memory.h index c5729b52..8f345e78 100755 --- a/include/memory.h +++ b/include/memory.h @@ -341,6 +341,11 @@ extern void a3000_fakekick(int); #define ROMTYPE_ARCADIAGAME 1024 #define ROMTYPE_HRTMON 2048 +struct romheader { + char *name; + int id; +}; + struct romdata { char *name; int ver, rev; @@ -351,6 +356,7 @@ struct romdata { int cpu; int cloanto; int type; + int title; uae_u32 crc32; uae_u32 sha1[5]; char *configname; diff --git a/include/zfile.h b/include/zfile.h index 456d9539..4588b4fc 100755 --- a/include/zfile.h +++ b/include/zfile.h @@ -20,6 +20,7 @@ extern int zfile_fseek (struct zfile *z, long offset, int mode); extern long zfile_ftell (struct zfile *z); extern size_t zfile_fread (void *b, size_t l1, size_t l2, struct zfile *z); extern size_t zfile_fwrite (void *b, size_t l1, size_t l2, struct zfile *z); +extern char *zfile_fgets(char *s, int size, struct zfile *z); extern size_t zfile_fputs (struct zfile *z, char *s); extern int zfile_getc (struct zfile *z); extern int zfile_ferror (struct zfile *z); diff --git a/memory.c b/memory.c index 45ccbe31..036fc340 100755 --- a/memory.c +++ b/memory.c @@ -104,131 +104,137 @@ struct romdata *getromdatabypath(char *path) #define NEXT_ROM_ID 65 +static struct romheader romheaders[] = { + { "Freezer Cartridges", 1 }, + { "Arcadia Games", 2 }, + { NULL, 0 } +}; + static struct romdata roms[] = { - { "Cloanto Amiga Forever ROM key", 0, 0, 0, 0, 0, 2069, 0, 0, 1, ROMTYPE_KEY, + { "Cloanto Amiga Forever ROM key", 0, 0, 0, 0, 0, 2069, 0, 0, 1, ROMTYPE_KEY, 0, 0x869ae1b1, 0x801bbab3,0x2e3d3738,0x6dd1636d,0x4f1d6fa7,0xe21d5874 }, - { "Cloanto Amiga Forever 2006 ROM key", 0, 0, 0, 0, 0, 750, 48, 0, 1, ROMTYPE_KEY, + { "Cloanto Amiga Forever 2006 ROM key", 0, 0, 0, 0, 0, 750, 48, 0, 1, ROMTYPE_KEY, 0, 0xb01c4b56, 0xbba8e5cd,0x118b8d92,0xafed5693,0x5eeb9770,0x2a662d8f }, - { "KS ROM v1.0 (A1000)(NTSC)", 1, 0, 1, 0, "A1000\0", 262144, 1, 0, 0, ROMTYPE_KICK, + { "KS ROM v1.0 (A1000)(NTSC)", 1, 0, 1, 0, "A1000\0", 262144, 1, 0, 0, ROMTYPE_KICK, 0, 0x299790ff, 0x00C15406,0xBEB4B8AB,0x1A16AA66,0xC05860E1,0xA7C1AD79 }, - { "KS ROM v1.1 (A1000)(NTSC)", 1, 1, 31, 34, "A1000\0", 262144, 2, 0, 0, ROMTYPE_KICK, + { "KS ROM v1.1 (A1000)(NTSC)", 1, 1, 31, 34, "A1000\0", 262144, 2, 0, 0, ROMTYPE_KICK, 0, 0xd060572a, 0x4192C505,0xD130F446,0xB2ADA6BD,0xC91DAE73,0x0ACAFB4C}, - { "KS ROM v1.1 (A1000)(PAL)", 1, 1, 31, 34, "A1000\0", 262144, 3, 0, 0, ROMTYPE_KICK, + { "KS ROM v1.1 (A1000)(PAL)", 1, 1, 31, 34, "A1000\0", 262144, 3, 0, 0, ROMTYPE_KICK, 0, 0xec86dae2, 0x16DF8B5F,0xD524C5A1,0xC7584B24,0x57AC15AF,0xF9E3AD6D }, - { "KS ROM v1.2 (A1000)", 1, 2, 33, 166, "A1000\0", 262144, 4, 0, 0, ROMTYPE_KICK, + { "KS ROM v1.2 (A1000)", 1, 2, 33, 166, "A1000\0", 262144, 4, 0, 0, ROMTYPE_KICK, 0, 0x9ed783d0, 0x6A7BFB5D,0xBD6B8F17,0x9F03DA84,0xD8D95282,0x67B6273B }, - { "KS ROM v1.2 (A500,A1000,A2000)", 1, 2, 33, 180, "A500\0A1000\0A2000\0", 262144, 5, 0, 0, ROMTYPE_KICK, + { "KS ROM v1.2 (A500,A1000,A2000)", 1, 2, 33, 180, "A500\0A1000\0A2000\0", 262144, 5, 0, 0, ROMTYPE_KICK, 0, 0xa6ce1636, 0x11F9E62C,0xF299F721,0x84835B7B,0x2A70A163,0x33FC0D88 }, - { "KS ROM v1.3 (A500,A1000,A2000)", 1, 3, 34, 5, "A500\0A1000\0A2000\0", 262144, 6, 0, 0, ROMTYPE_KICK, + { "KS ROM v1.3 (A500,A1000,A2000)", 1, 3, 34, 5, "A500\0A1000\0A2000\0", 262144, 6, 0, 0, ROMTYPE_KICK, 0, 0xc4f0f55f, 0x891E9A54,0x7772FE0C,0x6C19B610,0xBAF8BC4E,0xA7FCB785 }, - { "KS ROM v1.3 (A3000)", 1, 3, 34, 5, "A3000\0", 262144, 32, 0, 0, ROMTYPE_KICK, + { "KS ROM v1.3 (A3000)(SK)", 1, 3, 34, 5, "A3000\0", 262144, 32, 0, 0, ROMTYPE_KICK, 0, 0xe0f37258, 0xC39BD909,0x4D4E5F4E,0x28C1411F,0x30869504,0x06062E87 }, - { "KS ROM v1.4 (A3000)", 1, 4, 36, 16, "A3000\0", 524288, 59, 3, 0, ROMTYPE_KICK, + { "KS ROM v1.4 (A3000)", 1, 4, 36, 16, "A3000\0", 524288, 59, 3, 0, ROMTYPE_KICK, 0, 0xbc0ec13f, 0xF76316BF,0x36DFF14B,0x20FA349E,0xD02E4B11,0xDD932B07 }, - { "KS ROM v2.04 (A500+)", 2, 4, 37, 175, "A500+\0", 524288, 7, 0, 0, ROMTYPE_KICK, + { "KS ROM v2.04 (A500+)", 2, 4, 37, 175, "A500+\0", 524288, 7, 0, 0, ROMTYPE_KICK, 0, 0xc3bdb240, 0xC5839F5C,0xB98A7A89,0x47065C3E,0xD2F14F5F,0x42E334A1 }, - { "KS ROM v2.05 (A600)", 2, 5, 37, 299, "A600\0", 524288, 8, 0, 0, ROMTYPE_KICK, + { "KS ROM v2.05 (A600)", 2, 5, 37, 299, "A600\0", 524288, 8, 0, 0, ROMTYPE_KICK, 0, 0x83028fb5, 0x87508DE8,0x34DC7EB4,0x7359CEDE,0x72D2E3C8,0xA2E5D8DB }, - { "KS ROM v2.05 (A600HD)", 2, 5, 37, 300, "A600HD\0A600\0", 524288, 9, 0, 0, ROMTYPE_KICK, + { "KS ROM v2.05 (A600HD)", 2, 5, 37, 300, "A600HD\0A600\0", 524288, 9, 0, 0, ROMTYPE_KICK, 0, 0x64466c2a, 0xF72D8914,0x8DAC39C6,0x96E30B10,0x859EBC85,0x9226637B }, - { "KS ROM v2.05 (A600HD)", 2, 5, 37, 350, "A600HD\0A600\0", 524288, 10, 0, 0, ROMTYPE_KICK, + { "KS ROM v2.05 (A600HD)", 2, 5, 37, 350, "A600HD\0A600\0", 524288, 10, 0, 0, ROMTYPE_KICK, 0, 0x43b0df7b, 0x02843C42,0x53BBD29A,0xBA535B0A,0xA3BD9A85,0x034ECDE4 }, - { "KS ROM v3.0 (A1200)", 3, 0, 39, 106, "A1200\0", 524288, 11, 0, 0, ROMTYPE_KICK, + { "KS ROM v3.0 (A1200)", 3, 0, 39, 106, "A1200\0", 524288, 11, 0, 0, ROMTYPE_KICK, 0, 0x6c9b07d2, 0x70033828,0x182FFFC7,0xED106E53,0x73A8B89D,0xDA76FAA5 }, - { "KS ROM v3.0 (A4000)", 3, 0, 39, 106, "A4000\0", 524288, 12, 2 | 4, 0, ROMTYPE_KICK, + { "KS ROM v3.0 (A4000)", 3, 0, 39, 106, "A4000\0", 524288, 12, 2 | 4, 0, ROMTYPE_KICK, 0, 0x9e6ac152, 0xF0B4E9E2,0x9E12218C,0x2D5BD702,0x0E4E7852,0x97D91FD7 }, - { "KS ROM v3.1 (A4000)", 3, 1, 40, 70, "A4000\0", 524288, 13, 2 | 4, 0, ROMTYPE_KICK, + { "KS ROM v3.1 (A4000)", 3, 1, 40, 70, "A4000\0", 524288, 13, 2 | 4, 0, ROMTYPE_KICK, 0, 0x2b4566f1, 0x81c631dd,0x096bbb31,0xd2af9029,0x9c76b774,0xdb74076c }, - { "KS ROM v3.1 (A500,A600,A2000)", 3, 1, 40, 63, "A500\0A600\0A2000\0", 524288, 14, 0, 0, ROMTYPE_KICK, + { "KS ROM v3.1 (A500,A600,A2000)", 3, 1, 40, 63, "A500\0A600\0A2000\0", 524288, 14, 0, 0, ROMTYPE_KICK, 0, 0xfc24ae0d, 0x3B7F1493,0xB27E2128,0x30F989F2,0x6CA76C02,0x049F09CA }, - { "KS ROM v3.1 (A1200)", 3, 1, 40, 68, "A1200\0", 524288, 15, 1, 0, ROMTYPE_KICK, + { "KS ROM v3.1 (A1200)", 3, 1, 40, 68, "A1200\0", 524288, 15, 1, 0, ROMTYPE_KICK, 0, 0x1483a091, 0xE2154572,0x3FE8374E,0x91342617,0x604F1B3D,0x703094F1 }, - { "KS ROM v3.1 (A3000)", 3, 1, 40, 68, "A3000\0", 524288, 61, 2, 0, ROMTYPE_KICK, + { "KS ROM v3.1 (A3000)", 3, 1, 40, 68, "A3000\0", 524288, 61, 2, 0, ROMTYPE_KICK, 0, 0xefb239cc, 0xF8E210D7,0x2B4C4853,0xE0C9B85D,0x223BA20E,0x3D1B36EE }, - { "KS ROM v3.1 (A4000)(Cloanto)", 3, 1, 40, 68, "A4000\0", 524288, 31, 2 | 4, 1, ROMTYPE_KICK, + { "KS ROM v3.1 (A4000)(Cloanto)", 3, 1, 40, 68, "A4000\0", 524288, 31, 2 | 4, 1, ROMTYPE_KICK, 0, 0x43b6dd22, 0xC3C48116,0x0866E60D,0x085E436A,0x24DB3617,0xFF60B5F9 }, - { "KS ROM v3.1 (A4000)", 3, 1, 40, 68, "A4000\0", 524288, 16, 2 | 4, 0, ROMTYPE_KICK, + { "KS ROM v3.1 (A4000)", 3, 1, 40, 68, "A4000\0", 524288, 16, 2 | 4, 0, ROMTYPE_KICK, 0, 0xd6bae334, 0x5FE04842,0xD04A4897,0x20F0F4BB,0x0E469481,0x99406F49 }, - { "KS ROM v3.1 (A4000T)", 3, 1, 40, 70, "A4000T\0", 524288, 17, 2 | 4, 0, ROMTYPE_KICK, + { "KS ROM v3.1 (A4000T)", 3, 1, 40, 70, "A4000T\0", 524288, 17, 2 | 4, 0, ROMTYPE_KICK, 0, 0x75932c3a, 0xB0EC8B84,0xD6768321,0xE01209F1,0x1E6248F2,0xF5281A21 }, - { "KS ROM v3.X (A4000)(Cloanto)", 3, 10, 45, 57, "A4000\0", 524288, 46, 2 | 4, 0, ROMTYPE_KICK, + { "KS ROM v3.X (A4000)(Cloanto)", 3, 10, 45, 57, "A4000\0", 524288, 46, 2 | 4, 0, ROMTYPE_KICK, 0, 0x08b69382, 0x81D3AEA3,0x0DB7FBBB,0x4AFEE41C,0x21C5ED66,0x2B70CA53 }, - { "CD32 KS ROM v3.1", 3, 1, 40, 60, "CD32\0", 524288, 18, 1, 0, ROMTYPE_KICKCD32, + { "CD32 KS ROM v3.1", 3, 1, 40, 60, "CD32\0", 524288, 18, 1, 0, ROMTYPE_KICKCD32, 0, 0x1e62d4a5, 0x3525BE88,0x87F79B59,0x29E017B4,0x2380A79E,0xDFEE542D }, - { "CD32 extended ROM", 3, 1, 40, 60, "CD32\0", 524288, 19, 1, 0, ROMTYPE_EXTCD32, + { "CD32 extended ROM", 3, 1, 40, 60, "CD32\0", 524288, 19, 1, 0, ROMTYPE_EXTCD32, 0, 0x87746be2, 0x5BEF3D62,0x8CE59CC0,0x2A66E6E4,0xAE0DA48F,0x60E78F7F }, - { "CD32 ROM (KS + extended)", 3, 1, 40, 60, "CD32\0", 2 * 524288, 64, 1, 0, ROMTYPE_KICKCD32, + { "CD32 ROM (KS + extended)", 3, 1, 40, 60, "CD32\0", 2 * 524288, 64, 1, 0, ROMTYPE_KICKCD32, 0, 0xd3837ae4, 0x06807db3,0x18163745,0x5f4d4658,0x2d9972af,0xec8956d9 }, - { "CDTV extended ROM v1.00", 1, 0, 1, 0, "CDTV\0", 262144, 20, 0, 0, ROMTYPE_EXTCDTV, + { "CDTV extended ROM v1.00", 1, 0, 1, 0, "CDTV\0", 262144, 20, 0, 0, ROMTYPE_EXTCDTV, 0, 0x42baa124, 0x7BA40FFA,0x17E500ED,0x9FED041F,0x3424BD81,0xD9C907BE }, - { "CDTV extended ROM v2.07", 2, 7, 2, 7, "CDTV\0", 262144, 22, 0, 0, ROMTYPE_EXTCDTV, + { "CDTV extended ROM v2.07", 2, 7, 2, 7, "CDTV\0", 262144, 22, 0, 0, ROMTYPE_EXTCDTV, 0, 0xceae68d2, 0x5BC114BB,0xA29F60A6,0x14A31174,0x5B3E2464,0xBFA06846 }, - { "CDTV extended ROM v2.30", 2, 30, 2, 30, "CDTV\0", 262144, 21, 0, 0, ROMTYPE_EXTCDTV, + { "CDTV extended ROM v2.30", 2, 30, 2, 30, "CDTV\0", 262144, 21, 0, 0, ROMTYPE_EXTCDTV, 0, 0x30b54232, 0xED7E461D,0x1FFF3CDA,0x321631AE,0x42B80E3C,0xD4FA5EBB }, - { "A1000 bootstrap ROM", 0, 0, 0, 0, "A1000\0", 8192, 23, 0, 0, ROMTYPE_KICK, + { "A1000 bootstrap ROM", 0, 0, 0, 0, "A1000\0", 8192, 23, 0, 0, ROMTYPE_KICK, 0, 0x62f11c04, 0xC87F9FAD,0xA4EE4E69,0xF3CCA0C3,0x6193BE82,0x2B9F5FE6 }, - { "A1000 bootstrap ROM", 0, 0, 0, 0, "A1000\0", 65536, 24, 0, 0, ROMTYPE_KICK, + { "A1000 bootstrap ROM", 0, 0, 0, 0, "A1000\0", 65536, 24, 0, 0, ROMTYPE_KICK, 0, 0x0b1ad2d0, 0xBA93B8B8,0x5CA0D83A,0x68225CC3,0x3B95050D,0x72D2FDD7 }, - { "Action Replay Mk I v1.00", 1, 0, 1, 0, "AR\0", 65536, 52, 0, 0, ROMTYPE_AR, + { "Action Replay Mk I v1.00", 1, 0, 1, 0, "AR\0", 65536, 52, 0, 0, ROMTYPE_AR, 1, 0x2d921771, 0x1EAD9DDA,0x2DAD2914,0x6441F5EF,0x72183750,0x22E01248 }, - { "Action Replay Mk I v1.50", 1, 50, 1, 50, "AR\0", 65536, 25, 0, 0, ROMTYPE_AR, + { "Action Replay Mk I v1.50", 1, 50, 1, 50, "AR\0", 65536, 25, 0, 0, ROMTYPE_AR, 1, 0xd4ce0675, 0x843B433B,0x2C56640E,0x045D5FDC,0x854DC6B1,0xA4964E7C }, - { "Action Replay Mk II v2.05", 2, 5, 2, 5, "AR\0", 131072, 26, 0, 0, ROMTYPE_AR, + { "Action Replay Mk II v2.05", 2, 5, 2, 5, "AR\0", 131072, 26, 0, 0, ROMTYPE_AR, 1, 0x1287301f, 0xF6601DE8,0x888F0050,0x72BF562B,0x9F533BBC,0xAF1B0074 }, - { "Action Replay Mk II v2.12", 2, 12, 2, 12, "AR\0", 131072, 27, 0, 0, ROMTYPE_AR, + { "Action Replay Mk II v2.12", 2, 12, 2, 12, "AR\0", 131072, 27, 0, 0, ROMTYPE_AR, 1, 0x804d0361, 0x3194A07A,0x0A82D8B5,0xF2B6AEFA,0x3CA581D6,0x8BA8762B }, - { "Action Replay Mk II v2.14", 2, 14, 2, 14, "AR\0", 131072, 28, 0, 0, ROMTYPE_AR, + { "Action Replay Mk II v2.14", 2, 14, 2, 14, "AR\0", 131072, 28, 0, 0, ROMTYPE_AR, 1, 0x49650e4f, 0x255D6DF6,0x3A4EAB0A,0x838EB1A1,0x6A267B09,0x59DFF634 }, - { "Action Replay Mk III v3.09", 3, 9, 3, 9, "AR\0", 262144, 29, 0, 0, ROMTYPE_AR, + { "Action Replay Mk III v3.09", 3, 9, 3, 9, "AR\0", 262144, 29, 0, 0, ROMTYPE_AR, 1, 0x0ed9b5aa, 0x0FF3170A,0xBBF0CA64,0xC9DD93D6,0xEC0C7A01,0xB5436824 }, - { "Action Replay Mk III v3.17", 3, 17, 3, 17, "AR\0", 262144, 30, 0, 0, ROMTYPE_AR, + { "Action Replay Mk III v3.17", 3, 17, 3, 17, "AR\0", 262144, 30, 0, 0, ROMTYPE_AR, 1, 0xc8a16406, 0x5D4987C2,0xE3FFEA8B,0x1B02E314,0x30EF190F,0x2DB76542 }, - { "Action Replay 1200", 0, 0, 0, 0, "AR\0", 262144, 47, 0, 0, ROMTYPE_AR, + { "Action Replay 1200", 0, 0, 0, 0, "AR\0", 262144, 47, 0, 0, ROMTYPE_AR, 1, 0x8d760101, 0x0F6AB834,0x2810094A,0xC0642F62,0xBA42F78B,0xC0B07E6A }, - { "Action Cartridge Super IV Pro (+ROM)", 4, 3, 4, 3, "SUPERIV\0", 170368, 60, 0, 0, ROMTYPE_SUPERIV, + { "Action Cartridge Super IV Pro (+ROM)", 4, 3, 4, 3, "SUPERIV\0", 170368, 60, 0, 0, ROMTYPE_SUPERIV, 1, 0xe668a0be, 0x633A6E65,0xA93580B8,0xDDB0BE9C,0x9A64D4A1,0x7D4B4801 }, - { "Action Cartridge Super IV Pro", 0, 0, 0, 0, "SUPERIV\0", 0, 62, 0, 0, ROMTYPE_SUPERIV, + { "Action Cartridge Super IV Pro", 0, 0, 0, 0, "SUPERIV\0", 0, 62, 0, 0, ROMTYPE_SUPERIV, 1, 0xffffffff, 0, 0, 0, 0, 0, "SuperIV" }, - { "HRTMon (built-in)", 0, 0, 0, 0, "HRTMON\0", 0, 63, 0, 0, ROMTYPE_HRTMON, + { "HRTMon (built-in)", 0, 0, 0, 0, "HRTMON\0", 0, 63, 0, 0, ROMTYPE_HRTMON, 1, 0xffffffff, 0, 0, 0, 0, 0, "HRTMon" }, - { "A590/A2091 SCSI boot ROM", 0, 0, 6, 0, "A590\0A2091\0", 16384, 53, 0, 0, ROMTYPE_A2091BOOT, + { "A590/A2091 SCSI boot ROM", 0, 0, 6, 0, "A590\0A2091\0", 16384, 53, 0, 0, ROMTYPE_A2091BOOT, 0, 0x8396cf4e, 0x5E03BC61,0x8C862ABE,0x7BF79723,0xB4EEF4D2,0x1859A0F2 }, - { "A590/A2091 SCSI boot ROM", 0, 0, 6, 6, "A590\0A2091\0", 16384, 54, 0, 0, ROMTYPE_A2091BOOT, + { "A590/A2091 SCSI boot ROM", 0, 0, 6, 6, "A590\0A2091\0", 16384, 54, 0, 0, ROMTYPE_A2091BOOT, 0, 0x33e00a7a, 0x739BB828,0xE874F064,0x9360F59D,0x26B5ED3F,0xBC99BB66 }, - { "A590/A2091 SCSI boot ROM", 0, 0, 7, 0, "A590\0A2091\0", 16384, 55, 0, 0, ROMTYPE_A2091BOOT, + { "A590/A2091 SCSI boot ROM", 0, 0, 7, 0, "A590\0A2091\0", 16384, 55, 0, 0, ROMTYPE_A2091BOOT, 0, 0x714a97a2, 0xE50F01BA,0xF2899892,0x85547863,0x72A82C33,0x3C91276E }, - { "A590/A2091 SCSI Guru boot ROM", 0, 0, 6, 14, "A590\0A2091\0", 32768, 56, 0, 0, ROMTYPE_A2091BOOT, + { "A590/A2091 SCSI Guru boot ROM", 0, 0, 6, 14, "A590\0A2091\0", 32768, 56, 0, 0, ROMTYPE_A2091BOOT, 0, 0x04e52f93, 0x6DA21B6F,0x5E8F8837,0xD64507CD,0x8A4D5CDC,0xAC4F426B }, - { "A4091 SCSI boot ROM", 0, 0, 40, 9, "A4091\0", 32768, 57, 0, 0, ROMTYPE_A4091BOOT, + { "A4091 SCSI boot ROM", 0, 0, 40, 9, "A4091\0", 32768, 57, 0, 0, ROMTYPE_A4091BOOT, 0, 0x00000000, 0, 0, 0, 0, 0 }, - { "A4091 SCSI boot ROM", 0, 0, 40, 13, "A4091\0", 32768, 58, 0, 0, ROMTYPE_A4091BOOT, + { "A4091 SCSI boot ROM", 0, 0, 40, 13, "A4091\0", 32768, 58, 0, 0, ROMTYPE_A4091BOOT, 0, 0x54cb9e85, 0x3CE66919,0xF6FD6797,0x4923A12D,0x91B730F1,0xFFB4A7BA }, - { "Arcadia OnePlay 2.11", 0, 0, 0, 0, "ARCADIA\0", 0, 49, 0, 0, ROMTYPE_ARCADIABIOS }, - { "Arcadia TenPlay 2.11", 0, 0, 0, 0, "ARCADIA\0", 0, 50, 0, 0, ROMTYPE_ARCADIABIOS }, - { "Arcadia OnePlay 3.00", 0, 0, 0, 0, "ARCADIA\0", 0, 51, 0, 0, ROMTYPE_ARCADIABIOS }, - - { "Arcadia SportTime Table Hockey", 0, 0, 0, 0, "ARCADIA\0", 0, 33, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia SportTime Bowling", 0, 0, 0, 0, "ARCADIA\0", 0, 34, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia World Darts", 0, 0, 0, 0, "ARCADIA\0", 0, 35, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia Magic Johnson's Fast Break", 0, 0, 0, 0, "ARCADIA\0", 0, 36, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia Leader Board Golf", 0, 0, 0, 0, "ARCADIA\0", 0, 37, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia Leader Board Golf (alt)", 0, 0, 0, 0, "ARCADIA\0", 0, 38, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia Ninja Mission", 0, 0, 0, 0, "ARCADIA\0", 0, 39, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia Road Wars", 0, 0, 0, 0, "ARCADIA\0", 0, 40, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia Sidewinder", 0, 0, 0, 0, "ARCADIA\0", 0, 41, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia Spot", 0, 0, 0, 0, "ARCADIA\0", 0, 42, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia Space Ranger", 0, 0, 0, 0, "ARCADIA\0", 0, 43, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia Xenon", 0, 0, 0, 0, "ARCADIA\0", 0, 44, 0, 0, ROMTYPE_ARCADIAGAME }, - { "Arcadia World Trophy Soccer", 0, 0, 0, 0, "ARCADIA\0", 0, 45, 0, 0, ROMTYPE_ARCADIAGAME }, + { "Arcadia OnePlay 2.11", 0, 0, 0, 0, "ARCADIA\0", 0, 49, 0, 0, ROMTYPE_ARCADIABIOS, 0 }, + { "Arcadia TenPlay 2.11", 0, 0, 0, 0, "ARCADIA\0", 0, 50, 0, 0, ROMTYPE_ARCADIABIOS, 0 }, + { "Arcadia OnePlay 3.00", 0, 0, 0, 0, "ARCADIA\0", 0, 51, 0, 0, ROMTYPE_ARCADIABIOS, 0 }, + + { "Arcadia SportTime Table Hockey", 0, 0, 0, 0, "ARCADIA\0", 0, 33, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia SportTime Bowling", 0, 0, 0, 0, "ARCADIA\0", 0, 34, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia World Darts", 0, 0, 0, 0, "ARCADIA\0", 0, 35, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia Magic Johnson's Fast Break", 0, 0, 0, 0, "ARCADIA\0", 0, 36, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia Leader Board Golf", 0, 0, 0, 0, "ARCADIA\0", 0, 37, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia Leader Board Golf (alt)", 0, 0, 0, 0, "ARCADIA\0", 0, 38, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia Ninja Mission", 0, 0, 0, 0, "ARCADIA\0", 0, 39, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia Road Wars", 0, 0, 0, 0, "ARCADIA\0", 0, 40, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia Sidewinder", 0, 0, 0, 0, "ARCADIA\0", 0, 41, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia Spot", 0, 0, 0, 0, "ARCADIA\0", 0, 42, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia Space Ranger", 0, 0, 0, 0, "ARCADIA\0", 0, 43, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia Xenon", 0, 0, 0, 0, "ARCADIA\0", 0, 44, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, + { "Arcadia World Trophy Soccer", 0, 0, 0, 0, "ARCADIA\0", 0, 45, 0, 0, ROMTYPE_ARCADIAGAME, 2 }, { NULL } @@ -613,12 +619,27 @@ static int cmpsha1(uae_u8 *s1, struct romdata *rd) return 0; } +static struct romdata *checkromdata(uae_u8 *sha1, int size, uae_u32 mask) +{ + int i = 0; + while (roms[i].name) { + if (!notcrc32(roms[i].crc32) && roms[i].size >= size) { + if (roms[i].type & mask) { + if (!cmpsha1(sha1, &roms[i])) + return &roms[i]; + } + } + i++; + } + return NULL; +} + struct romdata *getromdatabydata (uae_u8 *rom, int size) { - int i; - uae_u8 sha1a[SHA1_SIZE], sha1b[SHA1_SIZE], sha1c[SHA1_SIZE]; + uae_u8 sha1[SHA1_SIZE]; uae_u8 tmp[4]; uae_u8 *tmpbuf = NULL; + struct romdata *ret = NULL; if (size > 11 && !memcmp (rom, "AMIROMTYPE1", 11)) { uae_u8 *tmpbuf = (uae_u8*)xmalloc (size); @@ -628,25 +649,22 @@ struct romdata *getromdatabydata (uae_u8 *rom, int size) rom = tmpbuf; size = tmpsize; } - get_sha1 (rom, size, sha1a); - get_sha1 (rom, size / 2, sha1b); - /* ignore AR IO-port range until we have full dump */ - memcpy (tmp, rom, 4); - memset (rom, 0, 4); - get_sha1 (rom, size, sha1c); - memcpy (rom, tmp, 4); - i = 0; - while (roms[i].name) { - if (!notcrc32(roms[i].crc32) && roms[i].size >= size) { - if (!cmpsha1(sha1a, &roms[i]) || !cmpsha1(sha1b, &roms[i])) - return &roms[i]; - if (!cmpsha1(sha1c, &roms[i]) && roms[i].type == ROMTYPE_AR) - return &roms[i]; + get_sha1 (rom, size, sha1); + ret = checkromdata(sha1, size, -1); + if (!ret) { + get_sha1 (rom, size / 2, sha1); + ret = checkromdata (sha1, size / 2, -1); + if (!ret) { + /* ignore AR IO-port range until we have full dump */ + memcpy (tmp, rom, 4); + memset (rom, 0, 4); + get_sha1 (rom, size, sha1); + ret = checkromdata (sha1, size, ROMTYPE_AR); + memcpy (rom, tmp, 4); } - i++; } xfree (tmpbuf); - return 0; + return ret; } struct romdata *getromdatabyzfile (struct zfile *f) @@ -2596,10 +2614,6 @@ void memory_reset (void) #ifdef CDTV case EXTENDED_ROM_CDTV: map_banks (&extendedkickmem_bank, 0xF0, 4, 0); - //extendedkickmemory[0x61a2] = 0x60; - //extendedkickmemory[0x61a3] = 0x00; - //extendedkickmemory[0x61a4] = 0x01; - //extendedkickmemory[0x61a5] = 0x1a; break; #endif #ifdef CD32 diff --git a/od-win32/mman.c b/od-win32/mman.c index ff72b9f8..cfa5bcc8 100755 --- a/od-win32/mman.c +++ b/od-win32/mman.c @@ -55,6 +55,18 @@ void *cache_alloc(int size) return virtualallocwithlock(NULL, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); } +#if 0 +static void setworkingset(void) +{ + typedef BOOL (CALLBACK* SETPROCESSWORKINGSETSIZE)(HANDLE,SIZE_T,SIZE_T); + SETPROCESSWORKINGSETSIZE pSetProcessWorkingSetSize; + pSetProcessWorkingSetSize = (SETPROCESSWORKINGSETSIZE)GetProcAddress(GetModuleHandle("kernal32.dll", "GetProcessWorkingSetSize"); + if (!pSetProcessWorkingSetSize) + return; + pSetProcessWorkingSetSize(GetCurrentProcess (), +); +#endif + void init_shm(void) { static int allocated; diff --git a/od-win32/picasso96_win.c b/od-win32/picasso96_win.c index d312941d..1f682a52 100755 --- a/od-win32/picasso96_win.c +++ b/od-win32/picasso96_win.c @@ -111,7 +111,7 @@ static struct ScreenResolution alphacolour = { 640, 480 }; #include "win32gui.h" #include "resource.h" #define UAE_RTG_LIBRARY_VERSION 40 -#define UAE_RTG_LIBRARY_REVISION 3993 +#define UAE_RTG_LIBRARY_REVISION 3994 static void checkrtglibrary(void) { uae_u32 v; diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index ee51734b..bf2bd35f 100755 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -1093,7 +1093,7 @@ BEGIN IDS_PRI_NORMAL "Normal" IDS_PRI_BELOWNORMAL "Below Normal" IDS_PRI_LOW "Low" - IDS_OLDRTGLIBRARY "The installed LIBS:Picasso96/rtg.library (%d.%d) file needs to be updated.\nA newer version is included in the ""Amiga Programs"" directory of the WinUAE distribution archive.\nThe new library fixes graphics problems and increases performance." + IDS_OLDRTGLIBRARY "The installed LIBS:Picasso96/rtg.library (%d.%d) should be updated.\nA newer version is included in the ""Amiga Programs"" directory\n of the WinUAE distribution archive.\n\nNewer library version fixes graphics problems and increases performance." IDS_DEFAULT_AF2005 "Amiga Forever 2005+" IDS_DEFAULT_AF "Amiga Forever" IDS_DEFAULT_WINUAE "WinUAE default (old)" diff --git a/od-win32/win32.h b/od-win32/win32.h index 13d07473..b37abaae 100755 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -15,9 +15,9 @@ #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100) #define GETBDD(x) ((x) % 100) -#define WINUAEBETA 8 +#define WINUAEBETA 7 #define WINUAEPUBLICBETA 1 -#define WINUAEDATE MAKEBD(2007, 6, 23) +#define WINUAEDATE MAKEBD(2007, 6, 27) #define WINUAEEXTRA "" #define WINUAEREV "" diff --git a/od-win32/win32gui.c b/od-win32/win32gui.c index f0f0db29..e6408f13 100755 --- a/od-win32/win32gui.c +++ b/od-win32/win32gui.c @@ -488,12 +488,26 @@ static int addrom (HKEY fkey, struct romdata *rd, char *name) static int scan_rom_2 (struct zfile *f, struct romscandata *rsd) { - struct romdata *rd = scan_single_rom_2 (f); + int i; + char *path = zfile_getname(f); + char *ext = strrchr (path, '.'); + struct romdata *rd; + + if (!ext) + return 0; + ext++; + for (i = 0; uae_archive_extensions[i]; i++) { + if (!stricmp (ext, uae_archive_extensions[i])) { + //zfile_zopen (path, scan_rom_2, rsd); + return 0; + } + } + rd = scan_single_rom_2 (f); if (rd) { - addrom (rsd->fkey, rd, zfile_getname (f)); + addrom (rsd->fkey, rd, path); rsd->got = 1; } - return 1; + return 0; } static int scan_rom (char *path, HKEY fkey) @@ -565,9 +579,9 @@ static void show_rom_list (void) 18, -1, 19, -1, -1, // CD32 20, 21, 22, -1, 6, 32, -1, -1, // CDTV 49, 50, 51, -1, 5, 4, -1, -1, // ARCADIA - 46, -1, -1, // highend - 53, 54, 55, -1, -1, // A2091 - 56, 57, -1, -1, // A4091 + 46, 16, 17, 31, 13, 12, -1, -1, // highend, any 3.x A4000 + 53, 54, 55, -1, -1, // A590/A2091 + //56, 57, -1, -1, // A4091 0, 0, 0 }; @@ -575,7 +589,7 @@ static void show_rom_list (void) WIN32GUI_LoadUIString (IDS_ROM_UNAVAILABLE, unavail, sizeof (avail)); strcat (avail, "\n"); strcat (unavail, "\n"); - p1 = "A500 Boot ROM 1.2\0A500 Boot ROM 1.3\0A500+\0A600\0A1000\0A1200\0A3000\0A4000\0\nCD32\0CDTV\0Arcadia Multi Select\0High end WinUAE\0\nA590/A2091 SCSI Boot ROM\0A4091 SCSI Boot ROM\0\0"; + p1 = "A500 Boot ROM 1.2\0A500 Boot ROM 1.3\0A500+\0A600\0A1000\0A1200\0A3000\0A4000\0\nCD32\0CDTV\0Arcadia Multi Select\0High end WinUAE\0\nA590/A2091 SCSI Boot ROM\0\0"; p = malloc (100000); if (!p) @@ -2811,13 +2825,7 @@ static INT_PTR CALLBACK PathsDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM selpath = numtypes; ptypes[numtypes++] = 0; SendDlgItemMessage (hDlg, IDC_PATHS_DEFAULTTYPE, CB_SETCURSEL, selpath, 0); - if (numtypes > 1) { - EnableWindow(GetDlgItem (hDlg, IDC_PATHS_DEFAULTTYPE), TRUE); - ShowWindow(GetDlgItem (hDlg, IDC_PATHS_DEFAULTTYPE), SW_SHOW); - } else { - EnableWindow(GetDlgItem (hDlg, IDC_PATHS_DEFAULTTYPE), FALSE); - ShowWindow(GetDlgItem (hDlg, IDC_PATHS_DEFAULTTYPE), SW_HIDE); - } + EnableWindow(GetDlgItem (hDlg, IDC_PATHS_DEFAULTTYPE), numtypes > 0 ? TRUE : FALSE); values_to_pathsdialog (hDlg); recursive--; return TRUE; @@ -4269,8 +4277,10 @@ static void values_from_chipsetdlg2 (HWND hDlg, UINT msg, WPARAM wParam, LPARAM workprefs.cs_mbdmac = IsDlgButtonChecked (hDlg, IDC_CS_DMAC2) ? 2 : 0; workprefs.cs_a2091 = IsDlgButtonChecked (hDlg, IDC_CS_A2091) ? 1 : 0; workprefs.cs_a4091 = IsDlgButtonChecked (hDlg, IDC_CS_A4091) ? 1 : 0; +#if 0 if (msg == WM_COMMAND && LOWORD(wParam) == IDC_CS_SCSIMODE) workprefs.scsi = IsDlgButtonChecked (hDlg, IDC_CS_SCSIMODE) ? 2 : 0; +#endif workprefs.cs_cdtvscsi = IsDlgButtonChecked (hDlg, IDC_CS_CDTVSCSI) ? 1 : 0; workprefs.cs_pcmcia = IsDlgButtonChecked (hDlg, IDC_CS_PCMCIA) ? 1 : 0; workprefs.cs_ide = IsDlgButtonChecked (hDlg, IDC_CS_IDE1) ? 1 : (IsDlgButtonChecked (hDlg, IDC_CS_IDE2) ? 2 : 0); @@ -4333,7 +4343,8 @@ static void enable_for_chipsetdlg2 (HWND hDlg) ew (hDlg, IDC_CS_DMAC2, e); ew (hDlg, IDC_CS_A2091, e); ew (hDlg, IDC_CS_A4091, e); - ew (hDlg, IDC_CS_SCSIMODE, TRUE); + ShowWindow (GetDlgItem(hDlg, IDC_CS_SCSIMODE), SW_HIDE); + ew (hDlg, IDC_CS_SCSIMODE, FALSE); ew (hDlg, IDC_CS_CDTVSCSI, e); ew (hDlg, IDC_CS_PCMCIA, e); ew (hDlg, IDC_CS_CD32CD, e); diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index ff1df76e..7237542e 100755 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -1,4 +1,27 @@ +Beta 7: + +- rom scanner detects overdumped roms again +- added "(SK)" to A3000 KS 1.3 ROM name (SuperKickstart disk rip, + this version has never been in ROM chip format, only included + because it comes with AF) +- removed A4091 boot rom from scan result dialog (NCR SCSI won't + be implemented in next version) +- removed add host scsi from advanced chipset (not working) +- added more rom choices to "highend" configuration +- rom scanner didn't write full path to registry (zipped roms) +- command line configuration parameters accept compressed + configuration files ("-f myconfigurations.zip\myconfig.uae") +- some dms compressed files failed to decompress and also took + very long time to finish +- disk history is updating correctly again +- new rtg.library version number bump. added warning if older + library is installed. NOTE: new rtg.library is fully compatible + with older (Win)UAE versions. +- disabled CDTV debug logging +- hrtmon works again +- gzip decompression works again + Beta 6: - rar unpacking double memory deallocation (unrar.dll is still @@ -28,8 +51,7 @@ Beta 6: and ability to replace original archive file with unpacked directory (without .DIR extension) Another future idea is write access (to separate "diff" directory) - - + Note: rar archive inside another archive can not be unpacked without archiveaccess.dll (unrar.dll can't do it without temp files and I refuse to use temp files) diff --git a/scsi.c b/scsi.c index 6d8348e6..59b52b3e 100755 --- a/scsi.c +++ b/scsi.c @@ -110,7 +110,7 @@ struct scsi_data *scsi_alloc_native(int id, int nativeunit) void scsi_reset(void) { - device_func_init (DEVICE_TYPE_SCSI); + //device_func_init (DEVICE_TYPE_SCSI); } void scsi_free(struct scsi_data *sd) diff --git a/zfile.c b/zfile.c index 6cd19afb..3e9e708a 100755 --- a/zfile.c +++ b/zfile.c @@ -202,8 +202,7 @@ struct zfile *zfile_gunzip (struct zfile *z) first = 1; do { zs.next_in = buffer; - zs.avail_in = sizeof (buffer); - zfile_fread (buffer, sizeof (buffer), 1, z); + zs.avail_in = zfile_fread (buffer, 1, sizeof (buffer), z); if (first) { if (inflateInit2_ (&zs, -MAX_WBITS, ZLIB_VERSION, sizeof(z_stream)) != Z_OK) break; @@ -359,36 +358,6 @@ static struct zfile *zuncompress (struct zfile *z) return z; } -static FILE *openzip (char *name, char *zippath) -{ - int i, j; - char v; - - i = strlen (name) - 2; - if (zippath) - zippath[0] = 0; - while (i > 0) { - if (name[i] == '/' || name[i] == '\\' && i > 4) { - v = name[i]; - name[i] = 0; - for (j = 0; plugins_7z[j]; j++) { - int len = strlen (plugins_7z[j]); - if (name[i - len - 1] == '.' && !strcasecmp (name + i - len, plugins_7z[j])) { - FILE *f = fopen (name, "rb"); - if (f) { - if (zippath) - strcpy (zippath, name + i + 1); - return f; - } - break; - } - } - name[i] = v; - } - i--; - } - return 0; -} #ifdef SINGLEFILE extern uae_u8 singlefile_data[]; @@ -445,37 +414,66 @@ static struct zfile *zfile_fopen_nozip (const char *name, const char *mode) return l; } + +static struct zfile *openzip (const char *pname) +{ + int i, j; + char v; + char name[MAX_DPATH]; + char zippath[MAX_DPATH]; + + zippath[0] = 0; + strcpy (name, pname); + i = strlen (name) - 2; + while (i > 0) { + if (name[i] == '/' || name[i] == '\\' && i > 4) { + v = name[i]; + name[i] = 0; + for (j = 0; plugins_7z[j]; j++) { + int len = strlen (plugins_7z[j]); + if (name[i - len - 1] == '.' && !strcasecmp (name + i - len, plugins_7z[j])) { + struct zfile *f = zfile_fopen_nozip (name, "rb"); + if (f) { + f->zipname = my_strdup(name + i + 1); + return f; + } + break; + } + } + name[i] = v; + } + i--; + } + return 0; +} + static struct zfile *zfile_fopen_2 (const char *name, const char *mode) { struct zfile *l; FILE *f; - char zipname[MAX_DPATH]; if(*name == '\0') return NULL; - l = zfile_create (); - l->name = strdup (name); #ifdef SINGLEFILE if (zfile_opensinglefile (l)) return l; #endif - f = openzip (l->name, zipname); - if (f) { - if (strcmpi (mode, "rb")) { + l = openzip (name); + if (l) { + if (strcmpi (mode, "rb") && strcmpi (mode, "r")) { zfile_fclose (l); - fclose (f); return 0; } - l->zipname = strdup (zipname); - } - if (!f) { - f = fopen (name, mode); + } else { + l = zfile_create (); + l->name = strdup (name); + f = fopen (l->name, mode); if (!f) { zfile_fclose (l); return 0; } + l->f = f; } - l->f = f; return l; } @@ -549,21 +547,23 @@ struct zfile *zfile_dup (struct zfile *zf) int zfile_exists (const char *name) { char fname[2000]; - FILE *f; + struct zfile *f; if (strlen (name) == 0) return 0; manglefilename(fname, name); - f = openzip (fname, 0); + f = openzip (fname); if (!f) { + FILE *f2; manglefilename(fname, name); if (!my_existsfile(fname)) return 0; - f = fopen(fname,"rb"); + f2 = fopen(fname, "rb"); + if (!f2) + return 0; + fclose(f2); } - if (!f) - return 0; - fclose (f); + zfile_fclose (f); return 1; } @@ -650,7 +650,6 @@ size_t zfile_fread (void *b, size_t l1, size_t l2,struct zfile *z) return fread (b, l1, l2, z->f); } - size_t zfile_fwrite (void *b, size_t l1, size_t l2, struct zfile *z) { if (z->data) { @@ -669,12 +668,36 @@ size_t zfile_fwrite (void *b, size_t l1, size_t l2, struct zfile *z) return fwrite (b, l1, l2, z->f); } - size_t zfile_fputs (struct zfile *z, char *s) { return zfile_fwrite (s, strlen (s), 1, z); } +char *zfile_fgets(char *s, int size, struct zfile *z) +{ + if (z->data) { + char *os = s; + int i; + for (i = 0; i < size - 1; i++) { + if (z->seek == z->size) { + if (i == 0) + return NULL; + break; + } + *s = z->data[z->seek++]; + if (*s == '\n') { + s++; + break; + } + s++; + } + *s = 0; + return os; + } else { + return fgets(s, size, z->f); + } +} + int zfile_getc (struct zfile *z) { int out = -1; diff --git a/zfile_archive.c b/zfile_archive.c index 16248800..e952012e 100755 --- a/zfile_archive.c +++ b/zfile_archive.c @@ -160,6 +160,8 @@ struct zfile *archive_access_select (struct zfile *zf, unsigned int id) zipcnt++; zn = zn->next; } + if (first && tmphist[0]) + DISK_history_add (zfile_getname(zf), -1); zfile_fclose_archive (zv); if (z) { zfile_fclose(zf); @@ -276,7 +278,7 @@ struct zfile *archive_access_zip (struct znode *zn) } if (unzOpenCurrentFile (uz) != UNZ_OK) return 0; - z = zfile_fopen_empty (zn->name, zn->size); + z = zfile_fopen_empty (zn->fullname, zn->size); if (z) { err = unzReadCurrentFile (uz, z->data, zn->size); } @@ -399,7 +401,7 @@ struct zfile *archive_access_7z (struct znode *zn) &offset, &outSizeProcessed, &allocImp, &allocTempImp); if (res == SZ_OK) { - z = zfile_fopen_empty (zn->name, zn->size); + z = zfile_fopen_empty (zn->fullname, zn->size); zfile_fwrite (ctx->outBuffer + offset, zn->size, 1, z); } else { write_log("7Z: SzExtract %s returned %d\n", zn->fullname, res); @@ -559,7 +561,7 @@ struct zfile *archive_access_rar (struct znode *zn) goto end; } } - zf = zfile_fopen_empty (zn->name, zn->size); + zf = zfile_fopen_empty (zn->fullname, zn->size); rarunpackzf = zf; if (pRARProcessFile(rc->hArcData, RAR_TEST, NULL, NULL)) { zfile_fclose(zf); @@ -747,7 +749,7 @@ struct zfile *archive_access_arcacc (struct znode *zn) struct aaFileInArchiveInfo fi; memset (&fi, 0, sizeof (fi)); aaGetFileInfo (ah, zn->offset, &fi); - zf = zfile_fopen_empty (zn->name, zn->size); + zf = zfile_fopen_empty (zn->fullname, zn->size); id_w = arcacc_push (zf); err = aaExtract(ah, zn->offset, id_w, writeCallback, &written); if (zf->seek == fi.UncompressedFileSize) @@ -807,7 +809,7 @@ struct zfile *archive_access_plain (struct znode *zn) { struct zfile *z; - z = zfile_fopen_empty (zn->name, zn->size); + z = zfile_fopen_empty (zn->fullname, zn->size); zfile_fread(z->data, zn->size, 1, zn->volume->archive); return z; }