From: Toni Wilen Date: Sat, 2 Jan 2010 15:41:51 +0000 (+0200) Subject: imported winuaesrc2020b1.zip X-Git-Tag: 2100~39 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=7cbe47bc7111e80b01768bf9cdd064ec3fcb89f1;p=francis%2Fwinuae.git imported winuaesrc2020b1.zip --- diff --git a/a2091.c b/a2091.c index 6c21e51d..4b1f45de 100644 --- a/a2091.c +++ b/a2091.c @@ -17,6 +17,7 @@ #include "options.h" #include "uae.h" #include "memory.h" +#include "rommgr.h" #include "custom.h" #include "newcpu.h" #include "debug.h" diff --git a/akiko.c b/akiko.c index 6cc35e0f..5e780193 100644 --- a/akiko.c +++ b/akiko.c @@ -131,6 +131,7 @@ static void i2c_do (void) memcpy (cd32_nvram + (nvram_address & ~(NVRAM_PAGE_SIZE - 1)), nvram_writetmp, NVRAM_PAGE_SIZE); nvram_write (nvram_address & ~(NVRAM_PAGE_SIZE - 1), NVRAM_PAGE_SIZE); direction = -1; + gui_flicker_led (LED_MD, 0, 2); #if AKIKO_DEBUG_NVRAM write_log (L"NVRAM write address %04X:", nvram_address & ~(NVRAM_PAGE_SIZE - 1)); for (i = 0; i < NVRAM_PAGE_SIZE; i++) @@ -223,6 +224,7 @@ static void i2c_do (void) if (direction < 0) { memcpy (nvram_writetmp, cd32_nvram + (nvram_address & ~(NVRAM_PAGE_SIZE - 1)), NVRAM_PAGE_SIZE); nvram_writeaddr = nvram_address & (NVRAM_PAGE_SIZE - 1); + gui_flicker_led (LED_MD, 0, 1); } state = I2C_DATA; bitcounter = 0; @@ -766,7 +768,7 @@ static int cdrom_command_led (void) cdrom_led &= ~1; cdrom_led |= v & 1; if (cdrom_led != old) - gui_cd_led (0, cdrom_led); + gui_flicker_led (LED_CD, 0, cdrom_led); if (v & 0x80) { // result wanted? cdrom_result_buffer[0] = cdrom_command; cdrom_result_buffer[1] = cdrom_led & 1; @@ -1169,7 +1171,7 @@ void AKIKO_hsync_handler (void) cdrom_led |= LED_CD_AUDIO; else cdrom_led &= ~LED_CD_AUDIO; - gui_cd_led (0, cdrom_led); + gui_flicker_led (LED_CD, 0, cdrom_led); } if (cdrom_seek_delay <= 0) { cdrom_run_read (); diff --git a/ar.c b/ar.c index 66a459f3..d6829527 100644 --- a/ar.c +++ b/ar.c @@ -201,6 +201,7 @@ #include "options.h" #include "uae.h" #include "memory.h" +#include "rommgr.h" #include "custom.h" #include "newcpu.h" #include "zfile.h" diff --git a/arcadia.c b/arcadia.c index 73c21d64..5053b905 100644 --- a/arcadia.c +++ b/arcadia.c @@ -14,6 +14,7 @@ #include "options.h" #include "uae.h" #include "memory.h" +#include "rommgr.h" #include "custom.h" #include "newcpu.h" #include "debug.h" diff --git a/archivers/dms/pfile.c b/archivers/dms/pfile.c index bf952423..548c446f 100644 --- a/archivers/dms/pfile.c +++ b/archivers/dms/pfile.c @@ -1,11 +1,11 @@ /* - * xDMS v1.3 - Portable DMS archive unpacker - Public Domain - * Written by Andre Rodrigues de la Rocha - * - * Handles the processing of a single DMS archive - * - */ +* xDMS v1.3 - Portable DMS archive unpacker - Public Domain +* Written by Andre Rodrigues de la Rocha +* +* Handles the processing of a single DMS archive +* +*/ #define HEADLEN 56 @@ -48,7 +48,7 @@ UCHAR *text; static void log_error(int track) { - write_log (L"DMS: Ignored error on track %d!\n", track); + write_log (L"DMS: Ignored error on track %d!\n", track); } USHORT DMS_Process_File(struct zfile *fi, struct zfile *fo, USHORT cmd, USHORT opt, USHORT PCRC, USHORT pwd, int part) @@ -108,10 +108,10 @@ USHORT DMS_Process_File(struct zfile *fi, struct zfile *fo, USHORT cmd, USHORT o to = (USHORT) ((b1[18]<<8) | b1[19]); /* Highest track in archive. May be incorrect if archive is "appended" */ if (part && from < 30) { - free(b1); - free(b2); - free(text); - return DMS_FILE_END; + free(b1); + free(b2); + free(text); + return DMS_FILE_END; } pkfsize = (ULONG) ((((ULONG)b1[21])<<16) | (((ULONG)b1[22])<<8) | (ULONG)b1[23]); /* Length of total packed data as in archive */ @@ -208,8 +208,8 @@ USHORT DMS_Process_File(struct zfile *fi, struct zfile *fo, USHORT cmd, USHORT o write_log (L" ------ ------- ------- ------ ---- ---- ---- -----\n"); } -// if (((cmd==CMD_UNPACK) || (cmd==CMD_SHOWBANNER)) && (geninfo & 2) && (!pwd)) -// return ERR_NOPASSWD; + // if (((cmd==CMD_UNPACK) || (cmd==CMD_SHOWBANNER)) && (geninfo & 2) && (!pwd)) + // return ERR_NOPASSWD; ret=NO_PROBLEM; @@ -319,7 +319,7 @@ static USHORT Process_Track(struct zfile *fi, struct zfile *fo, UCHAR *b1, UCHAR else write_log (L" %2d ",(short)number); - write_log (L"%5d %5d %s %04X %04X %04X %0d\n", pklen1, unpklen, modes[cmode], usum, hcrc, dcrc, flags); + write_log (L"%5d %5d %s %04X %04X %04X %0d\n", pklen1, unpklen, modes[cmode], usum, hcrc, dcrc, flags); } if ((pklen1 > TRACK_BUFFER_LEN) || (pklen2 >TRACK_BUFFER_LEN) || (unpklen > TRACK_BUFFER_LEN)) return ERR_BIGTRACK; @@ -327,8 +327,8 @@ static USHORT Process_Track(struct zfile *fi, struct zfile *fo, UCHAR *b1, UCHAR if (zfile_fread(b1,1,(size_t)pklen1,fi) != pklen1) return ERR_SREAD; if (CreateCRC(b1,(ULONG)pklen1) != dcrc) { - log_error (number); - crcerr = 1; + log_error (number); + 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 */ @@ -339,12 +339,12 @@ static USHORT Process_Track(struct zfile *fi, struct zfile *fo, UCHAR *b1, UCHAR if ((cmd == CMD_UNPACK) && (number<80) && (unpklen>2048)) { memset(b2, 0, unpklen); if (!crcerr) - Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum, enc); + Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum, enc); if (zfile_fwrite(b2,1,(size_t)unpklen,fo) != unpklen) return ERR_CANTWRITE; } if (crcerr) - return NO_PROBLEM; + return NO_PROBLEM; if ((cmd == CMD_SHOWBANNER) && (number == 0xffff)){ Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum, enc); @@ -429,80 +429,80 @@ 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, int enc) { - USHORT r, err = NO_PROBLEM; - static USHORT pass; - int maybeencrypted; - int pwrounds; - UCHAR *tmp; - USHORT prevpass = 0; - - if (passfound) { - if (number != 80) - dms_decrypt(b1, pklen1, b1); - r = Unpack_Track_2(b1, b2, pklen2, unpklen, cmode, flags); - if (r == NO_PROBLEM) { - if (usum1 == Calc_CheckSum(b2,(ULONG)unpklen)) - return NO_PROBLEM; - } - log_error(number); - if (passretries <= 0) - return ERR_CSUM; - } - - passretries--; - pwrounds = 0; - 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) { - if (usum1 == Calc_CheckSum(b2,(ULONG)unpklen)) { - passfound = maybeencrypted; - if (passfound) - write_log (L"DMS: decryption key = 0x%04X\n", prevpass); - err = NO_PROBLEM; - pass = prevpass; - break; - } - } - if (number == 80 || !enc) { - err = ERR_CSUM; - break; + USHORT r, err = NO_PROBLEM; + static USHORT pass; + int maybeencrypted; + int pwrounds; + UCHAR *tmp; + USHORT prevpass = 0; + + if (passfound) { + if (number != 80) + dms_decrypt(b1, pklen1, b1); + r = Unpack_Track_2(b1, b2, pklen2, unpklen, cmode, flags); + if (r == NO_PROBLEM) { + if (usum1 == Calc_CheckSum(b2,(ULONG)unpklen)) + return NO_PROBLEM; + } + log_error(number); + if (passretries <= 0) + return ERR_CSUM; } - maybeencrypted = 1; - prevpass = pass; - PWDCRC = pass; - pass++; - dms_decrypt(b1, pklen1, tmp); - pwrounds++; - if (pwrounds == 65536) { - err = ERR_CSUM; - passfound = 0; - break; + + passretries--; + pwrounds = 0; + 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) { + if (usum1 == Calc_CheckSum(b2,(ULONG)unpklen)) { + passfound = maybeencrypted; + if (passfound) + write_log (L"DMS: decryption key = 0x%04X\n", prevpass); + err = NO_PROBLEM; + pass = prevpass; + break; + } + } + if (number == 80 || !enc) { + err = ERR_CSUM; + break; + } + maybeencrypted = 1; + prevpass = pass; + PWDCRC = pass; + pass++; + dms_decrypt(b1, pklen1, tmp); + pwrounds++; + if (pwrounds == 65536) { + err = ERR_CSUM; + passfound = 0; + break; + } } - } - free (tmp); - return err; + free (tmp); + return err; } static void printbandiz(UCHAR *m, USHORT len){ - UCHAR *i,*j; - - i=j=m; - while (i - * - * Lempel-Ziv-Huffman decompression functions used in Heavy 1 & 2 - * compression modes. Based on LZH decompression functions from - * UNIX LHA made by Masaru Oki - * - */ +* xDMS v1.3 - Portable DMS archive unpacker - Public Domain +* Written by Andre Rodrigues de la Rocha +* +* Lempel-Ziv-Huffman decompression functions used in Heavy 1 & 2 +* compression modes. Based on LZH decompression functions from +* UNIX LHA made by Masaru Oki +* +*/ #include "cdata.h" diff --git a/cd32_fmv.c b/cd32_fmv.c index 7ea43cb0..f475af9e 100644 --- a/cd32_fmv.c +++ b/cd32_fmv.c @@ -12,6 +12,7 @@ #include "options.h" #include "memory.h" +#include "rommgr.h" #include "custom.h" #include "newcpu.h" #include "zfile.h" diff --git a/cdtv.c b/cdtv.c index 0f3eebc0..e5154205 100644 --- a/cdtv.c +++ b/cdtv.c @@ -979,7 +979,7 @@ void CDTV_hsync_handler (void) else cd_led &= ~LED_CD_ACTIVE; if (cd_led) - gui_cd_led (0, cd_led); + gui_flicker_led (LED_CD, 0, cd_led); if (cd_media && (tp_cr & 1)) { tp_air |= 1 << 1; @@ -1482,6 +1482,7 @@ void cdtv_battram_write (int addr, int v) if (offset >= CDTV_NVRAM_SIZE) return; + gui_flicker_led (LED_MD, 0, 2); if (cdtv_battram[offset] == v) return; cdtv_battram[offset] = v; @@ -1500,6 +1501,7 @@ uae_u8 cdtv_battram_read (int addr) offset = addr & CDTV_NVRAM_MASK; if (offset >= CDTV_NVRAM_SIZE) return 0; + gui_flicker_led (LED_MD, 0, 1); v = cdtv_battram[offset]; return v; } diff --git a/cfgfile.c b/cfgfile.c index 54444a0f..64cf1d09 100644 --- a/cfgfile.c +++ b/cfgfile.c @@ -22,6 +22,7 @@ #include "gfxfilter.h" #include "savestate.h" #include "memory.h" +#include "rommgr.h" #include "gui.h" #include "newcpu.h" #include "zfile.h" @@ -784,7 +785,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type) cfgfile_write_bool (f, L"cpu_24bit_addressing", p->address_space_24); /* do not reorder end */ - if (currprefs.cpu_cycle_exact) { + if (p->cpu_cycle_exact) { if (p->cpu_frequency) cfgfile_write (f, L"cpu_frequency", L"%d", p->cpu_frequency); if (p->cpu_clock_multiplier) { @@ -1441,17 +1442,6 @@ static struct uaedev_config_info *getuci(struct uae_prefs *p) return NULL; } -static void validatefsname (TCHAR *name, int isdevname) -{ - int i; - for (i = 0; i < _tcslen (name); i++) { - if (name[i] == ':') - name[i] = 0; - if (name[i] == '/') - name[i] = 0; - } -} - struct uaedev_config_info *add_filesys_config (struct uae_prefs *p, int index, TCHAR *devname, TCHAR *volname, TCHAR *rootdir, int readonly, int secspertrack, int surfaces, int reserved, @@ -1482,8 +1472,8 @@ struct uaedev_config_info *add_filesys_config (struct uae_prefs *p, int index, _tcscpy (uci->devname, devname ? devname : L""); _tcscpy (uci->volname, volname ? volname : L""); _tcscpy (uci->rootdir, rootdir ? rootdir : L""); - validatefsname (uci->devname, 1); - validatefsname (uci->volname, 0); + validatedevicename (uci->devname); + validatevolumename (uci->volname); uci->readonly = readonly; uci->sectors = secspertrack; uci->surfaces = surfaces; @@ -1516,7 +1506,7 @@ struct uaedev_config_info *add_filesys_config (struct uae_prefs *p, int index, } } _tcscpy (uci->devname, base2); - validatefsname (uci->devname, 1); + validatedevicename (uci->devname); } s = filesys_createvolname (volname, rootdir, L"Harddrive"); _tcscpy (uci->volname, s); @@ -3121,39 +3111,6 @@ uae_u8 *save_configuration (int *len) return dstbak; } - -static int configure_rom (struct uae_prefs *p, int *rom, int msg) -{ - struct romdata *rd; - TCHAR *path = 0; - int i; - - i = 0; - while (rom[i] >= 0) { - rd = getromdatabyid (rom[i]); - if (!rd) { - i++; - continue; - } - path = romlist_get (rd); - if (path) - break; - i++; - } - if (!path) { - if (msg) - romwarning(rom); - return 0; - } - if (rd->type & (ROMTYPE_KICK | ROMTYPE_KICKCD32)) - _tcscpy (p->romfile, path); - if (rd->type & (ROMTYPE_EXTCD32 | ROMTYPE_EXTCDTV | ROMTYPE_ARCADIABIOS)) - _tcscpy (p->romextfile, path); - if (rd->type & (ROMTYPE_CD32CART | ROMTYPE_ARCADIAGAME | ROMTYPE_HRTMON | ROMTYPE_XPOWER | ROMTYPE_NORDIC | ROMTYPE_AR | ROMTYPE_SUPERIV)) - _tcscpy (p->cartfile, path); - return 1; -} - static void default_prefs_mini (struct uae_prefs *p, int type) { _tcscpy (p->description, L"UAE default A500 configuration"); diff --git a/cia.c b/cia.c index 6948b33b..24c8e558 100644 --- a/cia.c +++ b/cia.c @@ -552,7 +552,7 @@ static void led_vsync (void) led_on = 0; led_times = 0; if (led_changed) - gui_led (0, gui_data.powerled_brightness); + gui_led (LED_POWER, gui_data.powerled_brightness); led_changed = 0; led_cycle = get_cycles (); } diff --git a/consolehook.c b/consolehook.c new file mode 100644 index 00000000..9bf747ce --- /dev/null +++ b/consolehook.c @@ -0,0 +1,107 @@ + + +#include "sysconfig.h" +#include "sysdeps.h" + +#include "options.h" +#include "memory.h" +#include "execlib.h" +#include "disk.h" +#include "rommgr.h" +#include "uae.h" +#include "threaddep/thread.h" +#include "keybuf.h" + +#include "consolehook.h" + +static uaecptr beginio; + +void consolehook_config (struct uae_prefs *p) +{ + int roms[] = { 15, 31, 16, 46, -1 }; + + default_prefs (p, 0); + //p->headless = 1; + p->produce_sound = 0; + p->gfx_resolution = 0; + p->gfx_linedbl = 0; + p->gfx_framerate = 10; + p->immediate_blits = 1; + p->collision_level = 0; + configure_rom (p, roms, 0); + p->cpu_model = 68020; + p->fpu_model = 68882; + p->m68k_speed = -1; + p->cachesize = 8192; + p->cpu_compatible = 0; + p->address_space_24 = 0; + p->chipmem_size = 0x00200000; + p->fastmem_size = 0x00800000; + p->bogomem_size = 0; + p->nr_floppies = 1; + p->dfxtype[1] = DRV_NONE; + p->floppy_speed = 0; + p->start_gui = 0; + p->gfx_size_win.width = 320; + p->gfx_size_win.height = 256; + p->turbo_emulation = 0; + p->win32_automount_drives = 2; + p->win32_automount_cddrives = 2; + + add_filesys_config (p, -1, L"DH0", L"CLIBOOT", L".", 1, 0, 0, 0, 0, 15, NULL, 0, 0); +} + +static void *console_thread (void *v) +{ + uae_set_thread_priority (NULL, 1); + for (;;) { + TCHAR wc = console_getch (); + char c[2]; + + write_log (L"*"); + c[0] = 0; + c[1] = 0; + ua_copy (c, 1, &wc); + record_key_direct ((0x10 << 1) | 0); + record_key_direct ((0x10 << 1) | 1); + } +} + +int consolehook_activate (void) +{ + return console_emulation; +} + +void consolehook_ret (uaecptr condev, uaecptr oldbeginio) +{ + beginio = oldbeginio; + write_log (L"console.device at %08X\n", condev); + + uae_start_thread (L"consolereader", console_thread, NULL, NULL); +} + +uaecptr consolehook_beginio (uaecptr request) +{ + uae_u32 io_data = get_long (request + 40); // 0x28 + uae_u32 io_length = get_long (request + 36); // 0x24 + uae_u32 io_actual = get_long (request + 32); // 0x20 + uae_u32 io_offset = get_long (request + 44); // 0x2c + uae_u16 cmd = get_word (request + 28); + + if (cmd == CMD_WRITE) { + TCHAR *buf; + const char *src = get_real_address (io_data); + int len = io_length; + if (io_length == -1) + len = strlen (src); + buf = xmalloc ((len + 1) * sizeof (TCHAR)); + au_copy (buf, len, src); + buf[len] = 0; + f_out (L"%s", buf); + xfree (buf); + } else if (cmd == CMD_READ) { + + write_log (L"%08x: CMD=%d LEN=%d OFF=%d ACT=%d\n", request, cmd, io_length, io_offset, io_actual); + } + return beginio; +} diff --git a/custom.c b/custom.c index e1ff89db..3c1f3b83 100644 --- a/custom.c +++ b/custom.c @@ -176,6 +176,7 @@ int maxhpos_short = MAXHPOS_PAL; int maxvpos = MAXVPOS_PAL; int maxvpos_max = MAXVPOS_PAL; int minfirstline = VBLANK_ENDLINE_PAL; +int equ_vblank_endline = EQU_ENDLINE_PAL; int vblank_hz = VBLANK_HZ_PAL, fake_vblank_hz, vblank_skip, doublescan; frame_time_t syncbase; static int fmode; @@ -183,7 +184,8 @@ uae_u16 beamcon0, new_beamcon0; uae_u16 vtotal = MAXVPOS_PAL, htotal = MAXHPOS_PAL; static uae_u16 hsstop, hbstrt, hbstop, vsstop, vbstrt, vbstop, hsstrt, vsstrt, hcenter; static int ciavsyncmode; -static int diw_hstrt; +static int diw_hstrt, diw_hstop; +static int diw_hcounter; #define HSYNCTIME (maxhpos * CYCLE_UNIT); @@ -230,8 +232,6 @@ static int bpl1dat_written, bpl1dat_early; static uae_s16 bpl1mod, bpl2mod; static uaecptr prevbpl[2][MAXVPOS][8]; static uaecptr bplpt[8], bplptx[8]; -/* Used as a debugging aid, to offset any bitplane temporarily. */ -int bpl_off[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; /*static int blitcount[256]; blitter debug */ @@ -257,11 +257,12 @@ int plffirstline_total, plflastline_total; static int plfstrt_start, plfstrt, plfstop; static int sprite_minx, sprite_maxx; static int first_bpl_vpos; -static int last_diw_pix_hpos, last_ddf_pix_hpos; +static int last_ddf_pix_hpos; static int last_decide_line_hpos; static int last_fetch_hpos, last_sprite_hpos; static int diwfirstword, diwlastword; static int plfleft_real; +static int last_hdiw; static enum diw_states diwstate, hdiwstate, ddfstate; int first_planes_vpos, last_planes_vpos; int diwfirstword_total, diwlastword_total; @@ -577,23 +578,56 @@ static void remember_ctable_for_border (void) * checked. */ static void decide_diw (int hpos) { - /* Last hpos = hpos + 0.5, eg. normal PAL end hpos is 227.5 * 2 = 455 */ - int pix_hpos = coord_diw_to_window_x (hpos == maxhpos ? hpos * 2 + 1 : hpos * 2); - if (pix_hpos >= diwfirstword && last_diw_pix_hpos < diwfirstword && hdiwstate == DIW_waiting_start) - { + /* Last hpos = hpos + 0.5, eg. normal PAL end hpos is 227.5 * 2 = 455 + OCS Denise: 9 bit hdiw counter does not reset during lines 0 to 9 + (PAL) or lines 0 to 10 (NTSC) + ECS Denise and AGA: no above "features" + */ + + int hdiw = hpos == maxhpos ? hpos * 2 + 1 : hpos * 2 + 2; + + if (!(currprefs.chipset_mask & CSMASK_ECS_DENISE) && vpos <= equ_vblank_endline) { + if (vpos == equ_vblank_endline) + diw_hcounter++; + hdiw = diw_hcounter; + hdiw &= 511; + } + for (;;) { + int lhdiw = hdiw; + if (last_hdiw > lhdiw) + lhdiw = 512; + + if (lhdiw >= diw_hstrt && last_hdiw < diw_hstrt && hdiwstate == DIW_waiting_start) { + if (thisline_decision.diwfirstword == -1) + thisline_decision.diwfirstword = diwfirstword < 0 ? 0 : diwfirstword; + hdiwstate = DIW_waiting_stop; + } + if (lhdiw >= diw_hstop && last_hdiw < diw_hstop && hdiwstate == DIW_waiting_stop) { + if (thisline_decision.diwlastword == -1) + thisline_decision.diwlastword = diwlastword < 0 ? 0 : diwlastword; + hdiwstate = DIW_waiting_start; + } + if (lhdiw != 512) + break; + last_hdiw = 0 - 1; + } + last_hdiw = hdiw; + + +#if 0 + pix_hpos = coord_diw_to_window_x (hdiw); + if (pix_hpos >= diwfirstword && last_diw_pix_hpos < diwfirstword && hdiwstate == DIW_waiting_start) { if (thisline_decision.diwfirstword == -1) thisline_decision.diwfirstword = diwfirstword < 0 ? 0 : diwfirstword; - // hstrt < 2 and ECS Denise: horizontal diw start detector not active - if (diw_hstrt >= 2 || !(currprefs.chipset_mask & CSMASK_ECS_DENISE)) - hdiwstate = DIW_waiting_stop; + hdiwstate = DIW_waiting_stop; } - if (pix_hpos >= diwlastword && last_diw_pix_hpos < diwlastword && hdiwstate == DIW_waiting_stop) - { + if (pix_hpos >= diwlastword && last_diw_pix_hpos < diwlastword && hdiwstate == DIW_waiting_stop) { if (thisline_decision.diwlastword == -1) thisline_decision.diwlastword = diwlastword < 0 ? 0 : diwlastword; hdiwstate = DIW_waiting_start; } last_diw_pix_hpos = pix_hpos; +#endif } static int fetchmode; @@ -1036,7 +1070,7 @@ static void update_toscr_planes (void) STATIC_INLINE void maybe_first_bpl1dat (int hpos) { if (thisline_decision.plfleft != -1) { - // early bpl1day crap fix (Sequential engine animation) + // early bpl1dat crap fix (Sequential engine animation) if (plfleft_real == -1) { int i; for (i = 0; i < thisline_decision.nr_planes; i++) { @@ -1059,7 +1093,7 @@ STATIC_INLINE void maybe_first_bpl1dat (int hpos) STATIC_INLINE void fetch (int nr, int fm, int hpos) { if (nr < bplcon0_planes_limit) { - uaecptr p = bplpt[nr] + bpl_off[nr]; + uaecptr p = bplpt[nr]; bplpt[nr] += 2 << fm; bplptx[nr] += 2 << fm; if (nr == 0) @@ -1349,7 +1383,7 @@ STATIC_INLINE void beginning_of_plane_block (int hpos, int fm) /* The usual inlining tricks - don't touch unless you know what you are doing. */ STATIC_INLINE void long_fetch_ecs (int plane, int nwords, int weird_number_of_bits, int dma) { - uae_u16 *real_pt = (uae_u16 *)pfield_xlateptr (bplpt[plane] + bpl_off[plane], nwords * 2); + uae_u16 *real_pt = (uae_u16 *)pfield_xlateptr (bplpt[plane], nwords * 2); int delay = (plane & 1) ? toscr_delay2 : toscr_delay1; int tmp_nbits = out_nbits; uae_u32 shiftbuffer = todisplay[plane][0]; @@ -1407,7 +1441,7 @@ STATIC_INLINE void long_fetch_ecs (int plane, int nwords, int weird_number_of_bi #ifdef AGA STATIC_INLINE void long_fetch_aga (int plane, int nwords, int weird_number_of_bits, int fm, int dma) { - uae_u32 *real_pt = (uae_u32 *)pfield_xlateptr (bplpt[plane] + bpl_off[plane], nwords * 2); + uae_u32 *real_pt = (uae_u32 *)pfield_xlateptr (bplpt[plane], nwords * 2); int delay = (plane & 1) ? toscr_delay2 : toscr_delay1; int tmp_nbits = out_nbits; uae_u32 *shiftbuffer = todisplay[plane]; @@ -2543,6 +2577,12 @@ static void finish_decisions (void) /* leave free space for possible extra color changes at the end of line */ next_color_change += (HBLANK_OFFSET + 1) / 2; + + diw_hcounter += maxhpos * 2; + if ((currprefs.chipset_mask & CSMASK_ECS_DENISE) || vpos > equ_vblank_endline) { + diw_hcounter = maxhpos * 2; + last_hdiw = 2 - 1; + } } /* Set the state of all decisions to "undecided" for a new scanline. */ @@ -2607,7 +2647,6 @@ static void reset_decisions (void) memset (outword, 0, sizeof outword); last_decide_line_hpos = -1; - last_diw_pix_hpos = -1; last_ddf_pix_hpos = -1; last_sprite_hpos = -1; last_fetch_hpos = -1; @@ -2733,12 +2772,14 @@ void init_hz (void) minfirstline = VBLANK_ENDLINE_PAL; vblank_hz = VBLANK_HZ_PAL; sprite_vblank_endline = VBLANK_SPRITE_PAL; + equ_vblank_endline = EQU_ENDLINE_PAL; } else { maxvpos = MAXVPOS_NTSC; maxhpos = MAXHPOS_NTSC; minfirstline = VBLANK_ENDLINE_NTSC; vblank_hz = VBLANK_HZ_NTSC; sprite_vblank_endline = VBLANK_SPRITE_NTSC; + equ_vblank_endline = EQU_ENDLINE_NTSC; } maxvpos_max = maxvpos; } @@ -2757,6 +2798,7 @@ void init_hz (void) minfirstline = maxvpos - 1; sprite_vblank_endline = minfirstline - 2; maxvpos_max = maxvpos; + equ_vblank_endline = -1; doublescan = htotal <= 164 ? 1 : 0; dumpsync (); hzc = 1; @@ -2827,6 +2869,7 @@ static void calcdiw (void) } diw_hstrt = hstrt; + diw_hstop = hstop; diwfirstword = coord_diw_to_window_x (hstrt); diwlastword = coord_diw_to_window_x (hstop); @@ -4488,7 +4531,7 @@ STATIC_INLINE uae_u16 sprite_fetch (struct sprite *s, int dma, int hpos, int cyc { uae_u16 data = last_custom_value1; if (dma) { - if (cycle) + if (cycle && currprefs.cpu_cycle_exact) s->ptxhpos = hpos; data = last_custom_value1 = chipmem_agnus_wget (s->pt); alloc_cycle (hpos, CYCLE_SPRITE); @@ -4500,12 +4543,9 @@ STATIC_INLINE uae_u16 sprite_fetch (struct sprite *s, int dma, int hpos, int cyc s->pt += 2; return data; } -STATIC_INLINE uae_u16 sprite_fetch2 (struct sprite *s, int dma, int hpos, int cycle, int mode) +STATIC_INLINE uae_u16 sprite_fetch2 (struct sprite *s, int hpos, int cycle, int mode) { - uae_u16 data = last_custom_value1; - if (dma) { - data = last_custom_value1 = chipmem_agnus_wget (s->pt); - } + uae_u16 data = last_custom_value1 = chipmem_agnus_wget (s->pt); s->pt += 2; return data; } @@ -4567,10 +4607,10 @@ STATIC_INLINE void do_sprites_1 (int num, int cycle, int hpos) switch (sprite_width) { case 64: - sprite_fetch2 (s, dma, hpos, cycle, 0); - sprite_fetch2 (s, dma, hpos, cycle, 0); + sprite_fetch2 (s, hpos, cycle, 0); + sprite_fetch2 (s, hpos, cycle, 0); case 32: - sprite_fetch2 (s, dma, hpos, cycle, 0); + sprite_fetch2 (s, hpos, cycle, 0); break; } } else { @@ -4601,10 +4641,10 @@ STATIC_INLINE void do_sprites_1 (int num, int cycle, int hpos) } #endif if (cycle == 0) { - SPRxDATA_1 (dma ? data : sprdata[num][0], num, hpos); + SPRxDATA_1 (data, num, hpos); s->dmacycle = 1; } else { - SPRxDATB_1 (dma ? data : sprdatb[num][0], num, hpos); + SPRxDATB_1 (data, num, hpos); spr_arm (num, 1); } #ifdef AGA @@ -4612,9 +4652,9 @@ STATIC_INLINE void do_sprites_1 (int num, int cycle, int hpos) { case 64: { - uae_u16 data32 = sprite_fetch2 (s, dma, hpos, cycle, 1); - uae_u16 data641 = sprite_fetch2 (s, dma, hpos, cycle, 1); - uae_u16 data642 = sprite_fetch2 (s, dma, hpos, cycle, 1); + uae_u16 data32 = sprite_fetch2 (s, hpos, cycle, 1); + uae_u16 data641 = sprite_fetch2 (s, hpos, cycle, 1); + uae_u16 data642 = sprite_fetch2 (s, hpos, cycle, 1); if (dma) { if (cycle == 0) { sprdata[num][3] = data642; @@ -4630,7 +4670,7 @@ STATIC_INLINE void do_sprites_1 (int num, int cycle, int hpos) break; case 32: { - uae_u16 data32 = sprite_fetch2 (s, dma, hpos, cycle, 1); + uae_u16 data32 = sprite_fetch2 (s, hpos, cycle, 1); if (dma) { if (cycle == 0) sprdata[num][1] = data32; @@ -4651,6 +4691,7 @@ static void do_sprites (int hpos) if (vpos < sprite_vblank_endline) return; + if (doflickerfix () && interlace_seen && (next_lineno & 1)) return; @@ -4762,6 +4803,8 @@ static void adjust_array_sizes (void) static void init_hardware_frame (void) { + int i; + first_bpl_vpos = -1; next_lineno = 0; prev_lineno = -1; @@ -4776,6 +4819,8 @@ static void init_hardware_frame (void) ddflastword_total = 0; plflastline_total = 0; plffirstline_total = maxvpos; + for (i = 0; i < MAX_SPRITES; i++) + spr[i].ptxhpos = MAXHPOS; } void init_hardware_for_drawing_frame (void) @@ -4935,6 +4980,10 @@ static void vsync_handler (void) handle_events (); +#if CUSTOM_DEBUG > 1 + if ((intreq & 0x0020) && (intena & 0x0020)) + write_log (L"vblank interrupt not cleared\n"); +#endif INTREQ (0x8000 | 0x0020); if (bplcon0 & 4) lof ^= 1; @@ -5266,8 +5315,18 @@ static void hsync_handler (void) for (i = 0; i < 4; i++) { alloc_cycle (hp, i == 0 ? CYCLE_STROBE : CYCLE_REFRESH); /* strobe */ #ifdef DEBUGGER - if (debug_dma) - record_dma (i == 0 ? (vpos + 1 == maxvpos + lof ? 0x38 : 0x3c) : 0x1fe, 0xffff, 0xffffffff, hp, vpos, DMARECORD_REFRESH); + if (debug_dma) { + uae_u16 strobe = 0x3c; + if (vpos < equ_vblank_endline) + strobe = 0x38; + else if (vpos < minfirstline) + strobe = 0x3a; + else if (vpos + 1 == maxvpos + lof) + strobe = 0x38; + else if ((currprefs.chipset_mask & CSMASK_ECS_AGNUS) && lol) + strobe = 0x3e; + record_dma (i == 0 ? strobe : 0x1fe, 0xffff, 0xffffffff, hp, vpos, DMARECORD_REFRESH); + } #endif hp += 2; if (hp >= maxhpos) diff --git a/debug.c b/debug.c index 6c54879d..5e9f537c 100644 --- a/debug.c +++ b/debug.c @@ -33,6 +33,7 @@ #include "inputdevice.h" #include "crc32.h" #include "cpummu.h" +#include "rommgr.h" int debugger_active; static uaecptr skipaddr_start, skipaddr_end; @@ -112,8 +113,6 @@ static TCHAR help[] = { L" od Enable/disable Copper vpos/hpos tracing\n" L" ot Copper single step trace\n" L" ob Copper breakpoint\n" - L" O Display bitplane offsets\n" - L" O Offset a bitplane\n" L" H[H] Show PC history (HH=full CPU info) instructions\n" L" C Search for values like energy or lifes in games\n" L" Cl List currently found trainer addresses\n" @@ -3201,16 +3200,6 @@ static void debug_1 (void) break; } case 'O': - if (more_params (&inptr)) { - int plane = readint (&inptr); - int offs = readint (&inptr); - if (plane >= 0 && plane < 8) - bpl_off[plane] = offs; - } else { - int i; - for (i = 0; i < 8; i++) - console_out_f (L"Plane %d offset %d\n", i, bpl_off[i]); - } break; case 'b': if (staterecorder (&inptr)) diff --git a/disk.c b/disk.c index 91f2b73b..e4ccb3c2 100644 --- a/disk.c +++ b/disk.c @@ -74,7 +74,7 @@ static int longwritemode = 0; * W number of tracks (default 2*80=160) * * W reserved -* W type, 0=normal AmigaDOS track, 1 = raw MFM +* W type, 0=normal AmigaDOS track, 1 = raw MFM (upper byte = disk revolutions - 1) * L available space for track in bytes (must be even) * L track length in bits */ @@ -114,6 +114,7 @@ typedef struct { int bitlen, track; unsigned int sync; image_tracktype type; + int revolutions; } trackid; #define MAX_TRACKS (2 * 83) @@ -153,6 +154,7 @@ typedef struct { int mfmpos; int indexoffset; int tracklen; + int revolutions; int prevtracklen; int trackspeed; int dmalen; @@ -620,7 +622,7 @@ static void reset_drive(int i) drv->dskchange_time = 0; drv->buffered_cyl = -1; drv->buffered_side = -1; - gui_led (i + 1, 0); + gui_led (i + LED_DF0, 0); drive_settype_id (drv); _tcscpy (currprefs.df[i], changed_prefs.df[i]); drv->newname[0] = 0; @@ -647,7 +649,7 @@ static void update_drive_gui (int num) gui_data.drive_track[num] = drv->cyl; gui_data.drive_side = side; gui_data.drive_writing[num] = writ; - gui_led (num + 1, gui_data.drive_motor[num]); + gui_led (num + LED_DF0, gui_data.drive_motor[num]); } static void drive_fill_bigbuf (drive * drv,int); @@ -699,6 +701,7 @@ static void updatemfmpos (drive *drv) static void track_reset (drive *drv) { drv->tracklen = FLOPPY_WRITE_LEN * drv->ddhd * 2 * 8; + drv->revolutions = 1; drv->trackspeed = get_floppy_speed (); drv->buffered_side = -1; drv->skipoffset = -1; @@ -725,7 +728,8 @@ static int read_header_ext2 (struct zfile *diskfile, trackid *trackdata, int *nu for (i = 0; i < (*num_tracks); i++) { tid = trackdata + i; zfile_fread (buffer, 2 + 2 + 4 + 4, 1, diskfile); - tid->type = buffer[2] * 256 + buffer[3]; + tid->type = buffer[3]; + tid->revolutions = buffer[2] + 1; tid->len = buffer[5] * 65536 + buffer[6] * 256 + buffer[7]; tid->bitlen = buffer[9] * 65536 + buffer[10] * 256 + buffer[11]; tid->offs = offs; @@ -966,6 +970,7 @@ static int drive_insert (drive * drv, struct uae_prefs *p, int dnum, const TCHAR tid->sync = buffer[0] * 256 + buffer[1]; tid->len = buffer[2] * 256 + buffer[3]; tid->offs = offs; + tid->revolutions = 1; if (tid->sync == 0) { tid->type = TRACK_AMIGADOS; tid->bitlen = 0; @@ -991,6 +996,7 @@ static int drive_insert (drive * drv, struct uae_prefs *p, int dnum, const TCHAR tid->len = 512 * drv->num_secs; tid->bitlen = 0; tid->offs = i * 512 * drv->num_secs; + tid->revolutions = 1; } drv->useturbo = 1; @@ -1040,6 +1046,7 @@ static int drive_insert (drive * drv, struct uae_prefs *p, int dnum, const TCHAR tid->type = TRACK_NONE; tid->len = 512 * drv->num_secs; } + tid->revolutions = 1; tid++; } @@ -1093,6 +1100,7 @@ static int drive_insert (drive * drv, struct uae_prefs *p, int dnum, const TCHAR tid->len = 512 * drv->num_secs; tid->bitlen = 0; tid->offs = i * 512 * drv->num_secs; + tid->revolutions = 1; } } openwritefile (drv, 0); @@ -1577,11 +1585,13 @@ static void drive_fill_bigbuf (drive * drv, int force) drv->multi_revolution = 0; drv->tracktiming[0] = 0; drv->skipoffset = -1; + drv->revolutions = 1; if (drv->writediskfile && drv->writetrackdata[tr].bitlen > 0) { int i; trackid *wti = &drv->writetrackdata[tr]; drv->tracklen = wti->bitlen; + drv->revolutions = wti->revolutions; read_floppy_data (drv->writediskfile, wti, 0, (uae_u8*)drv->bigmfmbuf, (wti->bitlen + 7) / 8); for (i = 0; i < (drv->tracklen + 15) / 16; i++) { uae_u16 *mfm = drv->bigmfmbuf + i; @@ -1660,10 +1670,12 @@ static void diskfile_update (struct zfile *diskfile, trackid *ti, int len, uae_u { uae_u8 buf[2 + 2 + 4 + 4], *zerobuf; + ti->revolutions = 1; ti->bitlen = len; zfile_fseek (diskfile, 8 + 4 + (2 + 2 + 4 + 4) * ti->track, SEEK_SET); memset (buf, 0, sizeof buf); ti->type = type; + buf[2] = 0; buf[3] = ti->type; do_put_mem_long ((uae_u32 *) (buf + 4), ti->len); do_put_mem_long ((uae_u32 *) (buf + 8), ti->bitlen); diff --git a/drawing.c b/drawing.c index f61661dc..6969c5de 100644 --- a/drawing.c +++ b/drawing.c @@ -2468,8 +2468,8 @@ void draw_status_line_single (uae_u8 *buf, int bpp, int y, int totalwidth, uae_u int half = 0; pen_rgb = c1; - if (led >= 1 && led <= 4) { - int pled = led - 1; + if (led >= LED_DF0 && led <= LED_DF3) { + int pled = led - LED_DF0; int track = gui_data.drive_track[pled]; pos = 6 + pled; on_rgb = 0x00cc00; @@ -2489,14 +2489,14 @@ void draw_status_line_single (uae_u8 *buf, int bpp, int y, int totalwidth, uae_u pen_rgb = ledcolor (0x00aaaaaa, rc, gc, bc, alpha); } side = gui_data.drive_side; - } else if (led == 0) { + } else if (led == LED_POWER) { pos = 3; //on = gui_data.powerled_brightness > 0; on_rgb = ((gui_data.powerled_brightness * 10 / 16) + 0x33) << 16; on = gui_data.powerled; //on_rgb = 0xcc0000; off_rgb = 0x330000; - } else if (led == 5) { + } else if (led == LED_CD) { pos = 5; on = gui_data.cd & (LED_CD_AUDIO | LED_CD_ACTIVE); on_rgb = (on & LED_CD_AUDIO) ? 0x00cc00 : 0x0000cc; @@ -2508,7 +2508,7 @@ void draw_status_line_single (uae_u8 *buf, int bpp, int y, int totalwidth, uae_u num1 = -1; num2 = 10; num3 = 12; - } else if (led == 6) { + } else if (led == LED_HD) { pos = 4; on = gui_data.hd; on_rgb = on == 2 ? 0xcc0000 : 0x0000cc; @@ -2516,7 +2516,7 @@ void draw_status_line_single (uae_u8 *buf, int bpp, int y, int totalwidth, uae_u num1 = -1; num2 = 11; num3 = 12; - } else if (led == 7) { + } else if (led == LED_FPS) { int fps = (gui_data.fps + 5) / 10; pos = 2; on_rgb = 0x000000; @@ -2529,7 +2529,7 @@ void draw_status_line_single (uae_u8 *buf, int bpp, int y, int totalwidth, uae_u am = 3; if (num1 == 0) am = 2; - } else if (led == 8) { + } else if (led == LED_CPU) { int idle = (gui_data.idle + 5) / 10; pos = 1; on = framecnt && !picasso_on; @@ -2540,7 +2540,7 @@ void draw_status_line_single (uae_u8 *buf, int bpp, int y, int totalwidth, uae_u num3 = idle % 10; num4 = num1 == 0 ? 13 : -1; am = 3; - } else if (led == 9) { + } else if (led == LED_SND) { int snd = abs(gui_data.sndbuf + 5) / 10; if (snd > 99) snd = 99; @@ -2560,7 +2560,17 @@ void draw_status_line_single (uae_u8 *buf, int bpp, int y, int totalwidth, uae_u on_rgb = 0x0000cc; // "normal" overflow off_rgb = 0x000000; am = 3; - } + } else if (led == LED_MD && gui_data.drive_disabled[3]) { + // DF3 reused as internal non-volatile ram led (cd32/cdtv) + pos = 6 + 3; + on = gui_data.md; + on_rgb = on == 2 ? 0xcc0000 : 0x00cc00; + off_rgb = 0x003300; + num1 = -1; + num2 = -1; + num3 = -1; + } else + return; on_rgb |= 0x33000000; off_rgb |= 0x33000000; if (half > 0) { @@ -2910,8 +2920,7 @@ void vsync_handle_redraw (int long_frame, int lof_changed) if (currprefs.gfx_afullscreen && currprefs.gfx_avsync) flush_screen (0, 0); /* vsync mode */ } - gui_hd_led (-1, 0); - gui_cd_led (-1, 0); + gui_flicker_led (-1, 0, 0); #ifdef AVIOUTPUT frame_drawn (); #endif diff --git a/expansion.c b/expansion.c index 455e9610..198f9142 100644 --- a/expansion.c +++ b/expansion.c @@ -15,6 +15,7 @@ #include "options.h" #include "uae.h" #include "memory.h" +#include "rommgr.h" #include "autoconf.h" #include "custom.h" #include "newcpu.h" diff --git a/filesys.asm b/filesys.asm index b63c4a6f..6c634326 100644 --- a/filesys.asm +++ b/filesys.asm @@ -21,6 +21,7 @@ ; 2008.12.11 mousehack -> tablet driver ; 2008.12.25 mousehack cursor sync ; 2009.01.20 clipboard sharing +; 2009.12.27 console hook AllocMem = -198 FreeMem = -210 @@ -46,16 +47,16 @@ NRF_MAGIC = $80000000 our_seglist: dc.l 0 ; 8 /* NextSeg */ start: - dc.l 9 ;0 12 - bra.w filesys_mainloop ;1 16 + dc.l 9 ;0 12 + bra.w filesys_mainloop ;1 16 dc.l make_dev-start ;2 20 - dc.l filesys_init-start ;3 24 - dc.l exter_server-start ;4 28 + dc.l filesys_init-start ;3 24 + dc.l exter_server-start ;4 28 dc.l bootcode-start ;5 32 - dc.l setup_exter-start ;6 36 - dc.l mh_e-start ;7 40 - dc.l clipboard_init-start ;8 44 - ;48 + dc.l setup_exter-start ;6 36 + dc.l mh_e-start ;7 40 + dc.l clipboard_init-start ;8 44 + ;52 bootcode: lea.l doslibname(pc),a1 @@ -113,6 +114,7 @@ myafterdos move.w #-$48,a0 ;InitCode jsr -$01a4(a6) ;SetFunction (restore original) bsr.w clipboard_init + bsr.w consolehook movem.l (sp)+,d0-d7/a1-a6 rts ;return directly to caller @@ -2387,9 +2389,53 @@ cliphook: moveq #0,d0 rts +consolehook: + move.l 4.w,a6 + moveq #-1,d2 + move.w #$FF38,d0 + moveq #100,d1 + bsr.w getrtbase + jsr (a0) + tst.l d0 + beq.s .ch2 + moveq #0,d2 + jsr -$0084(a6) ;Forbid + lea 350(a6),a0 ;DeviceList + lea con_dev(pc),a1 + jsr -$114(a6) ;FindName + tst.l d0 + beq.s .ch1 + move.l d0,a0 + lea chook(pc),a1 + move.l -$1e+2(a0),a2 ; BeginIO + move.l a1,-$1e+2(a0) + move.l a0,a1 + move.w #$FF38,d0 + moveq #101,d1 + bsr.w getrtbase + jsr (a0) + moveq #1,d2 +.ch1 + jsr -$008a(a6) ;Permit +.ch2 + move.l d2,d0 + rts + +chook: + subq.l #4,sp ; native code fills with original return address + movem.l d0-d1/a0,-(sp) + move.w #$FF38,d0 + moveq #102,d1 + bsr.w getrtbase + jsr (a0) + movem.l (sp)+,d0-d1/a0 + rts + + inp_dev: dc.b 'input.device',0 tim_dev: dc.b 'timer.device',0 +con_dev: dc.b 'console.device',0 devsn_name: dc.b 'DEVS',0 devs_name: dc.b 'DEVS:',0 clip_name: dc.b 'DEVS:clipboard.device',0 diff --git a/filesys.c b/filesys.c index 947c84b7..3d0541f7 100644 --- a/filesys.c +++ b/filesys.c @@ -51,6 +51,7 @@ #include "uaeresource.h" #include "inputdevice.h" #include "clipboard.h" +#include "consolehook.h" #define TRACING_ENABLED 0 #if TRACING_ENABLED @@ -296,9 +297,52 @@ static void stripsemicolon (TCHAR *s) { if (!s) return; - while(_tcslen(s) > 0 && s[_tcslen(s) - 1] == ':') + while (_tcslen(s) > 0 && s[_tcslen(s) - 1] == ':') s[_tcslen(s) - 1] = 0; } +static void stripspace (TCHAR *s) +{ + int i; + if (!s) + return; + for (i = 0; i < _tcslen (s); i++) { + if (s[i] == ' ') + s[i] = '_'; + } +} +static void striplength (TCHAR *s, int len) +{ + if (!s) + return; + if (_tcslen (s) <= len) + return; + s[len] = 0; +} +static void fixcharset (TCHAR *s) +{ + char tmp[MAX_DPATH]; + if (!s) + return; + ua_fs_copy (tmp, MAX_DPATH, s, '_'); + au_fs_copy (s, strlen (tmp) + 1, tmp); +} + +TCHAR *validatevolumename (TCHAR *s) +{ + stripsemicolon (s); + stripspace (s); + fixcharset (s); + striplength (s, 30); + return s; +} +TCHAR *validatedevicename (TCHAR *s) +{ + stripsemicolon (s); + stripspace (s); + fixcharset (s); + striplength (s, 30); + return s; +} TCHAR *filesys_createvolname (const TCHAR *volname, const TCHAR *rootdir, const TCHAR *def) { @@ -347,7 +391,7 @@ TCHAR *filesys_createvolname (const TCHAR *volname, const TCHAR *rootdir, const else nvol = my_strdup (L""); } - stripsemicolon (nvol); + validatevolumename (nvol); xfree (p); return nvol; } @@ -473,15 +517,17 @@ static int set_filesys_unit_1 (int nr, bootpri = -128; if (donotmount) bootpri = -129; - if (bootpri < -129) bootpri = -129; - if (bootpri > 127) bootpri = 127; + if (bootpri < -129) + bootpri = -129; + if (bootpri > 127) + bootpri = 127; ui->bootpri = bootpri; ui->open = 1; return nr; err: if (ui->hf.handle_valid) - hdf_close(&ui->hf); + hdf_close (&ui->hf); return -1; } @@ -978,7 +1024,7 @@ static void set_volume_name (Unit *unit) int i; char *s; - s = ua_fs (unit->ui.volname); + s = ua_fs (unit->ui.volname, -1); namelen = strlen (s); put_byte (unit->volume + 44, namelen); for (i = 0; i < namelen; i++) @@ -2070,6 +2116,7 @@ static uae_u32 REGPARAM2 startup_handler (TrapContext *context) Unit *unit; UnitInfo *uinfo; int late = 0; + int ed, ef; /* find UnitInfo with correct device name */ s = _tcschr (devname, ':'); @@ -2092,8 +2139,11 @@ static uae_u32 REGPARAM2 startup_handler (TrapContext *context) put_long (pkt + dp_Res2, ERROR_DEVICE_NOT_MOUNTED); return 0; } + uinfo = mountinfo.ui + i; - if (!mountinfo.ui[i].wasisempty && !my_existsdir (mountinfo.ui[i].rootdir) && !my_existsfile (mountinfo.ui[i].rootdir)) + ed = my_existsdir (uinfo->rootdir); + ef = my_existsfile (uinfo->rootdir); + if (!uinfo->wasisempty && !ef && !ed) { write_log (L"Failed attempt to mount device '%s'\n", devname); put_long (pkt + dp_Res1, DOS_FALSE); @@ -2101,7 +2151,6 @@ static uae_u32 REGPARAM2 startup_handler (TrapContext *context) return 0; } - uinfo = mountinfo.ui + i; if (!uinfo->unit_pipe) { late = 1; filesys_start_thread (uinfo, i); @@ -2111,7 +2160,8 @@ static uae_u32 REGPARAM2 startup_handler (TrapContext *context) /* write_comm_pipe_int (unit->ui.unit_pipe, -1, 1);*/ - write_log (L"FS: %s (flags=%08X) starting..\n", unit->ui.volname, unit->volflags); + write_log (L"FS: %s (flags=%08X,E=%d,ED=%d,EF=%d,native='%s') starting..\n", + unit->ui.volname, unit->volflags, uinfo->wasisempty, ed, ef, unit->ui.rootdir); /* fill in our process in the device node */ devnode = get_long (pkt + dp_Arg3) << 2; @@ -2740,7 +2790,7 @@ static void put_long (info + 120, entrytype); TRACE((L"name=\"%s\"\n", xs)); - x2 = x = ua_fs (xs); + x2 = x = ua_fs (xs, -1); n = strlen (x); if (n > 106) n = 106; @@ -2771,7 +2821,7 @@ static void xs = aino->comment; if (!xs) xs= L""; - x2 = x = ua_fs (xs); + x2 = x = ua_fs (xs, -1); n = strlen (x); if (n > 78) n = 78; @@ -2853,7 +2903,7 @@ static int exalldo (uaecptr exalldata, uae_u32 exalldatasize, uae_u32 type, uaec entrytype = aino->dir ? 2 : -3; xs = aino->aname; } - x = ua_fs (xs); + x = ua_fs (xs, -1); size = 0; size2 = 4; @@ -2880,7 +2930,7 @@ static int exalldo (uaecptr exalldata, uae_u32 exalldatasize, uae_u32 type, uaec commentx = L""; else commentx = aino->comment; - comment = ua_fs (commentx); + comment = ua_fs (commentx, -1); size += strlen (comment) + 1; size = (size + 3) & ~3; } @@ -3256,7 +3306,7 @@ static void action_examine_next (Unit *unit, dpacket packet) uae_u32 uniq; TRACE((L"ACTION_EXAMINE_NEXT(0x%lx,0x%lx)\n", lock, info)); - gui_hd_led (unit->unit, 1); + gui_flicker_led (LED_HD, unit->unit, 1); DUMPLOCK(unit, lock); if (lock != 0) @@ -3572,7 +3622,7 @@ static void return; } TRACE((L"ACTION_READ(%s,0x%lx,%ld)\n", k->aino->nname, addr, size)); - gui_hd_led (unit->unit, 1); + gui_flicker_led (LED_HD, unit->unit, 1); #ifdef RELY_ON_LOADSEG_DETECTION /* HACK HACK HACK HACK * Try to detect a LoadSeg() */ @@ -3652,7 +3702,7 @@ static void return; } - gui_hd_led (unit->unit, 2); + gui_flicker_led (LED_HD, unit->unit, 2); TRACE((L"ACTION_WRITE(%s,0x%lx,%ld)\n", k->aino->nname, addr, size)); if (unit->ui.readonly) { @@ -3715,7 +3765,7 @@ static void whence = SEEK_SET; TRACE((L"ACTION_SEEK(%s,%d,%d)\n", k->aino->nname, pos, mode)); - gui_hd_led (unit->unit, 1); + gui_flicker_led (LED_HD, unit->unit, 1); old = fs_lseek (unit, k->fd, 0, SEEK_CUR); { @@ -3784,7 +3834,7 @@ static void PUT_PCK_RES1 (packet, DOS_TRUE); } notify_check (unit, a); - gui_hd_led (unit->unit, 2); + gui_flicker_led (LED_HD, unit->unit, 2); } static void action_set_comment (Unit * unit, dpacket packet) @@ -3841,7 +3891,7 @@ maybe_free_and_out: a->comment = commented; fsdb_set_file_attrs (a); notify_check (unit, a); - gui_hd_led (unit->unit, 2); + gui_flicker_led (LED_HD, unit->unit, 2); } static void @@ -4023,7 +4073,7 @@ static void notify_check (unit, aino); updatedirtime (aino, 0); PUT_PCK_RES1 (packet, make_lock (unit, aino->uniq, -2) >> 2); - gui_hd_led (unit->unit, 2); + gui_flicker_led (LED_HD, unit->unit, 2); } static void @@ -4075,7 +4125,7 @@ static void return; } - gui_hd_led (unit->unit, 1); + gui_flicker_led (LED_HD, unit->unit, 1); k->notifyactive = 1; /* If any open files have file pointers beyond this size, truncate only * so far that these pointers do not become invalid. */ @@ -4213,7 +4263,7 @@ static void delete_aino (unit, a); } PUT_PCK_RES1 (packet, DOS_TRUE); - gui_hd_led (unit->unit, 2); + gui_flicker_led (LED_HD, unit->unit, 2); } static void @@ -4246,7 +4296,7 @@ static void notify_check (unit, a); PUT_PCK_RES1 (packet, DOS_TRUE); } - gui_hd_led (unit->unit, 2); + gui_flicker_led (LED_HD, unit->unit, 2); } static void @@ -4352,7 +4402,7 @@ static void if (a2->elock > 0 || a2->shlock > 0 || wehavekeys > 0) de_recycle_aino (unit, a2); PUT_PCK_RES1 (packet, DOS_TRUE); - gui_hd_led (unit->unit, 2); + gui_flicker_led (LED_HD, unit->unit, 2); } static void @@ -4462,7 +4512,7 @@ static void action_change_file_position64 (Unit *unit, dpacket packet) whence = SEEK_SET; TRACE((L"ACTION_CHANGE_FILE_POSITION64(%s,%I64d,%d)\n", k->aino->nname, pos, mode)); - gui_hd_led (unit->unit, 1); + gui_flicker_led (LED_HD, unit->unit, 1); old = fs_lseek64 (unit, k->fd, 0, SEEK_CUR); { @@ -4535,7 +4585,7 @@ static void action_change_file_size64 (Unit *unit, dpacket packet) return; } - gui_hd_led (unit->unit, 1); + gui_flicker_led (LED_HD, unit->unit, 1); k->notifyactive = 1; /* If any open files have file pointers beyond this size, truncate only * so far that these pointers do not become invalid. */ @@ -4644,7 +4694,7 @@ static uae_u32 REGPARAM2 exter_int_helper (TrapContext *context) lockend = get_long (lockend); cnt++; } - TRACE((L"%d %x %x %x\n", cnt, locks, lockend, m68k_areg (regs, 3))); + TRACE((L"message_lock: %d %x %x %x\n", cnt, locks, lockend, m68k_areg (regs, 3))); put_long (lockend, get_long (m68k_areg (regs, 3))); put_long (m68k_areg (regs, 3), locks); } @@ -5688,6 +5738,15 @@ static uae_u32 REGPARAM2 mousehack_done (TrapContext *context) } else if (mode == 16) { uaecptr a2 = m68k_areg (regs, 2); input_mousehack_mouseoffset (a2); + } else if (mode == 100) { + return consolehook_activate () ? 1 : 0; + } else if (mode == 101) { + consolehook_ret (m68k_areg (regs, 1), m68k_areg (regs, 2)); + } else if (mode == 102) { + uaecptr ret = consolehook_beginio (m68k_areg (regs, 1)); + put_long (m68k_areg (regs, 7) + 4 * 4, ret); + } else { + write_log (L"Unknown mousehack hook %d\n", mode); } return 1; } diff --git a/filesys_bootrom.c b/filesys_bootrom.c index 0fc55a03..ce5c88ec 100644 --- a/filesys_bootrom.c +++ b/filesys_bootrom.c @@ -3,33 +3,33 @@ db(0x00); db(0x00); db(0x08); db(0x04); db(0x00); db(0x00); db(0x00); db(0xd0); db(0x00); db(0x00); db(0x02); db(0x2c); db(0x00); db(0x00); db(0x00); db(0x24); db(0x00); db(0x00); db(0x02); db(0xe8); db(0x00); db(0x00); db(0x0d); db(0xf4); - db(0x00); db(0x00); db(0x12); db(0x84); db(0x43); db(0xfa); db(0x16); db(0xe1); + db(0x00); db(0x00); db(0x12); db(0x84); db(0x43); db(0xfa); db(0x17); db(0x5a); 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(0x2c); db(0x78); db(0x00); db(0x04); - db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x44); - db(0x70); db(0x14); db(0x24); db(0x00); 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(0x32); db(0x24); db(0x40); db(0x20); db(0x4a); db(0x43); db(0xfa); - db(0x00); db(0x5c); db(0x20); db(0xd9); db(0x59); db(0x82); db(0x66); db(0xfa); - db(0x4e); db(0xae); db(0xff); db(0x88); db(0x22); db(0x4e); db(0x30); db(0x7c); - db(0xff); db(0xb8); db(0x20); db(0x0a); db(0x4e); db(0xae); db(0xfe); db(0x5c); - db(0x25); db(0x40); db(0x00); db(0x0e); db(0x41); db(0xfa); db(0x00); db(0x14); - db(0x25); db(0x48); db(0x00); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x84); - db(0x4e); db(0xae); db(0xff); db(0x82); db(0x4c); db(0xdf); db(0x47); db(0x07); - db(0x4e); db(0x75); db(0x20); db(0x57); 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(0x11); db(0xd2); db(0x4c); db(0xdf); db(0x7e); db(0xff); + 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(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x32); db(0x24); db(0x40); + db(0x20); db(0x4a); db(0x43); db(0xfa); db(0x00); db(0x60); db(0x20); db(0xd9); + db(0x59); db(0x82); db(0x66); db(0xfa); db(0x4e); db(0xae); db(0xff); db(0x88); + db(0x22); db(0x4e); db(0x30); db(0x7c); db(0xff); db(0xb8); db(0x20); db(0x0a); + db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x25); db(0x40); db(0x00); db(0x0e); + db(0x41); db(0xfa); db(0x00); db(0x14); db(0x25); db(0x48); db(0x00); db(0x08); + db(0x4e); db(0xae); db(0xfd); db(0x84); db(0x4e); db(0xae); db(0xff); db(0x82); + db(0x4c); db(0xdf); db(0x47); db(0x07); db(0x4e); db(0x75); db(0x20); db(0x57); + 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(0x11); db(0xd6); + db(0x61); db(0x00); db(0x15); db(0x88); 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(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(0x0b); db(0x82); - db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x16); db(0x52); db(0x70); db(0x24); + db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x16); db(0xcb); 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(0x16); db(0x42); db(0x70); db(0x00); + db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x16); db(0xbb); 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(0x5a); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c); db(0x22); db(0x3c); db(0x00); db(0x01); @@ -48,20 +48,20 @@ db(0x0a); db(0xf0); db(0x4e); db(0x90); db(0x72); db(0x03); db(0x74); db(0xf6); db(0x20); db(0x7c); db(0x00); db(0x20); db(0x00); db(0x00); db(0x90); db(0x88); db(0x65); db(0x0a); db(0x67); db(0x08); db(0x78); db(0x00); db(0x22); db(0x44); - db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x15); db(0x4d); + db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x15); db(0xc6); db(0x43); db(0xfa); db(0x00); db(0x54); db(0x70); db(0x0a); db(0x61); db(0x00); db(0x0b); db(0xa4); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00); db(0x0a); db(0xbc); 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(0x15); db(0x47); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); + db(0x15); db(0xc0); 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(0x14); db(0xf8); + db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x15); db(0x71); 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(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10); @@ -95,7 +95,7 @@ db(0x48); db(0xe7); db(0xc0); db(0xc0); db(0x61); db(0x00); db(0xfd); db(0x4a); 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(0x13); db(0xcc); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); + db(0x14); db(0x45); 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); @@ -109,7 +109,7 @@ 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(0x13); db(0x5c); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b); + db(0x13); db(0xd5); 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); @@ -146,13 +146,13 @@ 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(0x12); db(0xae); db(0x10); db(0x19); db(0x12); db(0x1a); + db(0x45); db(0xfa); db(0x13); db(0x27); 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(0x12); db(0x84); db(0x25); db(0x48); - db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x12); db(0x00); db(0x25); db(0x48); + db(0x00); db(0x08); db(0x41); db(0xfa); db(0x12); db(0xfd); db(0x25); db(0x48); + db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x12); db(0x79); 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); @@ -304,16 +304,16 @@ 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(0x0d); db(0x7d); db(0x70); db(0x00); db(0x4e); db(0xae); + db(0x43); db(0xfa); db(0x0d); db(0xf6); 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(0x0d); db(0x78); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0d); db(0xf1); 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(0x66); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); + db(0x0d); db(0xdf); 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); @@ -326,16 +326,16 @@ 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(0x0c); db(0xcd); db(0x70); db(0x00); db(0x4e); db(0xae); + db(0x43); db(0xfa); db(0x0d); db(0x46); 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(0x0b); db(0xc4); + db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x0c); db(0x2e); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0x84); - db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x0b); db(0xc1); + db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x0c); db(0x2b); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0x74); 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); @@ -434,7 +434,7 @@ 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(0x21); db(0x43); db(0xfa); db(0x01); db(0x5c); + db(0x41); db(0xfa); db(0x09); db(0x9a); 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); @@ -489,7 +489,7 @@ 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(0x65); + db(0x00); db(0x05); db(0x00); db(0x09); db(0x41); db(0xfa); db(0x07); db(0xde); 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); @@ -497,25 +497,25 @@ 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(0x07); db(0x83); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); + db(0x07); db(0xfc); 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(0x07); db(0x79); db(0x70); db(0x00); + db(0x66); db(0xc4); db(0x43); db(0xfa); db(0x07); db(0xf2); 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(0x68); db(0x4e); db(0xae); db(0xfe); db(0xec); + db(0x43); db(0xfa); db(0x06); db(0xd2); 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(0x56); db(0x70); db(0x00); + db(0x67); db(0x8c); db(0x41); db(0xfa); db(0x06); db(0xc0); 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(0x35); db(0x4e); db(0xae); db(0xfe); db(0xec); + db(0x43); db(0xfa); db(0x06); db(0x9f); 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(0x21); + db(0x67); db(0x00); db(0xff); db(0x4c); db(0x41); db(0xfa); db(0x06); db(0x8b); 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); @@ -598,7 +598,7 @@ 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(0xb0); db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x41); db(0xfa); - db(0x03); db(0xed); db(0x43); db(0xfa); db(0x01); db(0x14); db(0x70); db(0xf6); + db(0x04); db(0x66); 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(0xee); db(0xe6); 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); @@ -609,7 +609,7 @@ 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(0x7b); db(0x22); db(0x08); db(0x24); db(0x3c); db(0x00); db(0x00); + db(0x03); db(0xf4); 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); @@ -623,12 +623,12 @@ db(0x61); db(0x00); db(0xf8); db(0xf6); 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(0x02); db(0xf3); db(0x22); db(0x08); db(0x74); db(0xfe); + db(0x41); db(0xfa); db(0x03); db(0x6c); 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(0x02); db(0xe3); db(0x24); db(0x88); db(0x25); db(0x7c); db(0x00); db(0x00); + db(0x03); db(0x5c); 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); @@ -638,13 +638,13 @@ 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(0x0f); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); + db(0x03); db(0x88); 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(0x47); db(0x22); db(0x08); db(0x74); db(0xfe); + db(0x41); db(0xfa); db(0x02); db(0xc0); 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(0x31); + db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x02); db(0xaa); 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); @@ -653,7 +653,7 @@ 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(0x0a); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44); + db(0x02); db(0x83); 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); @@ -710,41 +710,57 @@ 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(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(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(0x00); db(0x00); db(0x03); db(0xf2); + 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(0x64); db(0x61); db(0x00); + db(0xf6); db(0x18); db(0x4e); db(0x90); db(0x4a); db(0x80); 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(0xe2); + 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(0xc6); 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(0x00); db(0x00); db(0x00); + db(0x00); db(0x00); db(0x03); db(0xf2); diff --git a/gayle.c b/gayle.c index 8e5ccffd..35fb41f1 100644 --- a/gayle.c +++ b/gayle.c @@ -604,7 +604,7 @@ static void ide_read_sectors (int flags) ide_fail (); return; } - gui_hd_led (ide->num, 1); + gui_flicker_led (LED_HD, ide->num, 1); nsec = get_nsec (lba48); get_lbachs (ide, &lba, &cyl, &head, &sec, lba48); if (IDE_LOG > 0) @@ -632,7 +632,7 @@ static void ide_write_sectors (int flags) ide_fail (); return; } - gui_hd_led (ide->num, 2); + gui_flicker_led (LED_HD, ide->num, 2); nsec = get_nsec (lba48); get_lbachs (ide, &lba, &cyl, &head, &sec, lba48); if (lba * ide->blocksize >= ide->hdhfd.size) { diff --git a/hardfile.c b/hardfile.c index caf6e3d4..37ff6417 100644 --- a/hardfile.c +++ b/hardfile.c @@ -903,7 +903,7 @@ int hdf_write (struct hardfiledata *hfd, void *buffer, uae_u64 offset, int len) static uae_u64 cmd_readx (struct hardfiledata *hfd, uae_u8 *dataptr, uae_u64 offset, uae_u64 len) { - gui_hd_led (hfd->unitnum, 1); + gui_flicker_led (LED_HD, hfd->unitnum, 1); hf_log3 ("cmd_read: %p %04x-%08x (%d) %08x (%d)\n", dataptr, (uae_u32)(offset >> 32), (uae_u32)offset, (uae_u32)(offset / hfd->blocksize), (uae_u32)len, (uae_u32)(len / hfd->blocksize)); return hdf_read (hfd, dataptr, offset, len); @@ -917,7 +917,7 @@ static uae_u64 cmd_read (struct hardfiledata *hfd, uaecptr dataptr, uae_u64 offs } static uae_u64 cmd_writex (struct hardfiledata *hfd, uae_u8 *dataptr, uae_u64 offset, uae_u64 len) { - gui_hd_led (hfd->unitnum, 2); + gui_flicker_led (LED_HD, hfd->unitnum, 2); hf_log3 ("cmd_write: %p %04x-%08x (%d) %08x (%d)\n", dataptr, (uae_u32)(offset >> 32), (uae_u32)offset, (uae_u32)(offset / hfd->blocksize), (uae_u32)len, (uae_u32)(len / hfd->blocksize)); return hdf_write (hfd, dataptr, offset, len); diff --git a/include/ar.h b/include/ar.h index 0ce2f1d7..cb74192e 100644 --- a/include/ar.h +++ b/include/ar.h @@ -52,8 +52,6 @@ extern void REGPARAM3 chipmem_lput_actionreplay1 (uaecptr addr, uae_u32 l) REGPA extern void action_replay_version (void); -extern void descramble_nordicpro (uae_u8*, int, int); - extern int hrtmon_flag; extern void hrtmon_enter (void); diff --git a/include/autoconf.h b/include/autoconf.h index 70e550cd..ed5dd875 100644 --- a/include/autoconf.h +++ b/include/autoconf.h @@ -56,6 +56,8 @@ extern int add_filesys_unitconfig (struct uae_prefs *p, int index, TCHAR *error) extern int get_filesys_unitconfig (struct uae_prefs *p, int index, struct mountedinfo*); extern int kill_filesys_unitconfig (struct uae_prefs *p, int nr); extern int move_filesys_unitconfig (struct uae_prefs *p, int nr, int to); +extern TCHAR *validatedevicename (TCHAR *s); +extern TCHAR *validatevolumename (TCHAR *s); int filesys_insert(int nr, TCHAR *volume, const TCHAR *rootdir, int readonly, int flags); int filesys_eject(int nr); diff --git a/include/consolehook.h b/include/consolehook.h new file mode 100644 index 00000000..4a5b2137 --- /dev/null +++ b/include/consolehook.h @@ -0,0 +1,5 @@ + +int consolehook_activate (void); +void consolehook_ret (uaecptr condev, uaecptr oldbeginio); +uaecptr consolehook_beginio (uaecptr request); +void consolehook_config (struct uae_prefs *p); diff --git a/include/custom.h b/include/custom.h index 24d58df0..ceded2fd 100644 --- a/include/custom.h +++ b/include/custom.h @@ -100,6 +100,8 @@ extern uae_u16 INTREQR (void); #define VBLANK_SPRITE_NTSC 20 #define VBLANK_HZ_PAL 50 #define VBLANK_HZ_NTSC 60 +#define EQU_ENDLINE_PAL 9 +#define EQU_ENDLINE_NTSC 10 extern int maxhpos, maxhpos_short; extern int maxvpos, maxvpos_max; @@ -156,8 +158,6 @@ extern int xredcolor_s, xredcolor_b, xredcolor_m; extern int xgreencolor_s, xgreencolor_b, xgreencolor_m; extern int xbluecolor_s, xbluecolor_b, xbluecolor_m; -extern int bpl_off[8]; - #define RES_LORES 0 #define RES_HIRES 1 #define RES_SUPERHIRES 2 diff --git a/include/gui.h b/include/gui.h index f6d0cef7..ec2dca0d 100644 --- a/include/gui.h +++ b/include/gui.h @@ -16,8 +16,7 @@ extern void gui_fps (int fps, int idle); extern void gui_changesettings (void); extern void gui_lock (void); extern void gui_unlock (void); -extern void gui_hd_led (int, int); -extern void gui_cd_led (int, int); +extern void gui_flicker_led (int, int, int); extern void gui_disk_image_change (int, const TCHAR *); extern unsigned int gui_ledstate; extern void gui_display (int shortcut); @@ -28,23 +27,37 @@ extern int no_gui, quit_to_gui; #define LED_CD_ACTIVE2 2 #define LED_CD_AUDIO 4 +#define LED_POWER 0 +#define LED_DF0 1 +#define LED_DF1 2 +#define LED_DF2 3 +#define LED_DF3 4 +#define LED_HD 5 +#define LED_CD 6 +#define LED_FPS 7 +#define LED_CPU 8 +#define LED_SND 9 +#define LED_MD 10 +#define LED_MAX 11 + struct gui_info { - uae_u8 drive_motor[4]; /* motor on off */ - uae_u8 drive_track[4]; /* rw-head track */ - uae_u8 drive_writing[4]; /* drive is writing */ - uae_u8 drive_disabled[4]; /* drive is disabled */ - uae_u8 powerled; /* state of power led */ - uae_u8 powerled_brightness; /* 0 to 255 */ - uae_u8 drive_side; /* floppy side */ - uae_u8 hd; /* harddrive */ - uae_u8 cd; /* CD */ + uae_u8 drive_motor[4]; /* motor on off */ + uae_u8 drive_track[4]; /* rw-head track */ + uae_u8 drive_writing[4]; /* drive is writing */ + uae_u8 drive_disabled[4]; /* drive is disabled */ + uae_u8 powerled; /* state of power led */ + uae_u8 powerled_brightness; /* 0 to 255 */ + uae_u8 drive_side; /* floppy side */ + uae_u8 hd; /* harddrive */ + uae_u8 cd; /* CD */ + uae_u8 md; /* CD32 or CDTV internal storage */ int fps, idle; int sndbuf, sndbuf_status; - TCHAR df[4][256]; /* inserted image */ - uae_u32 crc32[4]; /* crc32 of image */ + TCHAR df[4][256]; /* inserted image */ + uae_u32 crc32[4]; /* crc32 of image */ }; -#define NUM_LEDS (1 + 1 + 1 + 1 + 1 + 1 + 4) +#define NUM_LEDS (LED_MAX) extern struct gui_info gui_data; diff --git a/include/inputdevice.h b/include/inputdevice.h index 949bdcba..36db61f0 100644 --- a/include/inputdevice.h +++ b/include/inputdevice.h @@ -114,6 +114,8 @@ extern int inputdevice_translatekeycode (int keyboard, int scancode, int state); extern void inputdevice_setkeytranslation (struct uae_input_device_kbr_default *trans); extern int handle_input_event (int nr, int state, int max, int autofire); extern void inputdevice_do_keyboard (int code, int state); +extern int inputdevice_iskeymapped (int keyboard, int scancode); +extern int inputdevice_synccapslock (int, int*); extern uae_u16 potgo_value; extern uae_u16 POTGOR (void); diff --git a/include/keyboard.h b/include/keyboard.h index f9c5b4f1..9714e34c 100644 --- a/include/keyboard.h +++ b/include/keyboard.h @@ -156,3 +156,5 @@ enum aks { AKS_ENTERGUI = 0x200, AKS_SCREENSHOT, AKS_FREEZEBUTTON, AKS_DISKSWAPPER_NEXT,AKS_DISKSWAPPER_PREV, AKS_DISKSWAPPER_INSERT0,AKS_DISKSWAPPER_INSERT1,AKS_DISKSWAPPER_INSERT2,AKS_DISKSWAPPER_INSERT3, }; + +extern int target_checkcapslock (int, int *); \ No newline at end of file diff --git a/include/memory.h b/include/memory.h index b369218c..6d5bcae7 100644 --- a/include/memory.h +++ b/include/memory.h @@ -342,86 +342,8 @@ extern uae_u8 *mapped_malloc (size_t, const TCHAR*); extern void mapped_free (uae_u8 *); extern void clearexec (void); extern void mapkick (void); -extern int decode_cloanto_rom_do (uae_u8 *mem, int size, int real_size); extern void a3000_fakekick (int); -#define ROMTYPE_KICK 0x000001 -#define ROMTYPE_KICKCD32 0x000002 -#define ROMTYPE_EXTCD32 0x000004 -#define ROMTYPE_EXTCDTV 0x000008 -#define ROMTYPE_A2091BOOT 0x000010 -#define ROMTYPE_A4091BOOT 0x000020 -#define ROMTYPE_AR 0x000040 -#define ROMTYPE_SUPERIV 0x000080 -#define ROMTYPE_KEY 0x000100 -#define ROMTYPE_ARCADIABIOS 0x000200 -#define ROMTYPE_ARCADIAGAME 0x000400 -#define ROMTYPE_HRTMON 0x000800 -#define ROMTYPE_NORDIC 0x001000 -#define ROMTYPE_XPOWER 0x002000 -#define ROMTYPE_CD32CART 0x004000 -#define ROMTYPE_SPECIALKICK 0x008000 -#define ROMTYPE_MASK 0x01ffff -#define ROMTYPE_EVEN 0x020000 -#define ROMTYPE_ODD 0x040000 -#define ROMTYPE_8BIT 0x080000 -#define ROMTYPE_BYTESWAP 0x100000 -#define ROMTYPE_CD32 0x200000 -#define ROMTYPE_SCRAMBLED 0x400000 - -struct romheader { - TCHAR *name; - int id; -}; - -struct romdata { - TCHAR *name; - int ver, rev; - int subver, subrev; - TCHAR *model; - uae_u32 size; - int id; - int cpu; - int cloanto; - int type; - int group; - int title; - TCHAR *partnumber; - uae_u32 crc32; - uae_u32 sha1[5]; - TCHAR *configname; -}; - -struct romlist { - TCHAR *path; - struct romdata *rd; -}; - -extern struct romdata *getromdatabypath (TCHAR *path); -extern struct romdata *getromdatabycrc (uae_u32 crc32); -extern struct romdata *getromdatabydata (uae_u8 *rom, int size); -extern struct romdata *getromdatabyid (int id); -extern struct romdata *getromdatabyidgroup (int id, int group, int subitem); -extern struct romdata *getromdatabyzfile (struct zfile *f); -extern struct romlist **getarcadiaroms (void); -extern struct romdata *getarcadiarombyname (TCHAR *name); -extern struct romlist **getromlistbyident (int ver, int rev, int subver, int subrev, TCHAR *model, int all); -extern void getromname (struct romdata*, TCHAR*); -extern struct romdata *getromdatabyname (TCHAR*); -extern struct romlist *getromlistbyids (int *ids); -extern void romwarning(int *ids); -extern struct romlist *getromlistbyromdata (struct romdata *rd); -extern void romlist_add (TCHAR *path, struct romdata *rd); -extern TCHAR *romlist_get (struct romdata *rd); -extern void romlist_clear (void); -extern struct zfile *read_rom (struct romdata **rd); -extern struct zfile *read_rom_name (const TCHAR *filename); - -extern int load_keyring (struct uae_prefs *p, TCHAR *path); -extern uae_u8 *target_load_keyfile (struct uae_prefs *p, TCHAR *path, int *size, TCHAR *name); -extern void free_keyring (void); -extern int get_keyring (void); - extern uaecptr strcpyha_safe (uaecptr dst, const uae_char *src); extern uae_char *strcpyah_safe (uae_u8 *dst, uaecptr src, int maxsize); extern void memcpyha_safe (uaecptr dst, const uae_u8 *src, int size); diff --git a/include/options.h b/include/options.h index 23d7600a..a9930616 100644 --- a/include/options.h +++ b/include/options.h @@ -9,7 +9,7 @@ #define UAEMAJOR 2 #define UAEMINOR 0 -#define UAESUBREV 1 +#define UAESUBREV 2 typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang; diff --git a/include/rommgr.h b/include/rommgr.h new file mode 100644 index 00000000..ff7a314d --- /dev/null +++ b/include/rommgr.h @@ -0,0 +1,89 @@ +extern int decode_cloanto_rom_do (uae_u8 *mem, int size, int real_size); + +#define ROMTYPE_KICK 0x000001 +#define ROMTYPE_KICKCD32 0x000002 +#define ROMTYPE_EXTCD32 0x000004 +#define ROMTYPE_EXTCDTV 0x000008 +#define ROMTYPE_A2091BOOT 0x000010 +#define ROMTYPE_A4091BOOT 0x000020 +#define ROMTYPE_AR 0x000040 +#define ROMTYPE_SUPERIV 0x000080 +#define ROMTYPE_KEY 0x000100 +#define ROMTYPE_ARCADIABIOS 0x000200 +#define ROMTYPE_ARCADIAGAME 0x000400 +#define ROMTYPE_HRTMON 0x000800 +#define ROMTYPE_NORDIC 0x001000 +#define ROMTYPE_XPOWER 0x002000 +#define ROMTYPE_CD32CART 0x004000 +#define ROMTYPE_SPECIALKICK 0x008000 +#define ROMTYPE_MASK 0x01ffff +#define ROMTYPE_EVEN 0x020000 +#define ROMTYPE_ODD 0x040000 +#define ROMTYPE_8BIT 0x080000 +#define ROMTYPE_BYTESWAP 0x100000 +#define ROMTYPE_CD32 0x200000 +#define ROMTYPE_SCRAMBLED 0x400000 + +struct romheader { + TCHAR *name; + int id; +}; + +struct romdata { + TCHAR *name; + int ver, rev; + int subver, subrev; + TCHAR *model; + uae_u32 size; + int id; + int cpu; + int cloanto; + int type; + int group; + int title; + TCHAR *partnumber; + uae_u32 crc32; + uae_u32 sha1[5]; + TCHAR *configname; +}; + +struct romlist { + TCHAR *path; + struct romdata *rd; +}; + +extern struct romdata *getromdatabypath (TCHAR *path); +extern struct romdata *getromdatabycrc (uae_u32 crc32); +extern struct romdata *getromdatabydata (uae_u8 *rom, int size); +extern struct romdata *getromdatabyid (int id); +extern struct romdata *getromdatabyidgroup (int id, int group, int subitem); +extern struct romdata *getromdatabyzfile (struct zfile *f); +extern struct romlist **getarcadiaroms (void); +extern struct romdata *getarcadiarombyname (TCHAR *name); +extern struct romlist **getromlistbyident (int ver, int rev, int subver, int subrev, TCHAR *model, int all); +extern void getromname (struct romdata*, TCHAR*); +extern struct romdata *getromdatabyname (TCHAR*); +extern struct romlist *getromlistbyids (int *ids); +extern void romwarning(int *ids); +extern struct romlist *getromlistbyromdata (struct romdata *rd); +extern void romlist_add (TCHAR *path, struct romdata *rd); +extern TCHAR *romlist_get (struct romdata *rd); +extern void romlist_clear (void); +extern struct zfile *read_rom (struct romdata **rd); +extern struct zfile *read_rom_name (const TCHAR *filename); + +extern int load_keyring (struct uae_prefs *p, TCHAR *path); +extern uae_u8 *target_load_keyfile (struct uae_prefs *p, TCHAR *path, int *size, TCHAR *name); +extern void free_keyring (void); +extern int get_keyring (void); +extern void kickstart_fix_checksum (uae_u8 *mem, int size); +extern void descramble_nordicpro (uae_u8*, int, int); +extern int kickstart_checksum (uae_u8 *mem, int size); +extern int decode_rom (uae_u8 *mem, int size, int mode, int real_size); +extern struct zfile *rom_fopen (const TCHAR *name, const TCHAR *mode, int mask); +extern struct zfile *read_rom_name_guess (const TCHAR *filename); +extern void addkeydir (const TCHAR *path); +extern int romlist_count (void); +extern struct romlist *romlist_getit (void); +extern int configure_rom (struct uae_prefs *p, int *rom, int msg); + diff --git a/include/sysdeps.h b/include/sysdeps.h index cd3a39d4..30bfc092 100644 --- a/include/sysdeps.h +++ b/include/sysdeps.h @@ -235,10 +235,10 @@ extern char *ua (const TCHAR*); extern TCHAR *aucp (const char *s, unsigned int cp); extern char *uacp (const TCHAR *s, unsigned int cp); extern TCHAR *au_fs (const char*); -extern char *ua_fs (const TCHAR*); +extern char *ua_fs (const TCHAR*, int); extern char *ua_copy (char *dst, int maxlen, const TCHAR *src); extern TCHAR *au_copy (TCHAR *dst, int maxlen, const char *src); -extern char *ua_fs_copy (char *dst, int maxlen, const TCHAR *src); +extern char *ua_fs_copy (char *dst, int maxlen, const TCHAR *src, int defchar); extern TCHAR *au_fs_copy (TCHAR *dst, int maxlen, const char *src); extern char *uutf8 (const TCHAR *s); extern TCHAR *utf8u (const char *s); @@ -477,6 +477,7 @@ extern void console_out (const TCHAR *); extern void console_out_f (const TCHAR *, ...); extern void console_flush (void); extern int console_get (TCHAR *, int); +extern TCHAR console_getch (void); extern void f_out (void *, const TCHAR *, ...); extern TCHAR* buf_out (TCHAR *buffer, int *bufsize, const TCHAR *format, ...); extern void gui_message (const TCHAR *,...); diff --git a/include/uae.h b/include/uae.h index cf2fd6bd..bfb49238 100644 --- a/include/uae.h +++ b/include/uae.h @@ -27,6 +27,7 @@ extern void target_run (void); extern void target_quit (void); extern int quit_program; +extern int console_emulation; extern TCHAR warning_buffer[256]; extern TCHAR start_path_data[]; diff --git a/inputdevice.c b/inputdevice.c index ea652e4d..367b2b3f 100644 --- a/inputdevice.c +++ b/inputdevice.c @@ -129,6 +129,7 @@ struct uae_input_device2 { static struct uae_input_device2 joysticks2[MAX_INPUT_DEVICES]; static struct uae_input_device2 mice2[MAX_INPUT_DEVICES]; +static uae_u8 scancodeused[MAX_INPUT_DEVICES][256]; static int input_acquired; static int testmode; @@ -3040,6 +3041,7 @@ static void scanevents (struct uae_prefs *p) } } } + memset (scancodeused, 0, sizeof scancodeused); for (i = 0; i < MAX_INPUT_DEVICES; i++) { use_keyboards[i] = 0; if (keyboards[i].enabled && i < idev[IDTYPE_KEYBOARD].get_num()) { @@ -3052,6 +3054,8 @@ static void scanevents (struct uae_prefs *p) isparport (ei); ismouse (ei); isdigitalbutton (ei); + if (ei > 0) + scancodeused[i][keyboards[i].extra[j][k]] = 1; } j++; } @@ -3432,13 +3436,16 @@ static void set_kbr_default (struct uae_prefs *p, int index, int num) while (trans[l].scancode >= 0) { if (kbr->extra[i][0] == trans[l].scancode) { for (k = 0; k < MAX_INPUT_SUB_EVENT; k++) { - if (kbr->eventid[i][k] == 0) break; + if (kbr->eventid[i][k] == 0) + break; } if (k == MAX_INPUT_SUB_EVENT) { write_log (L"corrupt default keyboard mappings\n"); return; } kbr->eventid[i][k] = trans[l].event; + if (trans[l].event == INPUTEVENT_KEY_CAPS_LOCK) + kbr->flags[i][k] |= ID_FLAG_TOGGLE; break; } l++; @@ -3477,6 +3484,38 @@ void inputdevice_setkeytranslation (struct uae_input_device_kbr_default *trans) keyboard_default = trans; } +int inputdevice_iskeymapped (int keyboard, int scancode) +{ + struct uae_input_device *na = &keyboards[keyboard]; + + if (!keyboards || scancode < 0) + return 0; + return scancodeused[keyboard][scancode]; +} + +int inputdevice_synccapslock (int oldcaps, int *capstable) +{ + struct uae_input_device *na = &keyboards[0]; + int j, i; + + if (!keyboards) + return -1; + for (j = 0; na->extra[j][0]; j++) { + if (na->extra[j][0] == INPUTEVENT_KEY_CAPS_LOCK) { + for (i = 0; capstable[i]; i += 2) { + if (na->extra[j][0] == capstable[i]) { + if (oldcaps != capstable[i + 1]) { + oldcaps = capstable[i + 1]; + inputdevice_translatekeycode (0, capstable[i], oldcaps ? -1 : 0); + } + return i; + } + } + } + } + return -1; +} + static int inputdevice_translatekeycode_2 (int keyboard, int scancode, int state) { struct uae_input_device *na = &keyboards[keyboard]; @@ -3494,6 +3533,21 @@ static int inputdevice_translatekeycode_2 (int keyboard, int scancode, int state int evt = na->eventid[j][sublevdir[state == 0 ? 1 : 0][k]]; int toggled; + // if evt == caps and scan == caps: sync with native caps led + if (evt == INPUTEVENT_KEY_CAPS_LOCK) { + int v; + if (state < 0) + state = 1; + v = target_checkcapslock (scancode, &state); + if (v < 0) + continue; + if (v > 0) + toggle = 0; + } else if (state < 0) { + // it was caps lock resync, ignore, not mapped to caps + continue; + } + if (toggle) { if (!state) continue; @@ -3543,7 +3597,7 @@ int inputdevice_translatekeycode (int keyboard, int scancode, int state) { if (inputdevice_translatekeycode_2 (keyboard, scancode, state)) return 1; - if (currprefs.mmkeyboard) + if (currprefs.mmkeyboard && scancode > 0) sendmmcodes (scancode, state); return 0; } diff --git a/main.c b/main.c index c5267e46..ca850bd6 100644 --- a/main.c +++ b/main.c @@ -51,6 +51,7 @@ #include "gfxfilter.h" #include "uaeresource.h" #include "dongle.h" +#include "consolehook.h" #ifdef USE_SDL #include "SDL.h" @@ -63,6 +64,7 @@ struct uae_prefs currprefs, changed_prefs; int no_gui = 0, quit_to_gui = 0; int cloanto_rom = 0; int kickstart_rom = 1; +int console_emulation = 0; struct gui_info gui_data; @@ -116,6 +118,8 @@ void fixup_prefs_dimensions (struct uae_prefs *prefs) void fixup_cpu (struct uae_prefs *p) { + if (p->cpu_frequency == 1000000) + p->cpu_frequency = 0; switch (p->cpu_model) { case 68000: @@ -384,6 +388,7 @@ void fixup_prefs (struct uae_prefs *p) if (p->cpu_cycle_exact) { p->gfx_framerate = 1; p->cachesize = 0; + p->m68k_speed = 0; } #endif if (p->maprom && !p->address_space_24) @@ -729,6 +734,11 @@ static int real_main2 (int argc, TCHAR **argv) return -1; } + if (console_emulation) { + consolehook_config (&currprefs); + fixup_prefs (&currprefs); + } + if (! setup_sound ()) { write_log (L"Sound driver unavailable: Sound output disabled\n"); currprefs.produce_sound = 0; diff --git a/memory.c b/memory.c index 2d0434f4..217a6d78 100644 --- a/memory.c +++ b/memory.c @@ -12,6 +12,7 @@ #include "options.h" #include "uae.h" #include "memory.h" +#include "rommgr.h" #include "ersatz.h" #include "zfile.h" #include "custom.h" @@ -82,958 +83,6 @@ static int need_hardreset; /* The address space setting used during the last reset. */ static int last_address_space_24; -static struct romlist *rl; -static int romlist_cnt; - -TCHAR *romlist_get (struct romdata *rd) -{ - int i; - - if (!rd) - return 0; - for (i = 0; i < romlist_cnt; i++) { - if (rl[i].rd->id == rd->id) - return rl[i].path; - } - return 0; -} - -static struct romlist *romlist_getrl (struct romdata *rd) -{ - int i; - - if (!rd) - return 0; - for (i = 0; i < romlist_cnt; i++) { - if (rl[i].rd == rd) - return &rl[i]; - } - return 0; -} - -static void romlist_cleanup (void); -void romlist_add (TCHAR *path, struct romdata *rd) -{ - struct romlist *rl2; - - if (path == NULL || rd == NULL) { - romlist_cleanup (); - return; - } - romlist_cnt++; - rl = realloc (rl, sizeof (struct romlist) * romlist_cnt); - rl2 = rl + romlist_cnt - 1; - rl2->path = my_strdup (path); - rl2->rd = rd; -} - - -struct romdata *getromdatabypath(TCHAR *path) -{ - int i; - for (i = 0; i < romlist_cnt; i++) { - struct romdata *rd = rl[i].rd; - if (rd->configname && path[0] == ':') { - if (!_tcscmp(path + 1, rd->configname)) - return rd; - } - if (!_tcscmp(rl[i].path, path)) - return rl[i].rd; - } - return NULL; -} - -#define NEXT_ROM_ID 73 - -static struct romheader romheaders[] = { - { L"Freezer Cartridges", 1 }, - { L"Arcadia Games", 2 }, - { NULL, 0 } -}; - -#define ALTROM(id,grp,num,size,flags,crc32,a,b,c,d,e) \ -{ L"X", 0, 0, 0, 0, 0, size, id, 0, 0, flags, (grp << 16) | num, 0, NULL, crc32, a, b, c, d, e }, -#define ALTROMPN(id,grp,num,size,flags,pn,crc32,a,b,c,d,e) \ -{ L"X", 0, 0, 0, 0, 0, size, id, 0, 0, flags, (grp << 16) | num, 0, pn, crc32, a, b, c, d, e }, - -static struct romdata roms[] = { - { L"Cloanto Amiga Forever ROM key", 0, 0, 0, 0, 0, 2069, 0, 0, 1, ROMTYPE_KEY, 0, 0, NULL, - 0x869ae1b1, 0x801bbab3,0x2e3d3738,0x6dd1636d,0x4f1d6fa7,0xe21d5874 }, - { L"Cloanto Amiga Forever 2006 ROM key", 0, 0, 0, 0, 0, 750, 48, 0, 1, ROMTYPE_KEY, 0, 0, NULL, - 0xb01c4b56, 0xbba8e5cd,0x118b8d92,0xafed5693,0x5eeb9770,0x2a662d8f }, - - { L"KS ROM v1.0 (A1000)(NTSC)", 1, 0, 1, 0, L"A1000\0", 262144, 1, 0, 0, ROMTYPE_KICK, 0, 0, NULL, - 0x299790ff, 0x00C15406,0xBEB4B8AB,0x1A16AA66,0xC05860E1,0xA7C1AD79 }, - { L"KS ROM v1.1 (A1000)(NTSC)", 1, 1, 31, 34, L"A1000\0", 262144, 2, 0, 0, ROMTYPE_KICK, 0, 0, NULL, - 0xd060572a, 0x4192C505,0xD130F446,0xB2ADA6BD,0xC91DAE73,0x0ACAFB4C}, - { L"KS ROM v1.1 (A1000)(PAL)", 1, 1, 31, 34, L"A1000\0", 262144, 3, 0, 0, ROMTYPE_KICK, 0, 0, NULL, - 0xec86dae2, 0x16DF8B5F,0xD524C5A1,0xC7584B24,0x57AC15AF,0xF9E3AD6D }, - { L"KS ROM v1.2 (A1000)", 1, 2, 33, 166, L"A1000\0", 262144, 4, 0, 0, ROMTYPE_KICK, 0, 0, NULL, - 0x9ed783d0, 0x6A7BFB5D,0xBD6B8F17,0x9F03DA84,0xD8D95282,0x67B6273B }, - { L"KS ROM v1.2 (A500,A1000,A2000)", 1, 2, 33, 180, L"A500\0A1000\0A2000\0", 262144, 5, 0, 0, ROMTYPE_KICK, 0, 0, L"315093-01", - 0xa6ce1636, 0x11F9E62C,0xF299F721,0x84835B7B,0x2A70A163,0x33FC0D88 }, - { L"KS ROM v1.3 (A500,A1000,A2000)", 1, 3, 34, 5, L"A500\0A1000\0A2000\0", 262144, 6, 0, 0, ROMTYPE_KICK, 0, 0, L"315093-02", - 0xc4f0f55f, 0x891E9A54,0x7772FE0C,0x6C19B610,0xBAF8BC4E,0xA7FCB785 }, - { L"KS ROM v1.3 (A3000)(SK)", 1, 3, 34, 5, L"A3000\0", 262144, 32, 0, 0, ROMTYPE_KICK, 0, 0, NULL, - 0xe0f37258, 0xC39BD909,0x4D4E5F4E,0x28C1411F,0x30869504,0x06062E87 }, - { L"KS ROM v1.4 (A3000)", 1, 4, 36, 16, L"A3000\0", 524288, 59, 3, 0, ROMTYPE_KICK, 0, 0, NULL, - 0xbc0ec13f, 0xF76316BF,0x36DFF14B,0x20FA349E,0xD02E4B11,0xDD932B07 }, - ALTROMPN(59, 1, 1, 262144, ROMTYPE_EVEN, L"390629-02", 0x58327536,0xd1713d7f,0x31474a59,0x48e6d488,0xe3368606,0x1cf3d1e2) - ALTROMPN(59, 1, 2, 262144, ROMTYPE_ODD , L"390630-02", 0xfe2f7fb9,0xc05c9c52,0xd014c66f,0x9019152b,0x3f2a2adc,0x2c678794) - { L"KS ROM v2.04 (A500+)", 2, 4, 37, 175, L"A500+\0", 524288, 7, 0, 0, ROMTYPE_KICK, 0, 0, L"390979-01", - 0xc3bdb240, 0xC5839F5C,0xB98A7A89,0x47065C3E,0xD2F14F5F,0x42E334A1 }, - { L"KS ROM v2.05 (A600)", 2, 5, 37, 299, L"A600\0", 524288, 8, 0, 0, ROMTYPE_KICK, 0, 0, L"391388-01", - 0x83028fb5, 0x87508DE8,0x34DC7EB4,0x7359CEDE,0x72D2E3C8,0xA2E5D8DB }, - { L"KS ROM v2.05 (A600HD)", 2, 5, 37, 300, L"A600HD\0A600\0", 524288, 9, 0, 0, ROMTYPE_KICK, 0, 0, L"391304-01", - 0x64466c2a, 0xF72D8914,0x8DAC39C6,0x96E30B10,0x859EBC85,0x9226637B }, - { L"KS ROM v2.05 (A600HD)", 2, 5, 37, 350, L"A600HD\0A600\0", 524288, 10, 0, 0, ROMTYPE_KICK, 0, 0, L"391304-02", - 0x43b0df7b, 0x02843C42,0x53BBD29A,0xBA535B0A,0xA3BD9A85,0x034ECDE4 }, - { L"KS ROM v2.04 (A3000)", 2, 4, 37, 175, L"A3000\0", 524288, 71, 3, 0, ROMTYPE_KICK, 0, 0, NULL, - 0x234a7233, 0xd82ebb59,0xafc53540,0xddf2d718,0x7ecf239b,0x7ea91590 }, - ALTROMPN(71, 1, 1, 262144, ROMTYPE_EVEN, L"390629-03", 0x7db1332b,0x48f14b31,0x279da675,0x7848df6f,0xeb531881,0x8f8f576c) - ALTROMPN(71, 1, 2, 262144, ROMTYPE_ODD , L"390630-03", 0xa245dbdf,0x83bab8e9,0x5d378b55,0xb0c6ae65,0x61385a96,0xf638598f) - - { L"KS ROM v3.0 (A1200)", 3, 0, 39, 106, L"A1200\0", 524288, 11, 0, 0, ROMTYPE_KICK, 0, 0, NULL, - 0x6c9b07d2, 0x70033828,0x182FFFC7,0xED106E53,0x73A8B89D,0xDA76FAA5 }, - ALTROMPN(11, 1, 1, 262144, ROMTYPE_EVEN, L"391523-01", 0xc742a412,0x999eb81c,0x65dfd07a,0x71ee1931,0x5d99c7eb,0x858ab186) - ALTROMPN(11, 1, 2, 262144, ROMTYPE_ODD , L"391524-01", 0xd55c6ec6,0x3341108d,0x3a402882,0xb5ef9d3b,0x242cbf3c,0x8ab1a3e9) - { L"KS ROM v3.0 (A4000)", 3, 0, 39, 106, L"A4000\0", 524288, 12, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL, - 0x9e6ac152, 0xF0B4E9E2,0x9E12218C,0x2D5BD702,0x0E4E7852,0x97D91FD7 }, - ALTROMPN(12, 1, 1, 262144, ROMTYPE_EVEN, L"391513-02", 0x36f64dd0,0x196e9f3f,0x9cad934e,0x181c07da,0x33083b1f,0x0a3c702f) - ALTROMPN(12, 1, 2, 262144, ROMTYPE_ODD , L"391514-02", 0x17266a55,0x42fbed34,0x53d1f11c,0xcbde89a9,0x826f2d11,0x75cca5cc) - { L"KS ROM v3.1 (A4000)", 3, 1, 40, 70, L"A4000\0", 524288, 13, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL, - 0x2b4566f1, 0x81c631dd,0x096bbb31,0xd2af9029,0x9c76b774,0xdb74076c }, - ALTROM(13, 1, 1, 262144, ROMTYPE_EVEN, 0xf9cbecc9,0x138d8cb4,0x3b8312fe,0x16d69070,0xde607469,0xb3d4078e) - ALTROM(13, 1, 2, 262144, ROMTYPE_ODD , 0xf8248355,0xc2379547,0x9fae3910,0xc185512c,0xa268b82f,0x1ae4fe05) - { L"KS ROM v3.1 (A500,A600,A2000)", 3, 1, 40, 63, L"A500\0A600\0A2000\0", 524288, 14, 0, 0, ROMTYPE_KICK, 0, 0, NULL, - 0xfc24ae0d, 0x3B7F1493,0xB27E2128,0x30F989F2,0x6CA76C02,0x049F09CA }, - { L"KS ROM v3.1 (A1200)", 3, 1, 40, 68, L"A1200\0", 524288, 15, 1, 0, ROMTYPE_KICK, 0, 0, NULL, - 0x1483a091, 0xE2154572,0x3FE8374E,0x91342617,0x604F1B3D,0x703094F1 }, - ALTROMPN(15, 1, 1, 262144, ROMTYPE_EVEN, L"391773-01", 0x08dbf275,0xb8800f5f,0x90929810,0x9ea69690,0xb1b8523f,0xa22ddb37) - ALTROMPN(15, 1, 2, 262144, ROMTYPE_ODD , L"391774-01", 0x16c07bf8,0x90e331be,0x1970b0e5,0x3f53a9b0,0x390b51b5,0x9b3869c2) - { L"KS ROM v3.1 (A3000)", 3, 1, 40, 68, L"A3000\0", 524288, 61, 2, 0, ROMTYPE_KICK, 0, 0, NULL, - 0xefb239cc, 0xF8E210D7,0x2B4C4853,0xE0C9B85D,0x223BA20E,0x3D1B36EE }, - ALTROM(61, 1, 1, 262144, ROMTYPE_EVEN, 0x286b9a0d,0x6763a225,0x8ec493f7,0x408cf663,0x110dae9a,0x17803ad1) - ALTROM(61, 1, 2, 262144, ROMTYPE_ODD , 0x0b8cde6a,0x5f02e97b,0x48ebbba8,0x7d516a56,0xb0400c6f,0xc3434d8d) - { L"KS ROM v3.1 (A4000)(Cloanto)", 3, 1, 40, 68, L"A4000\0", 524288, 31, 2 | 4, 1, ROMTYPE_KICK, 0, 0, NULL, - 0x43b6dd22, 0xC3C48116,0x0866E60D,0x085E436A,0x24DB3617,0xFF60B5F9 }, - { L"KS ROM v3.1 (A4000)", 3, 1, 40, 68, L"A4000\0", 524288, 16, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL, - 0xd6bae334, 0x5FE04842,0xD04A4897,0x20F0F4BB,0x0E469481,0x99406F49 }, - ALTROM(16, 1, 1, 262144, ROMTYPE_EVEN, 0xb2af34f8,0x24e52b5e,0xfc020495,0x17387ab7,0xb1a1475f,0xc540350e) - ALTROM(16, 1, 2, 262144, ROMTYPE_ODD , 0xe65636a3,0x313c7cbd,0xa5779e56,0xf19a41d3,0x4e760f51,0x7626d882) - { L"KS ROM v3.1 (A4000T)", 3, 1, 40, 70, L"A4000T\0", 524288, 17, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL, - 0x75932c3a, 0xB0EC8B84,0xD6768321,0xE01209F1,0x1E6248F2,0xF5281A21 }, - ALTROMPN(17, 1, 1, 262144, ROMTYPE_EVEN, L"391657-01", 0x0ca94f70,0xb3806eda,0xcb3362fc,0x16a154ce,0x1eeec5bf,0x5bc24789) - ALTROMPN(17, 1, 2, 262144, ROMTYPE_ODD , L"391658-01", 0xdfe03120,0xcd7a706c,0x431b04d8,0x7814d3a2,0xd8b39710,0x0cf44c0c) - { L"KS ROM v3.X (A4000)(Cloanto)", 3, 10, 45, 57, L"A4000\0", 524288, 46, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL, - 0x3ac99edc, 0x3cbfc9e1,0xfe396360,0x157bd161,0xde74fc90,0x1abee7ec }, - - { L"CD32 KS ROM v3.1", 3, 1, 40, 60, L"CD32\0", 524288, 18, 1, 0, ROMTYPE_KICKCD32, 0, 0, NULL, - 0x1e62d4a5, 0x3525BE88,0x87F79B59,0x29E017B4,0x2380A79E,0xDFEE542D }, - { L"CD32 extended ROM", 3, 1, 40, 60, L"CD32\0", 524288, 19, 1, 0, ROMTYPE_EXTCD32, 0, 0, NULL, - 0x87746be2, 0x5BEF3D62,0x8CE59CC0,0x2A66E6E4,0xAE0DA48F,0x60E78F7F }, - - /* plain CD32 rom */ - { L"CD32 ROM (KS + extended)", 3, 1, 40, 60, L"CD32\0", 2 * 524288, 64, 1, 0, ROMTYPE_KICKCD32 | ROMTYPE_EXTCD32 | ROMTYPE_CD32, 0, 0, NULL, - 0xf5d4f3c8, 0x9fa14825,0xc40a2475,0xa2eba5cf,0x325bd483,0xc447e7c1 }, - /* real CD32 rom dump 391640-03 */ - ALTROMPN(64, 1, 1, 2 * 524288, ROMTYPE_CD32, L"391640-03", 0xa4fbc94a, 0x816ce6c5,0x07787585,0x0c7d4345,0x2230a9ba,0x3a2902db ) - - { L"CD32 MPEG Cartridge ROM", 3, 1, 40, 30, L"CD32FMV\0", 262144, 23, 1, 0, ROMTYPE_CD32CART, 0, 0, NULL, - 0xc35c37bf, 0x03ca81c7,0xa7b259cf,0x64bc9582,0x863eca0f,0x6529f435 }, - - { L"CDTV extended ROM v1.00", 1, 0, 1, 0, L"CDTV\0", 262144, 20, 0, 0, ROMTYPE_EXTCDTV, 0, 0, NULL, - 0x42baa124, 0x7BA40FFA,0x17E500ED,0x9FED041F,0x3424BD81,0xD9C907BE }, - ALTROMPN(20, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, L"252606-01", 0x791cb14b,0x277a1778,0x92449635,0x3ffe56be,0x68063d2a,0x334360e4) - ALTROMPN(20, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, L"252607-01", 0xaccbbc2e,0x41b06d16,0x79c6e693,0x3c3378b7,0x626025f7,0x641ebc5c) - { L"CDTV extended ROM v2.07", 2, 7, 2, 7, L"CDTV\0", 262144, 22, 0, 0, ROMTYPE_EXTCDTV, 0, 0, NULL, - 0xceae68d2, 0x5BC114BB,0xA29F60A6,0x14A31174,0x5B3E2464,0xBFA06846 }, - ALTROM(22, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x36d73cb8,0x9574e546,0x4b390697,0xf28f9a43,0x4e604e5e,0xf5e5490a) - ALTROM(22, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, 0x6e84dce7,0x01a0679e,0x895a1a0f,0x559c7253,0xf539606b,0xd447b54f) - { L"CDTV/A570 extended ROM v2.30", 2, 30, 2, 30, L"CDTV\0", 262144, 21, 0, 0, ROMTYPE_EXTCDTV, 0, 0, L"391298-01", - 0x30b54232, 0xED7E461D,0x1FFF3CDA,0x321631AE,0x42B80E3C,0xD4FA5EBB }, - ALTROM(21, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x48e4d74f,0x54946054,0x2269e410,0x36018402,0xe1f6b855,0xfd89092b) - ALTROM(21, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, 0x8a54f362,0x03df800f,0x032046fd,0x892f6e7e,0xec08b76d,0x33981e8c) - - { L"A1000 bootstrap ROM", 0, 0, 0, 0, L"A1000\0", 65536, 24, 0, 0, ROMTYPE_KICK, 0, 0, NULL, - 0x0b1ad2d0, 0xBA93B8B8,0x5CA0D83A,0x68225CC3,0x3B95050D,0x72D2FDD7 }, - ALTROM(24, 1, 1, 8192, 0, 0x62f11c04, 0xC87F9FAD,0xA4EE4E69,0xF3CCA0C3,0x6193BE82,0x2B9F5FE6) - ALTROMPN(24, 2, 1, 4096, ROMTYPE_EVEN | ROMTYPE_8BIT, L"252179-01", 0x42553bc4,0x8855a97f,0x7a44e3f6,0x2d1c88d9,0x38fee1f4,0xc606af5b) - ALTROMPN(24, 2, 2, 4096, ROMTYPE_ODD | ROMTYPE_8BIT, L"252180-01", 0x8e5b9a37,0xd10f1564,0xb99f5ffe,0x108fa042,0x362e877f,0x569de2c3) - - { L"The Diagnostic 2.0 (Logica)", 2, 0, 2, 0, L"LOGICA\0", 524288, 72, 0, 0, ROMTYPE_KICK | ROMTYPE_SPECIALKICK, 0, 0, NULL, - 0x8484f426, 0xba10d161,0x66b2e2d6,0x177c979c,0x99edf846,0x2b21651e }, - - { L"Freezer: Action Replay Mk I v1.00", 1, 0, 1, 0, L"AR\0", 65536, 52, 0, 0, ROMTYPE_AR, 0, 1, NULL, - 0x2d921771, 0x1EAD9DDA,0x2DAD2914,0x6441F5EF,0x72183750,0x22E01248 }, - ALTROM(52, 1, 1, 32768, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x82d6eb87, 0x7c9bac11,0x28666017,0xeee6f019,0x63fb3890,0x7fbea355) - ALTROM(52, 1, 2, 32768, ROMTYPE_ODD | ROMTYPE_8BIT, 0x40ae490c, 0x81d8e432,0x01b73fd9,0x2e204ebd,0x68af8602,0xb62ce397) - { L"Freezer: Action Replay Mk I v1.50", 1, 50, 1, 50, L"AR\0", 65536, 25, 0, 0, ROMTYPE_AR, 0, 1, NULL, - 0xd4ce0675, 0x843B433B,0x2C56640E,0x045D5FDC,0x854DC6B1,0xA4964E7C }, - ALTROM(25, 1, 1, 32768, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x7fbd6de2, 0xb5f71a5c,0x09d65ecc,0xa8a3bc93,0x93558461,0xca190228) - ALTROM(25, 1, 2, 32768, ROMTYPE_ODD | ROMTYPE_8BIT, 0x43018069, 0xad8ff242,0xb2cbf125,0x1fc53a73,0x581cf57a,0xb69cee00) - { L"Freezer: Action Replay Mk II v2.05", 2, 5, 2, 5, L"AR\0", 131072, 26, 0, 0, ROMTYPE_AR, 0, 1, NULL, - 0x1287301f, 0xF6601DE8,0x888F0050,0x72BF562B,0x9F533BBC,0xAF1B0074 }, - { L"Freezer: Action Replay Mk II v2.12", 2, 12, 2, 12, L"AR\0", 131072, 27, 0, 0, ROMTYPE_AR, 0, 1, NULL, - 0x804d0361, 0x3194A07A,0x0A82D8B5,0xF2B6AEFA,0x3CA581D6,0x8BA8762B }, - { L"Freezer: Action Replay Mk II v2.14", 2, 14, 2, 14, L"AR\0", 131072, 28, 0, 0, ROMTYPE_AR, 0, 1, NULL, - 0x49650e4f, 0x255D6DF6,0x3A4EAB0A,0x838EB1A1,0x6A267B09,0x59DFF634 }, - { L"Freezer: Action Replay Mk III v3.09", 3, 9, 3, 9, L"AR\0", 262144, 29, 0, 0, ROMTYPE_AR, 0, 1, NULL, - 0x0ed9b5aa, 0x0FF3170A,0xBBF0CA64,0xC9DD93D6,0xEC0C7A01,0xB5436824 }, - ALTROM(29, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x2b84519f, 0x7841873b,0xf009d834,0x1dfa2794,0xb3751bac,0xf86adcc8) - ALTROM(29, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, 0x1d35bd56, 0x6464be16,0x26b51949,0x9e76e4e3,0x409e8016,0x515d48b6) - { L"Freezer: Action Replay Mk III v3.17", 3, 17, 3, 17, L"AR\0", 262144, 30, 0, 0, ROMTYPE_AR, 0, 1, NULL, - 0xc8a16406, 0x5D4987C2,0xE3FFEA8B,0x1B02E314,0x30EF190F,0x2DB76542 }, - { L"Freezer: Action Replay 1200", 0, 0, 0, 0, L"AR\0", 262144, 47, 0, 0, ROMTYPE_AR, 0, 1, NULL, - 0x8d760101, 0x0F6AB834,0x2810094A,0xC0642F62,0xBA42F78B,0xC0B07E6A }, - - { L"Freezer: Action Cartridge Super IV Professional", 0, 0, 0, 0, L"SUPERIV\0", 0, 62, 0, 0, ROMTYPE_SUPERIV, 0, 1, NULL, - 0xffffffff, 0, 0, 0, 0, 0, L"SuperIV" }, - { L"Freezer: Action Cart. Super IV Pro (+ROM v4.3)", 4, 3, 4, 3, L"SUPERIV\0", 170368, 60, 0, 0, ROMTYPE_SUPERIV, 0, 1, NULL, - 0xe668a0be, 0x633A6E65,0xA93580B8,0xDDB0BE9C,0x9A64D4A1,0x7D4B4801 }, - { L"Freezer: X-Power Professional 500 v1.2", 1, 2, 1, 2, L"XPOWER\0", 131072, 65, 0, 0, ROMTYPE_XPOWER, 0, 1, NULL, - 0x9e70c231, 0xa2977a1c,0x41a8ca7d,0x4af4a168,0x726da542,0x179d5963 }, - ALTROM(65, 1, 1, 65536, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xf98742e4,0xe8e683ba,0xd8b38d1f,0x79f3ad83,0xa9e67c6f,0xa91dc96c) - ALTROM(65, 1, 2, 65536, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xdfb9984b,0x8d6bdd49,0x469ec8e2,0x0143fbb3,0x72e92500,0x99f07910) - { L"Freezer: X-Power Professional 500 v1.3", 1, 2, 1, 2, L"XPOWER\0", 131072, 68, 0, 0, ROMTYPE_XPOWER, 0, 1, NULL, - 0x31e057f0, 0x84650266,0x465d1859,0x7fd71dee,0x00775930,0xb7e450ee }, - ALTROM(68, 1, 1, 65536, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x0b2ce0c7,0x45ad5456,0x89192404,0x956f47ce,0xf66a5274,0x57ace33b) - ALTROM(68, 1, 2, 65536, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x34580c35,0x8ad42566,0x7364f238,0x978f4381,0x08f8d5ec,0x470e72ea) - { L"Freezer: Nordic Power v1.5", 1, 5, 1, 5, L"NPOWER\0", 65536, 69, 0, 0, ROMTYPE_NORDIC, 0, 1, NULL, - 0x83b4b21c, 0xc56ced25,0x506a5aab,0x3fa13813,0x4fc9e5ae,0x0f9d3709 }, - ALTROM(69, 1, 1, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xdd207174,0xae67652d,0x64f5db20,0x0f4b2110,0xee59567f,0xfbd90a1b) - ALTROM(69, 1, 2, 32768, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x8f93d85d,0x73c62d21,0x40c0c092,0x6315b702,0xdd5d0f05,0x3dad7fab) - { L"Freezer: Nordic Power v2.0", 2, 0, 2, 0, L"NPOWER\0", 65536, 67, 0, 0, ROMTYPE_NORDIC, 0, 1, NULL, - 0xa4db2906, 0x0aec68f7,0x25470c89,0x6b699ff4,0x6623dec5,0xc777466e }, - ALTROM(67, 1, 1, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xb21be46c,0x50dc607c,0xce976bbd,0x3841eaf0,0x591ddc7e,0xa1939ad2) - ALTROM(67, 1, 2, 32768, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x96057aed,0xdd9209e2,0x1d5edfc1,0xcdb52abe,0x93de0f35,0xc43da696) - { L"Freezer: Nordic Power v3.0", 3, 0, 3, 0, L"NPOWER\0", 65536, 70, 0, 0, ROMTYPE_NORDIC, 0, 1, NULL, - 0x72850aef, 0x59c91d1f,0xa8f118f9,0x0bdba05a,0x9ae788d7,0x7a6cc7c9 }, - ALTROM(70, 1, 1, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xf3330e1f,0x3a597db2,0xb7d11b6c,0xb8e13496,0xc215f223,0x88c4ca3c) - ALTROM(70, 1, 2, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xee58e0f9,0x4148f4cb,0xb42cec33,0x8ca144de,0xd4f54118,0xe0f185dd) - { L"Freezer: HRTMon v2.32 (built-in)", 0, 0, 0, 0, L"HRTMON\0", 0, 63, 0, 0, ROMTYPE_HRTMON, 0, 1, NULL, - 0xffffffff, 0, 0, 0, 0, 0, L"HRTMon" }, - - { L"A590/A2091 SCSI boot ROM", 6, 0, 6, 0, L"A590\0A2091\0", 16384, 53, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL, - 0x8396cf4e, 0x5E03BC61,0x8C862ABE,0x7BF79723,0xB4EEF4D2,0x1859A0F2 }, - ALTROM(53, 1, 1, 8192, ROMTYPE_ODD | ROMTYPE_8BIT, 0xb0b8cf24,0xfcf40175,0x05f4d441,0x814b45d5,0x59c19eab,0x43816b30) - ALTROM(53, 1, 2, 8192, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x2e77bbff,0x8a098845,0x068f32cf,0xa4d34a27,0x8cd290f6,0x1d35a52c) - { L"A590/A2091 SCSI boot ROM", 6, 6, 6, 6, L"A590\0A2091\0", 16384, 54, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL, - 0x33e00a7a, 0x739BB828,0xE874F064,0x9360F59D,0x26B5ED3F,0xBC99BB66 }, - ALTROM(54, 1, 1, 8192, ROMTYPE_ODD | ROMTYPE_8BIT, 0xe536bbb2,0xfd7f8a6d,0xa18c1b02,0xd07eb990,0xc2467a24,0x183ede12) - ALTROM(54, 1, 2, 8192, ROMTYPE_EVEN | ROMTYPE_8BIT, 0xc0871d25,0xe155f18a,0xbb90cf82,0x0589c15e,0x70559d3b,0x6b391af8) - { L"A590/A2091 SCSI boot ROM", 7, 0, 7, 0, L"A590\0A2091\0", 16384, 55, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL, - 0x714a97a2, 0xE50F01BA,0xF2899892,0x85547863,0x72A82C33,0x3C91276E }, - ALTROM(55, 1, 1, 8192, ROMTYPE_ODD | ROMTYPE_8BIT, 0xa9ccffed,0x149f5bd5,0x2e2d2990,0x4e3de483,0xb9ad7724,0x48e9278e) - ALTROM(55, 1, 2, 8192, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x2942747a,0xdbd7648e,0x79c75333,0x7ff3e4f4,0x91de224b,0xf05e6bb6) - { L"A590/A2091 SCSI Guru boot ROM", 6, 14, 6, 14, L"A590\0A2091\0", 32768, 56, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL, - 0x04e52f93, 0x6DA21B6F,0x5E8F8837,0xD64507CD,0x8A4D5CDC,0xAC4F426B }, - { L"A4091 SCSI boot ROM", 40, 9, 40, 9, L"A4091\0", 32768, 57, 0, 0, ROMTYPE_A4091BOOT, 0, 0, NULL, - 0x00000000, 0, 0, 0, 0, 0 }, - { L"A4091 SCSI boot ROM", 40, 13, 40, 13, L"A4091\0", 32768, 58, 0, 0, ROMTYPE_A4091BOOT, 0, 0, NULL, - 0x54cb9e85, 0x3CE66919,0xF6FD6797,0x4923A12D,0x91B730F1,0xFFB4A7BA }, - - { L"Arcadia OnePlay 2.11", 0, 0, 0, 0, L"ARCADIA\0", 0, 49, 0, 0, ROMTYPE_ARCADIABIOS, 0, 0 }, - { L"Arcadia TenPlay 2.11", 0, 0, 0, 0, L"ARCADIA\0", 0, 50, 0, 0, ROMTYPE_ARCADIABIOS, 0, 0 }, - { L"Arcadia OnePlay 3.00", 0, 0, 0, 0, L"ARCADIA\0", 0, 51, 0, 0, ROMTYPE_ARCADIABIOS, 0, 0 }, - - { L"Arcadia SportTime Table Hockey", 0, 0, 0, 0, L"ARCADIA\0", 0, 33, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia SportTime Bowling", 0, 0, 0, 0, L"ARCADIA\0", 0, 34, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia World Darts", 0, 0, 0, 0, L"ARCADIA\0", 0, 35, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia Magic Johnson's Fast Break", 0, 0, 0, 0, L"ARCADIA\0", 0, 36, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia Leader Board Golf", 0, 0, 0, 0, L"ARCADIA\0", 0, 37, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia Leader Board Golf (alt)", 0, 0, 0, 0, L"ARCADIA\0", 0, 38, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia Ninja Mission", 0, 0, 0, 0, L"ARCADIA\0", 0, 39, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia Road Wars", 0, 0, 0, 0, L"ARCADIA\0", 0, 40, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia Sidewinder", 0, 0, 0, 0, L"ARCADIA\0", 0, 41, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia Spot", 0, 0, 0, 0, L"ARCADIA\0", 0, 42, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia Space Ranger", 0, 0, 0, 0, L"ARCADIA\0", 0, 43, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia Xenon", 0, 0, 0, 0, L"ARCADIA\0", 0, 44, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - { L"Arcadia World Trophy Soccer", 0, 0, 0, 0, L"ARCADIA\0", 0, 45, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, - - { NULL } - -}; - -void romlist_clear (void) -{ - int i; - int mask = 0; - struct romdata *parent; - TCHAR *pn; - - xfree (rl); - rl = 0; - romlist_cnt = 0; - parent = 0; - pn = NULL; - for (i = 0; roms[i].name; i++) { - struct romdata *rd = &roms[i]; - if (rd->group == 0) { - parent = rd; - mask = rd->type; - pn = parent->partnumber; - } else { - rd->type &= ~ROMTYPE_MASK; - rd->type |= mask & ROMTYPE_MASK; - if (rd->partnumber && !pn) { - TCHAR *newpn; - if (parent->partnumber == NULL) - parent->partnumber = my_strdup (L""); - newpn = xcalloc ((_tcslen (parent->partnumber) + 1 + _tcslen (rd->partnumber) + 1) * sizeof (TCHAR), 1); - if (_tcslen (parent->partnumber) > 0) { - _tcscpy (newpn, parent->partnumber); - _tcscat (newpn, L"/"); - } - _tcscat (newpn, rd->partnumber); - xfree (parent->partnumber); - parent->partnumber = newpn; - } - } - } -} - -/* remove rom entries that need 2 or more roms but not everything required is present */ -static void romlist_cleanup (void) -{ - int i = 0; - while (roms[i].name) { - struct romdata *rd = &roms[i]; - int grp = rd->group >> 16; - int ok = 1; - int j = i; - int k = i; - while (rd->name && (rd->group >> 16) == grp && grp > 0) { - struct romlist *rl = romlist_getrl (rd); - if (!rl) - ok = 0; - rd++; - j++; - } - if (ok == 0) { - while (i < j) { - struct romlist *rl = romlist_getrl (&roms[i]); - if (rl) { - int cnt = romlist_cnt - i - 1; - write_log (L"%s '%s' removed from romlist\n", roms[k].name, rl->path); - xfree (rl->path); - if (cnt > 0) - memmove (rl, rl + 1, cnt * sizeof (struct romlist)); - romlist_cnt--; - } - i++; - } - } - i++; - } - for (i = 0; i < romlist_cnt; i++) { - struct romlist *rll = &rl[i]; - //write_log (L"%s (%s)\n", rll->rd->name, rll->path); - } -} - -struct romlist **getromlistbyident(int ver, int rev, int subver, int subrev, TCHAR *model, int all) -{ - int i, j, ok, out, max; - struct romdata *rd; - struct romlist **rdout, *rltmp; - void *buf; - static struct romlist rlstatic; - - for (i = 0; roms[i].name; i++); - if (all) - max = i; - else - max = romlist_cnt; - buf = xmalloc ((sizeof (struct romlist*) + sizeof (struct romlist)) * (i + 1)); - rdout = (struct romlist**)buf; - rltmp = (struct romlist*)((uae_u8*)buf + (i + 1) * sizeof (struct romlist*)); - out = 0; - for (i = 0; i < max; i++) { - ok = 0; - if (!all) - rd = rl[i].rd; - else - rd = &roms[i]; - if (rd->group) - continue; - if (model && !_tcsicmp (model, rd->name)) - ok = 2; - if (rd->ver == ver && (rev < 0 || rd->rev == rev)) { - if (subver >= 0) { - if (rd->subver == subver && (subrev < 0 || rd->subrev == subrev) && rd->subver > 0) - ok = 1; - } else { - ok = 1; - } - } - if (!ok) - continue; - if (model && ok < 2) { - TCHAR *p = rd->model; - ok = 0; - while (*p) { - if (!_tcscmp(rd->model, model)) { - ok = 1; - break; - } - p = p + _tcslen(p) + 1; - } - } - if (!model && rd->type != ROMTYPE_KICK) - ok = 0; - if (ok) { - if (all) { - rdout[out++] = rltmp; - rltmp->path = NULL; - rltmp->rd = rd; - rltmp++; - } else { - rdout[out++] = &rl[i]; - } - } - } - if (out == 0) { - xfree (rdout); - return NULL; - } - for (i = 0; i < out; i++) { - int v1 = rdout[i]->rd->subver * 1000 + rdout[i]->rd->subrev; - for (j = i + 1; j < out; j++) { - int v2 = rdout[j]->rd->subver * 1000 + rdout[j]->rd->subrev; - if (v1 < v2) { - struct romlist *rltmp = rdout[j]; - rdout[j] = rdout[i]; - rdout[i] = rltmp; - } - } - } - rdout[out] = NULL; - return rdout; -} - -struct romdata *getarcadiarombyname (TCHAR *name) -{ - int i; - for (i = 0; roms[i].name; i++) { - if (roms[i].group == 0 && (roms[i].type == ROMTYPE_ARCADIAGAME || roms[i].type == ROMTYPE_ARCADIAGAME)) { - TCHAR *p = roms[i].name; - p = p + _tcslen (p) + 1; - if (_tcslen (name) >= _tcslen (p) + 4) { - TCHAR *p2 = name + _tcslen (name) - _tcslen (p) - 4; - if (!memcmp (p, p2, _tcslen (p)) && !memcmp (p2 + _tcslen (p2) - 4, ".zip", 4)) - return &roms[i]; - } - } - } - return NULL; -} - -struct romlist **getarcadiaroms(void) -{ - int i, out, max; - void *buf; - struct romlist **rdout, *rltmp; - - max = 0; - for (i = 0; roms[i].name; i++) { - if (roms[i].group == 0 && (roms[i].type == ROMTYPE_ARCADIABIOS || roms[i].type == ROMTYPE_ARCADIAGAME)) - max++; - } - buf = xmalloc ((sizeof (struct romlist*) + sizeof (struct romlist)) * (max + 1)); - rdout = (struct romlist**)buf; - rltmp = (struct romlist*)((uae_u8*)buf + (max + 1) * sizeof (struct romlist*)); - out = 0; - for (i = 0; roms[i].name; i++) { - if (roms[i].group == 0 && (roms[i].type == ROMTYPE_ARCADIABIOS || roms[i].type == ROMTYPE_ARCADIAGAME)) { - rdout[out++] = rltmp; - rltmp->path = NULL; - rltmp->rd = &roms[i]; - rltmp++; - } - } - rdout[out] = NULL; - return rdout; -} - - -static int kickstart_checksum_do (uae_u8 *mem, int size) -{ - uae_u32 cksum = 0, prevck = 0; - int i; - for (i = 0; i < size; i+=4) { - uae_u32 data = mem[i]*65536*256 + mem[i+1]*65536 + mem[i+2]*256 + mem[i+3]; - cksum += data; - if (cksum < prevck) - cksum++; - prevck = cksum; - } - return cksum == 0xffffffff; -} - -#define ROM_KEY_NUM 3 -struct rom_key { - uae_u8 *key; - int size; -}; - -static struct rom_key keyring[ROM_KEY_NUM]; - -static void addkey (uae_u8 *key, int size, const TCHAR *name) -{ - int i; - - //write_log (L"addkey(%08x,%d,'%s')\n", key, size, name); - if (key == NULL || size == 0) { - xfree (key); - return; - } - for (i = 0; i < ROM_KEY_NUM; i++) { - if (keyring[i].key && keyring[i].size == size && !memcmp (keyring[i].key, key, size)) { - xfree (key); - //write_log (L"key already in keyring\n"); - return; - } - } - for (i = 0; i < ROM_KEY_NUM; i++) { - if (keyring[i].key == NULL) - break; - } - if (i == ROM_KEY_NUM) { - xfree (key); - //write_log (L"keyring full\n"); - return; - } - keyring[i].key = key; - keyring[i].size = size; - write_log (L"ROM KEY '%s' %d bytes loaded\n", name, size); -} - -static void addkeyfile (const TCHAR *path) -{ - struct zfile *f; - int keysize; - uae_u8 *keybuf; - - f = zfile_fopen (path, L"rb", ZFD_NORMAL); - if (!f) - return; - zfile_fseek (f, 0, SEEK_END); - keysize = zfile_ftell (f); - if (keysize > 0) { - zfile_fseek (f, 0, SEEK_SET); - keybuf = xmalloc (keysize); - zfile_fread (keybuf, 1, keysize, f); - addkey (keybuf, keysize, path); - } - zfile_fclose (f); -} - -static void addkeydir (const TCHAR *path) -{ - TCHAR tmp[MAX_DPATH]; - - _tcscpy (tmp, path); - if (zfile_exists (tmp)) { - int i; - for (i = _tcslen (tmp) - 1; i > 0; i--) { - if (tmp[i] == '\\' || tmp[i] == '/') - break; - } - tmp[i] = 0; - } - _tcscat (tmp, L"/"); - _tcscat (tmp, L"rom.key"); - addkeyfile (tmp); -} - -int get_keyring (void) -{ - int i, num = 0; - for (i = 0; i < ROM_KEY_NUM; i++) { - if (keyring[i].key) - num++; - } - return num; -} - -int load_keyring (struct uae_prefs *p, TCHAR *path) -{ - uae_u8 *keybuf; - int keysize; - TCHAR tmp[MAX_PATH], *d; - int keyids[] = { 0, 48, -1 }; - int cnt, i; - - free_keyring (); - keybuf = target_load_keyfile (p, path, &keysize, tmp); - addkey (keybuf, keysize, tmp); - for (i = 0; keyids[i] >= 0; i++) { - struct romdata *rd = getromdatabyid (keyids[i]); - TCHAR *s; - if (rd) { - s = romlist_get (rd); - if (s) - addkeyfile (s); - } - } - - cnt = 0; - for (;;) { - keybuf = NULL; - keysize = 0; - tmp[0] = 0; - switch (cnt) - { - case 0: - if (path) - _tcscpy (tmp, path); - break; - case 1: - _tcscat (tmp, L"rom.key"); - break; - case 2: - if (p) { - _tcscpy (tmp, p->path_rom); - _tcscat (tmp, L"rom.key"); - } - break; - case 3: - _tcscpy (tmp, L"roms/rom.key"); - break; - case 4: - _tcscpy (tmp, start_path_data); - _tcscat (tmp, L"rom.key"); - break; - case 5: - _stprintf (tmp, L"%s../shared/rom/rom.key", start_path_data); - break; - case 6: - if (p) { - for (i = 0; uae_archive_extensions[i]; i++) { - if (_tcsstr (p->romfile, uae_archive_extensions[i])) - break; - } - if (!uae_archive_extensions[i]) { - _tcscpy (tmp, p->romfile); - d = _tcsrchr (tmp, '/'); - if (!d) - d = _tcsrchr (tmp, '\\'); - if (d) - _tcscpy (d + 1, L"rom.key"); - } - } - break; - case 7: - return get_keyring (); - } - cnt++; - if (!tmp[0]) - continue; - addkeyfile (tmp); - } -} -void free_keyring (void) -{ - int i; - for (i = 0; i < ROM_KEY_NUM; i++) - xfree (keyring[i].key); - memset(keyring, 0, sizeof (struct rom_key) * ROM_KEY_NUM); -} - -struct romdata *getromdatabyname (TCHAR *name) -{ - TCHAR tmp[MAX_PATH]; - int i = 0; - while (roms[i].name) { - if (!roms[i].group) { - getromname (&roms[i], tmp); - if (!_tcscmp (tmp, name) || !_tcscmp (roms[i].name, name)) - return &roms[i]; - } - i++; - } - return 0; -} - -struct romdata *getromdatabyid (int id) -{ - int i = 0; - while (roms[i].name) { - if (id == roms[i].id && roms[i].group == 0) - return &roms[i]; - i++; - } - return 0; -} - -struct romdata *getromdatabyidgroup (int id, int group, int subitem) -{ - int i = 0; - group = (group << 16) | subitem; - while (roms[i].name) { - if (id == roms[i].id && roms[i].group == group) - return &roms[i]; - i++; - } - return 0; -} - -STATIC_INLINE int notcrc32 (uae_u32 crc32) -{ - if (crc32 == 0xffffffff || crc32 == 0x00000000) - return 1; - return 0; -} - -struct romdata *getromdatabycrc (uae_u32 crc32) -{ - int i = 0; - while (roms[i].name) { - if (roms[i].group == 0 && crc32 == roms[i].crc32 && !notcrc32(crc32)) - return &roms[i]; - i++; - } - return 0; -} - -static int cmpsha1 (uae_u8 *s1, struct romdata *rd) -{ - int i; - - for (i = 0; i < SHA1_SIZE / 4; i++) { - uae_u32 v1 = (s1[0] << 24) | (s1[1] << 16) | (s1[2] << 8) | (s1[3] << 0); - uae_u32 v2 = rd->sha1[i]; - if (v1 != v2) - return -1; - s1 += 4; - } - 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; -} - -int decode_cloanto_rom_do (uae_u8 *mem, int size, int real_size) -{ - int cnt, t, i; - - for (i = ROM_KEY_NUM - 1; i >= 0; i--) { - uae_u8 sha1[SHA1_SIZE]; - struct romdata *rd; - int keysize = keyring[i].size; - uae_u8 *key = keyring[i].key; - if (!key) - continue; - for (t = cnt = 0; cnt < size; cnt++, t = (t + 1) % keysize) { - mem[cnt] ^= key[t]; - if (real_size == cnt + 1) - t = keysize - 1; - } - if ((mem[2] == 0x4e && mem[3] == 0xf9) || (mem[0] == 0x11 && (mem[1] == 0x11 || mem[1] == 0x14))) { - cloanto_rom = 1; - return 1; - } - get_sha1 (mem, size, sha1); - rd = checkromdata (sha1, size, -1); - if (rd) { - if (rd->cloanto) - cloanto_rom = 1; - return 1; - } - if (i == 0) - break; - for (t = cnt = 0; cnt < size; cnt++, t = (t + 1) % keysize) { - mem[cnt] ^= key[t]; - if (real_size == cnt + 1) - t = keysize - 1; - } - } - return 0; -} - -static int decode_rekick_rom_do (uae_u8 *mem, int size, int real_size) -{ - uae_u32 d1 = 0xdeadfeed, d0; - int i; - - for (i = 0; i < size / 8; i++) { - d0 = ((mem[i * 8 + 0] << 24) | (mem[i * 8 + 1] << 16) | (mem[i * 8 + 2] << 8) | mem[i * 8 + 3]); - d1 = d1 ^ d0; - mem[i * 8 + 0] = d1 >> 24; - mem[i * 8 + 1] = d1 >> 16; - mem[i * 8 + 2] = d1 >> 8; - mem[i * 8 + 3] = d1; - d1 = ((mem[i * 8 + 4] << 24) | (mem[i * 8 + 5] << 16) | (mem[i * 8 + 6] << 8) | mem[i * 8 + 7]); - d0 = d0 ^ d1; - mem[i * 8 + 4] = d0 >> 24; - mem[i * 8 + 5] = d0 >> 16; - mem[i * 8 + 6] = d0 >> 8; - mem[i * 8 + 7] = d0; - } - return 1; -} - -static int decode_rom (uae_u8 *mem, int size, int mode, int real_size) -{ - if (mode == 1) { - if (!decode_cloanto_rom_do (mem, size, real_size)) { -#ifndef SINGLEFILE - notify_user (NUMSG_NOROMKEY); -#endif - return 0; - } - return 1; - } else if (mode == 2) { - decode_rekick_rom_do (mem, size, real_size); - return 1; - } - return 0; -} - -struct romdata *getromdatabydata (uae_u8 *rom, int 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 = xmalloc (size); - int tmpsize = size - 11; - memcpy (tmpbuf, rom + 11, tmpsize); - decode_rom (tmpbuf, tmpsize, 1, tmpsize); - rom = tmpbuf; - size = tmpsize; - } -#if 0 - if (size > 0x6c + 524288 && !memcmp (rom, "AMIG", 4)) { - uae_u8 *tmpbuf = (uae_u8*)xmalloc (size); - int tmpsize = size - 0x6c; - memcpy (tmpbuf, rom + 0x6c, tmpsize); - decode_rom (tmpbuf, tmpsize, 2, tmpsize); - rom = tmpbuf; - size = tmpsize; - } -#endif - 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); - } - } - xfree (tmpbuf); - return ret; -} - -struct romdata *getromdatabyzfile (struct zfile *f) -{ - int pos, size; - uae_u8 *p; - struct romdata *rd; - - pos = zfile_ftell (f); - zfile_fseek (f, 0, SEEK_END); - size = zfile_ftell (f); - p = xmalloc (size); - if (!p) - return 0; - memset (p, 0, size); - zfile_fseek (f, 0, SEEK_SET); - zfile_fread (p, 1, size, f); - zfile_fseek (f, pos, SEEK_SET); - rd = getromdatabydata (p, size); - xfree (p); - return rd; -} - -void getromname (struct romdata *rd, TCHAR *name) -{ - name[0] = 0; - if (!rd) - return; - while (rd->group) - rd--; - _tcscat (name, rd->name); - if ((rd->subrev || rd->subver) && rd->subver != rd->ver) - _stprintf (name + _tcslen (name), L" rev %d.%d", rd->subver, rd->subrev); - if (rd->size > 0) - _stprintf (name + _tcslen (name), L" (%dk)", (rd->size + 1023) / 1024); - if (rd->partnumber && _tcslen (rd->partnumber) > 0) - _stprintf (name + _tcslen (name), L" [%s]", rd->partnumber); -} - -struct romlist *getromlistbyromdata (struct romdata *rd) -{ - int ids[2]; - - ids[0] = rd->id; - ids[1] = 0; - return getromlistbyids(ids); -} - -struct romlist *getromlistbyids (int *ids) -{ - struct romdata *rd; - int i, j; - - i = 0; - while (ids[i] >= 0) { - rd = getromdatabyid (ids[i]); - if (rd) { - for (j = 0; j < romlist_cnt; j++) { - if (rl[j].rd->id == rd->id) - return &rl[j]; - } - } - i++; - } - return NULL; -} - -void romwarning (int *ids) -{ - int i, exp; - TCHAR tmp1[MAX_DPATH], tmp2[MAX_DPATH]; - TCHAR tmp3[MAX_DPATH]; - - exp = 0; - tmp2[0] = 0; - i = 0; - while (ids[i] >= 0) { - struct romdata *rd = getromdatabyid (ids[i]); - getromname (rd, tmp1); - _tcscat (tmp2, L"- "); - _tcscat (tmp2, tmp1); - _tcscat (tmp2, L"\n"); - if (rd->type & (ROMTYPE_A2091BOOT | ROMTYPE_A4091BOOT)) - exp++; - i++; - } - translate_message (exp ? NUMSG_EXPROMNEED : NUMSG_ROMNEED, tmp3); - gui_message (tmp3, tmp2); -} - addrbank *mem_banks[MEMORY_BANKS]; /* This has two functions. It either holds a host address that, when added @@ -2425,311 +1474,6 @@ void a3000_fakekick (int map) } } -static int kickstart_checksum (uae_u8 *mem, int size) -{ - if (!kickstart_checksum_do (mem, size)) { -#ifndef SINGLEFILE - notify_user (NUMSG_KSROMCRCERROR); -#endif - return 0; - } - return 1; -} - -static int read_rom_file (uae_u8 *buf, struct romdata *rd) -{ - struct zfile *zf; - struct romlist *rl = romlist_getrl (rd); - uae_char tmp[11]; - - if (!rl || _tcslen (rl->path) == 0) - return 0; - zf = zfile_fopen (rl->path, L"rb", ZFD_NORMAL); - if (!zf) - return 0; - addkeydir (rl->path); - zfile_fread (tmp, sizeof tmp, 1, zf); - if (!memcmp (tmp, "AMIROMTYPE1", sizeof tmp)) { - zfile_fread (buf, rd->size, 1, zf); - decode_cloanto_rom_do (buf, rd->size, rd->size); - } else { - memcpy (buf, tmp, sizeof tmp); - zfile_fread (buf + sizeof tmp, rd->size - sizeof (tmp), 1, zf); - } - zfile_fclose (zf); - return 1; -} - -static void byteswap (uae_u8 *buf, int size) -{ - int i; - for (i = 0; i < size; i += 2) { - uae_u8 t = buf[i]; - buf[i] = buf[i + 1]; - buf[i + 1] = t; - } -} -static void wordbyteswap (uae_u8 *buf, int size) -{ - int i; - for (i = 0; i < size; i += 4) { - uae_u8 t; - t = buf[i + 0]; - buf[i + 0] = buf[i + 2]; - buf[i + 2] = t; - t = buf[i + 1]; - buf[i + 1] = buf[i + 3]; - buf[i + 3] = t; - } -} - -static void mergecd32 (uae_u8 *dst, uae_u8 *src, int size) -{ - int i, k; - k = 0; - for (i = 0; i < size / 2; i += 2) { - int j = i + size / 2; - dst[k + 1] = src[i + 0]; - dst[k + 0] = src[i + 1]; - dst[k + 3] = src[j + 0]; - dst[k + 2] = src[j + 1]; - k += 4; - } -#if 0 - { - struct zfile *f; - f = zfile_fopen ("c:\\d\\1.rom","wb", ZFD_NORMAL); - zfile_fwrite (dst, 1, size, f); - zfile_fclose(f); - } -#endif -} - -static void descramble (struct romdata *rd, uae_u8 *data, int size, int odd) -{ - int flags = rd->type; - - if (flags & (ROMTYPE_NORDIC | ROMTYPE_XPOWER)) - descramble_nordicpro (data, size, odd); -} - -struct zfile *read_rom (struct romdata **prd) -{ - struct romdata *rd2 = *prd; - struct romdata *rd = *prd; - TCHAR *name; - int id = rd->id; - uae_u32 crc32; - int size; - uae_u8 *buf, *buf2; - - /* find parent node */ - for (;;) { - if (rd2 == &roms[0]) - break; - if (rd2[-1].id != id) - break; - rd2--; - } - *prd = rd2; - size = rd2->size; - crc32 = rd2->crc32; - name = rd->name; - buf = xmalloc (size * 2); - memset (buf, 0xff, size * 2); - if (!buf) - return NULL; - buf2 = buf + size; - while (rd->id == id) { - int i, j, add; - int ok = 0; - uae_u32 flags = rd->type; - int odd = (flags & ROMTYPE_ODD) ? 1 : 0; - - add = 0; - for (i = 0; i < 2; i++) { - memset (buf, 0, size); - if (!(flags & (ROMTYPE_EVEN | ROMTYPE_ODD))) { - read_rom_file (buf, rd); - if (flags & ROMTYPE_CD32) { - memcpy (buf2, buf, size); - mergecd32 (buf, buf2, size); - } - add = 1; - i++; - } else { - int romsize = size / 2; - if (i) - odd = !odd; - if (flags & ROMTYPE_8BIT) { - read_rom_file (buf2, rd); - if (flags & ROMTYPE_BYTESWAP) - byteswap (buf2, romsize); - if (flags & ROMTYPE_SCRAMBLED) - descramble (rd, buf2, romsize, odd); - for (j = 0; j < size; j += 2) - buf[j + odd] = buf2[j / 2]; - read_rom_file (buf2, rd + 1); - if (flags & ROMTYPE_BYTESWAP) - byteswap (buf2, romsize); - if (flags & ROMTYPE_SCRAMBLED) - descramble (rd + 1, buf2, romsize, !odd); - for (j = 0; j < size; j += 2) - buf[j + (1 - odd)] = buf2[j / 2]; - } else { - read_rom_file (buf2, rd); - if (flags & ROMTYPE_BYTESWAP) - byteswap (buf2, romsize); - if (flags & ROMTYPE_SCRAMBLED) - descramble (rd, buf2, romsize, odd); - for (j = 0; j < size; j += 4) { - buf[j + 2 * odd + 0] = buf2[j / 2 + 0]; - buf[j + 2 * odd + 1] = buf2[j / 2 + 1]; - } - read_rom_file (buf2, rd + 1); - if (flags & ROMTYPE_BYTESWAP) - byteswap (buf2, romsize); - if (flags & ROMTYPE_SCRAMBLED) - descramble (rd + 1, buf2, romsize, !odd); - for (j = 0; j < size; j += 4) { - buf[j + 2 * (1 - odd) + 0] = buf2[j / 2 + 0]; - buf[j + 2 * (1 - odd) + 1] = buf2[j / 2 + 1]; - } - } - add = 2; - } - if (get_crc32 (buf, size) == crc32) { - ok = 1; - } else { - /* perhaps it is byteswapped without byteswap entry? */ - byteswap (buf, size); - if (get_crc32 (buf, size) == crc32) - ok = 1; - } - if (ok) { - struct zfile *zf = zfile_fopen_empty (NULL, name, size); - if (zf) { - zfile_fwrite (buf, size, 1, zf); - zfile_fseek (zf, 0, SEEK_SET); - } - xfree (buf); - return zf; - } - } - rd += add; - - } - xfree (buf); - return NULL; -} - -static struct zfile *rom_fopen (const TCHAR *name, const TCHAR *mode, int mask) -{ - struct zfile *f; - //write_log (L"attempting to load '%s'\n", name); - f = zfile_fopen (name, mode, mask); - //write_log (L"=%p\n", f); - return f; -} - -struct zfile *read_rom_name (const TCHAR *filename) -{ - int i; - struct zfile *f; - - for (i = 0; i < romlist_cnt; i++) { - if (!_tcsicmp (filename, rl[i].path)) { - struct romdata *rd = rl[i].rd; - f = read_rom (&rd); - if (f) - return f; - } - } - f = rom_fopen (filename, L"rb", ZFD_NORMAL); - if (f) { - uae_u8 tmp[11]; - zfile_fread (tmp, sizeof tmp, 1, f); - if (!memcmp (tmp, "AMIROMTYPE1", sizeof tmp)) { - struct zfile *df; - int size; - uae_u8 *buf; - addkeydir (filename); - zfile_fseek (f, 0, SEEK_END); - size = zfile_ftell (f) - sizeof tmp; - zfile_fseek (f, sizeof tmp, SEEK_SET); - buf = xmalloc (size); - zfile_fread (buf, size, 1, f); - df = zfile_fopen_empty (f, L"tmp.rom", size); - decode_cloanto_rom_do (buf, size, size); - zfile_fwrite (buf, size, 1, df); - zfile_fclose (f); - xfree (buf); - zfile_fseek (df, 0, SEEK_SET); - f = df; - } else { - zfile_fseek (f, -((int)sizeof tmp), SEEK_CUR); - } - } - return f; -} - -struct zfile *read_rom_name_guess (const TCHAR *filename) -{ - int i, j; - struct zfile *f; - TCHAR *name; - - for (i = _tcslen (filename) - 1; i >= 0; i--) { - if (filename[i] == '/' || filename[i] == '\\') - break; - } - if (i < 0) - return NULL; - name = &filename[i]; - - for (i = 0; i < romlist_cnt; i++) { - TCHAR *n = rl[i].path; - for (j = _tcslen (n) - 1; j >= 0; j--) { - if (n[j] == '/' || n[j] == '\\') - break; - } - if (j < 0) - continue; - if (!_tcsicmp (name, n + j)) { - struct romdata *rd = rl[i].rd; - f = read_rom (&rd); - if (f) { - write_log (L"ROM %s not found, using %s\n", filename, rl[i].path); - return f; - } - } - } - return NULL; -} - -static void kickstart_fix_checksum (uae_u8 *mem, int size) -{ - uae_u32 cksum = 0, prevck = 0; - int i, ch = size == 524288 ? 0x7ffe8 : 0x3e; - - mem[ch] = 0; - mem[ch + 1] = 0; - mem[ch + 2] = 0; - mem[ch + 3] = 0; - for (i = 0; i < size; i+=4) { - uae_u32 data = (mem[i] << 24) | (mem[i + 1] << 16) | (mem[i + 2] << 8) | mem[i + 3]; - cksum += data; - if (cksum < prevck) - cksum++; - prevck = cksum; - } - cksum ^= 0xffffffff; - mem[ch++] = cksum >> 24; - mem[ch++] = cksum >> 16; - mem[ch++] = cksum >> 8; - mem[ch++] = cksum >> 0; -} - static uae_char *kickstring = "exec.library"; static int read_kickstart (struct zfile *f, uae_u8 *mem, int size, int dochecksum, int noalias) { @@ -3995,6 +2739,7 @@ uae_u8 *restore_rom (uae_u8 *src) uae_u32 crc32, mem_start, mem_size, mem_type, version; TCHAR *s, *romn; int i, crcdet; + struct romlist *rl = romlist_getit (); mem_start = restore_u32 (); mem_size = restore_u32 (); @@ -4003,7 +2748,7 @@ uae_u8 *restore_rom (uae_u8 *src) crc32 = restore_u32 (); romn = restore_string (); crcdet = 0; - for (i = 0; i < romlist_cnt; i++) { + for (i = 0; i < romlist_count (); i++) { if (rl[i].rd->crc32 == crc32 && crc32) { if (zfile_exists (rl[i].path)) { switch (mem_type) diff --git a/moduleripper.c b/moduleripper.c index 8bcace99..a8137e1a 100644 --- a/moduleripper.c +++ b/moduleripper.c @@ -1,10 +1,10 @@ - /* - * UAE - The Un*x Amiga Emulator - * - * Pro-Wizard glue code - * - * Copyright 2004 Toni Wilen - */ +/* +* UAE - The Un*x Amiga Emulator +* +* Pro-Wizard glue code +* +* Copyright 2004 Toni Wilen +*/ #include "sysconfig.h" #include "sysdeps.h" @@ -21,114 +21,114 @@ static int got, canceled; static void mc (uae_u8 *d, uaecptr s, int size) { - int i; + int i; - for (i = 0; i < size; i++) - d[i] = get_byte (s++); + for (i = 0; i < size; i++) + d[i] = get_byte (s++); } #ifdef _WIN32 static LONG WINAPI ExceptionFilter (struct _EXCEPTION_POINTERS * pExceptionPointers, DWORD ec) { - return EXCEPTION_EXECUTE_HANDLER; + return EXCEPTION_EXECUTE_HANDLER; } #endif void moduleripper (void) { - int size; - uae_u8 *buf, *p; - - size = currprefs.chipmem_size; - size += currprefs.fastmem_size; - size += currprefs.bogomem_size; - size += currprefs.mbresmem_low_size; - size += currprefs.mbresmem_high_size; - size += currprefs.z3fastmem_size; - size += currprefs.z3fastmem2_size; - buf = p = xmalloc (size); - if (!buf) - return; - memcpy (p, chipmemory, currprefs.chipmem_size); - p += currprefs.chipmem_size; - mc (p, fastmem_start, currprefs.fastmem_size); - p += currprefs.fastmem_size; - mc (p, bogomem_start, currprefs.bogomem_size); - p += currprefs.bogomem_size; - mc (p, a3000lmem_start, currprefs.mbresmem_low_size); - p += currprefs.mbresmem_low_size; - mc (p, a3000hmem_start, currprefs.mbresmem_high_size); - p += currprefs.mbresmem_high_size; - mc (p, z3fastmem_start, currprefs.z3fastmem_size); - p += currprefs.z3fastmem_size; - mc (p, z3fastmem_start + currprefs.z3fastmem_size, currprefs.z3fastmem2_size); - p += currprefs.z3fastmem2_size; - - got = 0; - canceled = 0; + int size; + uae_u8 *buf, *p; + + size = currprefs.chipmem_size; + size += currprefs.fastmem_size; + size += currprefs.bogomem_size; + size += currprefs.mbresmem_low_size; + size += currprefs.mbresmem_high_size; + size += currprefs.z3fastmem_size; + size += currprefs.z3fastmem2_size; + buf = p = xmalloc (size); + if (!buf) + return; + memcpy (p, chipmemory, currprefs.chipmem_size); + p += currprefs.chipmem_size; + mc (p, fastmem_start, currprefs.fastmem_size); + p += currprefs.fastmem_size; + mc (p, bogomem_start, currprefs.bogomem_size); + p += currprefs.bogomem_size; + mc (p, a3000lmem_start, currprefs.mbresmem_low_size); + p += currprefs.mbresmem_low_size; + mc (p, a3000hmem_start, currprefs.mbresmem_high_size); + p += currprefs.mbresmem_high_size; + mc (p, z3fastmem_start, currprefs.z3fastmem_size); + p += currprefs.z3fastmem_size; + mc (p, z3fastmem_start + currprefs.z3fastmem_size, currprefs.z3fastmem2_size); + p += currprefs.z3fastmem2_size; + + got = 0; + canceled = 0; #ifdef _WIN32 - __try { + __try { #endif - prowizard_search (buf, size); + prowizard_search (buf, size); #ifdef _WIN32 - } __except(ExceptionFilter (GetExceptionInformation (), GetExceptionCode ())) { - write_log (L"prowizard scan crashed\n"); - } + } __except(ExceptionFilter (GetExceptionInformation (), GetExceptionCode ())) { + write_log (L"prowizard scan crashed\n"); + } #endif - if (!got) - notify_user (NUMSG_MODRIP_NOTFOUND); - else if (!canceled) - notify_user (NUMSG_MODRIP_FINISHED); - xfree (buf); + if (!got) + notify_user (NUMSG_MODRIP_NOTFOUND); + else if (!canceled) + notify_user (NUMSG_MODRIP_FINISHED); + xfree (buf); } FILE *moduleripper_fopen (const char *aname, const char *amode) { - TCHAR tmp2[MAX_DPATH]; - TCHAR tmp[MAX_DPATH]; - TCHAR *name, *mode; - FILE *f; - - fetch_ripperpath (tmp, sizeof tmp); - name = au (aname); - mode = au (amode); - _stprintf (tmp2, L"%s%s", tmp, name); - f = _tfopen (tmp2, mode); - xfree (mode); - xfree (name); - return f; + TCHAR tmp2[MAX_DPATH]; + TCHAR tmp[MAX_DPATH]; + TCHAR *name, *mode; + FILE *f; + + fetch_ripperpath (tmp, sizeof tmp); + name = au (aname); + mode = au (amode); + _stprintf (tmp2, L"%s%s", tmp, name); + f = _tfopen (tmp2, mode); + xfree (mode); + xfree (name); + return f; } FILE *moduleripper2_fopen (const char *name, const char *mode, const char *aid, int addr, int size) { - TCHAR msg[MAX_DPATH], msg2[MAX_DPATH]; - TCHAR *id; - int ret; - - if (canceled) - return NULL; - got++; - translate_message (NUMSG_MODRIP_SAVE, msg); - id = au (aid); - _stprintf (msg2, msg, id, addr, size); - ret = gui_message_multibutton (2, msg2); - xfree (id); - if (ret < 0) - canceled = 1; - if (ret < 0 || ret != 1) - return NULL; - return moduleripper_fopen (name, mode); + TCHAR msg[MAX_DPATH], msg2[MAX_DPATH]; + TCHAR *id; + int ret; + + if (canceled) + return NULL; + got++; + translate_message (NUMSG_MODRIP_SAVE, msg); + id = au (aid); + _stprintf (msg2, msg, id, addr, size); + ret = gui_message_multibutton (2, msg2); + xfree (id); + if (ret < 0) + canceled = 1; + if (ret < 0 || ret != 1) + return NULL; + return moduleripper_fopen (name, mode); } #else FILE *moduleripper_fopen (const char *name, const char *mode) { - return NULL; + return NULL; } FILE *moduleripper2_fopen (const char *name, const char *mode, const char *id) { - return NULL; + return NULL; } #endif diff --git a/ncr_scsi.c b/ncr_scsi.c index f6c8453b..92e86f7a 100644 --- a/ncr_scsi.c +++ b/ncr_scsi.c @@ -15,6 +15,7 @@ #include "options.h" #include "uae.h" #include "memory.h" +#include "rommgr.h" #include "custom.h" #include "newcpu.h" #include "ncr_scsi.h" diff --git a/od-win32/WinUAE_Install.nsi b/od-win32/WinUAE_Install.nsi index c85407de..5cc26647 100644 --- a/od-win32/WinUAE_Install.nsi +++ b/od-win32/WinUAE_Install.nsi @@ -1,5 +1,5 @@ !define PRODUCT_NAME "WinUAE" -!define PRODUCT_VERSION "2.0.0" +!define PRODUCT_VERSION "2.0.1" !define PRODUCT_PUBLISHER "Arabuusimiehet" !define PRODUCT_WEB_SITE "http://www.winuae.net/" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\winuae.exe" diff --git a/od-win32/blkdev_win32_aspi.c b/od-win32/blkdev_win32_aspi.c index 5b4f6d52..20d526b2 100644 --- a/od-win32/blkdev_win32_aspi.c +++ b/od-win32/blkdev_win32_aspi.c @@ -295,6 +295,8 @@ static void *scgo_getbuf (SCSI *scgp, long amt) static void scsi_sfree (SCSI *scgp) { + if (!scgp) + return; if (scgp->cmdstart) free(scgp->cmdstart); if (scgp->cmdstop) @@ -367,6 +369,7 @@ static SCSI *openscsi (int busno, int tgt, int tlun) errno = EINVAL; if (log_scsi) write_log (L"ASPI: Illegal value for busno, target or lun '%d,%d,%d'\n", busno, tgt, tlun); + scsi_sfree (scgp); return 0; } /* @@ -379,23 +382,29 @@ static SCSI *openscsi (int busno, int tgt, int tlun) ; } else if (tgt != -1 || tgt != -1 || tlun != -1) { errno = EINVAL; + scsi_sfree (scgp); return 0; } if (scgp->local == NULL) { scgp->local = malloc(sizeof(struct scg_local)); - if (scgp->local == NULL) + if (scgp->local == NULL) { + scsi_sfree (scgp); return 0; + } } /* * Try to open ASPI-Router */ - if (!open_driver(scgp)) + if (!open_driver(scgp)) { + scsi_sfree (scgp); return 0; + } /* * More than we have ... */ if (busno >= busses) { close_driver (); + scsi_sfree (scgp); return 0; } return scgp; @@ -746,9 +755,9 @@ static void aspi_led (int unitnum) int type = si[unitnum].type; if (type == INQ_ROMD) - gui_cd_led (unitnum, 1); + gui_flicker_led (LED_CD, unitnum, 1); else if (type == INQ_DASD) - gui_hd_led (unitnum, 1); + gui_flicker_led (LED_HD, unitnum, 1); } static uae_sem_t scgp_sem; diff --git a/od-win32/blkdev_win32_ioctl.c b/od-win32/blkdev_win32_ioctl.c index f8b04ff2..6cb3d85e 100644 --- a/od-win32/blkdev_win32_ioctl.c +++ b/od-win32/blkdev_win32_ioctl.c @@ -492,7 +492,7 @@ static uae_u8 *spti_read (int unitnum, int sector, int sectorsize) cmd[3] = (uae_u8)(sector >> 16); cmd[4] = (uae_u8)(sector >> 8); cmd[5] = (uae_u8)(sector >> 0); - gui_cd_led (unitnum, 1); + gui_flicker_led (LED_CD, unitnum, 1); memset (&swb, 0, sizeof (swb)); memcpy (swb.spt.Cdb, cmd, len); swb.spt.Length = sizeof (SCSI_PASS_THROUGH); @@ -535,7 +535,7 @@ uae_u8 *ioctl_command_rawread (int unitnum, int sector, int sectorsize) if (sectorsize != 2336 && sectorsize != 2352 && sectorsize != 2048) return 0; while (cnt-- > 0) { - gui_cd_led (unitnum, 1); + gui_flicker_led (LED_CD, unitnum, 1); seterrormode (unitnum); rri.DiskOffset.QuadPart = sector * 2048; rri.SectorCount = 1; @@ -564,7 +564,7 @@ static int ioctl_command_readwrite (int unitnum, int sector, int write, int bloc if (!open_createfile (unitnum, 0)) return 0; while (cnt-- > 0) { - gui_cd_led (unitnum, 1); + gui_flicker_led (LED_CD, unitnum, 1); seterrormode (unitnum); if (SetFilePointer (ciw32[unitnum].h, sector * ciw32[unitnum].blocksize, 0, FILE_BEGIN) == INVALID_SET_FILE_POINTER) { reseterrormode (unitnum); @@ -577,7 +577,7 @@ static int ioctl_command_readwrite (int unitnum, int sector, int write, int bloc } cnt = 3; while (cnt-- > 0) { - gui_cd_led (unitnum, 1); + gui_flicker_led (LED_CD, unitnum, 1); seterrormode (unitnum); if (write) { if (!WriteFile (ciw32[unitnum].h, p, blocksize, &dtotal, 0)) { @@ -622,7 +622,7 @@ static int ioctl_command_readwrite (int unitnum, int sector, int write, int bloc } } reseterrormode (unitnum); - gui_cd_led (unitnum, 1); + gui_flicker_led (LED_CD, unitnum, 1); break; } *ptr = p; @@ -709,7 +709,7 @@ static uae_u8 *ioctl_command_toc (int unitnum) if (!open_createfile (unitnum, 0)) return 0; - gui_cd_led (unitnum, 1); + gui_flicker_led (LED_CD, unitnum, 1); while (cnt-- > 0) { seterrormode (unitnum); if (!DeviceIoControl (ciw32[unitnum].h, IOCTL_CDROM_READ_TOC, NULL, 0, toc, sizeof(CDROM_TOC), &len, NULL)) { @@ -758,7 +758,7 @@ static uae_u8 *ioctl_command_toc (int unitnum) p[10] = toc->TrackData[i].Address[3]; p += 11; } - gui_cd_led (unitnum, 1); + gui_flicker_led (LED_CD, unitnum, 1); return ciw32[unitnum].tempbuffer; } diff --git a/od-win32/blkdev_win32_spti.c b/od-win32/blkdev_win32_spti.c index f487b19a..193d63ab 100644 --- a/od-win32/blkdev_win32_spti.c +++ b/od-win32/blkdev_win32_spti.c @@ -72,7 +72,7 @@ static int doscsi (int unitnum, SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER *swb, int * scsi_log_before (swb->spt.Cdb, swb->spt.CdbLength, swb->spt.DataIn == SCSI_IOCTL_DATA_OUT ? swb->spt.DataBuffer : 0,swb->spt.DataTransferLength); } - gui_cd_led (unitnum, 1); + gui_flicker_led (LED_CD, unitnum, 1); swb->spt.ScsiStatus = 0; if (di->bus >= 0) { swb->spt.PathId = di->path; @@ -98,7 +98,7 @@ static int doscsi (int unitnum, SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER *swb, int * swb->spt.SenseInfoLength = 0; /* 0 and 1 = success, not error.. */ if (swb->spt.SenseInfoLength > 0) return 0; - gui_cd_led (unitnum, 1); + gui_flicker_led (LED_CD, unitnum, 1); return status; } diff --git a/od-win32/clirun.c b/od-win32/clirun.c index 5500b244..d83ab018 100644 --- a/od-win32/clirun.c +++ b/od-win32/clirun.c @@ -11,163 +11,164 @@ static PROCESS_INFORMATION pi; static DWORD WINAPI pipethread (LPVOID pipewr) { - TCHAR buff[256]; - DWORD read, wrote; - HANDLE pipewrite = (HANDLE)pipewr; - - while (runthread) { - read = 0; - ReadConsole (stdin_save, buff, 1, &read, NULL); - buff[read] = 0; - if (read > 0) { - if (!WriteFile (pipewrite, buff, read * sizeof (TCHAR), &wrote, NULL)) { - if (GetLastError () == ERROR_NO_DATA) - break; - } + TCHAR buff[256]; + DWORD read, wrote; + HANDLE pipewrite = (HANDLE)pipewr; + + while (runthread) { + read = 0; + ReadConsole (stdin_save, buff, 1, &read, NULL); + buff[read] = 0; + if (read > 0) { + if (!WriteFile (pipewrite, buff, read * sizeof (TCHAR), &wrote, NULL)) { + if (GetLastError () == ERROR_NO_DATA) + break; + } + } } - } - return 0; + return 0; } static void HandleOutput (HANDLE piperead) { - TCHAR buffer[256]; - DWORD read, wrote; - - for (;;) { - read = 0; - if (!ReadFile (piperead, buffer, sizeof buffer, &read, NULL)) { - if (GetLastError () == ERROR_BROKEN_PIPE) - break; - } - if (read > 0) { - WriteConsole (stdout_save, buffer, read / sizeof (TCHAR), &wrote, NULL); + TCHAR buffer[256]; + DWORD read, wrote; + + for (;;) { + read = 0; + if (!ReadFile (piperead, buffer, sizeof buffer, &read, NULL)) { + if (GetLastError () == ERROR_BROKEN_PIPE) + break; + } + if (read > 0) { + WriteConsole (stdout_save, buffer, read / sizeof (TCHAR), &wrote, NULL); + } } - } } static BOOL WINAPI ctrlhandler (DWORD type) { - if (pi.hProcess) - TerminateProcess (pi.hProcess, 0); - ExitProcess (0); - return TRUE; + if (pi.hProcess) + TerminateProcess (pi.hProcess, 0); + ExitProcess (0); + return TRUE; } #define conpar L"-console" int wmain (int argc, wchar_t *argv[], wchar_t *envp[]) { - CONSOLE_SCREEN_BUFFER_INFO csbi; - STARTUPINFO si; - TCHAR *cmd, *parms2; - int len, parmlen, i; - HANDLE cp; - HANDLE out_rd = NULL, out_wr = NULL, out_rd_tmp = NULL; - HANDLE in_rd = NULL, in_wr = NULL, in_wr_tmp = NULL; - HANDLE err_wr; - DWORD tid; - HANDLE thread; - SECURITY_ATTRIBUTES sa; - - len = _tcslen (argv[0]); - if (len < 4) - return 0; - cmd = malloc ((len + 4 + 1) * sizeof (TCHAR)); - _tcscpy (cmd, argv[0]); - if (_tcsicmp (cmd + len - 4, L".com")) - _tcscat (cmd + len, L".exe"); - else - _tcscpy (cmd + len - 4, L".exe"); - - parmlen = 0; - for (i = 1; i < argc; i++) { - if (parmlen > 0) - parmlen ++; - parmlen += 1 + _tcslen (argv[i]) + 1; - } - parms2 = malloc ((_tcslen (cmd) + 1 + parmlen + 1 + _tcslen (conpar) + 1) * sizeof (TCHAR)); - _tcscpy (parms2, cmd); - _tcscat (parms2, L" "); - _tcscat (parms2, conpar); - for (i = 1; i < argc; i++) { - int isspace = 0; + CONSOLE_SCREEN_BUFFER_INFO csbi; + STARTUPINFO si; + TCHAR *cmd, *parms2; + int len, parmlen, i; + HANDLE cp; + HANDLE out_rd = NULL, out_wr = NULL, out_rd_tmp = NULL; + HANDLE in_rd = NULL, in_wr = NULL, in_wr_tmp = NULL; + HANDLE err_wr; + DWORD tid; + HANDLE thread; + SECURITY_ATTRIBUTES sa; + + len = _tcslen (argv[0]); + if (len < 4) + return 0; + cmd = malloc ((len + 4 + 1) * sizeof (TCHAR)); + _tcscpy (cmd, argv[0]); + if (_tcsicmp (cmd + len - 4, L".com")) + _tcscat (cmd + len, L".exe"); + else + _tcscpy (cmd + len - 4, L".exe"); + + parmlen = 0; + for (i = 1; i < argc; i++) { + if (parmlen > 0) + parmlen ++; + parmlen += 1 + _tcslen (argv[i]) + 1; + } + parms2 = malloc ((_tcslen (cmd) + 1 + parmlen + 1 + _tcslen (conpar) + 1) * sizeof (TCHAR)); + _tcscpy (parms2, cmd); _tcscat (parms2, L" "); - if (_tcschr (argv[i], ' ')) - isspace = 1; - if (isspace) - _tcscat (parms2, L"\""); - _tcscat (parms2, argv[i]); - if (isspace) - _tcscat (parms2, L"\""); - } - - cp = GetCurrentProcess (); - sa.nLength = sizeof sa; - sa.bInheritHandle = TRUE; - sa.lpSecurityDescriptor = NULL; - - stdout_save = GetStdHandle (STD_OUTPUT_HANDLE); - stdin_save = GetStdHandle (STD_INPUT_HANDLE); - stderr_save = GetStdHandle (STD_ERROR_HANDLE); - - SetConsoleMode (stdin_save, ENABLE_PROCESSED_INPUT|ENABLE_LINE_INPUT|ENABLE_ECHO_INPUT|ENABLE_PROCESSED_OUTPUT); - SetConsoleCP (65001); - SetConsoleOutputCP (65001); - if (GetConsoleScreenBufferInfo (stdout_save, &csbi)) { - if (csbi.dwMaximumWindowSize.Y < 900) { - csbi.dwMaximumWindowSize.Y = 900; - SetConsoleScreenBufferSize (stdout_save, csbi.dwMaximumWindowSize); + _tcscat (parms2, conpar); + for (i = 1; i < argc; i++) { + int isspace = 0; + _tcscat (parms2, L" "); + if (_tcschr (argv[i], ' ')) + isspace = 1; + if (isspace) + _tcscat (parms2, L"\""); + _tcscat (parms2, argv[i]); + if (isspace) + _tcscat (parms2, L"\""); } - } - CreatePipe (&out_rd_tmp, &out_wr, &sa, 0); - CreatePipe (&in_rd, &in_wr_tmp, &sa, 0); + cp = GetCurrentProcess (); + sa.nLength = sizeof sa; + sa.bInheritHandle = TRUE; + sa.lpSecurityDescriptor = NULL; + + stdout_save = GetStdHandle (STD_OUTPUT_HANDLE); + stdin_save = GetStdHandle (STD_INPUT_HANDLE); + stderr_save = GetStdHandle (STD_ERROR_HANDLE); + + //SetConsoleMode (stdin_save, ENABLE_PROCESSED_INPUT|ENABLE_LINE_INPUT|ENABLE_ECHO_INPUT|ENABLE_PROCESSED_OUTPUT); + SetConsoleMode (stdin_save, ENABLE_PROCESSED_INPUT|ENABLE_PROCESSED_OUTPUT); + SetConsoleCP (65001); + SetConsoleOutputCP (65001); + if (GetConsoleScreenBufferInfo (stdout_save, &csbi)) { + if (csbi.dwMaximumWindowSize.Y < 900) { + csbi.dwMaximumWindowSize.Y = 900; + SetConsoleScreenBufferSize (stdout_save, csbi.dwMaximumWindowSize); + } + } + + CreatePipe (&out_rd_tmp, &out_wr, &sa, 0); + CreatePipe (&in_rd, &in_wr_tmp, &sa, 0); - DuplicateHandle (cp, out_wr, cp, &err_wr, 0, TRUE, DUPLICATE_SAME_ACCESS); - DuplicateHandle (cp, out_rd_tmp, cp, &out_rd, 0, FALSE, DUPLICATE_SAME_ACCESS); - DuplicateHandle (cp, in_wr_tmp, cp, &in_wr, 0, FALSE, DUPLICATE_SAME_ACCESS); + DuplicateHandle (cp, out_wr, cp, &err_wr, 0, TRUE, DUPLICATE_SAME_ACCESS); + DuplicateHandle (cp, out_rd_tmp, cp, &out_rd, 0, FALSE, DUPLICATE_SAME_ACCESS); + DuplicateHandle (cp, in_wr_tmp, cp, &in_wr, 0, FALSE, DUPLICATE_SAME_ACCESS); - CloseHandle (out_rd_tmp); - CloseHandle (in_wr_tmp); + CloseHandle (out_rd_tmp); + CloseHandle (in_wr_tmp); - memset (&si, 0, sizeof si); - si.cb = sizeof si; - si.dwFlags = STARTF_USESTDHANDLES; - si.hStdInput = in_rd; - si.hStdOutput = out_wr; - si.hStdError = err_wr; + memset (&si, 0, sizeof si); + si.cb = sizeof si; + si.dwFlags = STARTF_USESTDHANDLES; + si.hStdInput = in_rd; + si.hStdOutput = out_wr; + si.hStdError = err_wr; - SetConsoleCtrlHandler (&ctrlhandler, TRUE); + SetConsoleCtrlHandler (&ctrlhandler, TRUE); - if (!CreateProcess (cmd, parms2, - NULL, NULL, TRUE, - CREATE_SUSPENDED | CREATE_NEW_CONSOLE | GetPriorityClass (GetCurrentProcess ()), - NULL, NULL, &si, &pi)) { - _tprintf (L"CreateProcess(%s) failed\n", cmd); - goto end; - } + if (!CreateProcess (cmd, parms2, + NULL, NULL, TRUE, + CREATE_SUSPENDED | CREATE_NEW_CONSOLE | GetPriorityClass (GetCurrentProcess ()), + NULL, NULL, &si, &pi)) { + _tprintf (L"CreateProcess(%s) failed\n", cmd); + goto end; + } - CloseHandle (out_wr); - CloseHandle (in_rd); - CloseHandle (err_wr); + CloseHandle (out_wr); + CloseHandle (in_rd); + CloseHandle (err_wr); - thread = CreateThread (NULL, 0, pipethread, (LPVOID)in_wr, 0, &tid); + thread = CreateThread (NULL, 0, pipethread, (LPVOID)in_wr, 0, &tid); - ResumeThread (pi.hThread); + ResumeThread (pi.hThread); - HandleOutput (out_rd); - runthread = 0; - CloseHandle (stdin_save); - WaitForSingleObject (thread, INFINITE); + HandleOutput (out_rd); + runthread = 0; + CloseHandle (stdin_save); + WaitForSingleObject (thread, INFINITE); - CloseHandle (out_rd); - CloseHandle (in_wr); + CloseHandle (out_rd); + CloseHandle (in_wr); - CloseHandle (pi.hProcess); - CloseHandle (pi.hThread); + CloseHandle (pi.hProcess); + CloseHandle (pi.hThread); end: - free (parms2); - free (cmd); - return 0; + free (parms2); + free (cmd); + return 0; } diff --git a/od-win32/debug_win32.c b/od-win32/debug_win32.c index 036370f5..36f25212 100644 --- a/od-win32/debug_win32.c +++ b/od-win32/debug_win32.c @@ -1757,7 +1757,6 @@ static LRESULT CALLBACK DebuggerProc (HWND hDlg, UINT message, WPARAM wParam, LP } case WM_CLOSE: DestroyWindow(hDlg); - uae_quit(); return TRUE; case WM_DESTROY: { @@ -1787,6 +1786,7 @@ static LRESULT CALLBACK DebuggerProc (HWND hDlg, UINT message, WPARAM wParam, LP DeleteFromHistory(histcount); DeleteObject(udfont); consoleopen = 0; + deactivate_debugger (); return TRUE; } case WM_GETMINMAXINFO: diff --git a/od-win32/direct3d.c b/od-win32/direct3d.c index f2aa98de..05bc5394 100644 --- a/od-win32/direct3d.c +++ b/od-win32/direct3d.c @@ -605,6 +605,7 @@ static int psEffect_End (void) static LPDIRECT3DTEXTURE9 createtext (int *ww, int *hh, D3DFORMAT format) { LPDIRECT3DTEXTURE9 t; + D3DLOCKED_RECT locked; HRESULT hr; int w, h; @@ -659,9 +660,21 @@ static LPDIRECT3DTEXTURE9 createtext (int *ww, int *hh, D3DFORMAT format) D3D_ErrorString (hr), w, h, format); return 0; } - *ww = w; *hh = h; + hr = IDirect3DTexture9_LockRect (t, 0, &locked, NULL, 0); + if (SUCCEEDED (hr)) { + int y; + int wb; + wb = w * 4; + if (wb > locked.Pitch) + wb = w * 2; + if (wb > locked.Pitch) + wb = w * 1; + for (y = 0; y < h; y++) + memset ((uae_u8*)locked.pBits + y * locked.Pitch, 0, wb); + IDirect3DTexture9_UnlockRect (t, 0); + } return t; } @@ -723,7 +736,7 @@ static void updateleds (void) } done = 1; } - hr = IDirect3DTexture9_LockRect (ledtexture, 0, &locked, NULL, D3DLOCK_DISCARD); + hr = IDirect3DTexture9_LockRect (ledtexture, 0, &locked, NULL, 0); if (FAILED (hr)) { write_log (L"SL IDirect3DTexture9_LockRect failed: %s\n", D3D_ErrorString (hr)); return; @@ -967,7 +980,7 @@ static void createscanlines (int force) l1 = (currprefs.gfx_filter_scanlineratio >> 0) & 15; l2 = (currprefs.gfx_filter_scanlineratio >> 4) & 15; - hr = IDirect3DTexture9_LockRect (sltexture, 0, &locked, NULL, D3DLOCK_DISCARD); + hr = IDirect3DTexture9_LockRect (sltexture, 0, &locked, NULL, 0); if (FAILED (hr)) { write_log (L"SL IDirect3DTexture9_LockRect failed: %s\n", D3D_ErrorString (hr)); return; @@ -1358,7 +1371,7 @@ void D3D_clear (void) if (FAILED (hr)) return; for (i = 0; i < 2; i++) { - IDirect3DDevice9_Clear (d3ddev, 0L, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0L); + IDirect3DDevice9_Clear (d3ddev, 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 0, 0); IDirect3DDevice9_Present (d3ddev, NULL, NULL, NULL, NULL); } } @@ -1380,7 +1393,7 @@ static void D3D_render22 (int clear) if (clear || needclear) { int i; for (i = 0; i < 2; i++) { - hr = IDirect3DDevice9_Clear (d3ddev, 0L, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0L ); + hr = IDirect3DDevice9_Clear (d3ddev, 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 0, 0); if (FAILED (hr)) write_log (L"IDirect3DDevice9_Clear() failed: %s\n", D3D_ErrorString (hr)); IDirect3DDevice9_Present (d3ddev, NULL, NULL, NULL, NULL); @@ -1410,8 +1423,7 @@ pass2: if (lpRenderTarget) IDirect3DSurface9_Release (lpRenderTarget); uPasses = 0; - if (!psEffect_Begin ((lpWorkTexture == lpWorkTexture1) ? -psEffect_PreProcess1 : psEffect_PreProcess2, &uPasses)) + if (!psEffect_Begin ((lpWorkTexture == lpWorkTexture1) ? psEffect_PreProcess1 : psEffect_PreProcess2, &uPasses)) return; for (uPass = 0; uPass < uPasses; uPass++) { if (!psEffect_BeginPass (uPass)) diff --git a/od-win32/fsdb_win32.c b/od-win32/fsdb_win32.c index 0c836dc0..4f4bfccd 100644 --- a/od-win32/fsdb_win32.c +++ b/od-win32/fsdb_win32.c @@ -315,7 +315,7 @@ static int fsdb_name_invalid_2 (const TCHAR *n) s1[0] = 0; s2[0] = 0; - ua_fs_copy (s1, MAX_DPATH, n); + ua_fs_copy (s1, MAX_DPATH, n, -1); au_fs_copy (s2, MAX_DPATH, s1); if (_tcsicmp (s2, n) != 0) return 1; diff --git a/od-win32/keyboard_win32.c b/od-win32/keyboard_win32.c index 62c703f9..9db90110 100644 --- a/od-win32/keyboard_win32.c +++ b/od-win32/keyboard_win32.c @@ -204,6 +204,7 @@ static int ctrlpressed (void) } static int capslockstate; +static int host_capslockstate, host_numlockstate, host_scrolllockstate; int getcapslockstate (void) { @@ -216,12 +217,20 @@ void setcapslockstate (int state) int getcapslock (void) { - int newstate; - - newstate = GetKeyState (VK_CAPITAL) & 1; // this returns bogus state if caps change when in exclusive mode.. - if (newstate != capslockstate) - inputdevice_translatekeycode (0, DIK_CAPITAL, newstate); - capslockstate = newstate; + int capstable[7]; + + // this returns bogus state if caps change when in exclusive mode.. + host_capslockstate = GetKeyState (VK_CAPITAL) & 1; + host_numlockstate = GetKeyState (VK_NUMLOCK) & 1; + host_scrolllockstate = GetKeyState (VK_SCROLL) & 1; + capstable[0] = DIK_CAPITAL; + capstable[1] = host_capslockstate; + capstable[2] = DIK_NUMLOCK; + capstable[3] = host_numlockstate; + capstable[4] = DIK_SCROLL; + capstable[5] = host_scrolllockstate; + capstable[6] = 0; + capslockstate = inputdevice_synccapslock (capslockstate, capstable); return capslockstate; } @@ -347,13 +356,26 @@ static int np[] = { DIK_NUMPAD0, 0, DIK_NUMPADPERIOD, 0, DIK_NUMPAD1, 1, DIK_NUM void my_kbd_handler (int keyboard, int scancode, int newstate) { int code = 0; + int scancode_new; static int swapperdrive = 0; if (scancode == specialkeycode ()) return; + if (scancode == DIK_F11 && currprefs.win32_ctrl_F11_is_quit && ctrlpressed ()) + code = AKS_QUIT; + + scancode_new = scancode; + if (!specialpressed () && inputdevice_iskeymapped (keyboard, scancode)) + scancode = 0; + // GUI must be always available + if (scancode_new == DIK_F12 && currprefs.win32_guikey < 0) + scancode = scancode_new; + if (scancode_new == currprefs.win32_guikey && scancode_new != DIK_F12) + scancode = scancode_new; + //write_log ( "keyboard = %d scancode = 0x%02x state = %d\n", keyboard, scancode, newstate ); - if (newstate) { + if (newstate && code == 0) { if (scancode == DIK_F12 || scancode == currprefs.win32_guikey) { if (ctrlpressed ()) { @@ -370,12 +392,6 @@ void my_kbd_handler (int keyboard, int scancode, int newstate) switch (scancode) { - case DIK_F11: - if (currprefs.win32_ctrl_F11_is_quit) { - if (ctrlpressed ()) - code = AKS_QUIT; - } - break; case DIK_F1: case DIK_F2: case DIK_F3: @@ -505,11 +521,20 @@ void my_kbd_handler (int keyboard, int scancode, int newstate) return; } - if (!specialpressed () && scancode == DIK_CAPITAL) { - if (!newstate) - return; - capslockstate = capslockstate ? 0 : 1; - newstate = capslockstate; + scancode = scancode_new; + if (!specialpressed () && newstate) { + if (scancode == DIK_CAPITAL) { + host_capslockstate = host_capslockstate ? 0 : 1; + capslockstate = host_capslockstate; + } + if (scancode == DIK_NUMLOCK) { + host_numlockstate = host_numlockstate ? 0 : 1; + capslockstate = host_numlockstate; + } + if (scancode == DIK_SCROLL) { + host_scrolllockstate = host_scrolllockstate ? 0 : 1; + capslockstate = host_scrolllockstate; + } } if (currprefs.input_selected_setting == 0) { @@ -537,3 +562,18 @@ void keyboard_settrans (void) inputdevice_setkeytranslation (keytrans); } + +int target_checkcapslock (int scancode, int *state) +{ + if (scancode != DIK_CAPITAL && scancode != DIK_NUMLOCK && scancode != DIK_SCROLL) + return 0; + if (*state == 0) + return -1; + if (scancode == DIK_CAPITAL) + *state = host_capslockstate; + if (scancode == DIK_NUMLOCK) + *state = host_numlockstate; + if (scancode == DIK_SCROLL) + *state = host_scrolllockstate; + return 1; +} diff --git a/od-win32/posixemu.c b/od-win32/posixemu.c index 7502232a..9203c14d 100644 --- a/od-win32/posixemu.c +++ b/od-win32/posixemu.c @@ -280,8 +280,10 @@ int uae_start_thread (TCHAR *name, void *(*f)(void *), void *arg, uae_thread_id thp->arg = arg; hThread = (HANDLE)_beginthreadex (NULL, 0, thread_init, thp, 0, &foo); if (hThread) { - if (name) + if (name) { write_log (L"Thread '%s' started (%d)\n", name, hThread); + SetThreadPriority (hThread, THREAD_PRIORITY_HIGHEST); + } } else { result = 0; write_log (L"Thread '%s' failed to start!?\n", name ? name : L""); @@ -305,6 +307,7 @@ DWORD_PTR cpu_affinity = 1, cpu_paffinity = 1; void uae_set_thread_priority (uae_thread_id *tid, int pri) { +#if 0 int pri2; HANDLE th; @@ -315,11 +318,19 @@ void uae_set_thread_priority (uae_thread_id *tid, int pri) pri2 = GetThreadPriority (th); if (pri2 == THREAD_PRIORITY_ERROR_RETURN) pri2 = 0; + if (pri > 0) + pri2 = THREAD_PRIORITY_HIGHEST; + else + pri2 = THREAD_PRIORITY_ABOVE_NORMAL; pri2 += pri; if (pri2 > 1) pri2 = 1; if (pri2 < -1) pri2 = -1; SetThreadPriority (th, pri2); +#endif + if (!SetThreadPriority (GetCurrentThread(), THREAD_PRIORITY_HIGHEST)) + SetThreadPriority (GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL); + } diff --git a/od-win32/prowizard/prowizard.vcproj b/od-win32/prowizard/prowizard.vcproj new file mode 100644 index 00000000..95e41ac5 --- /dev/null +++ b/od-win32/prowizard/prowizard.vcproj @@ -0,0 +1,632 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index 8855e504..65614471 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -1,1546 +1,1547 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource." - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (Neutral) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_APPICON ICON "winuae.ico" -IDI_FLOPPY ICON "35floppy.ico" -IDI_ABOUT ICON "amigainfo.ico" -IDI_HARDDISK ICON "Drive.ico" -IDI_CPU ICON "cpu.ico" -IDI_GAMEPORTS ICON "joystick.ico" -IDI_IOPORTS ICON "joystick.ico" -IDI_INPUT ICON "joystick.ico" -IDI_MISC1 ICON "misc.ico" -IDI_MISC2 ICON "misc.ico" -IDI_MOVE_UP ICON "move_up.ico" -IDI_MOVE_DOWN ICON "move_dow.ico" -IDI_AVIOUTPUT ICON "avioutput.ico" -IDI_DISK ICON "Drive.ico" -IDI_FOLDER ICON "folder.ico" -IDI_SOUND ICON "sound.ico" -IDI_DISPLAY ICON "screen.ico" -IDI_ROOT ICON "root.ico" -IDI_MEMORY ICON "chip.ico" -IDI_QUICKSTART ICON "quickstart.ico" -IDI_PATHS ICON "paths.ico" -IDI_DISKIMAGE ICON "diskimage.ico" -IDI_PORTS ICON "port.ico" -IDI_CONFIGFILE ICON "configfile.ico" -IDI_FILE ICON "file.ico" -IDI_EXPANSION ICON "expansion.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Accelerator -// - -IDR_DBGACCEL ACCELERATORS -BEGIN - VK_F1, ID_DBG_PAGE1, VIRTKEY, NOINVERT - VK_F2, ID_DBG_PAGE2, VIRTKEY, NOINVERT - VK_F3, ID_DBG_PAGE3, VIRTKEY, NOINVERT - VK_F4, ID_DBG_PAGE4, VIRTKEY, NOINVERT - VK_F5, ID_DBG_PAGE5, VIRTKEY, NOINVERT - VK_F6, ID_DBG_PAGE6, VIRTKEY, NOINVERT - VK_F7, ID_DBG_PAGE7, VIRTKEY, NOINVERT - VK_F8, ID_DBG_PAGE8, VIRTKEY, NOINVERT - VK_F9, ID_DBG_PAGE9, VIRTKEY, NOINVERT - VK_F11, ID_DBG_STEP_OVER, VIRTKEY, NOINVERT - VK_F12, ID_DBG_STEP_INTO, VIRTKEY, NOINVERT - VK_DOWN, IDC_DBG_MEMDOWN, VIRTKEY, ALT, NOINVERT - VK_RIGHT, IDC_DBG_MEMDOWNFAST, VIRTKEY, ALT, NOINVERT - VK_UP, IDC_DBG_MEMUP, VIRTKEY, ALT, NOINVERT - VK_LEFT, IDC_DBG_MEMUPFAST, VIRTKEY, ALT, NOINVERT - "H", IDC_DBG_HELP, VIRTKEY, ALT, NOINVERT - "P", IDC_DBG_MEMTOPC, VIRTKEY, ALT, NOINVERT - "A", IDC_DBG_AUTOSET, VIRTKEY, ALT, NOINVERT -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_KICKSTART DIALOGEX 0, 0, 300, 176 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -EXSTYLE WS_EX_CONTEXTHELP -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - GROUPBOX "System ROM Settings",-1,5,0,290,93 - LTEXT "Main ROM file:",IDC_ROMTEXT,14,13,263,10 - COMBOBOX IDC_ROMFILE,12,26,263,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "...",IDC_KICKCHOOSER,280,25,10,15 - LTEXT "Extended ROM file:",IDC_ROMFILE2TEXT,14,43,263,10 - COMBOBOX IDC_ROMFILE2,12,56,263,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "...",IDC_ROMCHOOSER2,280,55,10,15 - CONTROL "MapROM emulation [] Creates a BlizKick-compatible memory area.",IDC_MAPROM, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,95,77,87,10 - CONTROL "ShapeShifter support [] Patches the system ROM for ShapeShifter compatibility.",IDC_KICKSHIFTER, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,77,87,10 - GROUPBOX "Miscellaneous",-1,5,99,290,75 - LTEXT "Cartridge ROM file:",IDC_FLASHTEXT2,12,110,265,10 - COMBOBOX IDC_CARTFILE,12,123,263,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "...",IDC_CARTCHOOSER,280,122,10,15 - LTEXT "Flash RAM file:",IDC_FLASHTEXT,12,142,265,10 - EDITTEXT IDC_FLASHFILE,12,155,262,13,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_FLASHCHOOSER,280,154,10,15 -END - -IDD_DISPLAY DIALOGEX 0, 0, 300, 235 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - GROUPBOX "Screen",IDC_SCREENRESTEXT,12,0,270,67,BS_LEFT - COMBOBOX IDC_DISPLAYSELECT,59,10,215,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_RESOLUTION,59,27,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_REFRESHRATE,187,27,87,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_XSIZE,59,48,48,12,ES_NUMBER - EDITTEXT IDC_YSIZE,114,48,47,12,ES_NUMBER - GROUPBOX "Settings",IDC_SETTINGSTEXT,12,73,199,137 - CONTROL "Blacker than black",IDC_BLACKER_THAN_BLACK,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,19,125,92,10 - LTEXT "Refresh:",IDC_REFRESHTEXT,18,173,28,8 - CONTROL "Slider1",IDC_FRAMERATE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,47,168,75,20 - EDITTEXT IDC_RATETEXT,124,172,77,12,ES_CENTER | ES_READONLY - GROUPBOX "Centering",IDC_STATIC,221,73,61,49 - CONTROL "Horizontal",IDC_XCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,229,87,49,10 - CONTROL "Vertical",IDC_YCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,229,103,49,10 - GROUPBOX "Line Mode",IDC_LINEMODE,222,126,61,84 - CONTROL "Normal",IDC_LM_NORMAL,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,231,148,44,10 - CONTROL "Double",IDC_LM_DOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,231,164,45,10 - CONTROL "Scanlines",IDC_LM_SCANLINES,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,231,180,46,10 - COMBOBOX IDC_DA_MODE,20,218,58,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "",IDC_DA_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,84,214,101,20 - LTEXT "FPS adj.:",IDC_REFRESH2TEXT,16,193,32,8 - CONTROL "",IDC_FRAMERATE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,47,188,127,20 - EDITTEXT IDC_RATE2TEXT,175,192,26,12,ES_CENTER | ES_READONLY - COMBOBOX IDC_RESOLUTIONDEPTH,134,27,46,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "Filtered low resolution",IDC_LORES_SMOOTHED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,125,89,10 - COMBOBOX IDC_SCREENMODE_NATIVE,100,85,102,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_SCREENMODE_RTG,100,103,102,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - RTEXT "Native mode:",IDC_STATIC,19,85,59,15,SS_CENTERIMAGE - RTEXT "RTG mode:",IDC_STATIC,19,101,59,15,SS_CENTERIMAGE - PUSHBUTTON "Reset to defaults",IDC_DA_RESET,212,218,73,14 - RTEXT "Resolution:",IDC_STATIC,27,152,59,15,SS_CENTERIMAGE - COMBOBOX IDC_LORES,100,152,102,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "Remove interlace artifacts",IDC_FLICKERFIXER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,139,99,10 - RTEXT "Windowed:",IDC_STATIC,17,46,40,15,SS_CENTERIMAGE - RTEXT "Fullscreen:",IDC_STATIC,17,19,40,15,SS_CENTERIMAGE -END - -IDD_MEMORY DIALOGEX 0, 0, 300, 158 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -EXSTYLE WS_EX_CONTEXTHELP -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - GROUPBOX "Memory Settings",-1,14,7,274,69 - RTEXT "Chip:",-1,24,26,20,10,SS_CENTERIMAGE - CONTROL "Slider1",IDC_CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,22,50,20 - EDITTEXT IDC_CHIPRAM,105,25,34,12,ES_CENTER | ES_READONLY - RTEXT "Slow:",-1,149,26,20,10,SS_CENTERIMAGE - CONTROL "Slider1",IDC_SLOWMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,22,60,20 - EDITTEXT IDC_SLOWRAM,243,25,34,12,ES_CENTER | ES_READONLY - RTEXT "Fast:",IDC_FASTTEXT,24,51,20,10,SS_CENTERIMAGE - CONTROL "Slider1",IDC_FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,47,50,20 - EDITTEXT IDC_FASTRAM,105,53,34,12,ES_CENTER | ES_READONLY - RTEXT "Z3 Fast:",IDC_Z3TEXT,139,51,30,10,SS_CENTERIMAGE - CONTROL "Slider1",IDC_Z3FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,47,60,20 - EDITTEXT IDC_Z3FASTRAM,243,50,34,12,ES_CENTER | ES_READONLY - GROUPBOX "A3000/A4000 Advanced Memory Settings",-1,14,84,274,65 - RTEXT "Motherboard Fast RAM:",-1,40,100,129,10,SS_CENTERIMAGE - CONTROL "",IDC_MBMEM1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,181,96,59,20 - EDITTEXT IDC_MBRAM1,244,99,34,12,ES_CENTER | ES_READONLY - RTEXT "Processor Slot Fast RAM:",-1,40,123,129,10,SS_CENTERIMAGE - CONTROL "",IDC_MBMEM2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,181,119,59,20 - EDITTEXT IDC_MBRAM2,244,122,34,12,ES_CENTER | ES_READONLY -END - -IDD_CPU DIALOGEX 0, 0, 300, 241 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - GROUPBOX "CPU",IDC_STATIC,5,1,81,144,BS_LEFT - CONTROL "68000",IDC_CPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,15,63,10 - CONTROL "68010",IDC_CPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,28,65,10 - CONTROL "68020",IDC_CPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,41,63,10 - CONTROL "68030",IDC_CPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,54,64,10 - CONTROL "68040",IDC_CPU4,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,67,66,10 - CONTROL "68060",IDC_CPU5,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,80,66,10 - CONTROL "More compatible [] Emulate 68000's prefetch registers. More compatible but slower.",IDC_COMPATIBLE, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,10,107,73,8 - CONTROL "JIT [] Enable just-in-time CPU emulator. Significantly increases the speed of the CPU emulation. Requires 68020 or higher CPU.",IDC_JITENABLE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,119,73,10 - GROUPBOX "CPU Emulation Speed",IDC_STATIC,90,3,205,92 - CONTROL "Fastest possible, but maintain chipset timing",IDC_CS_HOST, - "Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,95,18,195,10 - CONTROL "Match A500 speed",IDC_CS_68000,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,95,32,195,10 - CONTROL "Adjustable between CPU and chipset",IDC_CS_ADJUSTABLE, - "Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,95,46,195,10 - CONTROL "Slider1",IDC_SPEED,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,114,71,67,20 - CONTROL "",IDC_CPUIDLE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,219,71,69,20 - GROUPBOX "Advanced JIT Settings",IDC_STATIC,90,147,205,91 - CONTROL "Slider1",IDC_CACHE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,140,161,115,20 - EDITTEXT IDC_CACHETEXT,255,166,30,12,ES_CENTER | ES_READONLY - CONTROL "Hard flush",IDC_HARDFLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,194,63,10 - CONTROL "Constant jump",IDC_CONSTJUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,208,63,10 - CONTROL "FPU support",IDC_JITFPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,222,62,10 - CONTROL "No flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,168,194,62,10 - CONTROL "Direct",IDC_TRUST0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,235,194,52,10 - CONTROL "Indirect",IDC_TRUST1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,235,208,52,10 - CONTROL "More compatible [] More compatible but slower FPU emulation.",IDC_COMPATIBLE_FPU, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,9,221,73,10 - GROUPBOX "FPU",IDC_STATIC,5,147,81,90,BS_LEFT - CONTROL "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,10,94,73,8 - CONTROL "None",IDC_FPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,14,161,63,10 - CONTROL "68881",IDC_FPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,175,63,10 - CONTROL "68882",IDC_FPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,188,63,10 - CONTROL "CPU internal",IDC_FPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,202,63,10 - RTEXT "CPU Frequency",IDC_STATIC,105,119,51,10,SS_CENTERIMAGE - GROUPBOX "Cycle-exact CPU Emulation Speed",IDC_STATIC,90,99,205,46 - RTEXT "CPU",IDC_STATIC,96,77,17,10,SS_CENTERIMAGE - RTEXT "Chipset",IDC_STATIC,182,77,26,9,SS_CENTERIMAGE - RTEXT "CPU Idle",IDC_STATIC,231,60,47,9,SS_CENTERIMAGE - RTEXT "Cache size:",IDC_STATIC,95,167,42,10,SS_CENTERIMAGE - CONTROL "68040 MMU [] 68040 MMU emulation. Not compatible with JIT.",IDC_MMUENABLE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,132,73,10 - COMBOBOX IDC_CPU_FREQUENCY,165,118,46,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_CPU_FREQUENCY2,218,117,70,15 -END - -IDD_FLOPPY DIALOGEX 0, 0, 300, 240 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - COMBOBOX IDC_DF0TEXT,2,22,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_DF0TYPE,115,6,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Write-protected",IDC_STATIC,174,8,59,10,SS_CENTERIMAGE - CONTROL "",IDC_DF0WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,4,10,15 - PUSHBUTTON "Eject",IDC_EJECT0,253,4,30,15 - PUSHBUTTON "...",IDC_DF0,287,4,10,15 - COMBOBOX IDC_DF1TEXT,2,58,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_DF1TYPE,115,42,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Write-protected",IDC_STATIC,174,43,59,10,SS_CENTERIMAGE - CONTROL "",IDC_DF1WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,40,10,15 - PUSHBUTTON "Eject",IDC_EJECT1,253,40,30,15 - PUSHBUTTON "...",IDC_DF1,287,40,10,15 - COMBOBOX IDC_DF2TEXT,2,93,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_DF2TYPE,115,77,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Write-protected",IDC_STATIC,174,77,59,10,SS_CENTERIMAGE - CONTROL "",IDC_DF2WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,75,9,15 - PUSHBUTTON "Eject",IDC_EJECT2,253,75,30,15 - PUSHBUTTON "...",IDC_DF2,287,75,10,15 - COMBOBOX IDC_DF3TEXT,2,128,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_DF3TYPE,115,112,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Write-protected",IDC_STATIC,174,113,59,10,SS_CENTERIMAGE - CONTROL "",IDC_DF3WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,111,9,15 - PUSHBUTTON "Eject",IDC_EJECT3,253,110,30,15 - PUSHBUTTON "...",IDC_DF3,287,109,10,15 - GROUPBOX "New Floppy Disk Image",IDC_SETTINGSTEXT,5,183,289,49 - COMBOBOX IDC_FLOPPYTYPE,12,197,64,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Create Standard Disk [] Creates a standard 880 or 1760 KB ADF disk image.",IDC_CREATE,81,196,97,15 - PUSHBUTTON "Create Custom Disk [] Creates a low level (MFM) ADF disk image (about 2MB). Useful for programs that use non-standard disk formats (for example some save disks or DOS-formatted floppies)",IDC_CREATE_RAW,187,196,101,15 - GROUPBOX "Floppy Drive Emulation Speed",IDC_SETTINGSTEXT2,5,144,289,35 - CONTROL "",IDC_FLOPPYSPD,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,32,154,116,20 - EDITTEXT IDC_FLOPPYSPDTEXT,183,157,101,12,ES_CENTER | ES_READONLY - PUSHBUTTON "Delete save image",IDC_SAVEIMAGE0,43,5,70,15,NOT WS_VISIBLE - PUSHBUTTON "Delete save image",IDC_SAVEIMAGE1,43,40,70,15,NOT WS_VISIBLE - PUSHBUTTON "Delete save image",IDC_SAVEIMAGE2,43,75,70,15,NOT WS_VISIBLE - PUSHBUTTON "Delete save image",IDC_SAVEIMAGE3,43,110,70,15,NOT WS_VISIBLE - EDITTEXT IDC_CREATE_NAME,81,215,97,13,ES_AUTOHSCROLL - RTEXT "Disk label:",IDC_STATIC,15,216,52,10,SS_CENTERIMAGE - CONTROL "DF0:",IDC_DF0ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,6,34,15 - CONTROL "DF1:",IDC_DF1ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,41,34,15 - CONTROL "DF2:",IDC_DF2ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,76,34,15 - CONTROL "DF3:",IDC_DF3ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,111,34,15 -END - -IDD_HARDDISK DIALOGEX 0, 0, 300, 237 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -EXSTYLE WS_EX_CONTEXTHELP -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - CONTROL "List1",IDC_VOLUMELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,5,0,290,167 - PUSHBUTTON "Add &Directory or Archive...",IDC_NEW_FS,10,171,103,15 - PUSHBUTTON "Add &Hardfile...",IDC_NEW_HF,130,171,74,15 - PUSHBUTTON "Add Ha&rd Drive...",IDC_NEW_HD,220,171,75,15 - PUSHBUTTON "Remove",IDC_REMOVE,235,193,60,15 - PUSHBUTTON "&Properties",IDC_EDIT,235,210,60,15 - CONTROL "Add PC drives at startup",IDC_MAPDRIVES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,192,100,10 - CONTROL "Disable UAEFSDB-support",IDC_NOUAEFSDB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,192,119,10 - CONTROL "Don't use Windows Recycle Bin",IDC_NORECYCLEBIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,203,121,10 - CONTROL "Include network drives..",IDC_MAPDRIVES_NET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,226,101,10 - CONTROL "Include CD/DVD drives..",IDC_MAPDRIVES_CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,215,100,10 - CONTROL "Automount removable drives",IDC_MAPDRIVES_AUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,215,115,10 - CONTROL "Include removable drives..",IDC_MAPDRIVES_REMOVABLE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,203,100,10 -END - -IDD_SOUND DIALOGEX 0, 0, 300, 237 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - COMBOBOX IDC_SOUNDCARDLIST,5,3,291,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Sound Emulation",IDC_SOUNDSETTINGS,5,20,120,85 - CONTROL "Disabled",IDC_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,35,101,10 - CONTROL "Disabled, but emulated",IDC_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,48,102,10 - CONTROL "Enabled",IDC_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,61,102,10 - CONTROL "Enabled, 100% accurate",IDC_SOUND3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,74,101,10 - GROUPBOX "Volume",IDC_STATIC,132,36,164,31 - CONTROL "",IDC_SOUNDVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,137,44,105,20 - EDITTEXT IDC_SOUNDVOLUME2,247,47,40,12,ES_CENTER | ES_READONLY - GROUPBOX "Sound Buffer Size",IDC_STATIC,132,73,164,31 - CONTROL "Slider1",IDC_SOUNDBUFFERRAM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,137,81,105,19 - EDITTEXT IDC_SOUNDBUFFERMEM,247,84,40,12,ES_CENTER | ES_READONLY - GROUPBOX "Settings",IDC_SOUNDINTERPOLATION2,6,106,290,60 - LTEXT "Frequency:",IDC_SOUNDFREQTXT,11,140,53,8,SS_CENTERIMAGE - COMBOBOX IDC_SOUNDFREQ,13,149,51,75,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "Audio filter:",IDC_SOUNDFILTERTXT,209,140,77,8,SS_CENTERIMAGE - COMBOBOX IDC_SOUNDFILTER,209,149,80,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Channel mode:",IDC_SOUNDSTEREOTXT,11,116,57,8,SS_CENTERIMAGE - COMBOBOX IDC_SOUNDSTEREO,13,125,122,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Interpolation:",IDC_SOUNDINTERPOLATIONTXT,209,116,75,8,SS_CENTERIMAGE - COMBOBOX IDC_SOUNDINTERPOLATION,209,125,80,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Stereo separation:",IDC_SOUNDSTEREOSEPTXT,141,116,63,8,SS_CENTERIMAGE - COMBOBOX IDC_SOUNDSTEREOSEP,142,125,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Stereo delay:",IDC_SOUNDSTEREOMIXTXT,141,140,63,8,SS_CENTERIMAGE - COMBOBOX IDC_SOUNDSTEREOMIX,142,149,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Floppy Drive Sound Emulation",IDC_STATIC,6,172,220,60 - CONTROL "",IDC_SOUNDDRIVEVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,14,186,107,19 - EDITTEXT IDC_SOUNDDRIVEVOLUME2,124,188,40,12,ES_CENTER | ES_READONLY - COMBOBOX IDC_SOUNDDRIVE,173,187,46,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_SOUNDDRIVESELECT,18,209,202,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_SOUNDSWAP,73,149,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Swap channels:",IDC_SOUNDSWAPTXT,74,140,61,8,SS_CENTERIMAGE - CONTROL "Automatic switching",IDC_SOUND_AUTO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,89,103,10 - CONTROL "Exclusive mode",IDC_SOUND_EXCLUSIVE,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,137,25,154,10 - CONTROL "DirectSound",IDC_SOUND_DS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,181,55,10 - CONTROL "WASAPI",IDC_SOUND_WASAPI,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,193,53,10 - CONTROL "OpenAL",IDC_SOUND_OPENAL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,205,53,10 - CONTROL "PortAudio",IDC_SOUND_PORTAUDIO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,217,58,10 - GROUPBOX "Drivers",IDC_STATIC,230,172,66,60 -END - -IDD_LOADSAVE DIALOGEX 0, 0, 302, 241 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - CONTROL "",IDC_CONFIGTREE,"SysTreeView32",TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,6,3,289,153,WS_EX_CLIENTEDGE - RTEXT "Name:",IDC_STATIC,4,161,40,15,SS_CENTERIMAGE - EDITTEXT IDC_EDITNAME,48,162,146,13,ES_AUTOHSCROLL - RTEXT "Description:",IDC_STATIC,2,182,41,15,SS_CENTERIMAGE - EDITTEXT IDC_EDITDESCRIPTION,48,183,146,13,ES_AUTOHSCROLL - RTEXT "Link:",IDC_STATIC,4,204,40,15,SS_CENTERIMAGE - COMBOBOX IDC_CONFIGLINK,48,205,93,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "Ignore link",IDC_CONFIGNOLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,146,207,48,10 - EDITTEXT IDC_EDITPATH,199,161,49,15,ES_AUTOHSCROLL | WS_DISABLED - CONTROL "Autoload",IDC_CONFIGAUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,253,163,42,10 - GROUPBOX "Additional Information",IDC_STATIC,199,179,96,38,BS_LEFT - PUSHBUTTON "View",IDC_VIEWINFO,208,195,37,15 - PUSHBUTTON "Set",IDC_SETINFO,250,195,37,15 - PUSHBUTTON "Load",IDC_QUICKLOAD,5,225,44,15 - PUSHBUTTON "Save",IDC_QUICKSAVE,54,225,44,15 - PUSHBUTTON "Load From...",IDC_LOAD,121,225,49,15 - PUSHBUTTON "Delete",IDC_DELETE,251,225,44,15 - PUSHBUTTON "Save As...",IDC_SAVE,175,225,44,15 -END - -IDD_IOPORTS DIALOGEX 0, 0, 300, 228 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - GROUPBOX "Parallel Port",IDC_STATIC,5,2,291,86 - RTEXT "Printer:",IDC_STATIC,12,15,25,15,SS_CENTERIMAGE - COMBOBOX IDC_PRINTERLIST,49,15,232,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Flush print job",IDC_FLUSHPRINTER,114,51,58,12 - RTEXT "Autoflush [] Time in seconds after a pending print job is automatically flushed.",IDC_PRINTERAUTOFLUSHTXT,176,49,76,15,SS_NOTIFY | SS_CENTERIMAGE - EDITTEXT IDC_PRINTERAUTOFLUSH,255,50,25,12,ES_NUMBER - RTEXT "Type:",IDC_STATIC,15,33,21,15,SS_CENTERIMAGE - EDITTEXT IDC_PS_PARAMS,114,67,167,12,ES_AUTOHSCROLL - GROUPBOX "Serial Port",IDC_STATIC,4,92,292,48 - COMBOBOX IDC_SERIAL,49,104,232,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Shared",IDC_SER_SHARED,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,15,123,48,12 - CONTROL "RTS/CTS",IDC_SER_CTSRTS,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,75,123,55,12 - RTEXT "Out:",IDC_MIDI,10,154,34,15,SS_CENTERIMAGE - COMBOBOX IDC_MIDIOUTLIST,49,154,232,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "In:",IDC_MIDI2,10,174,29,15,SS_CENTERIMAGE - COMBOBOX IDC_MIDIINLIST,49,174,232,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Direct []Use when emulating serial-link games on two PCs running WinUAE",IDC_SER_DIRECT, - "Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,135,123,65,12 - CONTROL "uaeserial.device",IDC_UAESERIAL,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,200,123,78,12 - COMBOBOX IDC_PRINTERTYPELIST,49,33,232,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Ghostscript extra parameters:",IDC_STATIC,10,66,102,15,SS_CENTERIMAGE - GROUPBOX "MIDI",IDC_STATIC,5,143,291,51,BS_LEFT - GROUPBOX "Protection Dongle",IDC_STATIC,5,197,292,30,BS_LEFT - COMBOBOX IDC_DONGLELIST,50,208,232,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -END - -IDD_GAMEPORTS DIALOGEX 0, 0, 300, 236 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - COMBOBOX IDC_PORT0_JOYS,45,29,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_PORT1_JOYS,45,65,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Swap port 0 and 1",IDC_SWAP,194,101,93,14 - RTEXT "Port 0:",IDC_STATIC,11,28,25,15,SS_CENTERIMAGE - RTEXT "Port 1:",IDC_STATIC,11,64,25,15,SS_CENTERIMAGE - LTEXT "X-Arcade layout information []#1",IDC_STATIC,64,87,106,15,SS_NOTIFY | SS_CENTERIMAGE - GROUPBOX "Mouse and Joystick settings",IDC_STATIC,4,15,292,148 - GROUPBOX "Mouse extra settings",IDC_STATIC,4,165,292,69 - RTEXT "Mouse speed:",IDC_STATIC,17,180,56,10,SS_CENTERIMAGE - EDITTEXT IDC_INPUTSPEEDM,87,180,25,12,ES_NUMBER - CONTROL "Install virtual mouse driver",IDC_PORT_TABLET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,187,120,10 - CONTROL "Full tablet input emulation",IDC_PORT_TABLET_FULL, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,220,121,10 - CONTROL "Magic Mouse",IDC_PORT_MOUSETRICK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,175,119,10 - COMBOBOX IDC_PORT_TABLET_CURSOR,167,201,119,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Magic Mouse cursor mode:",IDC_STATIC,17,204,138,10,SS_CENTERIMAGE - COMBOBOX IDC_PORT0_JOYSMODE,195,47,91,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_PORT1_JOYSMODE,195,82,91,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_PORT2_JOYS,45,125,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Parallel port joystick adapter",IDC_STATIC,10,105,147,15,SS_CENTERIMAGE - COMBOBOX IDC_PORT3_JOYS,45,143,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -END - -IDD_CONTRIBUTORS DIALOGEX 0, 0, 411, 242 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION -CAPTION "UAE Authors and Contributors..." -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "Ok",ID_OK,177,224,53,14 - CONTROL "",IDC_CONTRIBUTORS,"RICHEDIT",TCS_HOTTRACK | TCS_VERTICAL | TCS_RAGGEDRIGHT | TCS_OWNERDRAWFIXED | TCS_MULTISELECT | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,4,5,404,214 -END - -IDD_ABOUT DIALOGEX 0, 0, 300, 191 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - CONTROL "",IDC_RICHEDIT1,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,45,10,210,15 - CONTROL "",IDC_RICHEDIT2,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,30,260,13 - PUSHBUTTON "Contributors",IDC_CONTRIBUTORS,110,55,80,15 - CONTROL "",IDC_UAEHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,120,80,15 - CONTROL "",IDC_PICASSOHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,200,90,80,20 - CONTROL "",IDC_AMIGAHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,109,90,80,20 - CONTROL "",IDC_WINUAEHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,200,120,80,15 - CONTROL "",IDC_AIABHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,110,120,80,15 - CONTROL "",IDC_THEROOTS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,145,80,15 - CONTROL "",IDC_CAPS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,200,145,80,15 - CONTROL "",IDC_ABIME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,110,145,80,15 - CONTROL "",IDC_CLOANTOHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,90,80,20 - CONTROL "",IDC_AMIGASYS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,63,169,80,15 - CONTROL "",IDC_AMIKIT,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,157,169,80,15 -END - -IDD_MISC1 DIALOGEX 0, 0, 300, 237 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - GROUPBOX "Miscellaneous Options",IDC_STATIC,8,2,290,136 - CONTROL "Untrap = middle button",IDC_JULIAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,19,110,10 - CONTROL "Show GUI on startup",IDC_SHOWGUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,31,109,10 - CONTROL "Native On-screen LEDs",IDC_SHOWLEDS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,141,80,109,10 - CONTROL "Don't show taskbar button",IDC_NOTASKBARBUTTON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,56,109,10 - CONTROL "Use CTRL-F11 to quit",IDC_CTRLF11,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,43,110,10 - GROUPBOX "Keyboard LEDs",IDC_STATIC,7,140,85,94 - COMBOBOX IDC_KBLED1,22,154,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_KBLED2,22,173,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_KBLED3,22,193,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Logging",IDC_STATIC,97,140,202,25 - CONTROL "Create log file",IDC_CREATELOGFILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,151,72,10 - CONTROL "Illegal memory accesses",IDC_ILLEGAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,189,151,95,10 - GROUPBOX "State Files",IDC_STATIC,98,167,201,68 - PUSHBUTTON "Load state...",IDC_DOLOADSTATE,105,180,49,14 - PUSHBUTTON "Save state...",IDC_DOSAVESTATE,105,208,49,14 - CONTROL "Enable state recording",IDC_STATE_CAPTURE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,182,88,10 - RTEXT "Recording rate (seconds):",IDC_STATIC,157,199,86,10,SS_CENTERIMAGE | WS_TABSTOP - COMBOBOX IDC_STATE_RATE,248,197,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - RTEXT "Recording buffer (MB):",IDC_STATIC,160,219,83,10,SS_CENTERIMAGE | WS_TABSTOP - COMBOBOX IDC_STATE_BUFFERSIZE,248,217,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - CONTROL "Always on top",IDC_ALWAYSONTOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,69,110,10 - CONTROL "USB mode",IDC_KBLED_USB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,216,64,10 - COMBOBOX IDC_SCSIMODE,213,30,80,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_LANGUAGE,153,117,122,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Language",IDC_STATIC,138,107,154,27 - CONTROL "Disable screensaver",IDC_POWERSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,82,109,10 - COMBOBOX IDC_DD_SURFACETYPE,213,63,79,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - RTEXT "DirectDraw display buffer:",IDC_STATIC,195,50,92,10,SS_CENTERIMAGE - RTEXT "SCSI and CD/DVD access method:",IDC_STATIC,151,12,126,10,SS_CENTERIMAGE - CONTROL "Synchronize clock",IDC_CLOCKSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,95,111,10 - CONTROL "Faster RTG [] Enables less accurate custom chipset emulation mode when Picasso96 is enabled.",IDC_FASTERRTG, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,19,108,100,10 - CONTROL "RTG On-screen LEDs",IDC_SHOWLEDSRTG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,141,93,109,10 -END - -IDD_HARDFILE DIALOGEX 0, 0, 299, 249 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Hardfile Settings" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - GROUPBOX "Settings",IDC_STATIC,10,5,280,146 - RTEXT "Path:",IDC_HARDFILE_DIR_TEXT,25,18,22,10 - EDITTEXT IDC_PATH_NAME,52,15,213,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_SELECTOR,271,15,11,15 - RTEXT "FileSys:",IDC_HARDFILE_FILESYS_TEXT,13,38,34,10 - EDITTEXT IDC_PATH_FILESYS,52,35,213,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_FILESYS_SELECTOR,271,35,11,15 - RTEXT "Device:",IDC_HARDFILE_DEVICE_TEXT,16,58,31,10 - EDITTEXT IDC_HARDFILE_DEVICE,52,55,66,15,ES_AUTOHSCROLL - RTEXT "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,20,94,48,8 - EDITTEXT IDC_HARDFILE_BOOTPRI,73,90,44,15 - CONTROL "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,53,74,64,10 - PUSHBUTTON "Enable RDB mode",IDC_HDF_RDB,174,55,92,14 - RTEXT "Surfaces:",IDC_SURFACES_TEXT,118,94,32,10 - EDITTEXT IDC_HEADS,155,90,40,15,ES_NUMBER - RTEXT "Reserved:",IDC_RESERVED_TEXT,197,94,35,10 - EDITTEXT IDC_RESERVED,237,90,40,15,ES_NUMBER - RTEXT "Sectors:",IDC_SECTORS_TEXT,120,113,30,10 - EDITTEXT IDC_SECTORS,155,111,40,15,ES_NUMBER - RTEXT "Block size:",IDC_BLOCKSIZE_TEXT,197,113,35,10 - EDITTEXT IDC_BLOCKSIZE,237,111,40,15,ES_NUMBER - GROUPBOX "New hard disk image file",IDC_STATIC,10,156,280,62 - PUSHBUTTON "Create",IDC_HF_CREATE,23,171,80,14 - EDITTEXT IDC_HF_SIZE,119,171,61,15,ES_NUMBER - PUSHBUTTON "OK",IDOK,102,226,50,14 - PUSHBUTTON "Cancel",IDCANCEL,158,226,50,14 - EDITTEXT IDC_HF_DOSTYPE,119,194,61,15 - COMBOBOX IDC_HF_TYPE,23,195,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_HDF_CONTROLLER,73,112,44,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - RTEXT "DOS type",IDC_STATIC,187,196,32,10,SS_CENTERIMAGE - RTEXT "MB",IDC_STATIC,185,174,17,10,SS_CENTERIMAGE - RTEXT "HD Controller:",IDC_STATIC,16,113,52,10,SS_CENTERIMAGE - CONTROL "Bootable",IDC_HDF_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,136,74,53,10 - CONTROL "Do not mount",IDC_HDF_DONOTMOUNT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,217,74,67,10 - EDITTEXT IDC_HDFINFO,16,131,268,12,ES_CENTER | ES_READONLY - CONTROL "Sparse file",IDC_HF_SPARSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,220,168,62,10 - CONTROL "Dynamic HDF",IDC_HF_DYNAMIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,220,180,62,10 -END - -IDD_FILESYS DIALOGEX 15, 25, 299, 111 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Volume Settings" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - LTEXT "Device name:",-1,11,7,54,10 - EDITTEXT IDC_VOLUME_DEVICE,65,5,104,15,ES_AUTOHSCROLL - LTEXT "Volume label:",-1,13,28,54,10 - EDITTEXT IDC_VOLUME_NAME,65,25,104,15,ES_AUTOHSCROLL - LTEXT "Path:",-1,38,49,44,10 - EDITTEXT IDC_PATH_NAME,65,46,227,15,ES_AUTOHSCROLL - PUSHBUTTON "Select Directory",IDC_FS_SELECT_DIR,65,66,103,15 - CONTROL "Read/write",IDC_FS_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,174,7,55,10 - RTEXT "Boot priority:",IDC_VOLUME_BOOTPRI_TEXT,178,28,49,8 - EDITTEXT IDC_VOLUME_BOOTPRI,236,25,30,15 - PUSHBUTTON "OK",IDOK,65,91,48,15 - PUSHBUTTON "Cancel",IDCANCEL,120,91,48,15 - PUSHBUTTON "Select Archive or Plain File",IDC_FS_SELECT_FILE,190,66,103,15 - PUSHBUTTON "Eject",IDC_FS_SELECT_EJECT,230,91,62,15 - CONTROL "Bootable",IDC_FS_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,236,7,53,10 -END - -IDD_SETINFO DIALOGEX 0, 0, 229, 85 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Additional Information Settings" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - RTEXT "Path:",-1,5,20,24,15,SS_CENTERIMAGE - EDITTEXT IDC_PATH_NAME,35,20,169,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_SELECTOR,210,20,10,15 - PUSHBUTTON "OK",IDOK,120,65,48,15 - PUSHBUTTON "Cancel",IDCANCEL,175,65,48,15 -END - -IDD_CHIPSET DIALOGEX 0, 65490, 300, 229 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - GROUPBOX "Chipset",IDC_STATIC,14,11,145,90 - CONTROL "OCS [] Original chipset. A1000 and most A500s.",IDC_OCS, - "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,37,26,51,10 - CONTROL "ECS Agnus [] Enhanced chipset (ECS Agnus chip only). CDTV and later A500 and A2000 hardware revisions.",IDC_ECS_AGNUS, - "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,42,55,10 - CONTROL "ECS Denise [] Enhanced chipset (ECS Denise chip only). Normally paired with ECS Agnus.",IDC_ECS_DENISE, - "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,42,55,10 - CONTROL "Full ECS [] Full ECS chipset (ECS Agnus and ECS Denise chips). A500+, A600 and A3000.",IDC_ECS, - "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,58,52,10 - CONTROL "AGA [] Advanced Graphics Architecture chipset. A1200, A4000 and CD32.",IDC_AGA, - "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,26,51,10 - CONTROL "NTSC [] North American and Japanese display standard, 60Hz refresh rate. Other countries use PAL (50Hz. display refresh rate)",IDC_NTSC, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,58,50,10 - GROUPBOX "Options",IDC_STATIC,168,11,114,89 - CONTROL "Immediate Blitter [] Faster but less compatible blitter emulation.",IDC_BLITIMM, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,179,33,96,10 - CONTROL "Cycle-exact [] The most compatible A500 emulation mode. Very fast PC recommended.",IDC_CYCLEEXACT, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,179,46,100,10 - GROUPBOX "Collision Level",IDC_STATIC,14,105,267,48 - CONTROL "None [] Collision hardware emulation disabled.",IDC_COLLISION0, - "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,37,121,59,10 - CONTROL "Sprites only [] Emulate only sprite vs. sprite collisions.",IDC_COLLISION1, - "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,137,62,10 - CONTROL "Sprites and Sprites vs. Playfield [] Recommended collision emulation level.",IDC_COLLISION2, - "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,121,161,10 - CONTROL "Full [] 100% collision hardware emulation. Only very few games need this option. Slowest.",IDC_COLLISION3, - "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,137,119,10 - GROUPBOX "Sound Emulation",IDC_STATIC,13,159,268,65 - CONTROL "Disabled",IDC_CS_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,37,175,102,10 - CONTROL "Emulated",IDC_CS_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,190,91,10 - CONTROL "Emulated, 100% accurate",IDC_CS_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,205,95,10 - CONTROL "Genlock connected [] Allow boot sequence to detect genlock. Genlock is not emulated.",IDC_GENLOCK, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,179,59,100,10 - COMBOBOX IDC_CS_EXT,100,80,49,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Chipset Extra",IDC_STATIC,25,79,52,15,SS_CENTERIMAGE -END - -IDD_CHIPSET2 DIALOGEX 0, 65490, 300, 247 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - GROUPBOX "Battery Backed Up Real Time Clock",IDC_STATIC,11,24,275,29 - CONTROL "None",IDC_CS_RTC1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,19,36,55,10 - CONTROL "MSM6242B",IDC_CS_RTC2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,90,36,52,10 - CONTROL "RF5C01A",IDC_CS_RTC3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,159,36,46,10 - EDITTEXT IDC_CS_RTCADJUST,215,34,64,13,ES_AUTOHSCROLL - GROUPBOX "CIA-A TOD Clock Source",IDC_STATIC,11,56,275,29 - CONTROL "Vertical Sync",IDC_CS_CIAA_TOD1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,19,68,63,10 - CONTROL "Power Supply 50Hz",IDC_CS_CIAA_TOD2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,90,68,85,10 - CONTROL "Power Supply 60Hz",IDC_CS_CIAA_TOD3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,186,68,88,10 - CONTROL "ROM Mirror (A8)",IDC_CS_KSMIRROR_A8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,146,80,10 - CONTROL "A1000 Boot RAM/ROM",IDC_CS_A1000RAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,95,88,10 - CONTROL "CD32 CD",IDC_CS_CD32CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,108,76,10 - CONTROL "CD32 C2P",IDC_CS_CD32C2P,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,108,87,10 - CONTROL "CD32 NVRAM",IDC_CS_CD32NVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,108,84,10 - CONTROL "CDTV CD",IDC_CS_CDTVCD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,121,47,10 - CONTROL "CDTV SRAM",IDC_CS_CDTVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,120,87,10 - CONTROL "CDTV SRAM Expansion",IDC_CS_CDTVRAMEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,120,90,10 - CONTROL "A600/A1200 IDE",IDC_CS_IDE1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,133,79,10 - CONTROL "A4000/A4000T IDE",IDC_CS_IDE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,133,88,10 - CONTROL "Ramsey revision:",IDC_CS_RAMSEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,216,71,10 - EDITTEXT IDC_CS_RAMSEYREV,91,214,45,13,ES_AUTOHSCROLL - CONTROL "Fat Gary revision:",IDC_CS_FATGARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,229,71,10 - EDITTEXT IDC_CS_FATGARYREV,91,228,45,13,ES_AUTOHSCROLL - CONTROL "A3000 SCSI",IDC_CS_DMAC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,188,76,10 - CONTROL "Compatible Settings",IDC_CS_COMPATIBLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,8,234,10 - CONTROL "DF0: ID Hardware",IDC_CS_DF0IDHW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,95,92,10 - CONTROL "Agnus/Alice revision:",IDC_CS_AGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,216,81,10 - EDITTEXT IDC_CS_AGNUSREV,232,214,45,13,ES_AUTOHSCROLL - CONTROL "Denise/Lisa revision:",IDC_CS_DENISE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,229,81,10 - EDITTEXT IDC_CS_DENISEREV,232,228,45,13,ES_AUTOHSCROLL - CONTROL "A590/A2091 SCSI",IDC_CS_A2091,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,188,76,10 - CONTROL "A4000T SCSI",IDC_CS_DMAC2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,188,88,10 - LTEXT "A4091/A4000T SCSI not yet implemented.",IDC_STATIC,17,174,159,8,SS_CENTERIMAGE - CONTROL "PCMCIA",IDC_CS_PCMCIA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,133,92,10 - CONTROL "A4091 SCSI",IDC_CS_A4091,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,200,76,10 - CONTROL "CDTV SCSI",IDC_CS_CDTVSCSI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,200,76,10 - CONTROL "Include host SCSI devices",IDC_CS_SCSIMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,200,101,10 - CONTROL "C00000 is Fast RAM",IDC_CS_SLOWISFAST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,146,92,10 - CONTROL "ROM Mirror (E0)",IDC_CS_KSMIRROR_E0,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,146,80,10 - CONTROL "CIA ROM Overlay",IDC_CS_CIAOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,95,80,10 - CONTROL "KB Reset Warning",IDC_CS_RESETWARNING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,159,80,10 - CONTROL "No-EHB Denise",IDC_CS_NOEHB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,159,80,10 - CONTROL "Blitter Busy Bug",IDC_CS_BLITTERBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,159,80,10 -END - -IDD_AVIOUTPUT DIALOGEX 0, 0, 288, 217 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - GROUPBOX "Output Properties",IDC_STATIC,5,0,274,126 - EDITTEXT IDC_AVIOUTPUT_FILETEXT,15,15,226,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_CLIENTEDGE - PUSHBUTTON "...",IDC_AVIOUTPUT_FILE,249,15,19,12 - CONTROL "Audio",IDC_AVIOUTPUT_AUDIO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,33,39,14 - CONTROL "",IDC_AVIOUTPUT_AUDIO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,59,34,209,13 - CONTROL "Video",IDC_AVIOUTPUT_VIDEO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,50,39,14 - CONTROL "",IDC_AVIOUTPUT_VIDEO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,59,51,209,13 - CONTROL "Disable frame rate limit",IDC_AVIOUTPUT_FRAMELIMITER, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,71,122,10 - CONTROL "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,103,108,14 - PUSHBUTTON "Save screenshot",IDC_SCREENSHOT,16,141,77,14 - GROUPBOX "Ripper",IDC_STATIC,5,127,274,49 - PUSHBUTTON "Pro Wizard 1.62",IDC_PROWIZARD,192,141,77,14,WS_DISABLED - CONTROL "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,159,77,14 - GROUPBOX "Input Recorder",IDC_STATIC,5,178,274,33 - CONTROL "Record",IDC_INPREC_RECORD,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,190,77,14 - CONTROL "Playback",IDC_INPREC_PLAY,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,16,190,77,14 - CONTROL "Alt. playback mode",IDC_INPREC_PLAYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,103,192,78,10 - CONTROL "Disable sound output",IDC_AVIOUTPUT_NOSOUNDOUTPUT, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,88,123,10 - CONTROL "Disable sound sync",IDC_AVIOUTPUT_NOSOUNDSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,88,120,10 - CONTROL "Capture before filtering",IDC_AVIOUTPUT_ORIGINALSIZE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,71,120,10 - CONTROL "Take screenshot before filtering",IDC_SCREENSHOT_ORIGINALSIZE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,160,162,10 -END - -IDD_INPUT DIALOGEX 0, 0, 300, 242 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - COMBOBOX IDC_INPUTTYPE,5,5,98,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_INPUTDEVICE,109,5,167,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "",IDC_INPUTDEVICEDISABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,282,8,9,8 - CONTROL "List1",IDC_INPUTLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,5,22,290,146 - COMBOBOX IDC_INPUTAMIGACNT,5,174,24,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_INPUTAMIGA,33,174,262,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - RTEXT "Joystick dead zone (%):",-1,7,196,79,10,SS_CENTERIMAGE - EDITTEXT IDC_INPUTDEADZONE,92,195,25,12,ES_NUMBER - RTEXT "Autofire rate (frames):",-1,10,212,76,10,SS_CENTERIMAGE - EDITTEXT IDC_INPUTAUTOFIRERATE,92,210,25,12,ES_NUMBER - RTEXT "Digital joy-mouse speed:",-1,124,196,84,10,SS_CENTERIMAGE - EDITTEXT IDC_INPUTSPEEDD,215,195,25,12,ES_NUMBER - RTEXT "Analog joy-mouse speed:",-1,120,212,88,10,SS_CENTERIMAGE - EDITTEXT IDC_INPUTSPEEDA,215,211,25,12,ES_NUMBER - PUSHBUTTON "Copy from:",IDC_INPUTCOPY,249,195,45,14 - COMBOBOX IDC_INPUTCOPYFROM,249,211,45,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Swap 1<>2",IDC_INPUTSWAP,249,226,45,14 -END - -IDD_FILTER DIALOGEX 0, 0, 296, 241 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - GROUPBOX "Filter Settings",-1,0,1,294,199 - COMBOBOX IDC_FILTERMODE,20,15,103,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_FILTERFILTER,132,15,83,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Reset to defaults",IDC_FILTERDEFAULT,221,15,67,14 - RTEXT "Horiz. size:",-1,7,61,46,10,SS_CENTERIMAGE - CONTROL "Slider1",IDC_FILTERHZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,54,152,19 - EDITTEXT IDC_FILTERHZV,253,56,34,12,ES_CENTER | ES_READONLY - RTEXT "Vert. size:",-1,7,81,46,10,SS_CENTERIMAGE - CONTROL "Slider1",IDC_FILTERVZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,74,152,19 - EDITTEXT IDC_FILTERVZV,253,76,34,12,ES_CENTER | ES_READONLY - RTEXT "Horiz. position:",-1,5,101,55,10,SS_CENTERIMAGE - CONTROL "Slider1",IDC_FILTERHO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,94,151,19 - EDITTEXT IDC_FILTERHOV,253,96,34,12,ES_CENTER | ES_READONLY - RTEXT "Vert. position:",-1,5,120,55,10,SS_CENTERIMAGE - CONTROL "Slider1",IDC_FILTERVO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,114,151,19 - EDITTEXT IDC_FILTERVOV,253,116,34,12,ES_CENTER | ES_READONLY - RTEXT "Extra settings:",-1,105,135,57,10,SS_CENTERIMAGE - CONTROL "Slider1",IDC_FILTERXL,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,174,151,19 - EDITTEXT IDC_FILTERXLV,253,176,34,12,ES_CENTER | ES_READONLY - COMBOBOX IDC_FILTERSLR,253,151,33,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Presets",-1,0,203,296,36 - COMBOBOX IDC_FILTERPRESETS,8,217,119,150,CBS_DROPDOWN | CBS_SORT | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Load",IDC_FILTERPRESETLOAD,132,216,47,14 - PUSHBUTTON "Save",IDC_FILTERPRESETSAVE,184,216,47,14 - PUSHBUTTON "Delete",IDC_FILTERPRESETDELETE,236,216,47,14 - COMBOBOX IDC_FILTERHZMULT,59,60,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_FILTERVZMULT,59,80,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_FILTERXTRA,105,151,138,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_FILTERASPECT,14,151,73,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "Keep aspect ratio",IDC_FILTERKEEPASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,168,85,10 - RTEXT "Automatic scaling:",-1,9,38,79,10,SS_CENTERIMAGE - COMBOBOX IDC_FILTERAUTOSCALE,105,36,140,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_FILTERASPECT2,14,180,73,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP -END - -IDD_HARDDRIVE DIALOGEX 0, 0, 380, 76 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Harddrive Settings" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - LTEXT "Hard drive:",IDC_STATIC,7,11,80,10 - COMBOBOX IDC_HARDDRIVE,49,9,325,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,161,51,55,10 - DEFPUSHBUTTON "Add hard drive",IDOK,231,48,65,14 - PUSHBUTTON "Cancel",IDCANCEL,319,48,54,14 - DEFPUSHBUTTON "Create hard disk image file",IDC_HARDDRIVE_IMAGE,49,30,115,14 - EDITTEXT IDC_PATH_NAME,183,27,97,15,ES_AUTOHSCROLL | NOT WS_VISIBLE - COMBOBOX IDC_HDF_CONTROLLER,102,50,41,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - RTEXT "HD Controller:",IDC_STATIC,42,51,52,10,SS_CENTERIMAGE -END - -IDD_MISC2 DIALOGEX 0, 0, 300, 244 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - GROUPBOX "When Active",IDC_STATIC,8,7,88,73 - RTEXT "Run at priority:",IDC_ACTIVE_PRI,14,17,52,10,SS_CENTERIMAGE | WS_TABSTOP - COMBOBOX IDC_ACTIVE_PRIORITY,14,29,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "When Inactive",IDC_STATIC,102,7,92,73 - RTEXT "Run at priority:",IDC_INACTIVE_PRI,109,17,51,10,SS_CENTERIMAGE | WS_TABSTOP - COMBOBOX IDC_INACTIVE_PRIORITY,109,29,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Pause emulation",IDC_INACTIVE_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,50,69,10 - CONTROL "Disable sound",IDC_INACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,63,79,10 - GROUPBOX "When Minimized",IDC_STATIC,199,7,92,73 - RTEXT "Run at priority:",IDC_MINIMIZED_PRI,207,18,51,10,SS_CENTERIMAGE | WS_TABSTOP - COMBOBOX IDC_MINIMIZED_PRIORITY,207,29,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Pause emulation",IDC_MINIMIZED_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,50,69,10 - CONTROL "Disable sound",IDC_MINIMIZED_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,63,79,10 - CONTROL "",IDC_ASSOCIATELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,19,94,164,100 - GROUPBOX "File Extension Associations",IDC_STATIC,8,83,186,138 - PUSHBUTTON "Deassociate all",IDC_ASSOCIATE_OFF,108,200,75,14 - PUSHBUTTON "Associate all",IDC_ASSOCIATE_ON,19,200,75,14 -END - -IDD_DISK DIALOGEX 0, 0, 300, 242 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_SETFOREGROUND | DS_3DLOOK | DS_CONTROL | DS_CENTER | DS_CENTERMOUSE | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - CONTROL "",IDC_DISKLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,4,6,292,196 - PUSHBUTTON "Remove floppy disk image",IDC_DISKLISTREMOVE,156,223,101,15 - COMBOBOX IDC_DISKTEXT,3,205,293,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Insert floppy disk image",IDC_DISKLISTINSERT,41,223,101,15 -END - -IDD_PANEL DIALOGEX 0, 0, 420, 278 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_ACCEPTFILES | WS_EX_CONTROLPARENT -CAPTION "WinUAE Properties" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - GROUPBOX "",IDC_PANEL_FRAME,112,4,303,247,NOT WS_VISIBLE - CONTROL "",IDC_PANELTREE,"SysTreeView32",TVS_HASLINES | TVS_SHOWSELALWAYS | TVS_NOSCROLL | WS_BORDER | WS_HSCROLL | WS_TABSTOP,5,5,101,248,WS_EX_CLIENTEDGE - GROUPBOX "",IDC_PANEL_FRAME_OUTER,110,2,307,251 - PUSHBUTTON "Reset",IDC_RESETAMIGA,5,259,47,14 - PUSHBUTTON "Quit",IDC_QUITEMU,55,259,47,14 - DEFPUSHBUTTON "OK",IDOK,260,259,50,14 - PUSHBUTTON "Cancel",IDCANCEL,313,259,50,14 - PUSHBUTTON "Help",IDHELP,366,259,50,14,WS_DISABLED - PUSHBUTTON "Restart",IDC_RESTARTEMU,106,259,47,14,NOT WS_VISIBLE -END - -IDD_PATHS DIALOGEX 0, 0, 300, 243 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - LTEXT "System ROMs:",IDC_PATHS_ROML,14,4,260,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_ROM,14,15,261,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_ROMS,281,15,11,15 - LTEXT "Configuration files:",IDC_PATHS_CONFIGL,14,32,121,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_CONFIG,14,42,261,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_CONFIGS,281,42,11,15 - LTEXT "Screenshots:",IDC_PATHS_SCREENSHOTL,14,59,260,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_SCREENSHOT,14,69,261,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_SCREENSHOTS,281,69,11,15 - LTEXT "State files:",IDC_PATHS_STATEFILEL,14,86,260,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_SAVESTATE,14,96,261,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_SAVESTATES,281,96,11,15 - LTEXT "Videos:",IDC_PATHS_AVIOUTPUTL,14,113,260,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_AVIOUTPUT,14,123,261,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_AVIOUTPUTS,281,123,11,15 - LTEXT "Saveimages:",IDC_PATHS_SAVEIMAGEL,14,140,261,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_SAVEIMAGE,14,151,261,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_SAVEIMAGES,281,151,11,15 - PUSHBUTTON "Reset to defaults",IDC_PATHS_DEFAULT,14,196,92,14 - PUSHBUTTON "Rescan ROMs",IDC_ROM_RESCAN,14,212,92,14 - PUSHBUTTON "Clear registry",IDC_RESETREGISTRY,111,212,92,14 - COMBOBOX IDC_PATHS_DEFAULTTYPE,111,197,163,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Clear disk history",IDC_RESETDISKHISTORY,14,228,92,14 - CONTROL "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,177,32,97,10 - LTEXT "Rips:",IDC_PATHS_RIPSL,13,168,261,8,SS_CENTERIMAGE - EDITTEXT IDC_PATHS_RIP,13,178,261,15,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_PATHS_RIPS,280,178,11,15 -END - -IDD_QUICKSTART DIALOGEX 0, 0, 300, 242 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - GROUPBOX "Emulated Hardware",IDC_QUICKSTART_CONFIG,3,0,294,54 - RTEXT "Model:",IDC_STATIC,5,14,50,10,SS_CENTERIMAGE - COMBOBOX IDC_QUICKSTART_MODEL,59,12,233,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Configuration:",IDC_STATIC,5,33,50,10,SS_CENTERIMAGE - COMBOBOX IDC_QUICKSTART_CONFIGURATION,59,31,233,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Compatibility vs Required CPU Power ",IDC_QUICKSTART_COMPA,3,56,294,33 - RTEXT "Best compatibility",IDC_STATIC,13,70,67,10,SS_CENTERIMAGE - CONTROL "",IDC_QUICKSTART_COMPATIBILITY,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,95,65,115,21 - RTEXT "Low compatibility",IDC_STATIC,215,70,63,10,SS_CENTERIMAGE - GROUPBOX "Host Configuration",IDC_QUICKSTART_HOST,3,91,294,33 - RTEXT "Configuration:",IDC_STATIC,5,105,55,10,SS_CENTERIMAGE - COMBOBOX IDC_QUICKSTART_HOSTCONFIG,65,103,225,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Emulated Floppy Drives",IDC_QUICKSTART_DF,3,126,294,84 - CONTROL "Floppy drive DF0:",IDC_DF0QENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,10,136,72,15 - PUSHBUTTON "Select disk image",IDC_DF0QQ,85,136,98,15 - RTEXT "Write-protected",IDC_STATIC,185,139,56,10,SS_CENTERIMAGE - CONTROL "",IDC_DF0WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,246,137,10,15 - PUSHBUTTON "Eject",IDC_EJECT0Q,261,136,30,15 - COMBOBOX IDC_DF0TEXTQ,9,154,282,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - CONTROL "Floppy drive DF1:",IDC_DF1QENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,172,71,15 - PUSHBUTTON "Select disk image",IDC_DF1QQ,85,172,98,15 - RTEXT "Write-protected",IDC_STATIC,185,175,55,10,SS_CENTERIMAGE - CONTROL "",IDC_DF1WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,246,173,10,15 - PUSHBUTTON "Eject",IDC_EJECT1Q,261,172,30,15 - COMBOBOX IDC_DF1TEXTQ,9,190,282,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Set configuration",IDC_QUICKSTART_SETCONFIG,9,219,72,15,NOT WS_VISIBLE - GROUPBOX "Mode",IDC_STATIC,190,211,107,27,BS_LEFT - CONTROL "Start in Quickstart mode",IDC_QUICKSTARTMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,197,222,94,10 -END - -IDD_FRONTEND DIALOGEX 0, 0, 420, 242 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - CONTROL "",IDC_FE_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,6,9,235,124 - GROUPBOX "",IDC_FE_INFO,249,140,160,95 - GROUPBOX "",IDC_FE_SCREENSHOT,249,7,160,128 -END - -IDD_PROGRESSBAR DIALOGEX 0, 0, 229, 58 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Processing..." -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - PUSHBUTTON "Cancel",IDCANCEL,88,40,50,14 - CONTROL "",IDC_PROGRESSBAR,"msctls_progress32",PBS_SMOOTH | WS_BORDER,7,19,215,14 - CTEXT "x",IDC_PROGRESSBAR_TEXT,23,5,187,10,SS_CENTERIMAGE | WS_TABSTOP -END - -IDD_STRINGBOX DIALOGEX 0, 0, 229, 58 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Enter text..." -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,48,39,50,14 - PUSHBUTTON "Cancel",IDCANCEL,151,39,50,14 - EDITTEXT IDC_STRINGBOXEDIT,7,17,214,14,ES_AUTOHSCROLL | ES_WANTRETURN -END - -IDD_DEBUGGER DIALOGEX 0, 0, 454, 368 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME -EXSTYLE WS_EX_CONTROLPARENT -CAPTION "WinUAE Debugger" -FONT 8, "Courier New", 0, 0, 0x0 -BEGIN - EDITTEXT IDC_DBG_OUTPUT1,1,255,370,86,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | ES_WANTRETURN | WS_VSCROLL | NOT WS_TABSTOP - EDITTEXT IDC_DBG_OUTPUT2,1,79,370,262,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | ES_WANTRETURN | WS_VSCROLL | NOT WS_TABSTOP - LISTBOX IDC_DBG_MEM,1,92,370,249,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_DASM,1,92,370,249,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - EDITTEXT IDC_DBG_MEMINPUT,1,79,36,12,ES_AUTOHSCROLL | ES_WANTRETURN - EDITTEXT IDC_DBG_INPUT,1,342,354,12,ES_AUTOHSCROLL | ES_WANTRETURN - PUSHBUTTON "?",IDC_DBG_HELP,356,342,15,12,NOT WS_TABSTOP - PUSHBUTTON "Set to PC",IDC_DBG_MEMTOPC,38,79,45,12,NOT WS_TABSTOP - LISTBOX IDC_DBG_DREG,1,1,52,66,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_AREG,54,1,52,66,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_AMEM,106,1,231,66,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_CCR,338,1,57,42,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_SP_VBR,338,44,115,34,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_MMISC,396,1,57,42,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_PC,1,68,52,10,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_PREFETCH,54,68,283,10,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_FPREG,372,218,81,66,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_FPSR,372,285,81,34,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_MISCCPU,372,320,81,34,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - CONTROL "",IDC_DBG_STATUS,"msctls_statusbar32",0x103,0,355,453,12 - LISTBOX IDC_DBG_BRKPTS,1,79,370,262,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_VSCROLL - LISTBOX IDC_DBG_MCUSTOM,372,79,81,138,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_MISC,1,79,370,262,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_VSCROLL - LISTBOX IDC_DBG_CUSTOM,1,79,370,262,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_VSCROLL - CONTROL "Auto set",IDC_DBG_AUTOSET,"Button",BS_AUTOCHECKBOX,84,79,50,12 - LISTBOX IDC_DBG_DASM2,1,79,370,87,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT - LISTBOX IDC_DBG_MEM2,1,167,370,87,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT -END - -IDD_DBGMEMINPUT DIALOGEX 0, 0, 150, 58 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Enter address..." -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,15,39,50,14 - PUSHBUTTON "Cancel",IDCANCEL,75,39,50,14 - EDITTEXT IDC_DBG_MEMINPUT2,20,12,100,14,ES_AUTOHSCROLL | ES_WANTRETURN - CTEXT "Enter address",IDC_DBG_ADDRINPUTTXT,20,1,100,10,SS_CENTERIMAGE | WS_TABSTOP -END - -IDD_EXPANSION DIALOGEX 0, 0, 300, 206 -STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD -FONT 8, "MS Sans Serif", 0, 0, 0x1 -BEGIN - RTEXT "Memory: [] Graphics card memory. Required for RTG (Picasso96) emulation.",IDC_GFXCARDTEXT,25,44,53,10,SS_NOTIFY | SS_CENTERIMAGE - CONTROL "",IDC_P96MEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,88,40,60,20 - EDITTEXT IDC_P96RAM,152,43,34,12,ES_CENTER | ES_READONLY - GROUPBOX "RTG Graphics Card",IDC_STATIC,5,12,291,113 - CONTROL "Scale if smaller than display size setting",IDC_RTG_SCALE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,74,162,10 - CONTROL "Match host and RTG color depth if possible",IDC_RTG_MATCH_DEPTH, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,62,163,10 - COMBOBOX IDC_RTG_8BIT,211,29,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_RTG_16BIT,211,44,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_RTG_24BIT,211,59,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_RTG_32BIT,211,74,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "Always scale in windowed mode",IDC_RTG_SCALE_ALLOW, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,86,162,10 - COMBOBOX IDC_RTG_SCALE_ASPECTRATIO,211,101,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - RTEXT "Aspect ratio:",IDC_STATIC,153,102,52,10,SS_CENTERIMAGE - RTEXT "Refresh rate:",IDC_STATIC,22,103,51,10,SS_CENTERIMAGE - COMBOBOX IDC_RTG_VBLANKRATE,77,101,68,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "bsdsocket.library [] bsdsocket network library emulation.",IDC_SOCKETS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,148,120,10 - CONTROL "uaenet.device [] Sana 2 compatible network device emulation. WinPcap required.",IDC_SANA2, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,160,77,10 - CONTROL "A2065 Z2 [] A2065 Ethernet Zorro II card emulation. WinPcap required.",IDC_A2065, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,233,160,57,10 - GROUPBOX "Network",IDC_STATIC,126,130,169,66 - COMBOBOX IDC_NETDEVICE,132,176,156,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "uaescsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,160,102,10 - CONTROL "Catweasel Z2 emulation [] Catweasel MK2 Zorro II card emulation. Physical Windows compatible Catweasel card and drivers required.",IDC_CATWEASEL, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,148,101,10 - GROUPBOX "Miscellaneous Expansions",IDC_STATIC,5,130,117,66 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,0,1,0 - PRODUCTVERSION 2,0,1,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "FileDescription", "WinUAE" - VALUE "FileVersion", "2.0.1" - VALUE "InternalName", "WinUAE" - VALUE "LegalCopyright", "© 1996-2009 under the GNU Public License (GPL)" - VALUE "OriginalFilename", "WinUAE.exe" - VALUE "ProductName", "WinUAE" - VALUE "ProductVersion", "2.0.1" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Cursor -// - -IDC_MYHAND CURSOR "H_arrow.cur" - -///////////////////////////////////////////////////////////////////////////// -// -// Menu -// - -IDM_SYSTRAY MENU -BEGIN - POPUP "Menu" - BEGIN - MENUITEM "Configuration", ID_ST_CONFIGURATION - POPUP "Floppy drives" - BEGIN - MENUITEM "Eject all drives", ID_ST_EJECTALL - MENUITEM "DF0:", ID_ST_DF0 - MENUITEM "DF1:", ID_ST_DF1 - MENUITEM "DF2:", ID_ST_DF2 - MENUITEM "DF3:", ID_ST_DF3 - END - MENUITEM "Reset", ID_ST_RESET - MENUITEM "Help", ID_ST_HELP - MENUITEM "Quit WinUAE", ID_ST_QUIT - END -END - -IDM_DBGCONTEXTMENU MENU -BEGIN - POPUP "Inactive" - BEGIN - POPUP "Copy" - BEGIN - MENUITEM "Copy line", ID_DBG_COPYLBLINE - MENUITEM "Copy all", ID_DBG_COPYLB - END - END - POPUP "Memory" - BEGIN - POPUP "Copy" - BEGIN - MENUITEM "Copy line", ID_DBG_COPYLBLINE - MENUITEM "Copy all", ID_DBG_COPYLB - END - POPUP "Set top address" - BEGIN - MENUITEM "Set to A0", ID_DBG_SETTOA0 - MENUITEM "Set to A1", ID_DBG_SETTOA1 - MENUITEM "Set to A2", ID_DBG_SETTOA2 - MENUITEM "Set to A3", ID_DBG_SETTOA3 - MENUITEM "Set to A4", ID_DBG_SETTOA4 - MENUITEM "Set to A5", ID_DBG_SETTOA5 - MENUITEM "Set to A6", ID_DBG_SETTOA6 - MENUITEM "Set to A7", ID_DBG_SETTOA7 - MENUITEM "Enter address", ID_DBG_ENTERADDR - END - END - POPUP "Disassembly" - BEGIN - POPUP "Copy" - BEGIN - MENUITEM "Copy line", ID_DBG_COPYLBLINE - MENUITEM "Copy all", ID_DBG_COPYLB - END - POPUP "Breakpoints" - BEGIN - MENUITEM "Toggle breakpoint", ID_DBG_TOGGLEBP - MENUITEM "Clear all breakpoints", ID_DBG_DELETEBPS - END - POPUP "Set top address" - BEGIN - MENUITEM "Set to PC", ID_DBG_SETTOPC - MENUITEM "Enter address", ID_DBG_ENTERADDR - END - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// WAVE -// - -IDR_DRIVE_STARTUP_A500_1 WAVE "drive_startup.wav" -IDR_DRIVE_CLICK_A500_1 WAVE "drive_click.wav" -IDR_DRIVE_SPIN_A500_1 WAVE "drive_spin.wav" -IDR_DRIVE_SNATCH_A500_1 WAVE "drive_snatch.wav" -IDR_DRIVE_SPINND_A500_1 WAVE "drive_spinnd.wav" - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_XARCADE BITMAP "xarcade-winuae.bmp" -IDB_LCD160X43 BITMAP "lcd.bmp" - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_FILTER, DIALOG - BEGIN - BOTTOMMARGIN, 237 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_KICKSTART "ROM" - IDS_DISK "Disk swapper" - IDS_DISPLAY "Display" - IDS_HARDDISK "Hard drives" - IDS_FLOPPY "Floppy drives" - IDS_ABOUT "About" - IDS_LOADSAVE "Configurations" - IDS_AVIOUTPUT "Output" - IDS_IOPORTS "IO ports" - IDS_MISC1 "Miscellaneous" - IDS_MEMORY "RAM" - IDS_CPU "CPU and FPU" - IDS_CHIPSET "Chipset" - IDS_INPUT "Input" - IDS_FILTER "Filter" -END - -STRINGTABLE -BEGIN - IDS_MISC2 "Pri. & Extensions" - IDS_PATHS "Paths" - IDS_QUICKSTART "Quickstart" - IDS_FRONTEND "Frontend" - IDS_CHIPSET2 "Adv. Chipset" - IDS_GAMEPORTS "Game ports" - IDS_EXPANSION "Expansions" -END - -STRINGTABLE -BEGIN - IDS_EXTTEXT "Floppy disk image files" - IDS_EXTACTUAL "ADF" - IDS_SOUND "Sound" - IDS_CDROM "CD-ROM" - IDS_FRAMERATE "Every %1Frame" - IDS_SECOND "second " - IDS_THIRD "third " - IDS_FOURTH "fourth " - IDS_FIFTH "fifth " - IDS_SIXTH "sixth " - IDS_SEVENTH "seventh " - IDS_EIGHTH "eighth " -END - -STRINGTABLE -BEGIN - IDS_NINTH "ninth " - IDS_TENTH "tenth " - IDS_SELECTADF "Select a floppy disk image file..." - IDS_ADF "Floppy disk image files" - IDS_CHOOSEBLANK "Choose a blank floppy disk image file..." - IDS_SELECTHDF "Select a hard disk image file..." - IDS_HDF "Hard disk image files" - IDS_SELECTUAE "Select a WinUAE configuration file..." - IDS_UAE "WinUAE configuration files" - IDS_SELECTROM "Select a system ROM file..." - IDS_ROM "System ROM files" - IDS_SELECTKEY "Select a system ROM key file..." - IDS_KEY "System ROM key files" - IDS_SELECTINFO "Select information for your configuration..." - IDS_NONE "none" - IDS_VOLUME "Volume" -END - -STRINGTABLE -BEGIN - IDS_SELECTFILESYSROOT "Please select the root directory of the file system..." - IDS_DEFAULTMIDIOUT "Default MIDI-Out Device" - IDS_CONTRIBUTORS1 "Bernd Schmidt - The Grand-Master\nSam Jordan - Custom-chip, floppy-DMA, etc.\nMathias Ortmann - Original WinUAE Main Guy, BSD Socket support\nBrian King - Picasso96 Support, Integrated GUI for WinUAE, previous WinUAE Main Guy\nToni Wilen - Core updates, WinUAE Main Guy\nGustavo Goedert/Peter Remmers/Michael Sontheimer/Tomi Hakala/Tim Gunn/Nemo Pohle - DOS Port Stuff\nSamuel Devulder/Olaf Barthel/Sam Jordan - Amiga Ports\nKrister Bergman - XFree86 and OS/2 Port\nA. Blanchard/Ernesto Corvi - MacOS Port\nChristian Bauer - BeOS Port\nIan Stephenson - NextStep Port\nPeter Teichmann - Acorn/RiscOS Port\nStefan Reinauer - ZorroII/III AutoConfig, Serial Support\nChristian Schmitt/Chris Hames - Serial Support\nHerman ten Brugge - 68020/68881 Emulation Code\nTauno Taipaleenmaki - Various UAE-Control/UAE-Library Support\nBrett Eden/Tim Gunn/Paolo Besser/Nemo Pohle - Various Docs and Web-Sites\nGeorg Veichtlbauer - Help File coordinator, German GUI\nFulvio Leonardi - Italian translator for WinUAE\n" - IDS_CONTRIBUTORS2 "Bill Panagouleas - Hardware support\nSpecial thanks to Alexander Kneer and Tobias Abt (The Picasso96 Team)\nSteven Weiser - Postscript printing emulation idea and testing.\nPéter Tóth /Balázs Rátkai/Iván Herczeg/András Arató - Hungarian translation.\nKarsten Bock, Gavin Fance, Dirk Trowe, Christoph Meier and Christian Schindler - Freezer cartridge hardware support.\nMikko Nieminen - Demo compatibility testing.\nArabuusimiehet - [This information is on a need-to-know basis]" - IDS_INVALIDPRTPORT "The printer you have in this configuration is not valid on this machine.\n" - IDS_RESTOREUSS "Restore a WinUAE snapshot file" - IDS_USS "WinUAE snapshot files" - IDS_WRONGOSVERSION "WinUAE is no longer supported on Windows NT. Please upgrade to either Windows 2000 or Windows XP or a later version." - IDS_SELECTFLASH "Select a flash or battery-backed RAM file..." - IDS_FLASH "WinUAE flash or battery-backed RAM file" - IDS_INPUTHOSTWIDGET "Input source" - IDS_INPUTAMIGAEVENT "Input target" - IDS_INPUTAUTOFIRE "Autofire" - IDS_SAVEUSS "Save a WinUAE snapshot file" - IDS_MIDIOVERFLOW "Sysexbuffer overflow. Should not happen. Please report this to\nberndroesch1@compuserve.de" -END - -STRINGTABLE -BEGIN - IDS_PATH "Path" - IDS_RW "R/W" - IDS_SECTORS "Sectors" - IDS_SURFACES "Surfaces" - IDS_RESERVED "Reserved" - IDS_BLOCKSIZE "Block size" - IDS_NAME "Name" - IDS_DESCRIPTION "Description" - IDS_COULDNOTLOADCONFIG "Could not load the selected configuration!\n" - IDS_NOHELP "Online help is disabled because the HTML Help functionality is not installed on this system. HTML Help is available from http://www.microsoft.com/downloads/.\n" - IDS_MUSTSELECTCONFIG "You must select a configuration or enter a name before selecting Load...\n" - IDS_INVALIDCOMPORT "The serial port you have in this configuration is not valid on this machine.\n" -END - -STRINGTABLE -BEGIN - IDS_HFDSIZE "Size" - IDS_DEVICE "Device" - IDS_BOOTPRI "BootPri" - IDS_FLOPPY_COMPATIBLE " (compatible)" - IDS_FLOPPY_TURBO "Turbo" - IDS_YES "yes" - IDS_NO "no" - IDS_PRI_ABOVENORMAL "Above Normal" - IDS_PRI_NORMAL "Normal" - IDS_PRI_BELOWNORMAL "Below Normal" - IDS_PRI_LOW "Low" - 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)" -END - -STRINGTABLE -BEGIN - IDS_SOUND_STEREO2 "Cloned Stereo (4 Channels)" - IDS_INPUT_CUSTOMEVENT "" - IDS_DEFAULT_NEWWINUAE "WinUAE default (new)" - IDS_SOUND_CLONED51 "Cloned Stereo (5.1)" - IDS_SOUND_51 "5.1 Channels" - IDS_AUTOMATIC "Automatic" - IDS_ALL "All" - IDS_INPUTTOGGLE "Toggle" - IDS_NETDISCONNECTED "Cable disconnected" -END - -STRINGTABLE -BEGIN - IDS_UNSUPPORTEDPIXELFORMAT - "Error: unsupported pixel format. Please use a different screen mode.\n" - IDS_MUSTENTERNAME "You must select a configuration or enter a name before selecting Save...\n" - IDS_MUSTSELECTCONFIGFORDELETE - "You must select a configuration or enter a name before selecting Delete...\n" - IDS_DELETECONFIGCONFIRMATION - "Are you sure you want to Delete this configuration?\n" - IDS_DELETECONFIGTITLE "Confirm Delete" - IDS_MUSTSELECTPATH "You must select a path!" - IDS_SETTINGSERROR "Settings error" - IDS_MUSTSELECTNAME "You must select a name for the volume!" - IDS_MUSTSELECTFILE "You must select a file!" - IDS_FAILEDHARDFILECREATION "Failed to create hard disk image file..." - IDS_CREATIONERROR "Creation error" - IDS_ERRORTITLE "WinUAE message" -END - -STRINGTABLE -BEGIN - IDS_INP "WinUAE Input Recording" - IDS_RESTOREINP "Playback a WinUAE input recording" - IDS_SAVEINP "Record a WinUAE input recording" - IDS_SCREEN_WINDOWED "Windowed" - IDS_SCREEN_FULLSCREEN "Fullscreen" - IDS_SCREEN_FULLWINDOW "Full-window" - IDS_SCREEN_VSYNC "VSync" - IDS_SCREEN_VSYNC_AUTOSWITCH "AutoVSync" - IDS_SOUND_MONO "Mono" - IDS_SOUND_MIXED "Mixed" - IDS_SOUND_STEREO "Stereo" - IDS_DISABLED "Disabled" - IDS_SOUND_FILTER_OFF "Always off" - IDS_SOUND_FILTER_EMULATED "Emulated (A500)" -END - -STRINGTABLE -BEGIN - IDS_SOUND_FILTER_EMULATED_E "Emulated (A1200)" - IDS_INPUT_COMPATIBILITY "Compatibility mode" - IDS_INPUT_CUSTOM "Configuration #%d" - IDS_INPUT_COPY_DEFAULT "Default" - IDS_INPUT_COPY_CUSTOM "Config #%d" - IDS_3D_NO_FILTER "Point (%d-bit)" - IDS_3D_BILINEAR "Bilinear (%d-bit)" - IDS_VSYNC_DEFAULT "Default" - IDS_DRIVESOUND_NONE "No sound" - IDS_DRIVESOUND_DEFAULT_A500 "A500 (WinUAE built-in)" - IDS_AVIOUTPUT_NOCODEC "no codec selected" - IDS_DISK_IMAGENAME "Disk image" - IDS_DISK_DRIVENAME "Drive" - IDS_UNSUPPORTEDSCREENMODE - "The selected screen mode can't be displayed in a window, because %s\nSwitching to full-screen display." - IDS_UNSUPPORTEDSCREENMODE_1 - "the desktop is running in an unknown color mode." -END - -STRINGTABLE -BEGIN - IDS_UNSUPPORTEDSCREENMODE_2 - "the desktop is running in 8-bit color depth, which WinUAE can't use in windowed mode." - IDS_UNSUPPORTEDSCREENMODE_3 - "the desktop is too small for the specified window size." - IDS_UNSUPPORTEDSCREENMODE_4 - "you selected an RTG (Picasso96) display with unsupported color depth." - IDS_FLOPPYTYPE35DD "3.5"" DD" - IDS_FLOPPYTYPE35HD "3.5"" HD" - IDS_FLOPPYTYPE525SD "5.25"" SD" - IDS_FLOPPYTYPEDISABLED "Disabled" - IDS_STMENUNOFLOPPY "No floppy disk inserted" - IDS_TREEVIEW_HARDWARE "Hardware" - IDS_TREEVIEW_HOST "Host" - IDS_TREEVIEW_MISC "Miscellaneous" - IDS_TREEVIEW_SETTINGS "Settings" - IDS_WINUAETITLE_MMB "[Mouse active - press ALT+TAB or middle mouse button to cancel]" - IDS_WINUAETITLE_NORMAL "[Mouse active - press ALT+TAB to cancel]" - IDS_STARTEMULATION "Start" - IDS_TREEVIEW_ABOUT "About" -END - -STRINGTABLE -BEGIN - IDS_NOHARDDRIVES "No hard disks detected that were either empty or RDB-partitioned." - IDS_DEFAULT_HOST "Default Configuration" - IDS_SOUND_4CHANNEL "4 Channels" - IDS_HF_FS_CUSTOM "Custom" - IDS_SELECTFS "Select file system handler (FastFileSystem, SmartFilesystem, etc.)" - IDS_KEYJOY "Keyboard Layout A (Numeric keypad, 0 and 5 = Fire)\nKeyboard Layout B (Cursor keys, Right CTRL and ALT = Fire)\nKeyboard Layout C (W=Up S=Down A=Left D=Right, Left ALT = Fire)\nX-Arcade (Left)\nX-Arcade (Right)" - IDS_STATEFILE_UNCOMPRESSED "Uncompressed" - IDS_STATEFILE_RAMDUMP "RAM dump" - IDS_STATEFILE_WAVE "Wave audio dump" - IDS_SOUND_SWAP_PAULA "Paula only" - IDS_SOUND_SWAP_AHI "AHI only" - IDS_SOUND_SWAP_BOTH "Both" - IDS_SOUND_FILTER_ON_AGA "Always on (A500)" - IDS_SOUND_FILTER_ON_A500 "Always on (A1200)" - IDS_DRIVESOUND_PC_FLOPPY "PC floppy drive %c" - IDS_FLOPPYTYPE35DDESCOM "3.5"" ESCOM" -END - -STRINGTABLE -BEGIN - IDS_NUMSG_NEEDEXT2 "The software uses a non-standard floppy disk format. You may need to use a custom floppy disk image file instead of a standard one. This message will not appear again." - IDS_NUMSG_NOROMKEY "Could not find system ROM key file." - IDS_NUMSG_KSROMCRCERROR "System ROM checksum incorrect. The system ROM image file may be corrupt." - IDS_NUMSG_KSROMREADERROR "Error while reading system ROM." -END - -STRINGTABLE -BEGIN - IDS_NUMSG_NOEXTROM "No extended ROM found." - IDS_NUMSG_MODRIP_NOTFOUND "No music modules or packed data found." - IDS_NUMSG_MODRIP_FINISHED "Scan finished." - IDS_NUMSG_MODRIP_SAVE "Module/packed data found\n%s\nStart address %08.8X, Size %d bytes\nWould you like to save it?" - IDS_NUMSG_KS68020 "The selected system ROM requires a 68020 with 32-bit addressing or 68030 or higher CPU." - IDS_NUMSG_ROMNEED "One of the following system ROMs is required:\n\n%s\n\nCheck the System ROM path in the Paths panel and click Rescan ROMs." - IDS_NUMSG_STATEHD "WARNING: Current configuration is not fully compatible with state saves.\nThis message will not appear again." - IDS_NUMSG_NOCAPS "Selected disk image needs the SPS plugin\nwhich is available from\nhttp//www.softpres.org/" - IDS_NUMSG_OLDCAPS "You need an updated SPS plugin\nwhich is available from\nhttp//www.softpres.org/" - IDS_IMGCHK_BOOTBLOCKCRCERROR - "The selected floppy disk image is not bootable (boot block checksum error)" - IDS_IMGCHK_BOOTBLOCKNO "The selected floppy disk image is not bootable (no boot block)" - IDS_IMGCHK_DAMAGED "The selected floppy disk image is damaged or unformatted" - IDS_IMGCHK_KS2 "The selected floppy disk image requires a 2.04 or later system ROM.\nThe configuration has been updated." - IDS_IMGCHK_KS3 "The selected floppy disk image requires a 3.0 or later system ROM.\nThe configuration has been updated." - IDS_ROMSCANEND "Scan of ROMs finished" -END - -STRINGTABLE -BEGIN - IDS_ROM_AVAILABLE "available" - IDS_ROM_UNAVAILABLE "unavailable" - IDS_NUMSG_KS68EC020 "The selected system ROM requires a 68020 with 24-bit addressing or higher CPU." - IDS_ROMSCANNOROMS "No supported system ROMs detected." - IDS_NUMSG_KICKREP "You need to have a floppy disk (image file) in DF0: to use the system ROM replacement." - IDS_NUMSG_KICKREPNO "The floppy disk (image file) in DF0: is not compatible with the system ROM replacement functionality." - IDS_NUMSG_NOROM "Could not load system ROM, trying system ROM replacement." - IDS_HDCLONE_OK "Hard drive image file created succesfully." - IDS_HDCLONE_FAIL "Hard drive image file creation failed.\nError code %d:%d." - IDS_NUMSG_KS68030 "The selected system ROM requires a 68030 CPU." - IDS_NUMSG_EXPROMNEED "One of the following expansion boot ROMs is required:\n\n%s\n\nCheck the System ROM path in the Paths panel and click Rescan ROMs." - IDS_SB_FAVORITENAME "Enter name..." - IDS_SB_CUSTOMEVENT "Enter custom event string.." -END - -STRINGTABLE -BEGIN - IDS_QS_MODELS "A500\nA500+\nA600\nA1000\nA1200\nA3000\nA4000\nCD32\nCDTV\nArcadia Multi Select system\nExpanded WinUAE example configuration" - IDS_QS_MODEL_A500 "1.3 ROM, OCS, 512 KB Chip + 512 KB Slow RAM (most common)\nThis configuration is capable of running most games and demos produced for first-generation hardware. Only few exceptions need a different configuration (e.g. the oldest games tend to be incompatible with this configuration).\n1.3 ROM, ECS Agnus, 512 KB Chip RAM + 512 KB Slow RAM\nLater hardware revision of the A500. Nearly 100% compatible with the previous configuration.\n1.3 ROM, ECS Agnus, 1 MB Chip RAM\nFew newer games and demos require this configuration.\n1.3 ROM, OCS Agnus, 512 KB Chip RAM\nVery old (e.g. pre-1988) games and demos may require this configuration.\n1.2 ROM, OCS Agnus, 512 KB Chip RAM\nAs available for the A1000, and installed on the first A500 and A2000 series. Some very old programs only work correctly with this configuration. Note: This system ROM version can only boot from floppy disk (no hard disk boot support).\n1.2 ROM, OCS Agnus, 512 KB Chip RAM + 512 KB Slow RAM\nThis configuration adds expansion memory to the first A500 produced. Try this if your game does not work with newer configurations, but works with the previous one. It could add some features to the game, including faster loading times. Note: This system ROM version can only boot from floppy disk (no hard disk boot support)." - IDS_QS_MODEL_A500P "Basic non-expanded configuration\nThe A500+ adds an ECS Agnus chip, 1 MB of Chip RAM and a 2.0 ROM to the A500. Many A500 games and demos don't work properly on an A500+.\n2 MB Chip RAM expanded configuration\n\n4 MB Fast RAM expanded configuration\n" - IDS_QS_MODEL_A600 "Basic non-expanded configuration\nThe A600 is smaller than the A500+ and has an updated 2.0 ROM.\n2 MB Chip RAM expanded configuration\n\n4 MB Fast RAM expanded configuration\n" - IDS_QS_MODEL_A1000 "512 KB Chip RAM\nThe A1000 was the first model produced, with a configuration equivalent to that of an A500 with OCS chipset. You normally don't need to use this configuration, unless you are nostalgic and would like to hear the short A1000 boot tune\n""ICS"" Denise without EHB support\nVery first A1000 models had Denise without EHB capability.\n256 KB Chip RAM\n Unexpanded A1000. All later A1000 models were sold with a 256 KB RAM expansion built-in." - IDS_QS_MODEL_A1200 "Basic non-expanded configuration\nUse this configuration to run most AGA demos and games\n4 MB Fast RAM expanded configuration\nSome newer AGA games and demos need an expanded A1200 to run." - IDS_QS_MODEL_CD32 "CD32\nThe CD32 was one the first 32-bit consoles on the market. It is basically an A1200 with a built-in CD-ROM drive. Insert your CD32 or CDTV CD-ROM into a free CD-ROM drive before starting the emulation.\nCD32 + MPEG Full Motion Video Cartridge (not emulated yet)\n" - IDS_QS_MODEL_CDTV "CDTV\nThe CDTV was the first model with a built-in CD-ROM drive. Looking like a black CD player, it featured a configuration equivalent to that of an A500 with 1 MB RAM and an ECS chipset.\nFloppy drive and 64KB SRAM card expanded CDTV\n" -END - -STRINGTABLE -BEGIN - IDS_QS_MODEL_UAE "High-end expanded configuration" - IDS_QS_MODEL_ARCADIA "Arcadia\nArcadia Multi Select system is arcade platform developed by Arcadia and Mastertronic. It is based on an A500 mainboard with ROM cage attached to expansion port. Arcadia ROM files go to ""Cartridge ROM File"" in ROM-panel." - IDS_QS_MODEL_A3000 "1.4 ROM, 2MB Chip + 8MB Fast\n\n2.04 ROM, 2MB Chip + 8MB Fast\n\n3.1 ROM, 2MB Chip + 8MB Fast\n" - IDS_QS_MODEL_A4000 "68030, 3.1 ROM, 2MB Chip + 8MB Fast\n\n68040, 3.1 ROM, 2MB Chip + 8MB Fast\n" - IDS_QS_MODEL_A4000T "A4000T (test)\nA4000T" -END - -STRINGTABLE -BEGIN - IDS_FLOPPYTYPE35DDPC "3.5"" DD (PC)" - IDS_FLOPPYTYPE35HDPC "3.5"" HD (PC)" - IDS_JOYMODE_DEFAULT "Default" - IDS_JOYMODE_MOUSE "Mouse" - IDS_JOYMODE_JOYSTICK "Joystick" - IDS_JOYMODE_JOYSTICKANALOG "Analog joystick" - IDS_JOYMODE_LIGHTPEN "Light pen" - IDS_JOYMODE_MOUSE_CDTV "CDTV remote mouse" - IDS_JOYMODE_JOYSTICK_CD32 "CD32 pad" - IDS_TABLET_BOTH_CURSORS "Show both cursors" - IDS_TABLET_NATIVE_CURSOR "Show native cursor only" - IDS_TABLET_HOST_CURSOR "Show host cursor only" - IDS_AUTOSCALE_DISABLED "Disabled" - IDS_AUTOSCALE_SCALING "Automatic scaling" - IDS_AUTOSCALE_RESIZE "Automatic resize" - IDS_PRINTER_ASCII "ASCII-Only" -END - -STRINGTABLE -BEGIN - IDS_PRINTER_EPSON9 "Epson Matrix Printer Emulation, 9pin" - IDS_PRINTER_POSTSCRIPT_DETECTION "PostScript (Passthrough)" - IDS_PRINTER_POSTSCRIPT_EMULATION - "PostScript (Emulation, GhostScript required)" - IDS_PRINTER_PASSTHROUGH "Passthrough" - IDS_RES_LORES "Lores" - IDS_RES_HIRES "Hires (normal)" - IDS_RES_SUPERHIRES "SuperHires" - IDS_PRINTER_EPSON48 "Epson Matrix Printer Emulation, 48pin" -END - -#endif // English (Neutral) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Finnish resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FIN) -#ifdef _WIN32 -LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // Finnish resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource." + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (Neutral) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APPICON ICON "winuae.ico" +IDI_FLOPPY ICON "35floppy.ico" +IDI_ABOUT ICON "amigainfo.ico" +IDI_HARDDISK ICON "Drive.ico" +IDI_CPU ICON "cpu.ico" +IDI_GAMEPORTS ICON "joystick.ico" +IDI_IOPORTS ICON "joystick.ico" +IDI_INPUT ICON "joystick.ico" +IDI_MISC1 ICON "misc.ico" +IDI_MISC2 ICON "misc.ico" +IDI_MOVE_UP ICON "move_up.ico" +IDI_MOVE_DOWN ICON "move_dow.ico" +IDI_AVIOUTPUT ICON "avioutput.ico" +IDI_DISK ICON "Drive.ico" +IDI_FOLDER ICON "folder.ico" +IDI_SOUND ICON "sound.ico" +IDI_DISPLAY ICON "screen.ico" +IDI_ROOT ICON "root.ico" +IDI_MEMORY ICON "chip.ico" +IDI_QUICKSTART ICON "quickstart.ico" +IDI_PATHS ICON "paths.ico" +IDI_DISKIMAGE ICON "diskimage.ico" +IDI_PORTS ICON "port.ico" +IDI_CONFIGFILE ICON "configfile.ico" +IDI_FILE ICON "file.ico" +IDI_EXPANSION ICON "expansion.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_DBGACCEL ACCELERATORS +BEGIN + VK_F1, ID_DBG_PAGE1, VIRTKEY, NOINVERT + VK_F2, ID_DBG_PAGE2, VIRTKEY, NOINVERT + VK_F3, ID_DBG_PAGE3, VIRTKEY, NOINVERT + VK_F4, ID_DBG_PAGE4, VIRTKEY, NOINVERT + VK_F5, ID_DBG_PAGE5, VIRTKEY, NOINVERT + VK_F6, ID_DBG_PAGE6, VIRTKEY, NOINVERT + VK_F7, ID_DBG_PAGE7, VIRTKEY, NOINVERT + VK_F8, ID_DBG_PAGE8, VIRTKEY, NOINVERT + VK_F9, ID_DBG_PAGE9, VIRTKEY, NOINVERT + VK_F11, ID_DBG_STEP_OVER, VIRTKEY, NOINVERT + VK_F12, ID_DBG_STEP_INTO, VIRTKEY, NOINVERT + VK_DOWN, IDC_DBG_MEMDOWN, VIRTKEY, ALT, NOINVERT + VK_RIGHT, IDC_DBG_MEMDOWNFAST, VIRTKEY, ALT, NOINVERT + VK_UP, IDC_DBG_MEMUP, VIRTKEY, ALT, NOINVERT + VK_LEFT, IDC_DBG_MEMUPFAST, VIRTKEY, ALT, NOINVERT + "H", IDC_DBG_HELP, VIRTKEY, ALT, NOINVERT + "P", IDC_DBG_MEMTOPC, VIRTKEY, ALT, NOINVERT + "A", IDC_DBG_AUTOSET, VIRTKEY, ALT, NOINVERT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_KICKSTART DIALOGEX 0, 0, 300, 176 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +EXSTYLE WS_EX_CONTEXTHELP +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + GROUPBOX "System ROM Settings",-1,5,0,290,93 + LTEXT "Main ROM file:",IDC_ROMTEXT,14,13,263,10 + COMBOBOX IDC_ROMFILE,12,26,263,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_KICKCHOOSER,280,25,10,15 + LTEXT "Extended ROM file:",IDC_ROMFILE2TEXT,14,43,263,10 + COMBOBOX IDC_ROMFILE2,12,56,263,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_ROMCHOOSER2,280,55,10,15 + CONTROL "MapROM emulation [] Creates a BlizKick-compatible memory area.",IDC_MAPROM, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,95,77,87,10 + CONTROL "ShapeShifter support [] Patches the system ROM for ShapeShifter compatibility.",IDC_KICKSHIFTER, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,77,87,10 + GROUPBOX "Miscellaneous",-1,5,99,290,75 + LTEXT "Cartridge ROM file:",IDC_FLASHTEXT2,12,110,265,10 + COMBOBOX IDC_CARTFILE,12,123,263,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_CARTCHOOSER,280,122,10,15 + LTEXT "Flash RAM file:",IDC_FLASHTEXT,12,142,265,10 + EDITTEXT IDC_FLASHFILE,12,155,262,13,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_FLASHCHOOSER,280,154,10,15 +END + +IDD_DISPLAY DIALOGEX 0, 0, 300, 235 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + GROUPBOX "Screen",IDC_SCREENRESTEXT,12,0,270,67,BS_LEFT + COMBOBOX IDC_DISPLAYSELECT,59,10,215,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_RESOLUTION,59,27,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_REFRESHRATE,187,27,87,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_XSIZE,59,48,48,12,ES_NUMBER + EDITTEXT IDC_YSIZE,114,48,47,12,ES_NUMBER + GROUPBOX "Settings",IDC_SETTINGSTEXT,12,73,199,137 + CONTROL "Blacker than black",IDC_BLACKER_THAN_BLACK,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,19,125,92,10 + LTEXT "Refresh:",IDC_REFRESHTEXT,18,173,28,8 + CONTROL "Slider1",IDC_FRAMERATE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,47,168,75,20 + EDITTEXT IDC_RATETEXT,124,172,77,12,ES_CENTER | ES_READONLY + GROUPBOX "Centering",IDC_STATIC,221,73,61,49 + CONTROL "Horizontal",IDC_XCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,229,87,49,10 + CONTROL "Vertical",IDC_YCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,229,103,49,10 + GROUPBOX "Line Mode",IDC_LINEMODE,222,126,61,84 + CONTROL "Normal",IDC_LM_NORMAL,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,231,148,44,10 + CONTROL "Double",IDC_LM_DOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,231,164,45,10 + CONTROL "Scanlines",IDC_LM_SCANLINES,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,231,180,46,10 + COMBOBOX IDC_DA_MODE,20,218,58,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "",IDC_DA_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,84,214,101,20 + LTEXT "FPS adj.:",IDC_REFRESH2TEXT,16,193,32,8 + CONTROL "",IDC_FRAMERATE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,47,188,127,20 + EDITTEXT IDC_RATE2TEXT,175,192,26,12,ES_CENTER | ES_READONLY + COMBOBOX IDC_RESOLUTIONDEPTH,134,27,46,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "Filtered low resolution",IDC_LORES_SMOOTHED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,125,89,10 + COMBOBOX IDC_SCREENMODE_NATIVE,100,85,102,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_SCREENMODE_RTG,100,103,102,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + RTEXT "Native mode:",IDC_STATIC,19,85,59,15,SS_CENTERIMAGE + RTEXT "RTG mode:",IDC_STATIC,19,101,59,15,SS_CENTERIMAGE + PUSHBUTTON "Reset to defaults",IDC_DA_RESET,212,218,73,14 + RTEXT "Resolution:",IDC_STATIC,27,152,59,15,SS_CENTERIMAGE + COMBOBOX IDC_LORES,100,152,102,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "Remove interlace artifacts",IDC_FLICKERFIXER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,139,99,10 + RTEXT "Windowed:",IDC_STATIC,17,46,40,15,SS_CENTERIMAGE + RTEXT "Fullscreen:",IDC_STATIC,17,19,40,15,SS_CENTERIMAGE +END + +IDD_MEMORY DIALOGEX 0, 0, 300, 158 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +EXSTYLE WS_EX_CONTEXTHELP +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + GROUPBOX "Memory Settings",-1,14,7,274,69 + RTEXT "Chip:",-1,24,26,20,10,SS_CENTERIMAGE + CONTROL "Slider1",IDC_CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,22,50,20 + EDITTEXT IDC_CHIPRAM,105,25,34,12,ES_CENTER | ES_READONLY + RTEXT "Slow:",-1,149,26,20,10,SS_CENTERIMAGE + CONTROL "Slider1",IDC_SLOWMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,22,60,20 + EDITTEXT IDC_SLOWRAM,243,25,34,12,ES_CENTER | ES_READONLY + RTEXT "Fast:",IDC_FASTTEXT,24,51,20,10,SS_CENTERIMAGE + CONTROL "Slider1",IDC_FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,47,50,20 + EDITTEXT IDC_FASTRAM,105,53,34,12,ES_CENTER | ES_READONLY + RTEXT "Z3 Fast:",IDC_Z3TEXT,139,51,30,10,SS_CENTERIMAGE + CONTROL "Slider1",IDC_Z3FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,47,60,20 + EDITTEXT IDC_Z3FASTRAM,243,50,34,12,ES_CENTER | ES_READONLY + GROUPBOX "A3000/A4000 Advanced Memory Settings",-1,14,84,274,65 + RTEXT "Motherboard Fast RAM:",-1,40,100,129,10,SS_CENTERIMAGE + CONTROL "",IDC_MBMEM1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,181,96,59,20 + EDITTEXT IDC_MBRAM1,244,99,34,12,ES_CENTER | ES_READONLY + RTEXT "Processor Slot Fast RAM:",-1,40,123,129,10,SS_CENTERIMAGE + CONTROL "",IDC_MBMEM2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,181,119,59,20 + EDITTEXT IDC_MBRAM2,244,122,34,12,ES_CENTER | ES_READONLY +END + +IDD_CPU DIALOGEX 0, 0, 300, 241 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + GROUPBOX "CPU",IDC_STATIC,5,1,81,144,BS_LEFT + CONTROL "68000",IDC_CPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,15,63,10 + CONTROL "68010",IDC_CPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,28,65,10 + CONTROL "68020",IDC_CPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,41,63,10 + CONTROL "68030",IDC_CPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,54,64,10 + CONTROL "68040",IDC_CPU4,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,67,66,10 + CONTROL "68060",IDC_CPU5,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,80,66,10 + CONTROL "More compatible [] Emulate 68000's prefetch registers. More compatible but slower.",IDC_COMPATIBLE, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,10,107,73,8 + CONTROL "JIT [] Enable just-in-time CPU emulator. Significantly increases the speed of the CPU emulation. Requires 68020 or higher CPU.",IDC_JITENABLE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,119,73,10 + GROUPBOX "CPU Emulation Speed",IDC_STATIC,90,3,205,92 + CONTROL "Fastest possible, but maintain chipset timing",IDC_CS_HOST, + "Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,95,18,195,10 + CONTROL "Approximate A500 or A500/A1200 cycle-exact",IDC_CS_68000, + "Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,95,32,195,10 + CONTROL "Adjustable between CPU and chipset",IDC_CS_ADJUSTABLE, + "Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,95,46,195,10 + CONTROL "Slider1",IDC_SPEED,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,114,71,67,20 + CONTROL "",IDC_CPUIDLE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,219,71,69,20 + GROUPBOX "Advanced JIT Settings",IDC_STATIC,90,147,205,91 + CONTROL "Slider1",IDC_CACHE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,140,161,115,20 + EDITTEXT IDC_CACHETEXT,255,166,30,12,ES_CENTER | ES_READONLY + CONTROL "Hard flush",IDC_HARDFLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,194,63,10 + CONTROL "Constant jump",IDC_CONSTJUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,208,63,10 + CONTROL "FPU support",IDC_JITFPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,222,62,10 + CONTROL "No flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,168,194,62,10 + CONTROL "Direct",IDC_TRUST0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,235,194,52,10 + CONTROL "Indirect",IDC_TRUST1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,235,208,52,10 + CONTROL "More compatible [] More compatible but slower FPU emulation.",IDC_COMPATIBLE_FPU, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,9,221,73,10 + GROUPBOX "FPU",IDC_STATIC,5,147,81,90,BS_LEFT + CONTROL "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,10,94,73,8 + CONTROL "None",IDC_FPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,14,161,63,10 + CONTROL "68881",IDC_FPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,175,63,10 + CONTROL "68882",IDC_FPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,188,63,10 + CONTROL "CPU internal",IDC_FPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,202,63,10 + RTEXT "CPU Frequency",IDC_STATIC,105,119,51,10,SS_CENTERIMAGE + GROUPBOX "Cycle-exact CPU Emulation Speed",IDC_STATIC,90,99,205,46 + RTEXT "CPU",IDC_STATIC,96,77,17,10,SS_CENTERIMAGE + RTEXT "Chipset",IDC_STATIC,182,77,26,9,SS_CENTERIMAGE + RTEXT "CPU Idle",IDC_STATIC,231,60,47,9,SS_CENTERIMAGE + RTEXT "Cache size:",IDC_STATIC,95,167,42,10,SS_CENTERIMAGE + CONTROL "68040 MMU [] 68040 MMU emulation. Not compatible with JIT.",IDC_MMUENABLE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,132,73,10 + COMBOBOX IDC_CPU_FREQUENCY,165,118,46,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_CPU_FREQUENCY2,218,117,70,15 +END + +IDD_FLOPPY DIALOGEX 0, 0, 300, 240 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + COMBOBOX IDC_DF0TEXT,2,22,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_DF0TYPE,115,6,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "Write-protected",IDC_STATIC,174,8,59,10,SS_CENTERIMAGE + CONTROL "",IDC_DF0WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,4,10,15 + PUSHBUTTON "Eject",IDC_EJECT0,253,4,30,15 + PUSHBUTTON "...",IDC_DF0,287,4,10,15 + COMBOBOX IDC_DF1TEXT,2,58,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_DF1TYPE,115,42,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "Write-protected",IDC_STATIC,174,43,59,10,SS_CENTERIMAGE + CONTROL "",IDC_DF1WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,40,10,15 + PUSHBUTTON "Eject",IDC_EJECT1,253,40,30,15 + PUSHBUTTON "...",IDC_DF1,287,40,10,15 + COMBOBOX IDC_DF2TEXT,2,93,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_DF2TYPE,115,77,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "Write-protected",IDC_STATIC,174,77,59,10,SS_CENTERIMAGE + CONTROL "",IDC_DF2WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,75,9,15 + PUSHBUTTON "Eject",IDC_EJECT2,253,75,30,15 + PUSHBUTTON "...",IDC_DF2,287,75,10,15 + COMBOBOX IDC_DF3TEXT,2,128,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_DF3TYPE,115,112,57,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "Write-protected",IDC_STATIC,174,113,59,10,SS_CENTERIMAGE + CONTROL "",IDC_DF3WP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,238,111,9,15 + PUSHBUTTON "Eject",IDC_EJECT3,253,110,30,15 + PUSHBUTTON "...",IDC_DF3,287,109,10,15 + GROUPBOX "New Floppy Disk Image",IDC_SETTINGSTEXT,5,183,289,49 + COMBOBOX IDC_FLOPPYTYPE,12,197,64,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Create Standard Disk [] Creates a standard 880 or 1760 KB ADF disk image.",IDC_CREATE,81,196,97,15 + PUSHBUTTON "Create Custom Disk [] Creates a low level (MFM) ADF disk image (about 2MB). Useful for programs that use non-standard disk formats (for example some save disks or DOS-formatted floppies)",IDC_CREATE_RAW,187,196,101,15 + GROUPBOX "Floppy Drive Emulation Speed",IDC_SETTINGSTEXT2,5,144,289,35 + CONTROL "",IDC_FLOPPYSPD,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,32,154,116,20 + EDITTEXT IDC_FLOPPYSPDTEXT,183,157,101,12,ES_CENTER | ES_READONLY + PUSHBUTTON "Delete save image",IDC_SAVEIMAGE0,43,5,70,15,NOT WS_VISIBLE + PUSHBUTTON "Delete save image",IDC_SAVEIMAGE1,43,40,70,15,NOT WS_VISIBLE + PUSHBUTTON "Delete save image",IDC_SAVEIMAGE2,43,75,70,15,NOT WS_VISIBLE + PUSHBUTTON "Delete save image",IDC_SAVEIMAGE3,43,110,70,15,NOT WS_VISIBLE + EDITTEXT IDC_CREATE_NAME,81,215,97,13,ES_AUTOHSCROLL + RTEXT "Disk label:",IDC_STATIC,15,216,52,10,SS_CENTERIMAGE + CONTROL "DF0:",IDC_DF0ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,6,34,15 + CONTROL "DF1:",IDC_DF1ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,41,34,15 + CONTROL "DF2:",IDC_DF2ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,76,34,15 + CONTROL "DF3:",IDC_DF3ENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,3,111,34,15 +END + +IDD_HARDDISK DIALOGEX 0, 0, 300, 237 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +EXSTYLE WS_EX_CONTEXTHELP +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + CONTROL "List1",IDC_VOLUMELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,5,0,290,167 + PUSHBUTTON "Add &Directory or Archive...",IDC_NEW_FS,10,171,103,15 + PUSHBUTTON "Add &Hardfile...",IDC_NEW_HF,130,171,74,15 + PUSHBUTTON "Add Ha&rd Drive...",IDC_NEW_HD,220,171,75,15 + PUSHBUTTON "Remove",IDC_REMOVE,235,193,60,15 + PUSHBUTTON "&Properties",IDC_EDIT,235,210,60,15 + CONTROL "Add PC drives at startup",IDC_MAPDRIVES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,192,100,10 + CONTROL "Disable UAEFSDB-support",IDC_NOUAEFSDB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,192,119,10 + CONTROL "Don't use Windows Recycle Bin",IDC_NORECYCLEBIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,203,121,10 + CONTROL "Include network drives..",IDC_MAPDRIVES_NET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,226,101,10 + CONTROL "Include CD/DVD drives..",IDC_MAPDRIVES_CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,215,100,10 + CONTROL "Automount removable drives",IDC_MAPDRIVES_AUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,215,115,10 + CONTROL "Include removable drives..",IDC_MAPDRIVES_REMOVABLE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,203,100,10 +END + +IDD_SOUND DIALOGEX 0, 0, 300, 237 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + COMBOBOX IDC_SOUNDCARDLIST,5,3,291,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Sound Emulation",IDC_SOUNDSETTINGS,5,20,120,85 + CONTROL "Disabled",IDC_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,35,101,10 + CONTROL "Disabled, but emulated",IDC_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,48,102,10 + CONTROL "Enabled",IDC_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,61,102,10 + CONTROL "Enabled, 100% accurate",IDC_SOUND3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,74,101,10 + GROUPBOX "Volume",IDC_STATIC,132,36,164,31 + CONTROL "",IDC_SOUNDVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,137,44,105,20 + EDITTEXT IDC_SOUNDVOLUME2,247,47,40,12,ES_CENTER | ES_READONLY + GROUPBOX "Sound Buffer Size",IDC_STATIC,132,73,164,31 + CONTROL "Slider1",IDC_SOUNDBUFFERRAM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,137,81,105,19 + EDITTEXT IDC_SOUNDBUFFERMEM,247,84,40,12,ES_CENTER | ES_READONLY + GROUPBOX "Settings",IDC_SOUNDINTERPOLATION2,6,106,290,60 + LTEXT "Frequency:",IDC_SOUNDFREQTXT,11,140,53,8,SS_CENTERIMAGE + COMBOBOX IDC_SOUNDFREQ,13,149,51,75,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + LTEXT "Audio filter:",IDC_SOUNDFILTERTXT,209,140,77,8,SS_CENTERIMAGE + COMBOBOX IDC_SOUNDFILTER,209,149,80,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Channel mode:",IDC_SOUNDSTEREOTXT,11,116,57,8,SS_CENTERIMAGE + COMBOBOX IDC_SOUNDSTEREO,13,125,122,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Interpolation:",IDC_SOUNDINTERPOLATIONTXT,209,116,75,8,SS_CENTERIMAGE + COMBOBOX IDC_SOUNDINTERPOLATION,209,125,80,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Stereo separation:",IDC_SOUNDSTEREOSEPTXT,141,116,63,8,SS_CENTERIMAGE + COMBOBOX IDC_SOUNDSTEREOSEP,142,125,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Stereo delay:",IDC_SOUNDSTEREOMIXTXT,141,140,63,8,SS_CENTERIMAGE + COMBOBOX IDC_SOUNDSTEREOMIX,142,149,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Floppy Drive Sound Emulation",IDC_STATIC,6,172,220,60 + CONTROL "",IDC_SOUNDDRIVEVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,14,186,107,19 + EDITTEXT IDC_SOUNDDRIVEVOLUME2,124,188,40,12,ES_CENTER | ES_READONLY + COMBOBOX IDC_SOUNDDRIVE,173,187,46,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_SOUNDDRIVESELECT,18,209,202,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_SOUNDSWAP,73,149,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Swap channels:",IDC_SOUNDSWAPTXT,74,140,61,8,SS_CENTERIMAGE + CONTROL "Automatic switching",IDC_SOUND_AUTO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,89,103,10 + CONTROL "Exclusive mode",IDC_SOUND_EXCLUSIVE,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,137,25,154,10 + CONTROL "DirectSound",IDC_SOUND_DS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,181,55,10 + CONTROL "WASAPI",IDC_SOUND_WASAPI,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,193,53,10 + CONTROL "OpenAL",IDC_SOUND_OPENAL,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,205,53,10 + CONTROL "PortAudio",IDC_SOUND_PORTAUDIO,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,235,217,58,10 + GROUPBOX "Drivers",IDC_STATIC,230,172,66,60 +END + +IDD_LOADSAVE DIALOGEX 0, 0, 302, 241 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + CONTROL "",IDC_CONFIGTREE,"SysTreeView32",TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,6,3,289,153,WS_EX_CLIENTEDGE + RTEXT "Name:",IDC_STATIC,4,161,40,15,SS_CENTERIMAGE + EDITTEXT IDC_EDITNAME,48,162,146,13,ES_AUTOHSCROLL + RTEXT "Description:",IDC_STATIC,2,182,41,15,SS_CENTERIMAGE + EDITTEXT IDC_EDITDESCRIPTION,48,183,146,13,ES_AUTOHSCROLL + RTEXT "Link:",IDC_STATIC,4,204,40,15,SS_CENTERIMAGE + COMBOBOX IDC_CONFIGLINK,48,205,93,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "Ignore link",IDC_CONFIGNOLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,146,207,48,10 + EDITTEXT IDC_EDITPATH,199,161,49,15,ES_AUTOHSCROLL | WS_DISABLED + CONTROL "Autoload",IDC_CONFIGAUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,253,163,42,10 + GROUPBOX "Additional Information",IDC_STATIC,199,179,96,38,BS_LEFT + PUSHBUTTON "View",IDC_VIEWINFO,208,195,37,15 + PUSHBUTTON "Set",IDC_SETINFO,250,195,37,15 + PUSHBUTTON "Load",IDC_QUICKLOAD,5,225,44,15 + PUSHBUTTON "Save",IDC_QUICKSAVE,54,225,44,15 + PUSHBUTTON "Load From...",IDC_LOAD,121,225,49,15 + PUSHBUTTON "Delete",IDC_DELETE,251,225,44,15 + PUSHBUTTON "Save As...",IDC_SAVE,175,225,44,15 +END + +IDD_IOPORTS DIALOGEX 0, 0, 300, 228 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + GROUPBOX "Parallel Port",IDC_STATIC,5,2,291,86 + RTEXT "Printer:",IDC_STATIC,12,15,25,15,SS_CENTERIMAGE + COMBOBOX IDC_PRINTERLIST,49,15,232,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Flush print job",IDC_FLUSHPRINTER,114,51,58,12 + RTEXT "Autoflush [] Time in seconds after a pending print job is automatically flushed.",IDC_PRINTERAUTOFLUSHTXT,176,49,76,15,SS_NOTIFY | SS_CENTERIMAGE + EDITTEXT IDC_PRINTERAUTOFLUSH,255,50,25,12,ES_NUMBER + RTEXT "Type:",IDC_STATIC,15,33,21,15,SS_CENTERIMAGE + EDITTEXT IDC_PS_PARAMS,114,67,167,12,ES_AUTOHSCROLL + GROUPBOX "Serial Port",IDC_STATIC,4,92,292,48 + COMBOBOX IDC_SERIAL,49,104,232,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Shared",IDC_SER_SHARED,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,15,123,48,12 + CONTROL "RTS/CTS",IDC_SER_CTSRTS,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,75,123,55,12 + RTEXT "Out:",IDC_MIDI,10,154,34,15,SS_CENTERIMAGE + COMBOBOX IDC_MIDIOUTLIST,49,154,232,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "In:",IDC_MIDI2,10,174,29,15,SS_CENTERIMAGE + COMBOBOX IDC_MIDIINLIST,49,174,232,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Direct []Use when emulating serial-link games on two PCs running WinUAE",IDC_SER_DIRECT, + "Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,135,123,65,12 + CONTROL "uaeserial.device",IDC_UAESERIAL,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,200,123,78,12 + COMBOBOX IDC_PRINTERTYPELIST,49,33,232,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "Ghostscript extra parameters:",IDC_STATIC,10,66,102,15,SS_CENTERIMAGE + GROUPBOX "MIDI",IDC_STATIC,5,143,291,51,BS_LEFT + GROUPBOX "Protection Dongle",IDC_STATIC,5,197,292,30,BS_LEFT + COMBOBOX IDC_DONGLELIST,50,208,232,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP +END + +IDD_GAMEPORTS DIALOGEX 0, 0, 300, 236 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + COMBOBOX IDC_PORT0_JOYS,45,29,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_PORT1_JOYS,45,65,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Swap port 0 and 1",IDC_SWAP,194,101,93,14 + RTEXT "Port 0:",IDC_STATIC,11,28,25,15,SS_CENTERIMAGE + RTEXT "Port 1:",IDC_STATIC,11,64,25,15,SS_CENTERIMAGE + LTEXT "X-Arcade layout information []#1",IDC_STATIC,64,87,106,15,SS_NOTIFY | SS_CENTERIMAGE + GROUPBOX "Mouse and Joystick settings",IDC_STATIC,4,15,292,148 + GROUPBOX "Mouse extra settings",IDC_STATIC,4,165,292,69 + RTEXT "Mouse speed:",IDC_STATIC,17,180,56,10,SS_CENTERIMAGE + EDITTEXT IDC_INPUTSPEEDM,87,180,25,12,ES_NUMBER + CONTROL "Install virtual mouse driver",IDC_PORT_TABLET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,187,120,10 + CONTROL "Full tablet input emulation",IDC_PORT_TABLET_FULL, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,220,121,10 + CONTROL "Magic Mouse",IDC_PORT_MOUSETRICK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,175,119,10 + COMBOBOX IDC_PORT_TABLET_CURSOR,167,201,119,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "Magic Mouse cursor mode:",IDC_STATIC,17,204,138,10,SS_CENTERIMAGE + COMBOBOX IDC_PORT0_JOYSMODE,195,47,91,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_PORT1_JOYSMODE,195,82,91,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_PORT2_JOYS,45,125,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Parallel port joystick adapter",IDC_STATIC,10,105,147,15,SS_CENTERIMAGE + COMBOBOX IDC_PORT3_JOYS,45,143,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP +END + +IDD_CONTRIBUTORS DIALOGEX 0, 0, 411, 242 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "UAE Authors and Contributors..." +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Ok",ID_OK,177,224,53,14 + CONTROL "",IDC_CONTRIBUTORS,"RICHEDIT",TCS_HOTTRACK | TCS_VERTICAL | TCS_RAGGEDRIGHT | TCS_OWNERDRAWFIXED | TCS_MULTISELECT | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,4,5,404,214 +END + +IDD_ABOUT DIALOGEX 0, 0, 300, 191 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + CONTROL "",IDC_RICHEDIT1,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,45,10,210,15 + CONTROL "",IDC_RICHEDIT2,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,30,260,13 + PUSHBUTTON "Contributors",IDC_CONTRIBUTORS,110,59,80,15 + CONTROL "",IDC_UAEHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,128,80,15 + CONTROL "",IDC_PICASSOHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | NOT WS_VISIBLE | WS_DISABLED,206,55,80,20 + CONTROL "",IDC_AMIGAHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,109,98,80,20 + CONTROL "",IDC_WINUAEHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,200,98,80,15 + CONTROL "",IDC_AIABHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | NOT WS_VISIBLE | WS_DISABLED,17,59,80,15 + CONTROL "",IDC_THEROOTS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,110,153,80,15 + CONTROL "",IDC_CAPS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,200,128,80,15 + CONTROL "",IDC_ABIME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,110,128,80,15 + CONTROL "",IDC_CLOANTOHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,98,80,20 + CONTROL "",IDC_AMIGASYS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,153,80,15 + CONTROL "",IDC_AMIKIT,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,200,153,80,15 +END + +IDD_MISC1 DIALOGEX 0, 0, 300, 237 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + GROUPBOX "Miscellaneous Options",IDC_STATIC,8,2,290,136 + CONTROL "Untrap = middle button",IDC_JULIAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,19,110,10 + CONTROL "Show GUI on startup",IDC_SHOWGUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,31,109,10 + CONTROL "Native On-screen LEDs",IDC_SHOWLEDS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,141,80,109,10 + CONTROL "Don't show taskbar button",IDC_NOTASKBARBUTTON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,56,109,10 + CONTROL "Use CTRL-F11 to quit",IDC_CTRLF11,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,43,110,10 + GROUPBOX "Keyboard LEDs",IDC_STATIC,7,140,85,94 + COMBOBOX IDC_KBLED1,22,154,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_KBLED2,22,173,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_KBLED3,22,193,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Logging",IDC_STATIC,97,140,202,25 + CONTROL "Create log file",IDC_CREATELOGFILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,151,72,10 + CONTROL "Illegal memory accesses",IDC_ILLEGAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,189,151,95,10 + GROUPBOX "State Files",IDC_STATIC,98,167,201,68 + PUSHBUTTON "Load state...",IDC_DOLOADSTATE,105,180,49,14 + PUSHBUTTON "Save state...",IDC_DOSAVESTATE,105,208,49,14 + CONTROL "Enable state recording",IDC_STATE_CAPTURE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,182,88,10 + RTEXT "Recording rate (seconds):",IDC_STATIC,157,199,86,10,SS_CENTERIMAGE | WS_TABSTOP + COMBOBOX IDC_STATE_RATE,248,197,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + RTEXT "Recording buffer (MB):",IDC_STATIC,160,219,83,10,SS_CENTERIMAGE | WS_TABSTOP + COMBOBOX IDC_STATE_BUFFERSIZE,248,217,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "Always on top",IDC_ALWAYSONTOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,69,110,10 + CONTROL "USB mode",IDC_KBLED_USB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,216,64,10 + COMBOBOX IDC_SCSIMODE,213,30,80,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_LANGUAGE,153,117,122,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Language",IDC_STATIC,138,107,154,27 + CONTROL "Disable screensaver",IDC_POWERSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,82,109,10 + COMBOBOX IDC_DD_SURFACETYPE,213,63,79,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + RTEXT "DirectDraw display buffer:",IDC_STATIC,195,50,92,10,SS_CENTERIMAGE + RTEXT "SCSI and CD/DVD access method:",IDC_STATIC,151,12,126,10,SS_CENTERIMAGE + CONTROL "Synchronize clock",IDC_CLOCKSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,95,111,10 + CONTROL "Faster RTG [] Enables less accurate custom chipset emulation mode when Picasso96 is enabled.",IDC_FASTERRTG, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,19,108,100,10 + CONTROL "RTG On-screen LEDs",IDC_SHOWLEDSRTG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,141,93,109,10 +END + +IDD_HARDFILE DIALOGEX 0, 0, 299, 249 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Hardfile Settings" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + GROUPBOX "Settings",IDC_STATIC,10,5,280,146 + RTEXT "Path:",IDC_HARDFILE_DIR_TEXT,25,18,22,10 + EDITTEXT IDC_PATH_NAME,52,15,213,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_SELECTOR,271,15,11,15 + RTEXT "FileSys:",IDC_HARDFILE_FILESYS_TEXT,13,38,34,10 + EDITTEXT IDC_PATH_FILESYS,52,35,213,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_FILESYS_SELECTOR,271,35,11,15 + RTEXT "Device:",IDC_HARDFILE_DEVICE_TEXT,16,58,31,10 + EDITTEXT IDC_HARDFILE_DEVICE,52,55,66,15,ES_AUTOHSCROLL + RTEXT "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,20,94,48,8 + EDITTEXT IDC_HARDFILE_BOOTPRI,73,90,44,15 + CONTROL "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,53,74,64,10 + PUSHBUTTON "Enable RDB mode",IDC_HDF_RDB,174,55,92,14 + RTEXT "Surfaces:",IDC_SURFACES_TEXT,118,94,32,10 + EDITTEXT IDC_HEADS,155,90,40,15,ES_NUMBER + RTEXT "Reserved:",IDC_RESERVED_TEXT,197,94,35,10 + EDITTEXT IDC_RESERVED,237,90,40,15,ES_NUMBER + RTEXT "Sectors:",IDC_SECTORS_TEXT,120,113,30,10 + EDITTEXT IDC_SECTORS,155,111,40,15,ES_NUMBER + RTEXT "Block size:",IDC_BLOCKSIZE_TEXT,197,113,35,10 + EDITTEXT IDC_BLOCKSIZE,237,111,40,15,ES_NUMBER + GROUPBOX "New hard disk image file",IDC_STATIC,10,156,280,62 + PUSHBUTTON "Create",IDC_HF_CREATE,23,171,80,14 + EDITTEXT IDC_HF_SIZE,119,171,61,15,ES_NUMBER + PUSHBUTTON "OK",IDOK,102,226,50,14 + PUSHBUTTON "Cancel",IDCANCEL,158,226,50,14 + EDITTEXT IDC_HF_DOSTYPE,119,194,61,15 + COMBOBOX IDC_HF_TYPE,23,195,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_HDF_CONTROLLER,73,112,44,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + RTEXT "DOS type",IDC_STATIC,187,196,32,10,SS_CENTERIMAGE + RTEXT "MB",IDC_STATIC,185,174,17,10,SS_CENTERIMAGE + RTEXT "HD Controller:",IDC_STATIC,16,113,52,10,SS_CENTERIMAGE + CONTROL "Bootable",IDC_HDF_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,136,74,53,10 + CONTROL "Do not mount",IDC_HDF_DONOTMOUNT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,217,74,67,10 + EDITTEXT IDC_HDFINFO,16,131,268,12,ES_CENTER | ES_READONLY + CONTROL "Sparse file",IDC_HF_SPARSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,220,168,62,10 + CONTROL "Dynamic HDF",IDC_HF_DYNAMIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,220,180,62,10 +END + +IDD_FILESYS DIALOGEX 15, 25, 299, 111 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Volume Settings" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + LTEXT "Device name:",-1,11,7,54,10 + EDITTEXT IDC_VOLUME_DEVICE,65,5,104,15,ES_AUTOHSCROLL + LTEXT "Volume label:",-1,13,28,54,10 + EDITTEXT IDC_VOLUME_NAME,65,25,104,15,ES_AUTOHSCROLL + LTEXT "Path:",-1,38,49,44,10 + EDITTEXT IDC_PATH_NAME,65,46,227,15,ES_AUTOHSCROLL + PUSHBUTTON "Select Directory",IDC_FS_SELECT_DIR,65,66,103,15 + CONTROL "Read/write",IDC_FS_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,174,7,55,10 + RTEXT "Boot priority:",IDC_VOLUME_BOOTPRI_TEXT,178,28,49,8 + EDITTEXT IDC_VOLUME_BOOTPRI,236,25,30,15 + PUSHBUTTON "OK",IDOK,65,91,48,15 + PUSHBUTTON "Cancel",IDCANCEL,120,91,48,15 + PUSHBUTTON "Select Archive or Plain File",IDC_FS_SELECT_FILE,190,66,103,15 + PUSHBUTTON "Eject",IDC_FS_SELECT_EJECT,230,91,62,15 + CONTROL "Bootable",IDC_FS_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,236,7,53,10 +END + +IDD_SETINFO DIALOGEX 0, 0, 229, 85 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Additional Information Settings" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + RTEXT "Path:",-1,5,20,24,15,SS_CENTERIMAGE + EDITTEXT IDC_PATH_NAME,35,20,169,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_SELECTOR,210,20,10,15 + PUSHBUTTON "OK",IDOK,120,65,48,15 + PUSHBUTTON "Cancel",IDCANCEL,175,65,48,15 +END + +IDD_CHIPSET DIALOGEX 0, 65490, 300, 229 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + GROUPBOX "Chipset",IDC_STATIC,14,11,145,90 + CONTROL "OCS [] Original chipset. A1000 and most A500s.",IDC_OCS, + "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,37,26,51,10 + CONTROL "ECS Agnus [] Enhanced chipset (ECS Agnus chip only). CDTV and later A500 and A2000 hardware revisions.",IDC_ECS_AGNUS, + "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,42,55,10 + CONTROL "ECS Denise [] Enhanced chipset (ECS Denise chip only). Normally paired with ECS Agnus.",IDC_ECS_DENISE, + "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,42,55,10 + CONTROL "Full ECS [] Full ECS chipset (ECS Agnus and ECS Denise chips). A500+, A600 and A3000.",IDC_ECS, + "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,58,52,10 + CONTROL "AGA [] Advanced Graphics Architecture chipset. A1200, A4000 and CD32.",IDC_AGA, + "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,26,51,10 + CONTROL "NTSC [] North American and Japanese display standard, 60Hz refresh rate. Other countries use PAL (50Hz. display refresh rate)",IDC_NTSC, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,58,50,10 + GROUPBOX "Options",IDC_STATIC,168,11,114,89 + CONTROL "Immediate Blitter [] Faster but less compatible blitter emulation.",IDC_BLITIMM, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,179,33,96,10 + CONTROL "Cycle-exact [] The most compatible A500 emulation mode. Very fast PC recommended.",IDC_CYCLEEXACT, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,179,46,100,10 + GROUPBOX "Collision Level",IDC_STATIC,14,105,267,48 + CONTROL "None [] Collision hardware emulation disabled.",IDC_COLLISION0, + "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,37,121,59,10 + CONTROL "Sprites only [] Emulate only sprite vs. sprite collisions.",IDC_COLLISION1, + "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,137,62,10 + CONTROL "Sprites and Sprites vs. Playfield [] Recommended collision emulation level.",IDC_COLLISION2, + "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,121,161,10 + CONTROL "Full [] 100% collision hardware emulation. Only very few games need this option. Slowest.",IDC_COLLISION3, + "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,137,119,10 + GROUPBOX "Sound Emulation",IDC_STATIC,13,159,268,65 + CONTROL "Disabled",IDC_CS_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,37,175,102,10 + CONTROL "Emulated",IDC_CS_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,190,91,10 + CONTROL "Emulated, 100% accurate",IDC_CS_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,205,95,10 + CONTROL "Genlock connected [] Allow boot sequence to detect genlock. Genlock is not emulated.",IDC_GENLOCK, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,179,59,100,10 + COMBOBOX IDC_CS_EXT,100,80,49,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "Chipset Extra",IDC_STATIC,25,79,52,15,SS_CENTERIMAGE +END + +IDD_CHIPSET2 DIALOGEX 0, 65490, 300, 247 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + GROUPBOX "Battery Backed Up Real Time Clock",IDC_STATIC,11,24,275,29 + CONTROL "None",IDC_CS_RTC1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,19,36,55,10 + CONTROL "MSM6242B",IDC_CS_RTC2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,90,36,52,10 + CONTROL "RF5C01A",IDC_CS_RTC3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,159,36,46,10 + EDITTEXT IDC_CS_RTCADJUST,215,34,64,13,ES_AUTOHSCROLL + GROUPBOX "CIA-A TOD Clock Source",IDC_STATIC,11,56,275,29 + CONTROL "Vertical Sync",IDC_CS_CIAA_TOD1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,19,68,63,10 + CONTROL "Power Supply 50Hz",IDC_CS_CIAA_TOD2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,90,68,85,10 + CONTROL "Power Supply 60Hz",IDC_CS_CIAA_TOD3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,186,68,88,10 + CONTROL "ROM Mirror (A8)",IDC_CS_KSMIRROR_A8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,146,80,10 + CONTROL "A1000 Boot RAM/ROM",IDC_CS_A1000RAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,95,88,10 + CONTROL "CD32 CD",IDC_CS_CD32CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,108,76,10 + CONTROL "CD32 C2P",IDC_CS_CD32C2P,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,108,87,10 + CONTROL "CD32 NVRAM",IDC_CS_CD32NVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,108,84,10 + CONTROL "CDTV CD",IDC_CS_CDTVCD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,121,47,10 + CONTROL "CDTV SRAM",IDC_CS_CDTVRAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,120,87,10 + CONTROL "CDTV SRAM Expansion",IDC_CS_CDTVRAMEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,120,90,10 + CONTROL "A600/A1200 IDE",IDC_CS_IDE1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,133,79,10 + CONTROL "A4000/A4000T IDE",IDC_CS_IDE2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,133,88,10 + CONTROL "Ramsey revision:",IDC_CS_RAMSEY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,216,71,10 + EDITTEXT IDC_CS_RAMSEYREV,91,214,45,13,ES_AUTOHSCROLL + CONTROL "Fat Gary revision:",IDC_CS_FATGARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,229,71,10 + EDITTEXT IDC_CS_FATGARYREV,91,228,45,13,ES_AUTOHSCROLL + CONTROL "A3000 SCSI",IDC_CS_DMAC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,188,76,10 + CONTROL "Compatible Settings",IDC_CS_COMPATIBLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,8,234,10 + CONTROL "DF0: ID Hardware",IDC_CS_DF0IDHW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,95,92,10 + CONTROL "Agnus/Alice revision:",IDC_CS_AGNUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,216,81,10 + EDITTEXT IDC_CS_AGNUSREV,232,214,45,13,ES_AUTOHSCROLL + CONTROL "Denise/Lisa revision:",IDC_CS_DENISE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,229,81,10 + EDITTEXT IDC_CS_DENISEREV,232,228,45,13,ES_AUTOHSCROLL + CONTROL "A590/A2091 SCSI",IDC_CS_A2091,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,188,76,10 + CONTROL "A4000T SCSI",IDC_CS_DMAC2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,188,88,10 + LTEXT "A4091/A4000T SCSI not yet implemented.",IDC_STATIC,17,174,159,8,SS_CENTERIMAGE + CONTROL "PCMCIA",IDC_CS_PCMCIA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,133,92,10 + CONTROL "A4091 SCSI",IDC_CS_A4091,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,200,76,10 + CONTROL "CDTV SCSI",IDC_CS_CDTVSCSI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,200,76,10 + CONTROL "Include host SCSI devices",IDC_CS_SCSIMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,200,101,10 + CONTROL "C00000 is Fast RAM",IDC_CS_SLOWISFAST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,146,92,10 + CONTROL "ROM Mirror (E0)",IDC_CS_KSMIRROR_E0,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,146,80,10 + CONTROL "CIA ROM Overlay",IDC_CS_CIAOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,95,80,10 + CONTROL "KB Reset Warning",IDC_CS_RESETWARNING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,159,80,10 + CONTROL "No-EHB Denise",IDC_CS_NOEHB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,159,80,10 + CONTROL "Blitter Busy Bug",IDC_CS_BLITTERBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,159,80,10 +END + +IDD_AVIOUTPUT DIALOGEX 0, 0, 288, 217 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + GROUPBOX "Output Properties",IDC_STATIC,5,0,274,126 + EDITTEXT IDC_AVIOUTPUT_FILETEXT,15,15,226,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_CLIENTEDGE + PUSHBUTTON "...",IDC_AVIOUTPUT_FILE,249,15,19,12 + CONTROL "Audio",IDC_AVIOUTPUT_AUDIO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,33,39,14 + CONTROL "",IDC_AVIOUTPUT_AUDIO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,59,34,209,13 + CONTROL "Video",IDC_AVIOUTPUT_VIDEO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,50,39,14 + CONTROL "",IDC_AVIOUTPUT_VIDEO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,59,51,209,13 + CONTROL "Disable frame rate limit",IDC_AVIOUTPUT_FRAMELIMITER, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,71,122,10 + CONTROL "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,103,108,14 + PUSHBUTTON "Save screenshot",IDC_SCREENSHOT,16,141,77,14 + GROUPBOX "Ripper",IDC_STATIC,5,127,274,49 + PUSHBUTTON "Pro Wizard 1.62",IDC_PROWIZARD,192,141,77,14,WS_DISABLED + CONTROL "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,159,77,14 + GROUPBOX "Input Recorder",IDC_STATIC,5,178,274,33 + CONTROL "Record",IDC_INPREC_RECORD,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,190,77,14 + CONTROL "Playback",IDC_INPREC_PLAY,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,16,190,77,14 + CONTROL "Alt. playback mode",IDC_INPREC_PLAYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,103,192,78,10 + CONTROL "Disable sound output",IDC_AVIOUTPUT_NOSOUNDOUTPUT, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,88,123,10 + CONTROL "Disable sound sync",IDC_AVIOUTPUT_NOSOUNDSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,88,120,10 + CONTROL "Capture before filtering",IDC_AVIOUTPUT_ORIGINALSIZE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,71,120,10 + CONTROL "Take screenshot before filtering",IDC_SCREENSHOT_ORIGINALSIZE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,160,162,10 +END + +IDD_INPUT DIALOGEX 0, 0, 300, 242 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + COMBOBOX IDC_INPUTTYPE,5,5,98,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_INPUTDEVICE,109,5,167,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "",IDC_INPUTDEVICEDISABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,282,8,9,8 + CONTROL "List1",IDC_INPUTLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,5,22,290,146 + COMBOBOX IDC_INPUTAMIGACNT,5,174,24,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_INPUTAMIGA,33,174,262,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + RTEXT "Joystick dead zone (%):",-1,7,196,79,10,SS_CENTERIMAGE + EDITTEXT IDC_INPUTDEADZONE,92,195,25,12,ES_NUMBER + RTEXT "Autofire rate (frames):",-1,10,212,76,10,SS_CENTERIMAGE + EDITTEXT IDC_INPUTAUTOFIRERATE,92,210,25,12,ES_NUMBER + RTEXT "Digital joy-mouse speed:",-1,124,196,84,10,SS_CENTERIMAGE + EDITTEXT IDC_INPUTSPEEDD,215,195,25,12,ES_NUMBER + RTEXT "Analog joy-mouse speed:",-1,120,212,88,10,SS_CENTERIMAGE + EDITTEXT IDC_INPUTSPEEDA,215,211,25,12,ES_NUMBER + PUSHBUTTON "Copy from:",IDC_INPUTCOPY,249,195,45,14 + COMBOBOX IDC_INPUTCOPYFROM,249,211,45,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Swap 1<>2",IDC_INPUTSWAP,249,226,45,14 +END + +IDD_FILTER DIALOGEX 0, 0, 296, 241 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + GROUPBOX "Filter Settings",-1,0,1,294,199 + COMBOBOX IDC_FILTERMODE,20,15,103,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_FILTERFILTER,132,15,83,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Reset to defaults",IDC_FILTERDEFAULT,221,15,67,14 + RTEXT "Horiz. size:",-1,7,61,46,10,SS_CENTERIMAGE + CONTROL "Slider1",IDC_FILTERHZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,54,152,19 + EDITTEXT IDC_FILTERHZV,253,56,34,12,ES_CENTER | ES_READONLY + RTEXT "Vert. size:",-1,7,81,46,10,SS_CENTERIMAGE + CONTROL "Slider1",IDC_FILTERVZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,74,152,19 + EDITTEXT IDC_FILTERVZV,253,76,34,12,ES_CENTER | ES_READONLY + RTEXT "Horiz. position:",-1,5,101,55,10,SS_CENTERIMAGE + CONTROL "Slider1",IDC_FILTERHO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,94,151,19 + EDITTEXT IDC_FILTERHOV,253,96,34,12,ES_CENTER | ES_READONLY + RTEXT "Vert. position:",-1,5,120,55,10,SS_CENTERIMAGE + CONTROL "Slider1",IDC_FILTERVO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,114,151,19 + EDITTEXT IDC_FILTERVOV,253,116,34,12,ES_CENTER | ES_READONLY + RTEXT "Extra settings:",-1,105,135,57,10,SS_CENTERIMAGE + CONTROL "Slider1",IDC_FILTERXL,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,99,174,151,19 + EDITTEXT IDC_FILTERXLV,253,176,34,12,ES_CENTER | ES_READONLY + COMBOBOX IDC_FILTERSLR,253,151,33,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Presets",-1,0,203,296,36 + COMBOBOX IDC_FILTERPRESETS,8,217,119,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Load",IDC_FILTERPRESETLOAD,132,216,47,14 + PUSHBUTTON "Save",IDC_FILTERPRESETSAVE,184,216,47,14 + PUSHBUTTON "Delete",IDC_FILTERPRESETDELETE,236,216,47,14 + COMBOBOX IDC_FILTERHZMULT,59,60,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_FILTERVZMULT,59,80,35,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_FILTERXTRA,105,151,138,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_FILTERASPECT,14,151,73,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "Keep aspect ratio",IDC_FILTERKEEPASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,168,85,10 + RTEXT "Automatic scaling:",-1,9,38,79,10,SS_CENTERIMAGE + COMBOBOX IDC_FILTERAUTOSCALE,105,36,140,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_FILTERASPECT2,14,180,73,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP +END + +IDD_HARDDRIVE DIALOGEX 0, 0, 380, 76 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Harddrive Settings" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + LTEXT "Hard drive:",IDC_STATIC,7,11,80,10 + COMBOBOX IDC_HARDDRIVE,49,9,325,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,161,51,55,10 + DEFPUSHBUTTON "Add hard drive",IDOK,231,48,65,14 + PUSHBUTTON "Cancel",IDCANCEL,319,48,54,14 + DEFPUSHBUTTON "Create hard disk image file",IDC_HARDDRIVE_IMAGE,49,30,115,14 + EDITTEXT IDC_PATH_NAME,183,27,97,15,ES_AUTOHSCROLL | NOT WS_VISIBLE + COMBOBOX IDC_HDF_CONTROLLER,102,50,41,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + RTEXT "HD Controller:",IDC_STATIC,42,51,52,10,SS_CENTERIMAGE +END + +IDD_MISC2 DIALOGEX 0, 0, 300, 244 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + GROUPBOX "When Active",IDC_STATIC,8,7,88,73 + RTEXT "Run at priority:",IDC_ACTIVE_PRI,14,17,52,10,SS_CENTERIMAGE | WS_TABSTOP + COMBOBOX IDC_ACTIVE_PRIORITY,14,29,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + GROUPBOX "When Inactive",IDC_STATIC,102,7,92,73 + RTEXT "Run at priority:",IDC_INACTIVE_PRI,109,17,51,10,SS_CENTERIMAGE | WS_TABSTOP + COMBOBOX IDC_INACTIVE_PRIORITY,109,29,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Pause emulation",IDC_INACTIVE_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,50,69,10 + CONTROL "Disable sound",IDC_INACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,63,79,10 + GROUPBOX "When Minimized",IDC_STATIC,199,7,92,73 + RTEXT "Run at priority:",IDC_MINIMIZED_PRI,207,18,51,10,SS_CENTERIMAGE | WS_TABSTOP + COMBOBOX IDC_MINIMIZED_PRIORITY,207,29,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Pause emulation",IDC_MINIMIZED_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,50,69,10 + CONTROL "Disable sound",IDC_MINIMIZED_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,63,79,10 + CONTROL "",IDC_ASSOCIATELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,19,94,164,100 + GROUPBOX "File Extension Associations",IDC_STATIC,8,83,186,138 + PUSHBUTTON "Deassociate all",IDC_ASSOCIATE_OFF,108,200,75,14 + PUSHBUTTON "Associate all",IDC_ASSOCIATE_ON,19,200,75,14 +END + +IDD_DISK DIALOGEX 0, 0, 300, 242 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_SETFOREGROUND | DS_3DLOOK | DS_CONTROL | DS_CENTER | DS_CENTERMOUSE | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + CONTROL "",IDC_DISKLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,4,6,292,196 + PUSHBUTTON "Remove floppy disk image",IDC_DISKLISTREMOVE,156,223,101,15 + COMBOBOX IDC_DISKTEXT,3,205,293,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Insert floppy disk image",IDC_DISKLISTINSERT,41,223,101,15 +END + +IDD_PANEL DIALOGEX 0, 0, 420, 278 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_ACCEPTFILES | WS_EX_CONTROLPARENT +CAPTION "WinUAE Properties" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + GROUPBOX "",IDC_PANEL_FRAME,112,4,303,247,NOT WS_VISIBLE + CONTROL "",IDC_PANELTREE,"SysTreeView32",TVS_HASLINES | TVS_SHOWSELALWAYS | TVS_NOSCROLL | WS_BORDER | WS_HSCROLL | WS_TABSTOP,5,5,101,248,WS_EX_CLIENTEDGE + GROUPBOX "",IDC_PANEL_FRAME_OUTER,110,2,307,251 + PUSHBUTTON "Reset",IDC_RESETAMIGA,5,259,47,14 + PUSHBUTTON "Quit",IDC_QUITEMU,55,259,47,14 + DEFPUSHBUTTON "OK",IDOK,260,259,50,14 + PUSHBUTTON "Cancel",IDCANCEL,313,259,50,14 + PUSHBUTTON "Help",IDHELP,366,259,50,14,WS_DISABLED + PUSHBUTTON "Restart",IDC_RESTARTEMU,106,259,47,14,NOT WS_VISIBLE +END + +IDD_PATHS DIALOGEX 0, 0, 300, 243 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + LTEXT "System ROMs:",IDC_PATHS_ROML,14,4,260,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_ROM,14,15,261,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_ROMS,281,15,11,15 + LTEXT "Configuration files:",IDC_PATHS_CONFIGL,14,32,121,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_CONFIG,14,42,261,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_CONFIGS,281,42,11,15 + LTEXT "Screenshots:",IDC_PATHS_SCREENSHOTL,14,59,260,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_SCREENSHOT,14,69,261,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_SCREENSHOTS,281,69,11,15 + LTEXT "State files:",IDC_PATHS_STATEFILEL,14,86,260,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_SAVESTATE,14,96,261,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_SAVESTATES,281,96,11,15 + LTEXT "Videos:",IDC_PATHS_AVIOUTPUTL,14,113,260,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_AVIOUTPUT,14,123,261,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_AVIOUTPUTS,281,123,11,15 + LTEXT "Saveimages:",IDC_PATHS_SAVEIMAGEL,14,140,261,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_SAVEIMAGE,14,151,261,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_SAVEIMAGES,281,151,11,15 + PUSHBUTTON "Reset to defaults",IDC_PATHS_DEFAULT,14,196,92,14 + PUSHBUTTON "Rescan ROMs",IDC_ROM_RESCAN,14,212,92,14 + PUSHBUTTON "Clear registry",IDC_RESETREGISTRY,111,212,92,14 + COMBOBOX IDC_PATHS_DEFAULTTYPE,111,197,163,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Clear disk history",IDC_RESETDISKHISTORY,14,228,92,14 + CONTROL "Cache Configuration files",IDC_PATHS_CONFIGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,177,32,97,10 + LTEXT "Rips:",IDC_PATHS_RIPSL,13,168,261,8,SS_CENTERIMAGE + EDITTEXT IDC_PATHS_RIP,13,178,261,15,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PATHS_RIPS,280,178,11,15 +END + +IDD_QUICKSTART DIALOGEX 0, 0, 300, 242 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + GROUPBOX "Emulated Hardware",IDC_QUICKSTART_CONFIG,3,0,294,54 + RTEXT "Model:",IDC_STATIC,5,14,50,10,SS_CENTERIMAGE + COMBOBOX IDC_QUICKSTART_MODEL,59,12,233,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "Configuration:",IDC_STATIC,5,33,50,10,SS_CENTERIMAGE + COMBOBOX IDC_QUICKSTART_CONFIGURATION,59,31,233,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Compatibility vs Required CPU Power ",IDC_QUICKSTART_COMPA,3,56,294,33 + RTEXT "Best compatibility",IDC_STATIC,13,70,67,10,SS_CENTERIMAGE + CONTROL "",IDC_QUICKSTART_COMPATIBILITY,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,95,65,115,21 + RTEXT "Low compatibility",IDC_STATIC,215,70,63,10,SS_CENTERIMAGE + GROUPBOX "Host Configuration",IDC_QUICKSTART_HOST,3,91,294,33 + RTEXT "Configuration:",IDC_STATIC,5,105,55,10,SS_CENTERIMAGE + COMBOBOX IDC_QUICKSTART_HOSTCONFIG,65,103,225,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Emulated Floppy Drives",IDC_QUICKSTART_DF,3,126,294,84 + CONTROL "Floppy drive DF0:",IDC_DF0QENABLE,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,10,136,72,15 + PUSHBUTTON "Select disk image",IDC_DF0QQ,85,136,98,15 + RTEXT "Write-protected",IDC_STATIC,185,139,56,10,SS_CENTERIMAGE + CONTROL "",IDC_DF0WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,246,137,10,15 + PUSHBUTTON "Eject",IDC_EJECT0Q,261,136,30,15 + COMBOBOX IDC_DF0TEXTQ,9,154,282,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + CONTROL "Floppy drive DF1:",IDC_DF1QENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,172,71,15 + PUSHBUTTON "Select disk image",IDC_DF1QQ,85,172,98,15 + RTEXT "Write-protected",IDC_STATIC,185,175,55,10,SS_CENTERIMAGE + CONTROL "",IDC_DF1WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,246,173,10,15 + PUSHBUTTON "Eject",IDC_EJECT1Q,261,172,30,15 + COMBOBOX IDC_DF1TEXTQ,9,190,282,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Set configuration",IDC_QUICKSTART_SETCONFIG,9,219,72,15,NOT WS_VISIBLE + GROUPBOX "Mode",IDC_STATIC,190,211,107,27,BS_LEFT + CONTROL "Start in Quickstart mode",IDC_QUICKSTARTMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,197,222,94,10 +END + +IDD_FRONTEND DIALOGEX 0, 0, 420, 242 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + CONTROL "",IDC_FE_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,6,9,235,124 + GROUPBOX "",IDC_FE_INFO,249,140,160,95 + GROUPBOX "",IDC_FE_SCREENSHOT,249,7,160,128 +END + +IDD_PROGRESSBAR DIALOGEX 0, 0, 229, 58 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Processing..." +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + PUSHBUTTON "Cancel",IDCANCEL,88,40,50,14 + CONTROL "",IDC_PROGRESSBAR,"msctls_progress32",PBS_SMOOTH | WS_BORDER,7,19,215,14 + CTEXT "x",IDC_PROGRESSBAR_TEXT,23,5,187,10,SS_CENTERIMAGE | WS_TABSTOP +END + +IDD_STRINGBOX DIALOGEX 0, 0, 229, 58 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Enter text..." +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,48,39,50,14 + PUSHBUTTON "Cancel",IDCANCEL,151,39,50,14 + EDITTEXT IDC_STRINGBOXEDIT,7,17,214,14,ES_AUTOHSCROLL | ES_WANTRETURN +END + +IDD_DEBUGGER DIALOGEX 0, 0, 454, 368 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +EXSTYLE WS_EX_CONTROLPARENT +CAPTION "WinUAE Debugger" +FONT 8, "Courier New", 0, 0, 0x0 +BEGIN + EDITTEXT IDC_DBG_OUTPUT1,1,255,370,86,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | ES_WANTRETURN | WS_VSCROLL | NOT WS_TABSTOP + EDITTEXT IDC_DBG_OUTPUT2,1,79,370,262,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | ES_WANTRETURN | WS_VSCROLL | NOT WS_TABSTOP + LISTBOX IDC_DBG_MEM,1,92,370,249,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_DASM,1,92,370,249,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + EDITTEXT IDC_DBG_MEMINPUT,1,79,36,12,ES_AUTOHSCROLL | ES_WANTRETURN + EDITTEXT IDC_DBG_INPUT,1,342,354,12,ES_AUTOHSCROLL | ES_WANTRETURN + PUSHBUTTON "?",IDC_DBG_HELP,356,342,15,12,NOT WS_TABSTOP + PUSHBUTTON "Set to PC",IDC_DBG_MEMTOPC,38,79,45,12,NOT WS_TABSTOP + LISTBOX IDC_DBG_DREG,1,1,52,66,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_AREG,54,1,52,66,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_AMEM,106,1,231,66,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_CCR,338,1,57,42,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_SP_VBR,338,44,115,34,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_MMISC,396,1,57,42,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_PC,1,68,52,10,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_PREFETCH,54,68,283,10,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_FPREG,372,218,81,66,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_FPSR,372,285,81,34,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_MISCCPU,372,320,81,34,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + CONTROL "",IDC_DBG_STATUS,"msctls_statusbar32",0x103,0,355,453,12 + LISTBOX IDC_DBG_BRKPTS,1,79,370,262,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_VSCROLL + LISTBOX IDC_DBG_MCUSTOM,372,79,81,138,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_MISC,1,79,370,262,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_VSCROLL + LISTBOX IDC_DBG_CUSTOM,1,79,370,262,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_VSCROLL + CONTROL "Auto set",IDC_DBG_AUTOSET,"Button",BS_AUTOCHECKBOX,84,79,50,12 + LISTBOX IDC_DBG_DASM2,1,79,370,87,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT + LISTBOX IDC_DBG_MEM2,1,167,370,87,LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT +END + +IDD_DBGMEMINPUT DIALOGEX 0, 0, 150, 58 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Enter address..." +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,15,39,50,14 + PUSHBUTTON "Cancel",IDCANCEL,75,39,50,14 + EDITTEXT IDC_DBG_MEMINPUT2,20,12,100,14,ES_AUTOHSCROLL | ES_WANTRETURN + CTEXT "Enter address",IDC_DBG_ADDRINPUTTXT,20,1,100,10,SS_CENTERIMAGE | WS_TABSTOP +END + +IDD_EXPANSION DIALOGEX 0, 0, 300, 206 +STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + RTEXT "Memory: [] Graphics card memory. Required for RTG (Picasso96) emulation.",IDC_GFXCARDTEXT,25,44,53,10,SS_NOTIFY | SS_CENTERIMAGE + CONTROL "",IDC_P96MEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,88,40,60,20 + EDITTEXT IDC_P96RAM,152,43,34,12,ES_CENTER | ES_READONLY + GROUPBOX "RTG Graphics Card",IDC_STATIC,5,12,291,113 + CONTROL "Scale if smaller than display size setting",IDC_RTG_SCALE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,74,162,10 + CONTROL "Match host and RTG color depth if possible",IDC_RTG_MATCH_DEPTH, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,62,163,10 + COMBOBOX IDC_RTG_8BIT,211,29,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_RTG_16BIT,211,44,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_RTG_24BIT,211,59,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_RTG_32BIT,211,74,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "Always scale in windowed mode",IDC_RTG_SCALE_ALLOW, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,86,162,10 + COMBOBOX IDC_RTG_SCALE_ASPECTRATIO,211,101,68,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + RTEXT "Aspect ratio:",IDC_STATIC,153,102,52,10,SS_CENTERIMAGE + RTEXT "Refresh rate:",IDC_STATIC,22,103,51,10,SS_CENTERIMAGE + COMBOBOX IDC_RTG_VBLANKRATE,77,101,68,150,CBS_DROPDOWN | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "bsdsocket.library [] bsdsocket network library emulation.",IDC_SOCKETS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,148,120,10 + CONTROL "uaenet.device [] Sana 2 compatible network device emulation. WinPcap required.",IDC_SANA2, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,160,77,10 + CONTROL "A2065 Z2 [] A2065 Ethernet Zorro II card emulation. WinPcap required.",IDC_A2065, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,233,160,57,10 + GROUPBOX "Network",IDC_STATIC,126,130,169,66 + COMBOBOX IDC_NETDEVICE,132,176,156,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "uaescsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,160,102,10 + CONTROL "Catweasel Z2 emulation [] Catweasel MK2 Zorro II card emulation. Physical Windows compatible Catweasel card and drivers required.",IDC_CATWEASEL, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,148,101,10 + GROUPBOX "Miscellaneous Expansions",IDC_STATIC,5,130,117,66 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 2,0,2,0 + PRODUCTVERSION 2,0,2,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "FileDescription", "WinUAE" + VALUE "FileVersion", "2.0.2" + VALUE "InternalName", "WinUAE" + VALUE "LegalCopyright", "© 1996-2010 under the GNU Public License (GPL)" + VALUE "OriginalFilename", "WinUAE.exe" + VALUE "ProductName", "WinUAE" + VALUE "ProductVersion", "2.0.2" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_MYHAND CURSOR "H_arrow.cur" + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDM_SYSTRAY MENU +BEGIN + POPUP "Menu" + BEGIN + MENUITEM "Configuration", ID_ST_CONFIGURATION + POPUP "Floppy drives" + BEGIN + MENUITEM "Eject all drives", ID_ST_EJECTALL + MENUITEM "DF0:", ID_ST_DF0 + MENUITEM "DF1:", ID_ST_DF1 + MENUITEM "DF2:", ID_ST_DF2 + MENUITEM "DF3:", ID_ST_DF3 + END + MENUITEM "Reset", ID_ST_RESET + MENUITEM "Help", ID_ST_HELP + MENUITEM "Quit WinUAE", ID_ST_QUIT + END +END + +IDM_DBGCONTEXTMENU MENU +BEGIN + POPUP "Inactive" + BEGIN + POPUP "Copy" + BEGIN + MENUITEM "Copy line", ID_DBG_COPYLBLINE + MENUITEM "Copy all", ID_DBG_COPYLB + END + END + POPUP "Memory" + BEGIN + POPUP "Copy" + BEGIN + MENUITEM "Copy line", ID_DBG_COPYLBLINE + MENUITEM "Copy all", ID_DBG_COPYLB + END + POPUP "Set top address" + BEGIN + MENUITEM "Set to A0", ID_DBG_SETTOA0 + MENUITEM "Set to A1", ID_DBG_SETTOA1 + MENUITEM "Set to A2", ID_DBG_SETTOA2 + MENUITEM "Set to A3", ID_DBG_SETTOA3 + MENUITEM "Set to A4", ID_DBG_SETTOA4 + MENUITEM "Set to A5", ID_DBG_SETTOA5 + MENUITEM "Set to A6", ID_DBG_SETTOA6 + MENUITEM "Set to A7", ID_DBG_SETTOA7 + MENUITEM "Enter address", ID_DBG_ENTERADDR + END + END + POPUP "Disassembly" + BEGIN + POPUP "Copy" + BEGIN + MENUITEM "Copy line", ID_DBG_COPYLBLINE + MENUITEM "Copy all", ID_DBG_COPYLB + END + POPUP "Breakpoints" + BEGIN + MENUITEM "Toggle breakpoint", ID_DBG_TOGGLEBP + MENUITEM "Clear all breakpoints", ID_DBG_DELETEBPS + END + POPUP "Set top address" + BEGIN + MENUITEM "Set to PC", ID_DBG_SETTOPC + MENUITEM "Enter address", ID_DBG_ENTERADDR + END + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// WAVE +// + +IDR_DRIVE_STARTUP_A500_1 WAVE "drive_startup.wav" +IDR_DRIVE_CLICK_A500_1 WAVE "drive_click.wav" +IDR_DRIVE_SPIN_A500_1 WAVE "drive_spin.wav" +IDR_DRIVE_SNATCH_A500_1 WAVE "drive_snatch.wav" +IDR_DRIVE_SPINND_A500_1 WAVE "drive_spinnd.wav" + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_XARCADE BITMAP "xarcade-winuae.bmp" +IDB_LCD160X43 BITMAP "lcd.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_FILTER, DIALOG + BEGIN + BOTTOMMARGIN, 237 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_KICKSTART "ROM" + IDS_DISK "Disk swapper" + IDS_DISPLAY "Display" + IDS_HARDDISK "Hard drives" + IDS_FLOPPY "Floppy drives" + IDS_ABOUT "About" + IDS_LOADSAVE "Configurations" + IDS_AVIOUTPUT "Output" + IDS_IOPORTS "IO ports" + IDS_MISC1 "Miscellaneous" + IDS_MEMORY "RAM" + IDS_CPU "CPU and FPU" + IDS_CHIPSET "Chipset" + IDS_INPUT "Input" + IDS_FILTER "Filter" +END + +STRINGTABLE +BEGIN + IDS_MISC2 "Pri. & Extensions" + IDS_PATHS "Paths" + IDS_QUICKSTART "Quickstart" + IDS_FRONTEND "Frontend" + IDS_CHIPSET2 "Adv. Chipset" + IDS_GAMEPORTS "Game ports" + IDS_EXPANSION "Expansions" +END + +STRINGTABLE +BEGIN + IDS_EXTTEXT "Floppy disk image files" + IDS_EXTACTUAL "ADF" + IDS_SOUND "Sound" + IDS_CDROM "CD-ROM" + IDS_FRAMERATE "Every %1Frame" + IDS_SECOND "second " + IDS_THIRD "third " + IDS_FOURTH "fourth " + IDS_FIFTH "fifth " + IDS_SIXTH "sixth " + IDS_SEVENTH "seventh " + IDS_EIGHTH "eighth " +END + +STRINGTABLE +BEGIN + IDS_NINTH "ninth " + IDS_TENTH "tenth " + IDS_SELECTADF "Select a floppy disk image file..." + IDS_ADF "Floppy disk image files" + IDS_CHOOSEBLANK "Choose a blank floppy disk image file..." + IDS_SELECTHDF "Select a hard disk image file..." + IDS_HDF "Hard disk image files" + IDS_SELECTUAE "Select a WinUAE configuration file..." + IDS_UAE "WinUAE configuration files" + IDS_SELECTROM "Select a system ROM file..." + IDS_ROM "System ROM files" + IDS_SELECTKEY "Select a system ROM key file..." + IDS_KEY "System ROM key files" + IDS_SELECTINFO "Select information for your configuration..." + IDS_NONE "none" + IDS_VOLUME "Volume" +END + +STRINGTABLE +BEGIN + IDS_SELECTFILESYSROOT "Please select the root directory of the file system..." + IDS_DEFAULTMIDIOUT "Default MIDI-Out Device" + IDS_CONTRIBUTORS1 "Bernd Schmidt - The Grand-Master\nSam Jordan - Custom-chip, floppy-DMA, etc.\nMathias Ortmann - Original WinUAE Main Guy, BSD Socket support\nBrian King - Picasso96 Support, Integrated GUI for WinUAE, previous WinUAE Main Guy\nToni Wilen - Core updates, WinUAE Main Guy\nGustavo Goedert/Peter Remmers/Michael Sontheimer/Tomi Hakala/Tim Gunn/Nemo Pohle - DOS Port Stuff\nSamuel Devulder/Olaf Barthel/Sam Jordan - Amiga Ports\nKrister Bergman - XFree86 and OS/2 Port\nA. Blanchard/Ernesto Corvi - MacOS Port\nChristian Bauer - BeOS Port\nIan Stephenson - NextStep Port\nPeter Teichmann - Acorn/RiscOS Port\nStefan Reinauer - ZorroII/III AutoConfig, Serial Support\nChristian Schmitt/Chris Hames - Serial Support\nHerman ten Brugge - 68020/68881 Emulation Code\nTauno Taipaleenmaki - Various UAE-Control/UAE-Library Support\nBrett Eden/Tim Gunn/Paolo Besser/Nemo Pohle - Various Docs and Web-Sites\nGeorg Veichtlbauer - Help File coordinator, German GUI\nFulvio Leonardi - Italian translator for WinUAE\n" + IDS_CONTRIBUTORS2 "Bill Panagouleas - Hardware support\nSpecial thanks to Alexander Kneer and Tobias Abt (The Picasso96 Team)\nSteven Weiser - Postscript printing emulation idea and testing.\nPéter Tóth /Balázs Rátkai/Iván Herczeg/András Arató - Hungarian translation.\nKarsten Bock, Gavin Fance, Dirk Trowe, Christoph Meier and Christian Schindler - Freezer cartridge hardware support.\nMikko Nieminen - Demo compatibility testing.\nArabuusimiehet - [This information is on a need-to-know basis]" + IDS_INVALIDPRTPORT "The printer you have in this configuration is not valid on this machine.\n" + IDS_RESTOREUSS "Restore a WinUAE snapshot file" + IDS_USS "WinUAE snapshot files" + IDS_WRONGOSVERSION "WinUAE is no longer supported on Windows NT. Please upgrade to either Windows 2000 or Windows XP or a later version." + IDS_SELECTFLASH "Select a flash or battery-backed RAM file..." + IDS_FLASH "WinUAE flash or battery-backed RAM file" + IDS_INPUTHOSTWIDGET "Input source" + IDS_INPUTAMIGAEVENT "Input target" + IDS_INPUTAUTOFIRE "Autofire" + IDS_SAVEUSS "Save a WinUAE snapshot file" + IDS_MIDIOVERFLOW "Sysexbuffer overflow. Should not happen. Please report this to\nberndroesch1@compuserve.de" +END + +STRINGTABLE +BEGIN + IDS_PATH "Path" + IDS_RW "R/W" + IDS_SECTORS "Sectors" + IDS_SURFACES "Surfaces" + IDS_RESERVED "Reserved" + IDS_BLOCKSIZE "Block size" + IDS_NAME "Name" + IDS_DESCRIPTION "Description" + IDS_COULDNOTLOADCONFIG "Could not load the selected configuration!\n" + IDS_NOHELP "Online help is disabled because the HTML Help functionality is not installed on this system. HTML Help is available from http://www.microsoft.com/downloads/.\n" + IDS_MUSTSELECTCONFIG "You must select a configuration or enter a name before selecting Load...\n" + IDS_INVALIDCOMPORT "The serial port you have in this configuration is not valid on this machine.\n" +END + +STRINGTABLE +BEGIN + IDS_HFDSIZE "Size" + IDS_DEVICE "Device" + IDS_BOOTPRI "BootPri" + IDS_FLOPPY_COMPATIBLE " (compatible)" + IDS_FLOPPY_TURBO "Turbo" + IDS_YES "yes" + IDS_NO "no" + IDS_PRI_ABOVENORMAL "Above Normal" + IDS_PRI_NORMAL "Normal" + IDS_PRI_BELOWNORMAL "Below Normal" + IDS_PRI_LOW "Low" + 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)" +END + +STRINGTABLE +BEGIN + IDS_SOUND_STEREO2 "Cloned Stereo (4 Channels)" + IDS_INPUT_CUSTOMEVENT "" + IDS_DEFAULT_NEWWINUAE "WinUAE default (new)" + IDS_SOUND_CLONED51 "Cloned Stereo (5.1)" + IDS_SOUND_51 "5.1 Channels" + IDS_AUTOMATIC "Automatic" + IDS_ALL "All" + IDS_INPUTTOGGLE "Toggle" + IDS_NETDISCONNECTED "Cable disconnected" +END + +STRINGTABLE +BEGIN + IDS_UNSUPPORTEDPIXELFORMAT + "Error: unsupported pixel format. Please use a different screen mode.\n" + IDS_MUSTENTERNAME "You must select a configuration or enter a name before selecting Save...\n" + IDS_MUSTSELECTCONFIGFORDELETE + "You must select a configuration or enter a name before selecting Delete...\n" + IDS_DELETECONFIGCONFIRMATION + "Are you sure you want to Delete this configuration?\n" + IDS_DELETECONFIGTITLE "Confirm Delete" + IDS_MUSTSELECTPATH "You must select a path!" + IDS_SETTINGSERROR "Settings error" + IDS_MUSTSELECTNAME "You must select a name for the volume!" + IDS_MUSTSELECTFILE "You must select a file!" + IDS_FAILEDHARDFILECREATION "Failed to create hard disk image file..." + IDS_CREATIONERROR "Creation error" + IDS_ERRORTITLE "WinUAE message" +END + +STRINGTABLE +BEGIN + IDS_INP "WinUAE Input Recording" + IDS_RESTOREINP "Playback a WinUAE input recording" + IDS_SAVEINP "Record a WinUAE input recording" + IDS_SCREEN_WINDOWED "Windowed" + IDS_SCREEN_FULLSCREEN "Fullscreen" + IDS_SCREEN_FULLWINDOW "Full-window" + IDS_SCREEN_VSYNC "VSync" + IDS_SCREEN_VSYNC_AUTOSWITCH "AutoVSync" + IDS_SOUND_MONO "Mono" + IDS_SOUND_MIXED "Mixed" + IDS_SOUND_STEREO "Stereo" + IDS_DISABLED "Disabled" + IDS_SOUND_FILTER_OFF "Always off" + IDS_SOUND_FILTER_EMULATED "Emulated (A500)" +END + +STRINGTABLE +BEGIN + IDS_SOUND_FILTER_EMULATED_E "Emulated (A1200)" + IDS_INPUT_COMPATIBILITY "Compatibility mode" + IDS_INPUT_CUSTOM "Configuration #%d" + IDS_INPUT_COPY_DEFAULT "Default" + IDS_INPUT_COPY_CUSTOM "Config #%d" + IDS_3D_NO_FILTER "Point (%d-bit)" + IDS_3D_BILINEAR "Bilinear (%d-bit)" + IDS_VSYNC_DEFAULT "Default" + IDS_DRIVESOUND_NONE "No sound" + IDS_DRIVESOUND_DEFAULT_A500 "A500 (WinUAE built-in)" + IDS_AVIOUTPUT_NOCODEC "no codec selected" + IDS_DISK_IMAGENAME "Disk image" + IDS_DISK_DRIVENAME "Drive" + IDS_UNSUPPORTEDSCREENMODE + "The selected screen mode can't be displayed in a window, because %s\nSwitching to full-screen display." + IDS_UNSUPPORTEDSCREENMODE_1 + "the desktop is running in an unknown color mode." +END + +STRINGTABLE +BEGIN + IDS_UNSUPPORTEDSCREENMODE_2 + "the desktop is running in 8-bit color depth, which WinUAE can't use in windowed mode." + IDS_UNSUPPORTEDSCREENMODE_3 + "the desktop is too small for the specified window size." + IDS_UNSUPPORTEDSCREENMODE_4 + "you selected an RTG (Picasso96) display with unsupported color depth." + IDS_FLOPPYTYPE35DD "3.5"" DD" + IDS_FLOPPYTYPE35HD "3.5"" HD" + IDS_FLOPPYTYPE525SD "5.25"" SD" + IDS_FLOPPYTYPEDISABLED "Disabled" + IDS_STMENUNOFLOPPY "No floppy disk inserted" + IDS_TREEVIEW_HARDWARE "Hardware" + IDS_TREEVIEW_HOST "Host" + IDS_TREEVIEW_MISC "Miscellaneous" + IDS_TREEVIEW_SETTINGS "Settings" + IDS_WINUAETITLE_MMB "[Mouse active - press ALT+TAB or middle mouse button to cancel]" + IDS_WINUAETITLE_NORMAL "[Mouse active - press ALT+TAB to cancel]" + IDS_STARTEMULATION "Start" + IDS_TREEVIEW_ABOUT "About" +END + +STRINGTABLE +BEGIN + IDS_NOHARDDRIVES "No hard disks detected that were either empty or RDB-partitioned." + IDS_DEFAULT_HOST "Default Configuration" + IDS_SOUND_4CHANNEL "4 Channels" + IDS_HF_FS_CUSTOM "Custom" + IDS_SELECTFS "Select file system handler (FastFileSystem, SmartFilesystem, etc.)" + IDS_KEYJOY "Keyboard Layout A (Numeric keypad, 0 and 5 = Fire)\nKeyboard Layout B (Cursor keys, Right CTRL and ALT = Fire)\nKeyboard Layout C (W=Up S=Down A=Left D=Right, Left ALT = Fire)\nX-Arcade (Left)\nX-Arcade (Right)" + IDS_STATEFILE_UNCOMPRESSED "Uncompressed" + IDS_STATEFILE_RAMDUMP "RAM dump" + IDS_STATEFILE_WAVE "Wave audio dump" + IDS_SOUND_SWAP_PAULA "Paula only" + IDS_SOUND_SWAP_AHI "AHI only" + IDS_SOUND_SWAP_BOTH "Both" + IDS_SOUND_FILTER_ON_AGA "Always on (A500)" + IDS_SOUND_FILTER_ON_A500 "Always on (A1200)" + IDS_DRIVESOUND_PC_FLOPPY "PC floppy drive %c" + IDS_FLOPPYTYPE35DDESCOM "3.5"" ESCOM" +END + +STRINGTABLE +BEGIN + IDS_NUMSG_NEEDEXT2 "The software uses a non-standard floppy disk format. You may need to use a custom floppy disk image file instead of a standard one. This message will not appear again." + IDS_NUMSG_NOROMKEY "Could not find system ROM key file." + IDS_NUMSG_KSROMCRCERROR "System ROM checksum incorrect. The system ROM image file may be corrupt." + IDS_NUMSG_KSROMREADERROR "Error while reading system ROM." +END + +STRINGTABLE +BEGIN + IDS_NUMSG_NOEXTROM "No extended ROM found." + IDS_NUMSG_MODRIP_NOTFOUND "No music modules or packed data found." + IDS_NUMSG_MODRIP_FINISHED "Scan finished." + IDS_NUMSG_MODRIP_SAVE "Module/packed data found\n%s\nStart address %08.8X, Size %d bytes\nWould you like to save it?" + IDS_NUMSG_KS68020 "The selected system ROM requires a 68020 with 32-bit addressing or 68030 or higher CPU." + IDS_NUMSG_ROMNEED "One of the following system ROMs is required:\n\n%s\n\nCheck the System ROM path in the Paths panel and click Rescan ROMs." + IDS_NUMSG_STATEHD "WARNING: Current configuration is not fully compatible with state saves.\nThis message will not appear again." + IDS_NUMSG_NOCAPS "Selected disk image needs the SPS plugin\nwhich is available from\nhttp//www.softpres.org/" + IDS_NUMSG_OLDCAPS "You need an updated SPS plugin\nwhich is available from\nhttp//www.softpres.org/" + IDS_IMGCHK_BOOTBLOCKCRCERROR + "The selected floppy disk image is not bootable (boot block checksum error)" + IDS_IMGCHK_BOOTBLOCKNO "The selected floppy disk image is not bootable (no boot block)" + IDS_IMGCHK_DAMAGED "The selected floppy disk image is damaged or unformatted" + IDS_IMGCHK_KS2 "The selected floppy disk image requires a 2.04 or later system ROM.\nThe configuration has been updated." + IDS_IMGCHK_KS3 "The selected floppy disk image requires a 3.0 or later system ROM.\nThe configuration has been updated." + IDS_ROMSCANEND "Scan of ROMs finished" +END + +STRINGTABLE +BEGIN + IDS_ROM_AVAILABLE "available" + IDS_ROM_UNAVAILABLE "unavailable" + IDS_NUMSG_KS68EC020 "The selected system ROM requires a 68020 with 24-bit addressing or higher CPU." + IDS_ROMSCANNOROMS "No supported system ROMs detected." + IDS_NUMSG_KICKREP "You need to have a floppy disk (image file) in DF0: to use the system ROM replacement." + IDS_NUMSG_KICKREPNO "The floppy disk (image file) in DF0: is not compatible with the system ROM replacement functionality." + IDS_NUMSG_NOROM "Could not load system ROM, trying system ROM replacement." + IDS_HDCLONE_OK "Hard drive image file created succesfully." + IDS_HDCLONE_FAIL "Hard drive image file creation failed.\nError code %d:%d." + IDS_NUMSG_KS68030 "The selected system ROM requires a 68030 CPU." + IDS_NUMSG_EXPROMNEED "One of the following expansion boot ROMs is required:\n\n%s\n\nCheck the System ROM path in the Paths panel and click Rescan ROMs." + IDS_SB_FAVORITENAME "Enter name..." + IDS_SB_CUSTOMEVENT "Enter custom event string.." +END + +STRINGTABLE +BEGIN + IDS_QS_MODELS "A500\nA500+\nA600\nA1000\nA1200\nA3000\nA4000\nCD32\nCDTV\nArcadia Multi Select system\nExpanded WinUAE example configuration" + IDS_QS_MODEL_A500 "1.3 ROM, OCS, 512 KB Chip + 512 KB Slow RAM (most common)\nThis configuration is capable of running most games and demos produced for first-generation hardware. Only few exceptions need a different configuration (e.g. the oldest games tend to be incompatible with this configuration).\n1.3 ROM, ECS Agnus, 512 KB Chip RAM + 512 KB Slow RAM\nLater hardware revision of the A500. Nearly 100% compatible with the previous configuration.\n1.3 ROM, ECS Agnus, 1 MB Chip RAM\nFew newer games and demos require this configuration.\n1.3 ROM, OCS Agnus, 512 KB Chip RAM\nVery old (e.g. pre-1988) games and demos may require this configuration.\n1.2 ROM, OCS Agnus, 512 KB Chip RAM\nAs available for the A1000, and installed on the first A500 and A2000 series. Some very old programs only work correctly with this configuration. Note: This system ROM version can only boot from floppy disk (no hard disk boot support).\n1.2 ROM, OCS Agnus, 512 KB Chip RAM + 512 KB Slow RAM\nThis configuration adds expansion memory to the first A500 produced. Try this if your game does not work with newer configurations, but works with the previous one. It could add some features to the game, including faster loading times. Note: This system ROM version can only boot from floppy disk (no hard disk boot support)." + IDS_QS_MODEL_A500P "Basic non-expanded configuration\nThe A500+ adds an ECS Agnus chip, 1 MB of Chip RAM and a 2.0 ROM to the A500. Many A500 games and demos don't work properly on an A500+.\n2 MB Chip RAM expanded configuration\n\n4 MB Fast RAM expanded configuration\n" + IDS_QS_MODEL_A600 "Basic non-expanded configuration\nThe A600 is smaller than the A500+ and has an updated 2.0 ROM.\n2 MB Chip RAM expanded configuration\n\n4 MB Fast RAM expanded configuration\n" + IDS_QS_MODEL_A1000 "512 KB Chip RAM\nThe A1000 was the first model produced, with a configuration equivalent to that of an A500 with OCS chipset. You normally don't need to use this configuration, unless you are nostalgic and would like to hear the short A1000 boot tune\n""ICS"" Denise without EHB support\nVery first A1000 models had Denise without EHB capability.\n256 KB Chip RAM\n Unexpanded A1000. All later A1000 models were sold with a 256 KB RAM expansion built-in." + IDS_QS_MODEL_A1200 "Basic non-expanded configuration\nUse this configuration to run most AGA demos and games\n4 MB Fast RAM expanded configuration\nSome newer AGA games and demos need an expanded A1200 to run." + IDS_QS_MODEL_CD32 "CD32\nThe CD32 was one the first 32-bit consoles on the market. It is basically an A1200 with a built-in CD-ROM drive. Insert your CD32 or CDTV CD-ROM into a free CD-ROM drive before starting the emulation.\nCD32 + MPEG Full Motion Video Cartridge (not emulated yet)\n" + IDS_QS_MODEL_CDTV "CDTV\nThe CDTV was the first model with a built-in CD-ROM drive. Looking like a black CD player, it featured a configuration equivalent to that of an A500 with 1 MB RAM and an ECS chipset.\nFloppy drive and 64KB SRAM card expanded CDTV\n" +END + +STRINGTABLE +BEGIN + IDS_QS_MODEL_UAE "High-end expanded configuration" + IDS_QS_MODEL_ARCADIA "Arcadia\nArcadia Multi Select system is arcade platform developed by Arcadia and Mastertronic. It is based on an A500 mainboard with ROM cage attached to expansion port. Arcadia ROM files go to ""Cartridge ROM File"" in ROM-panel." + IDS_QS_MODEL_A3000 "1.4 ROM, 2MB Chip + 8MB Fast\n\n2.04 ROM, 2MB Chip + 8MB Fast\n\n3.1 ROM, 2MB Chip + 8MB Fast\n" + IDS_QS_MODEL_A4000 "68030, 3.1 ROM, 2MB Chip + 8MB Fast\n\n68040, 3.1 ROM, 2MB Chip + 8MB Fast\n" + IDS_QS_MODEL_A4000T "A4000T (test)\nA4000T" +END + +STRINGTABLE +BEGIN + IDS_FLOPPYTYPE35DDPC "3.5"" DD (PC)" + IDS_FLOPPYTYPE35HDPC "3.5"" HD (PC)" + IDS_JOYMODE_DEFAULT "Default" + IDS_JOYMODE_MOUSE "Mouse" + IDS_JOYMODE_JOYSTICK "Joystick" + IDS_JOYMODE_JOYSTICKANALOG "Analog joystick" + IDS_JOYMODE_LIGHTPEN "Light pen" + IDS_JOYMODE_MOUSE_CDTV "CDTV remote mouse" + IDS_JOYMODE_JOYSTICK_CD32 "CD32 pad" + IDS_TABLET_BOTH_CURSORS "Show both cursors" + IDS_TABLET_NATIVE_CURSOR "Show native cursor only" + IDS_TABLET_HOST_CURSOR "Show host cursor only" + IDS_AUTOSCALE_DISABLED "Disabled" + IDS_AUTOSCALE_SCALING "Automatic scaling" + IDS_AUTOSCALE_RESIZE "Automatic resize" + IDS_PRINTER_ASCII "ASCII-Only" +END + +STRINGTABLE +BEGIN + IDS_PRINTER_EPSON9 "Epson Matrix Printer Emulation, 9pin" + IDS_PRINTER_POSTSCRIPT_DETECTION "PostScript (Passthrough)" + IDS_PRINTER_POSTSCRIPT_EMULATION + "PostScript (Emulation, GhostScript required)" + IDS_PRINTER_PASSTHROUGH "Passthrough" + IDS_RES_LORES "Lores" + IDS_RES_HIRES "Hires (normal)" + IDS_RES_SUPERHIRES "SuperHires" + IDS_PRINTER_EPSON48 "Epson Matrix Printer Emulation, 48pin" +END + +#endif // English (Neutral) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// Finnish resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FIN) +#ifdef _WIN32 +LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // Finnish resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/od-win32/resources/winuae_minimal.rc b/od-win32/resources/winuae_minimal.rc index e03b2ef7..e5fa5dbb 100644 --- a/od-win32/resources/winuae_minimal.rc +++ b/od-win32/resources/winuae_minimal.rc @@ -663,7 +663,7 @@ BEGIN CONTROL "Blitter Busy Bug",IDC_CS_BLITTERBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,159,80,10 END -IDD_AVIOUTPUT DIALOGEX 0, 0, 288, 203 +IDD_AVIOUTPUT DIALOGEX 0, 0, 288, 217 STYLE DS_LOCALEDIT | DS_SETFONT | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN @@ -675,23 +675,23 @@ BEGIN CONTROL "Video",IDC_AVIOUTPUT_VIDEO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,15,50,39,14 CONTROL "",IDC_AVIOUTPUT_VIDEO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,59,51,209,13 CONTROL "Disable frame rate limit",IDC_AVIOUTPUT_FRAMELIMITER, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,71,158,10 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,71,122,10 CONTROL "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,103,108,14 - CONTROL "PAL",IDC_AVIOUTPUT_PAL,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,131,103,66,14 - CONTROL "NTSC",IDC_AVIOUTPUT_NTSC,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,204,103,66,14 - CONTROL "Slider1",IDC_AVIOUTPUT_FPS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_ENABLESELRANGE | WS_TABSTOP,143,74,87,11 - LTEXT "fps",IDC_AVIOUTPUT_FPS_STATIC,237,74,19,8 PUSHBUTTON "Save screenshot",IDC_SCREENSHOT,16,141,77,14 - GROUPBOX "Ripper",IDC_STATIC,5,127,274,38 - PUSHBUTTON "Pro Wizard 1.62",IDC_PROWIZARD,104,141,77,14,WS_DISABLED - CONTROL "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,141,77,14 - GROUPBOX "Input Recorder",IDC_STATIC,5,166,274,33 - CONTROL "Record",IDC_INPREC_RECORD,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,178,77,14 - CONTROL "Playback",IDC_INPREC_PLAY,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,16,178,77,14 - CONTROL "Alt. playback mode",IDC_INPREC_PLAYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,103,180,78,10 + GROUPBOX "Ripper",IDC_STATIC,5,127,274,49 + PUSHBUTTON "Pro Wizard 1.62",IDC_PROWIZARD,192,141,77,14,WS_DISABLED + CONTROL "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,159,77,14 + GROUPBOX "Input Recorder",IDC_STATIC,5,178,274,33 + CONTROL "Record",IDC_INPREC_RECORD,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,192,190,77,14 + CONTROL "Playback",IDC_INPREC_PLAY,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,16,190,77,14 + CONTROL "Alt. playback mode",IDC_INPREC_PLAYMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,103,192,78,10 CONTROL "Disable sound output",IDC_AVIOUTPUT_NOSOUNDOUTPUT, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,88,123,10 CONTROL "Disable sound sync",IDC_AVIOUTPUT_NOSOUNDSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,88,120,10 + CONTROL "Capture before filtering",IDC_AVIOUTPUT_ORIGINALSIZE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,147,71,120,10 + CONTROL "Take screenshot before filtering",IDC_SCREENSHOT_ORIGINALSIZE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,160,162,10 END IDD_INPUT DIALOGEX 0, 0, 300, 242 @@ -1007,8 +1007,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,0,0,0 - PRODUCTVERSION 2,0,0,0 + FILEVERSION 2,0,1,0 + PRODUCTVERSION 2,0,1,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -1024,12 +1024,12 @@ BEGIN BLOCK "040904b0" BEGIN VALUE "FileDescription", "WinUAE" - VALUE "FileVersion", "2.0.0" + VALUE "FileVersion", "2.0.1" VALUE "InternalName", "WinUAE" VALUE "LegalCopyright", "© 1996-2009 under the GNU Public License (GPL)" VALUE "OriginalFilename", "WinUAE.exe" VALUE "ProductName", "WinUAE" - VALUE "ProductVersion", "2.0.0" + VALUE "ProductVersion", "2.0.1" END END BLOCK "VarFileInfo" @@ -1120,6 +1120,7 @@ BEGIN END END + ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO @@ -1212,7 +1213,7 @@ BEGIN IDS_SELECTFILESYSROOT "Please select the root directory of the file system..." IDS_DEFAULTMIDIOUT "Default MIDI-Out Device" IDS_CONTRIBUTORS1 "Bernd Schmidt - The Grand-Master\nSam Jordan - Custom-chip, floppy-DMA, etc.\nMathias Ortmann - Original WinUAE Main Guy, BSD Socket support\nBrian King - Picasso96 Support, Integrated GUI for WinUAE, previous WinUAE Main Guy\nToni Wilen - Core updates, WinUAE Main Guy\nGustavo Goedert/Peter Remmers/Michael Sontheimer/Tomi Hakala/Tim Gunn/Nemo Pohle - DOS Port Stuff\nSamuel Devulder/Olaf Barthel/Sam Jordan - Amiga Ports\nKrister Bergman - XFree86 and OS/2 Port\nA. Blanchard/Ernesto Corvi - MacOS Port\nChristian Bauer - BeOS Port\nIan Stephenson - NextStep Port\nPeter Teichmann - Acorn/RiscOS Port\nStefan Reinauer - ZorroII/III AutoConfig, Serial Support\nChristian Schmitt/Chris Hames - Serial Support\nHerman ten Brugge - 68020/68881 Emulation Code\nTauno Taipaleenmaki - Various UAE-Control/UAE-Library Support\nBrett Eden/Tim Gunn/Paolo Besser/Nemo Pohle - Various Docs and Web-Sites\nGeorg Veichtlbauer - Help File coordinator, German GUI\nFulvio Leonardi - Italian translator for WinUAE\n" - IDS_CONTRIBUTORS2 "Bill Panagouleas - Hardware support\nSpecial thanks to Alexander Kneer and Tobias Abt (The Picasso96 Team)\nSteven Weiser - Postscript printing emulation idea and testing.\nPéter Tóth /Balázs Rátkai/Iván Herczeg/András Arató - Hungarian translation.\nKarsten Bock, Gavin Fance, Dirk Trowe, Christoph Meier and Christian Schindler - Freezer cartridge hardware support.\nMikko Nieminen - demo compatibility testing.\nArabuusimiehet - [This information is on a need-to-know basis]" + IDS_CONTRIBUTORS2 "Bill Panagouleas - Hardware support\nSpecial thanks to Alexander Kneer and Tobias Abt (The Picasso96 Team)\nSteven Weiser - Postscript printing emulation idea and testing.\nPéter Tóth /Balázs Rátkai/Iván Herczeg/András Arató - Hungarian translation.\nKarsten Bock, Gavin Fance, Dirk Trowe, Christoph Meier and Christian Schindler - Freezer cartridge hardware support.\nMikko Nieminen - Demo compatibility testing.\nArabuusimiehet - [This information is on a need-to-know basis]" IDS_INVALIDPRTPORT "The printer you have in this configuration is not valid on this machine.\n" IDS_RESTOREUSS "Restore a WinUAE snapshot file" IDS_USS "WinUAE snapshot files" @@ -1326,7 +1327,6 @@ BEGIN IDS_AVIOUTPUT_NOCODEC "no codec selected" IDS_DISK_IMAGENAME "Disk image" IDS_DISK_DRIVENAME "Drive" - IDS_AGA8BIT "AGA emulation requires a 16-bit or higher display depth.\nSwitching from 8-bit to 16-bit." IDS_UNSUPPORTEDSCREENMODE "The selected screen mode can't be displayed in a window, because %s\nSwitching to full-screen display." IDS_UNSUPPORTEDSCREENMODE_1 diff --git a/od-win32/unicode.c b/od-win32/unicode.c index a682fc32..b0fe5913 100644 --- a/od-win32/unicode.c +++ b/od-win32/unicode.c @@ -10,6 +10,7 @@ #define FS_TEST 0 static WCHAR aufstable[256]; +static UINT fscodepage; static void err (const char *func, const WCHAR *w, const char *c, UINT cp) { @@ -121,22 +122,26 @@ WCHAR *aucp (const char *s, UINT cp) WCHAR *au_copy (TCHAR *dst, int maxlen, const char *src) { + dst[0] = 0; MultiByteToWideChar (CP_ACP, 0, src, -1, dst, maxlen); return dst; } WCHAR *aucp_copy (TCHAR *dst, int maxlen, const char *src, UINT cp) { + dst[0] = 0; MultiByteToWideChar (cp, 0, src, -1, dst, maxlen); return dst; } char *ua_copy (char *dst, int maxlen, const TCHAR *src) { + dst[0] = 0; WideCharToMultiByte (CP_ACP, DWFLAGS, src, -1, dst, maxlen, 0, FALSE); return dst; } char *uacp_copy (char *dst, int maxlen, const TCHAR *src, UINT cp) { + dst[0] = 0; WideCharToMultiByte (cp, DWFLAGS, src, -1, dst, maxlen, 0, FALSE); return dst; } @@ -146,7 +151,7 @@ TCHAR *my_strdup_ansi (const char *src) return au (src); } -char *ua_fs (const WCHAR *s) +char *ua_fs (const WCHAR *s, int defchar) { char *d; int len, i; @@ -156,23 +161,30 @@ char *ua_fs (const WCHAR *s) if (s == NULL) return NULL; dc = FALSE; - len = WideCharToMultiByte (28605, DWFLAGS | WC_NO_BEST_FIT_CHARS, s, -1, NULL, 0, &def, &dc); + len = WideCharToMultiByte (fscodepage, DWFLAGS | WC_NO_BEST_FIT_CHARS, s, -1, NULL, 0, &def, &dc); if (!len) { err (__FUNCTION__, s, NULL, currprefs.win32_fscodepage); return strdup (""); } d = xmalloc (len + 1); dc = FALSE; - WideCharToMultiByte (28605, DWFLAGS | WC_NO_BEST_FIT_CHARS, s, -1, d, len, &def, &dc); + WideCharToMultiByte (fscodepage, DWFLAGS | WC_NO_BEST_FIT_CHARS, s, -1, d, len, &def, &dc); if (dc) { + def = 0; for (i = 0; i < len; i++) { if (d[i] == 0 || (d[i] < 32 || (d[i] >= 0x7f && d[i] <= 0x9f))) { WCHAR s2[2]; char d2[2]; s2[0] = s[i]; s2[1] = 0; - d2[0] = (char)s[i]; - WideCharToMultiByte (0, DWFLAGS, s2, -1, d2, 1, 0, FALSE); + if (defchar < 0) { + d2[0] = (char)s[i]; + def = 0; + } else { + def = (char)defchar; + d2[0] = (char)defchar; + } + WideCharToMultiByte (0, DWFLAGS, s2, -1, d2, 1, defchar >= 0 ? &def : NULL, defchar >= 0 ? &dc : NULL); d[i] = d2[0]; } } @@ -180,7 +192,7 @@ char *ua_fs (const WCHAR *s) return d; } -char *ua_fs_copy (char *dst, int maxlen, const TCHAR *src) +char *ua_fs_copy (char *dst, int maxlen, const TCHAR *src, int defchar) { int len, i; BOOL dc; @@ -189,16 +201,27 @@ char *ua_fs_copy (char *dst, int maxlen, const TCHAR *src) if (src == NULL) return NULL; dc = FALSE; - len = WideCharToMultiByte (28605, DWFLAGS | WC_NO_BEST_FIT_CHARS, src, -1, dst, maxlen, &def, &dc); + len = WideCharToMultiByte (fscodepage, DWFLAGS | WC_NO_BEST_FIT_CHARS, src, -1, dst, maxlen, &def, &dc); + if (!len) { + dst[0] = 0; + return dst; + } if (dc) { + def = 0; for (i = 0; i < len; i++) { if (dst[i] == 0) { WCHAR s2[2]; char d2[2]; s2[0] = src[i]; s2[1] = 0; - d2[0] = (char)src[i]; - WideCharToMultiByte (0, DWFLAGS, s2, -1, d2, 1, 0, FALSE); + if (defchar < 0) { + d2[0] = (char)src[i]; + def = 0; + } else { + def = (char)defchar; + d2[0] = (char)defchar; + } + WideCharToMultiByte (0, DWFLAGS | (defchar >= 0 ? WC_NO_BEST_FIT_CHARS : 0), s2, -1, d2, 1, defchar >= 0 ? &def : NULL, defchar >= 0 ? &dc : NULL); dst[i] = d2[0]; } } @@ -228,11 +251,37 @@ WCHAR *au_fs_copy (TCHAR *dst, int maxlen, const char *src) return dst; } +static void mbtwc (UINT cp, DWORD flags, LPCSTR src, int len, LPWSTR dst, int maxlen) +{ + DWORD err; + //write_log (L"CP=%08X F=%x %p %02X %02X %d %p %04X %04X %d", cp, flags, src, (unsigned char)src[0], (unsigned char)src[1], len, dst, dst[0], dst[1], maxlen); + err = MultiByteToWideChar (cp, flags, src, len, dst, maxlen); + //write_log (L"=%d %04X %04X\n", err, dst[0], dst[1]); + if (err) + return; + err = GetLastError (); + write_log (L"\nMBTWC %u:%d\n", cp, err); +#if 0 + if (cp != CP_ACP) { + cp = CP_ACP; + if (MultiByteToWideChar (cp, flags, src, len, dst, maxlen)) { + err = GetLastError (); + write_log (L"MBTWC2 %u:%d\n", cp, err); + } + } +#endif +} + void unicode_init (void) { + static UINT pages[] = { 28605, 28591, 1252, 0 }; int i; - write_log (L"Filesystem charset (ACP=%u):\n", GetACP ()); + for (i = 0; fscodepage = pages[i]; i++) { + if (MultiByteToWideChar (fscodepage, 0, " ", 1, NULL, 0)) + break; + } + write_log (L"Filesystem charset (ACP=%u,FSCP=%u):\n", GetACP (), fscodepage); for (i = 0; i < 256; i++) { TCHAR dst1[2], dst2[2]; char src[2]; @@ -244,8 +293,8 @@ void unicode_init (void) dst2[0] = 0; dst2[1] = 0; aufstable[i] = 0; - aucp_copy (dst1, 1, src, 0); - aucp_copy (dst2, 1, src, 28605); // iso-8859-15 + mbtwc (CP_ACP, 0, src, 1, dst1, 1); + mbtwc (fscodepage, 0, src, 1, dst2, 1);// iso-8859-15 if (dst2[0] != dst1[0]) write_log (L" %02X: %04X (%04X)", i, dst1[0], dst2[0]); else diff --git a/od-win32/win32.c b/od-win32/win32.c index 9b20d495..bd01fe3e 100644 --- a/od-win32/win32.c +++ b/od-win32/win32.c @@ -47,6 +47,7 @@ #include "sound.h" #include "uae.h" #include "memory.h" +#include "rommgr.h" #include "custom.h" #include "events.h" #include "newcpu.h" @@ -100,6 +101,7 @@ static SYSTEM_INFO SystemInfo; static int logging_started; static DWORD minidumpmode = MiniDumpNormal; static int doquit; +static int console_started; void *globalipc, *serialipc; int qpcdivisor = 0; @@ -1157,11 +1159,7 @@ static LRESULT CALLBACK AmigaWindowProc (HWND hWnd, UINT message, WPARAM wParam, case SC_SCREENSAVE: // Screensaver Trying To Start? case SC_MONITORPOWER: // Monitor Trying To Enter Powersave? - // SetThreadExecutionState (ES_CONTINUOUS | ES_DISPLAY_REQUIRED); handles this now -#if 0 - if (!manual_painting_needed && focus && currprefs.win32_powersavedisabled) - return 0; // Prevent From Happening -#endif + // SetThreadExecutionState handles this now break; default: @@ -3871,6 +3869,11 @@ static int parseargs (const TCHAR *arg, const TCHAR *np, const TCHAR *np2) return -1; } if (!_tcscmp (arg, L"-console")) { + console_started = 1; + return 1; + } + if (!_tcscmp (arg, L"-cli")) { + console_emulation = 1; return 1; } if (!_tcscmp (arg, L"-log")) { @@ -4875,8 +4878,8 @@ int PASCAL wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdL GetProcessAffinityMask (GetCurrentProcess (), &original_affinity, &sys_aff); thread = GetCurrentThread (); - fpucontrol = _controlfp (0, 0) & (_MCW_IC | _MCW_RC | _MCW_PC); //original_affinity = SetThreadAffinityMask(thread, 1); + fpucontrol = _controlfp (0, 0) & (_MCW_IC | _MCW_RC | _MCW_PC); #if 0 #define MSGFLT_ADD 1 @@ -4897,7 +4900,7 @@ int PASCAL wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdL WinMain2 (hInstance, hPrevInstance, lpCmdLine, nCmdShow); } __except(WIN32_ExceptionFilter (GetExceptionInformation (), GetExceptionCode ())) { } - //SetThreadAffinityMask(thread, original_affinity); + //SetThreadAffinityMask (thread, original_affinity); return FALSE; } diff --git a/od-win32/win32.h b/od-win32/win32.h index 34ceb21e..7da9678e 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -15,11 +15,11 @@ #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100) #define GETBDD(x) ((x) % 100) -#define WINUAEPUBLICBETA 0 +#define WINUAEPUBLICBETA 1 #define LANG_DLL 1 -#define WINUAEBETA L"" -#define WINUAEDATE MAKEBD(2009, 12, 23) +#define WINUAEBETA L"Beta 1" +#define WINUAEDATE MAKEBD(2010, 1, 2) #define WINUAEEXTRA L"" #define WINUAEREV L"" diff --git a/od-win32/win32_filesys.c b/od-win32/win32_filesys.c index 1725d5b0..2f9d5582 100644 --- a/od-win32/win32_filesys.c +++ b/od-win32/win32_filesys.c @@ -3,197 +3,201 @@ /* Determines if this drive-letter currently has a disk inserted */ int CheckRM (TCHAR *DriveName) { - TCHAR filename[MAX_DPATH]; - DWORD dwHold; - BOOL result = FALSE; - - _stprintf (filename, L"%s.", DriveName); - dwHold = GetFileAttributes (filename); - if(dwHold != 0xFFFFFFFF) - result = TRUE; - return result; + TCHAR filename[MAX_DPATH]; + DWORD dwHold; + BOOL result = FALSE; + + _stprintf (filename, L"%s.", DriveName); + dwHold = GetFileAttributes (filename); + if(dwHold != 0xFFFFFFFF) + result = TRUE; + return result; } /* This function makes sure the volume-name being requested is not already in use, or any of the following - illegal values: */ +illegal values: */ static TCHAR *illegal_volumenames[] = { L"SYS", L"DEVS", L"LIBS", L"FONTS", L"C", L"L", L"S" }; static int valid_volumename (struct uaedev_mount_info *mountinfo, TCHAR *volumename, int fullcheck) { - int i, result = 1, illegal_count = sizeof (illegal_volumenames) / sizeof(TCHAR*); - for (i = 0; i < illegal_count; i++) { - if(_tcscmp (volumename, illegal_volumenames[i]) == 0) { - result = 0; - break; + int i, result = 1, illegal_count = sizeof (illegal_volumenames) / sizeof(TCHAR*); + for (i = 0; i < illegal_count; i++) { + if(_tcscmp (volumename, illegal_volumenames[i]) == 0) { + result = 0; + break; + } } - } - /* if result is still good, we've passed the illegal names check, and must check for duplicates now */ - if(result && fullcheck) { - for (i = 0; i < MAX_FILESYSTEM_UNITS; i++) { - if (mountinfo->ui[i].open && mountinfo->ui[i].volname && _tcscmp (mountinfo->ui[i].volname, volumename) == 0) { - result = 0; - break; - } + /* if result is still good, we've passed the illegal names check, and must check for duplicates now */ + if(result && fullcheck) { + for (i = 0; i < MAX_FILESYSTEM_UNITS; i++) { + if (mountinfo->ui[i].open && mountinfo->ui[i].volname && _tcscmp (mountinfo->ui[i].volname, volumename) == 0) { + result = 0; + break; + } + } } - } - return result; + return result; } /* Returns 1 if an actual volume-name was found, 2 if no volume-name (so uses some defaults) */ int target_get_volume_name (struct uaedev_mount_info *mtinf, const TCHAR *volumepath, TCHAR *volumename, int size, int inserted, int fullcheck) { - int result = 2; - int drivetype; - - drivetype = GetDriveType (volumepath); - if (inserted) { - if (GetVolumeInformation (volumepath, volumename, size, NULL, NULL, NULL, NULL, 0) && - volumename[0] && - valid_volumename (mtinf, volumename, fullcheck)) { - // +++Bernd Roesch - if(!_tcscmp (volumename, L"AmigaOS35")) - _tcscpy (volumename, L"AmigaOS3.5"); - if(!_tcscmp (volumename, L"AmigaOS39")) - _tcscpy (volumename, L"AmigaOS3.9"); - // ---Bernd Roesch - if (_tcslen (volumename) > 0) - result = 1; + int result = 2; + int drivetype; + + drivetype = GetDriveType (volumepath); + if (inserted) { + if (GetVolumeInformation (volumepath, volumename, size, NULL, NULL, NULL, NULL, 0) && + volumename[0] && + valid_volumename (mtinf, volumename, fullcheck)) { + // +++Bernd Roesch + if(!_tcscmp (volumename, L"AmigaOS35")) + _tcscpy (volumename, L"AmigaOS3.5"); + if(!_tcscmp (volumename, L"AmigaOS39")) + _tcscpy (volumename, L"AmigaOS3.9"); + // ---Bernd Roesch + if (_tcslen (volumename) > 0) + result = 1; + } } - } - - if(result == 2) { - switch(drivetype) - { - case DRIVE_FIXED: - _stprintf (volumename, L"WinDH_%c", volumepath[0]); - break; - case DRIVE_CDROM: - _stprintf (volumename, L"WinCD_%c", volumepath[0]); - break; - case DRIVE_REMOVABLE: - _stprintf (volumename, L"WinRMV_%c", volumepath[0]); - break; - case DRIVE_REMOTE: - _stprintf (volumename, L"WinNET_%c", volumepath[0]); - break; - case DRIVE_RAMDISK: - _stprintf (volumename, L"WinRAM_%c", volumepath[0]); - break; - case DRIVE_UNKNOWN: - case DRIVE_NO_ROOT_DIR: - default: - result = 0; - break; + + if(result == 2) { + switch(drivetype) + { + case DRIVE_FIXED: + _stprintf (volumename, L"WinDH_%c", volumepath[0]); + break; + case DRIVE_CDROM: + _stprintf (volumename, L"WinCD_%c", volumepath[0]); + break; + case DRIVE_REMOVABLE: + _stprintf (volumename, L"WinRMV_%c", volumepath[0]); + break; + case DRIVE_REMOTE: + _stprintf (volumename, L"WinNET_%c", volumepath[0]); + break; + case DRIVE_RAMDISK: + _stprintf (volumename, L"WinRAM_%c", volumepath[0]); + break; + case DRIVE_UNKNOWN: + case DRIVE_NO_ROOT_DIR: + default: + result = 0; + break; + } } - } - return result; + return result; } static int getidfromhandle (HANDLE h) { - int drvnum = -1; - DWORD written, outsize; - VOLUME_DISK_EXTENTS *vde; - - outsize = sizeof (VOLUME_DISK_EXTENTS) + sizeof (DISK_EXTENT) * 32; - vde = xmalloc (outsize); - if (DeviceIoControl (h, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS, NULL, 0, vde, outsize, &written, NULL)) { - if (vde->NumberOfDiskExtents > 0) - drvnum = vde->Extents[0].DiskNumber; - } - xfree (vde); - return drvnum; + int drvnum = -1; + DWORD written, outsize; + VOLUME_DISK_EXTENTS *vde; + + outsize = sizeof (VOLUME_DISK_EXTENTS) + sizeof (DISK_EXTENT) * 32; + vde = xmalloc (outsize); + if (DeviceIoControl (h, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS, NULL, 0, vde, outsize, &written, NULL)) { + if (vde->NumberOfDiskExtents > 0) + drvnum = vde->Extents[0].DiskNumber; + } + xfree (vde); + return drvnum; } static int hfdcheck (TCHAR drive) { - HANDLE h; - TCHAR tmp[16]; - int disknum, i; - - _stprintf (tmp, L"\\\\.\\%c:", drive); - h = CreateFile (tmp, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - if (h == INVALID_HANDLE_VALUE) + HANDLE h; + TCHAR tmp[16]; + int disknum, i; + + _stprintf (tmp, L"\\\\.\\%c:", drive); + h = CreateFile (tmp, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (h == INVALID_HANDLE_VALUE) + return 0; + disknum = getidfromhandle (h); + CloseHandle (h); + for (i = 0; i < MAX_FILESYSTEM_UNITS; i++) { + struct hardfiledata *hfd = get_hardfile_data (i); + int reopen = 0; + if (!hfd || !(hfd->flags & HFD_FLAGS_REALDRIVE) || !hfd->handle_valid) + continue; + if (getidfromhandle (hfd->handle) == disknum) + return 1; + } return 0; - disknum = getidfromhandle (h); - CloseHandle (h); - for (i = 0; i < MAX_FILESYSTEM_UNITS; i++) { - struct hardfiledata *hfd = get_hardfile_data (i); - int reopen = 0; - if (!hfd || !(hfd->flags & HFD_FLAGS_REALDRIVE) || !hfd->handle_valid) - continue; - if (getidfromhandle (hfd->handle) == disknum) - return 1; - } - return 0; } static void filesys_addexternals (void) { - int drive, drivetype; - UINT errormode; - TCHAR volumename[MAX_DPATH] = L""; - TCHAR volumepath[16]; - DWORD dwDriveMask; - int drvnum = 0; - - errormode = SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); - dwDriveMask = GetLogicalDrives (); - dwDriveMask >>= 2; // Skip A and B drives... - - for(drive = 'C'; drive <= 'Z'; ++drive) { - _stprintf (volumepath, L"%c:\\", drive); - /* Is this drive-letter valid (it used to check for media in drive) */ - if(dwDriveMask & 1) { - TCHAR devname[MAX_DPATH]; - BOOL inserted = CheckRM (volumepath); /* Is there a disk inserted? */ - int nok = FALSE; - int rw = 1; - drivetype = GetDriveType (volumepath); - if (inserted && drivetype != DRIVE_NO_ROOT_DIR && drivetype != DRIVE_UNKNOWN) { - if (hfdcheck (drive)) { - write_log (L"Drive %c:\\ ignored, was configured as a harddrive\n", drive); - continue; - } - } - devname[0] = 0; - for (;;) { - if (drivetype == DRIVE_CDROM && currprefs.win32_automount_cddrives) { - _stprintf (devname, L"WinCD_%c", drive); - rw = 0; - break; - } - if (!inserted) { - nok = TRUE; - break; - } - if (drivetype == DRIVE_REMOTE && currprefs.win32_automount_netdrives) - break; - if (drivetype == DRIVE_FIXED && currprefs.win32_automount_drives) - break; - if (drivetype == DRIVE_REMOVABLE && currprefs.win32_automount_removabledrives) - break; - nok = TRUE; - break; - } - if (nok) - continue; - volumename[0] = 0; - if (inserted) { - target_get_volume_name (&mountinfo, volumepath, volumename, MAX_DPATH, inserted, 1); - if (!volumename[0]) - _stprintf (volumename, L"WinUNK_%c", drive); - } - if (drivetype == DRIVE_REMOTE) - _tcscat (volumepath, L"."); - else - _tcscat (volumepath, L".."); - //write_log (L"Drive type %d: '%s' '%s'\n", drivetype, volumepath, volumename); - add_filesys_unit (devname[0] ? devname : NULL, volumename, volumepath, !rw, 0, 0, 0, 0, -20 - drvnum, 0, 1, 0, 0, 0); - drvnum++; - } /* if drivemask */ - dwDriveMask >>= 1; - } - SetErrorMode (errormode); + int drive, drivetype; + UINT errormode; + TCHAR volumename[MAX_DPATH] = L""; + TCHAR volumepath[16]; + DWORD dwDriveMask; + int drvnum = 0; + + errormode = SetErrorMode (SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX); + dwDriveMask = GetLogicalDrives (); + dwDriveMask >>= 2; // Skip A and B drives... + + for(drive = 'C'; drive <= 'Z'; ++drive) { + _stprintf (volumepath, L"%c:\\", drive); + /* Is this drive-letter valid (it used to check for media in drive) */ + if(dwDriveMask & 1) { + TCHAR devname[MAX_DPATH]; + BOOL inserted = CheckRM (volumepath); /* Is there a disk inserted? */ + int nok = FALSE; + int rw = 1; + drivetype = GetDriveType (volumepath); + if (inserted && drivetype != DRIVE_NO_ROOT_DIR && drivetype != DRIVE_UNKNOWN) { + if (hfdcheck (drive)) { + write_log (L"Drive %c:\\ ignored, was configured as a harddrive\n", drive); + continue; + } + } + devname[0] = 0; + for (;;) { + if (drivetype == DRIVE_CDROM && currprefs.win32_automount_cddrives) { + _stprintf (devname, L"WinCD_%c", drive); + rw = 0; + break; + } + if (!inserted) { + nok = TRUE; + break; + } + if (drivetype == DRIVE_REMOTE && currprefs.win32_automount_netdrives) + break; + if (drivetype == DRIVE_FIXED && currprefs.win32_automount_drives) + break; + if (drivetype == DRIVE_REMOVABLE && currprefs.win32_automount_removabledrives) + break; + nok = TRUE; + break; + } + if (nok) + continue; + volumename[0] = 0; + if (inserted) { + target_get_volume_name (&mountinfo, volumepath, volumename, MAX_DPATH, inserted, 1); + if (!volumename[0]) + _stprintf (volumename, L"WinUNK_%c", drive); + } + if (drivetype == DRIVE_REMOTE) + _tcscat (volumepath, L"."); + else + _tcscat (volumepath, L".."); + if (currprefs.win32_automount_drives > 1) { + devname[0] = drive; + devname[1] = 0; + } + //write_log (L"Drive type %d: '%s' '%s'\n", drivetype, volumepath, volumename); + add_filesys_unit (devname[0] ? devname : NULL, volumename, volumepath, !rw, 0, 0, 0, 0, -20 - drvnum, 0, 1, 0, 0, 0); + drvnum++; + } /* if drivemask */ + dwDriveMask >>= 1; + } + SetErrorMode (errormode); } diff --git a/od-win32/win32gui.c b/od-win32/win32gui.c index 345e2ecd..ec179b69 100644 --- a/od-win32/win32gui.c +++ b/od-win32/win32gui.c @@ -37,6 +37,7 @@ #include "gui.h" #include "options.h" #include "memory.h" +#include "rommgr.h" #include "custom.h" #include "events.h" #include "newcpu.h" @@ -229,6 +230,11 @@ static BOOL GetFileDialog (OPENFILENAME *opn, const GUID *guid, int mode) COMDLG_FILTERSPEC *fs = NULL; int filtercnt = 0; + static const GUID fsdialogguid = { 0xe768b477, 0x3684, 0x4128, { 0x91, 0x55, 0x8c, 0x8f, 0xd9, 0x2d, 0x16, 0x7b } }; + + if (isfullscreen () > 0) + guid = &fsdialogguid; + hr = -1; ret = 0; pSHCreateItemFromParsingName = (SHCREATEITEMFROMPARSINGNAME)GetProcAddress ( @@ -369,22 +375,28 @@ static BOOL GetFileDialog (OPENFILENAME *opn, const GUID *guid, int mode) return ret; } -static BOOL GetOpenFileName_2 (OPENFILENAME *opn, const GUID *guid) +static BOOL GetOpenFileName_2 (HWND parent, OPENFILENAME *opn, const GUID *guid) { - return GetFileDialog (opn, guid, 0); + BOOL val; + val = GetFileDialog (opn, guid, 0); + return val; } -static BOOL GetSaveFileName_2 (OPENFILENAME *opn, const GUID *guid) +static BOOL GetSaveFileName_2 (HWND parent, OPENFILENAME *opn, const GUID *guid) { - return GetFileDialog (opn, guid, 1); + BOOL val; + val = GetFileDialog (opn, guid, 1); + return val; } int DirectorySelection (HWND hDlg, const GUID *guid, TCHAR *path) { + int val; OPENFILENAME ofn = { 0 }; ofn.hwndOwner = hDlg; ofn.lpstrFile = path; ofn.lpstrInitialDir = path; ofn.nMaxFile = MAX_DPATH; - return GetFileDialog (&ofn, NULL, -1); + val = GetFileDialog (&ofn, NULL, -1); + return val; } void write_disk_history (void) @@ -1495,6 +1507,48 @@ static void setfilter (int num, int *filter, TCHAR *fname) regsetint (NULL, fname, filter[num]); } +static UINT_PTR CALLBACK ofnhook (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + HWND hWnd; + RECT windowRect; + int width, height, w2, h2; + struct MultiDisplay *md; + NMHDR *nmhdr; + int doit = FALSE; + static int prevwidth, prevheight; + + if (message == WM_NOTIFY) { + nmhdr = (LPNMHDR)lParam; + if (nmhdr->code == CDN_INITDONE) + doit = TRUE; + } else if (message == WM_INITDIALOG) { + doit = TRUE; + } + if (!doit) + return FALSE; + md = getdisplay (&currprefs); + if (!md) + return FALSE; + w2 = WIN32GFX_GetWidth (); + h2 = WIN32GFX_GetHeight (); + if (w2 == prevwidth && h2 == prevheight) + return FALSE; + prevwidth = w2; + prevheight = h2; + //write_log (L"%dx%d %dx%d (%dx%d)\n", md->rect.left, md->rect.top, md->rect.right, md->rect.bottom, w2, h2); + hWnd = GetParent (hDlg); + GetWindowRect (hWnd, &windowRect); + width = windowRect.right - windowRect.left; + height = windowRect.bottom - windowRect.top; + if (width > w2) + width = w2; + if (height > h2) + height = h2; + MoveWindow (hWnd, md->rect.left + (w2 - width) / 2, md->rect.top + (h2 - height) / 2, width, height, FALSE); + return FALSE; +} + + // Common routine for popping up a file-requester // flag - 0 for floppy loading, 1 for floppy creation, 2 for loading hdf, 3 for saving hdf // flag - 4 for loading .uae config-files, 5 for saving .uae config-files @@ -1732,7 +1786,7 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs openFileName.lStructSize = sizeof (OPENFILENAME); openFileName.hwndOwner = hDlg; openFileName.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | - OFN_LONGNAMES | OFN_HIDEREADONLY | OFN_NOCHANGEDIR; + OFN_LONGNAMES | OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_ENABLESIZING | (isfullscreen () > 0 ? OFN_ENABLEHOOK : 0); openFileName.lpstrFilter = szFilter; openFileName.lpstrDefExt = defext; openFileName.nFilterIndex = previousfilter[flag]; @@ -1740,6 +1794,7 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs openFileName.nMaxFile = MAX_DPATH; openFileName.lpstrFileTitle = file_name; openFileName.nMaxFileTitle = MAX_DPATH; + openFileName.lpfnHook = ofnhook; if (initialdir) openFileName.lpstrInitialDir = initialdir; else @@ -1749,10 +1804,10 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs if (multi) openFileName.Flags |= OFN_ALLOWMULTISELECT; if (flag == 1 || flag == 3 || flag == 5 || flag == 9 || flag == 11 || flag == 16) { - if (!(result = GetSaveFileName_2 (&openFileName, guid))) + if (!(result = GetSaveFileName_2 (hDlg, &openFileName, guid))) write_log (L"GetSaveFileNameX() failed, err=%d.\n", GetLastError ()); } else { - if (!(result = GetOpenFileName_2 (&openFileName, guid))) + if (!(result = GetOpenFileName_2 (hDlg, &openFileName, guid))) write_log (L"GetOpenFileNameX() failed, err=%d.\n", GetLastError ()); } if (result) { @@ -3695,10 +3750,10 @@ static urlinfo urls[] = { {IDC_CLOANTOHOME, FALSE, L"Cloanto's Amiga Forever", L"http://www.amigaforever.com/"}, {IDC_AMIGAHOME, FALSE, L"Amiga Inc.", L"http://www.amiga.com"}, - {IDC_PICASSOHOME, FALSE, L"Picasso96 Home Page", L"http://www.picasso96.cogito.de/"}, +// {IDC_PICASSOHOME, FALSE, L"Picasso96 Home Page", L"http://www.picasso96.cogito.de/"}, {IDC_UAEHOME, FALSE, L"UAE Home Page", L"http://uae.coresystems.de/"}, {IDC_WINUAEHOME, FALSE, L"WinUAE Home Page", L"http://www.winuae.net/"}, - {IDC_AIABHOME, FALSE, L"AIAB", L"http://www.amigainabox.co.uk/"}, +// {IDC_AIABHOME, FALSE, L"AIAB", L"http://www.amigainabox.co.uk/"}, {IDC_THEROOTS, FALSE, L"Back To The Roots", L"http://www.back2roots.org/"}, {IDC_ABIME, FALSE, L"abime.net", L"http://www.abime.net/"}, {IDC_CAPS, FALSE, L"SPS", L"http://www.softpres.org/"}, @@ -7081,9 +7136,9 @@ static void values_from_cpudlg (HWND hDlg) workprefs.cpu_clock_multiplier = 0; workprefs.cpu_frequency = _tstof (txt) * 1000000.0; if (workprefs.cpu_frequency < 1 * 1000000) - workprefs.cpu_frequency = 1 * 1000000; + workprefs.cpu_frequency = 0; if (workprefs.cpu_frequency >= 99 * 1000000) - workprefs.cpu_frequency = 99 * 1000000; + workprefs.cpu_frequency = 0; } } } @@ -8082,6 +8137,7 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam SetDlgItemText (hDlg, IDC_PATH_FILESYS, L""); SetDlgItemText (hDlg, IDC_HARDFILE_DEVICE, L""); current_hfdlg.sectors = current_hfdlg.reserved = current_hfdlg.surfaces = 0; + current_hfdlg.bootpri = 0; current_hfdlg.autoboot = 1; current_hfdlg.donotmount = 0; sethardfile (hDlg); @@ -10600,9 +10656,9 @@ struct filterpreset { }; static struct filterpreset filterpresets[] = { - { L"PAL", 8, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 1, 1, 0, 0, 0, 10, 0, 0, 0, 300, 30, 0, 0, 0 }, - { L"D3D Autoscale", 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1 }, - { L"D3D Full Scaling", 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }, + { L"PAL", UAE_FILTER_PAL, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 1, 1, 0, 0, 0, 10, 0, 0, 0, 300, 30, 0, 0, 0 }, + { L"D3D Autoscale", UAE_FILTER_DIRECT3D, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1 }, + { L"D3D Full Scaling", UAE_FILTER_DIRECT3D, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 }, { NULL } }; @@ -12640,55 +12696,56 @@ void gui_disk_image_change (int unitnum, const TCHAR *name) #endif } -void gui_hd_led (int unitnum, int led) +static void gui_flicker_led2 (int led, int unitnum, int status) { - static int resetcounter; - int old; + static int resetcounter[LED_MAX]; + uae_u8 old; + uae_u8 *p; - old = gui_data.hd; - if (led == 0) { - resetcounter--; - if (resetcounter > 0) + if (led == LED_HD) + p = &gui_data.hd; + else if (led == LED_CD) + p = &gui_data.cd; + else if (led == LED_MD) + p = &gui_data.md; + else + return; + old = *p; + if (status == 0) { + resetcounter[led]--; + if (resetcounter[led] > 0) return; } #ifdef RETROPLATFORM - rp_hd_activity (unitnum, led ? 1 : 0, led == 2 ? 1 : 0); + if (led == LED_HD) + rp_hd_activity (unitnum, status ? 1 : 0, status == 2 ? 1 : 0); + else if (led == LED_CD) + rp_cd_activity (unitnum, status); #endif - gui_data.hd = led; - resetcounter = 6; - if (old != gui_data.hd) - gui_led (5, gui_data.hd); + *p = status; + resetcounter[led] = 6; + if (old != *p) + gui_led (led, *p); } -void gui_cd_led (int unitnum, int led) +void gui_flicker_led (int led, int unitnum, int status) { - static int resetcounter; - int old; - - old = gui_data.cd; - if (led == 0) { - resetcounter--; - if (resetcounter > 0) - return; + if (led < 0) { + gui_flicker_led2 (LED_HD, 0, 0); + gui_flicker_led2 (LED_CD, 0, 0); + gui_flicker_led2 (LED_MD, 0, 0); + } else { + gui_flicker_led2 (led, unitnum, status); } - if (led < 0) - led = 0; -#ifdef RETROPLATFORM - rp_cd_activity (unitnum, led); -#endif - gui_data.cd = led; - resetcounter = 6; - if (old != gui_data.cd) - gui_led (6, gui_data.cd); } void gui_fps (int fps, int idle) { gui_data.fps = fps; gui_data.idle = idle; - gui_led (7, 0); - gui_led (8, 0); - gui_led (9, gui_data.sndbuf_status > 1 || gui_data.sndbuf_status < 0); + gui_led (LED_FPS, 0); + gui_led (LED_CPU, 0); + gui_led (LED_SND, gui_data.sndbuf_status > 1 || gui_data.sndbuf_status < 0); } void gui_led (int led, int on) @@ -12705,17 +12762,17 @@ void gui_led (int led, int on) lcd_update (led, on); #endif #ifdef RETROPLATFORM - if (led >= 1 && led <= 4 && !gui_data.drive_disabled[led - 1]) { - rp_floppy_track (led - 1, gui_data.drive_track[led - 1]); - writing = gui_data.drive_writing[led - 1]; + if (led >= LED_DF0 && led <= LED_DF3 && !gui_data.drive_disabled[led - LED_DF0]) { + rp_floppy_track (led - LED_DF0, gui_data.drive_track[led - LED_DF0]); + writing = gui_data.drive_writing[led - LED_DF0]; } rp_update_leds (led, on, writing); #endif if (!hStatusWnd) return; tt = NULL; - if (led >= 1 && led <= 4) { - pos = 6 + (led - 1); + if (led >= LED_DF0 && led <= LED_DF3) { + pos = 6 + (led - LED_DF0); ptr = drive_text + pos * 16; if (gui_data.drive_disabled[led - 1]) _tcscpy (ptr, L""); @@ -12734,16 +12791,16 @@ void gui_led (int led, int on) tt[0] = 0; if (_tcslen (p + j) > 0) _stprintf (tt, L"%s [CRC=%08X]", p + j, gui_data.crc32[led - 1]); - } else if (led == 0) { + } else if (led == LED_POWER) { pos = 3; ptr = _tcscpy (drive_text + pos * 16, L"Power"); - } else if (led == 5) { + } else if (led == LED_HD) { pos = 4; ptr = _tcscpy (drive_text + pos * 16, L"HD"); - } else if (led == 6) { + } else if (led == LED_CD) { pos = 5; ptr = _tcscpy (drive_text + pos * 16, L"CD"); - } else if (led == 7) { + } else if (led == LED_FPS) { double fps = (double)gui_data.fps / 10.0; extern int p96vblank; pos = 2; @@ -12756,11 +12813,11 @@ void gui_led (int led, int on) _stprintf (ptr, L"FPS: %.1f", fps); if (pause_emulation) _tcscpy (ptr, L"PAUSED"); - } else if (led == 8) { + } else if (led == LED_CPU) { pos = 1; ptr = drive_text + pos * 16; _stprintf (ptr, L"CPU: %.0f%%", (double)((gui_data.idle) / 10.0)); - } else if (led == 9) { + } else if (led == LED_SND) { pos = 0; ptr = drive_text + pos * 16; if (gui_data.sndbuf_status < 3) { diff --git a/od-win32/winuae_msvc/winuae_msvc.vcproj b/od-win32/winuae_msvc/winuae_msvc.vcproj index 990e3fe6..b343ca3e 100644 --- a/od-win32/winuae_msvc/winuae_msvc.vcproj +++ b/od-win32/winuae_msvc/winuae_msvc.vcproj @@ -87,7 +87,7 @@ + + @@ -1871,6 +1875,10 @@ RelativePath="..\..\readcpu.c" > + + @@ -1944,466 +1952,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - follow led state + (just like host caps lock key mapped to amiga caps lock key) +- filesystem charset conversion fallbacks added, ISO-8859-15 -> + ISO-8859-1 -> windows-1252 -> current Windows codepage (not all XP + installations have all charsets installed by default, last 2 can have + problems with national characters but it is better than nothing) +- closing GUI debugger window won't close the emulator anymore +- rar unpack crash fix + +2.0.1 + Beta 3: (RC1) - emulate OCS Denise "bug", vertical DIW already active, matches again diff --git a/od-win32/writelog.c b/od-win32/writelog.c index 23b22a65..2f91f0ed 100644 --- a/od-win32/writelog.c +++ b/od-win32/writelog.c @@ -274,6 +274,24 @@ void console_out (const TCHAR *txt) writeconsole (txt); } +TCHAR console_getch (void) +{ + if (realconsole) { + return getwc (stdin); + } else if (consoleopen < 0) { + DWORD len; + TCHAR out[2]; + + for (;;) { + out[0] = 0; + ReadConsole (stdinput, out, 1, &len, 0); + if (len > 0) + return out[0]; + } + } + return 0; +} + int console_get (TCHAR *out, int maxlen) { *out = 0; @@ -281,8 +299,20 @@ int console_get (TCHAR *out, int maxlen) if (consoleopen > 0) { return console_get_gui (out, maxlen); } else if (realconsole) { - _fgetts (out, maxlen, stdin); - return _tcslen (out); + DWORD totallen; + + *out = 0; + totallen = 0; + while (maxlen > 0) { + *out = getwc (stdin); + if (*out == 13) + break; + out++; + maxlen--; + totallen++; + } + *out = 0; + return totallen; } else if (consoleopen < 0) { DWORD len, totallen; diff --git a/rommgr.c b/rommgr.c new file mode 100644 index 00000000..e73f8eec --- /dev/null +++ b/rommgr.c @@ -0,0 +1,1318 @@ + /* + * UAE - The Un*x Amiga Emulator + * + * ROM file management + * + */ + +#include "sysconfig.h" +#include "sysdeps.h" + +#include "options.h" +#include "uae.h" +#include "gui.h" +#include "rommgr.h" +#include "memory.h" +#include "zfile.h" +#include "crc32.h" + + +static struct romlist *rl; +static int romlist_cnt; + +struct romlist *romlist_getit (void) +{ + return rl; +} + +int romlist_count (void) +{ + return romlist_cnt; +} + +TCHAR *romlist_get (struct romdata *rd) +{ + int i; + + if (!rd) + return 0; + for (i = 0; i < romlist_cnt; i++) { + if (rl[i].rd->id == rd->id) + return rl[i].path; + } + return 0; +} + +static struct romlist *romlist_getrl (struct romdata *rd) +{ + int i; + + if (!rd) + return 0; + for (i = 0; i < romlist_cnt; i++) { + if (rl[i].rd == rd) + return &rl[i]; + } + return 0; +} + +static void romlist_cleanup (void); +void romlist_add (TCHAR *path, struct romdata *rd) +{ + struct romlist *rl2; + + if (path == NULL || rd == NULL) { + romlist_cleanup (); + return; + } + romlist_cnt++; + rl = realloc (rl, sizeof (struct romlist) * romlist_cnt); + rl2 = rl + romlist_cnt - 1; + rl2->path = my_strdup (path); + rl2->rd = rd; +} + + +struct romdata *getromdatabypath(TCHAR *path) +{ + int i; + for (i = 0; i < romlist_cnt; i++) { + struct romdata *rd = rl[i].rd; + if (rd->configname && path[0] == ':') { + if (!_tcscmp(path + 1, rd->configname)) + return rd; + } + if (!_tcscmp(rl[i].path, path)) + return rl[i].rd; + } + return NULL; +} + +#define NEXT_ROM_ID 73 + +static struct romheader romheaders[] = { + { L"Freezer Cartridges", 1 }, + { L"Arcadia Games", 2 }, + { NULL, 0 } +}; + +#define ALTROM(id,grp,num,size,flags,crc32,a,b,c,d,e) \ +{ L"X", 0, 0, 0, 0, 0, size, id, 0, 0, flags, (grp << 16) | num, 0, NULL, crc32, a, b, c, d, e }, +#define ALTROMPN(id,grp,num,size,flags,pn,crc32,a,b,c,d,e) \ +{ L"X", 0, 0, 0, 0, 0, size, id, 0, 0, flags, (grp << 16) | num, 0, pn, crc32, a, b, c, d, e }, + +static struct romdata roms[] = { + { L"Cloanto Amiga Forever ROM key", 0, 0, 0, 0, 0, 2069, 0, 0, 1, ROMTYPE_KEY, 0, 0, NULL, + 0x869ae1b1, 0x801bbab3,0x2e3d3738,0x6dd1636d,0x4f1d6fa7,0xe21d5874 }, + { L"Cloanto Amiga Forever 2006 ROM key", 0, 0, 0, 0, 0, 750, 48, 0, 1, ROMTYPE_KEY, 0, 0, NULL, + 0xb01c4b56, 0xbba8e5cd,0x118b8d92,0xafed5693,0x5eeb9770,0x2a662d8f }, + + { L"KS ROM v1.0 (A1000)(NTSC)", 1, 0, 1, 0, L"A1000\0", 262144, 1, 0, 0, ROMTYPE_KICK, 0, 0, NULL, + 0x299790ff, 0x00C15406,0xBEB4B8AB,0x1A16AA66,0xC05860E1,0xA7C1AD79 }, + { L"KS ROM v1.1 (A1000)(NTSC)", 1, 1, 31, 34, L"A1000\0", 262144, 2, 0, 0, ROMTYPE_KICK, 0, 0, NULL, + 0xd060572a, 0x4192C505,0xD130F446,0xB2ADA6BD,0xC91DAE73,0x0ACAFB4C}, + { L"KS ROM v1.1 (A1000)(PAL)", 1, 1, 31, 34, L"A1000\0", 262144, 3, 0, 0, ROMTYPE_KICK, 0, 0, NULL, + 0xec86dae2, 0x16DF8B5F,0xD524C5A1,0xC7584B24,0x57AC15AF,0xF9E3AD6D }, + { L"KS ROM v1.2 (A1000)", 1, 2, 33, 166, L"A1000\0", 262144, 4, 0, 0, ROMTYPE_KICK, 0, 0, NULL, + 0x9ed783d0, 0x6A7BFB5D,0xBD6B8F17,0x9F03DA84,0xD8D95282,0x67B6273B }, + { L"KS ROM v1.2 (A500,A1000,A2000)", 1, 2, 33, 180, L"A500\0A1000\0A2000\0", 262144, 5, 0, 0, ROMTYPE_KICK, 0, 0, L"315093-01", + 0xa6ce1636, 0x11F9E62C,0xF299F721,0x84835B7B,0x2A70A163,0x33FC0D88 }, + { L"KS ROM v1.3 (A500,A1000,A2000)", 1, 3, 34, 5, L"A500\0A1000\0A2000\0", 262144, 6, 0, 0, ROMTYPE_KICK, 0, 0, L"315093-02", + 0xc4f0f55f, 0x891E9A54,0x7772FE0C,0x6C19B610,0xBAF8BC4E,0xA7FCB785 }, + { L"KS ROM v1.3 (A3000)(SK)", 1, 3, 34, 5, L"A3000\0", 262144, 32, 0, 0, ROMTYPE_KICK, 0, 0, NULL, + 0xe0f37258, 0xC39BD909,0x4D4E5F4E,0x28C1411F,0x30869504,0x06062E87 }, + { L"KS ROM v1.4 (A3000)", 1, 4, 36, 16, L"A3000\0", 524288, 59, 3, 0, ROMTYPE_KICK, 0, 0, NULL, + 0xbc0ec13f, 0xF76316BF,0x36DFF14B,0x20FA349E,0xD02E4B11,0xDD932B07 }, + ALTROMPN(59, 1, 1, 262144, ROMTYPE_EVEN, L"390629-02", 0x58327536,0xd1713d7f,0x31474a59,0x48e6d488,0xe3368606,0x1cf3d1e2) + ALTROMPN(59, 1, 2, 262144, ROMTYPE_ODD , L"390630-02", 0xfe2f7fb9,0xc05c9c52,0xd014c66f,0x9019152b,0x3f2a2adc,0x2c678794) + { L"KS ROM v2.04 (A500+)", 2, 4, 37, 175, L"A500+\0", 524288, 7, 0, 0, ROMTYPE_KICK, 0, 0, L"390979-01", + 0xc3bdb240, 0xC5839F5C,0xB98A7A89,0x47065C3E,0xD2F14F5F,0x42E334A1 }, + { L"KS ROM v2.05 (A600)", 2, 5, 37, 299, L"A600\0", 524288, 8, 0, 0, ROMTYPE_KICK, 0, 0, L"391388-01", + 0x83028fb5, 0x87508DE8,0x34DC7EB4,0x7359CEDE,0x72D2E3C8,0xA2E5D8DB }, + { L"KS ROM v2.05 (A600HD)", 2, 5, 37, 300, L"A600HD\0A600\0", 524288, 9, 0, 0, ROMTYPE_KICK, 0, 0, L"391304-01", + 0x64466c2a, 0xF72D8914,0x8DAC39C6,0x96E30B10,0x859EBC85,0x9226637B }, + { L"KS ROM v2.05 (A600HD)", 2, 5, 37, 350, L"A600HD\0A600\0", 524288, 10, 0, 0, ROMTYPE_KICK, 0, 0, L"391304-02", + 0x43b0df7b, 0x02843C42,0x53BBD29A,0xBA535B0A,0xA3BD9A85,0x034ECDE4 }, + { L"KS ROM v2.04 (A3000)", 2, 4, 37, 175, L"A3000\0", 524288, 71, 3, 0, ROMTYPE_KICK, 0, 0, NULL, + 0x234a7233, 0xd82ebb59,0xafc53540,0xddf2d718,0x7ecf239b,0x7ea91590 }, + ALTROMPN(71, 1, 1, 262144, ROMTYPE_EVEN, L"390629-03", 0x7db1332b,0x48f14b31,0x279da675,0x7848df6f,0xeb531881,0x8f8f576c) + ALTROMPN(71, 1, 2, 262144, ROMTYPE_ODD , L"390630-03", 0xa245dbdf,0x83bab8e9,0x5d378b55,0xb0c6ae65,0x61385a96,0xf638598f) + + { L"KS ROM v3.0 (A1200)", 3, 0, 39, 106, L"A1200\0", 524288, 11, 0, 0, ROMTYPE_KICK, 0, 0, NULL, + 0x6c9b07d2, 0x70033828,0x182FFFC7,0xED106E53,0x73A8B89D,0xDA76FAA5 }, + ALTROMPN(11, 1, 1, 262144, ROMTYPE_EVEN, L"391523-01", 0xc742a412,0x999eb81c,0x65dfd07a,0x71ee1931,0x5d99c7eb,0x858ab186) + ALTROMPN(11, 1, 2, 262144, ROMTYPE_ODD , L"391524-01", 0xd55c6ec6,0x3341108d,0x3a402882,0xb5ef9d3b,0x242cbf3c,0x8ab1a3e9) + { L"KS ROM v3.0 (A4000)", 3, 0, 39, 106, L"A4000\0", 524288, 12, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL, + 0x9e6ac152, 0xF0B4E9E2,0x9E12218C,0x2D5BD702,0x0E4E7852,0x97D91FD7 }, + ALTROMPN(12, 1, 1, 262144, ROMTYPE_EVEN, L"391513-02", 0x36f64dd0,0x196e9f3f,0x9cad934e,0x181c07da,0x33083b1f,0x0a3c702f) + ALTROMPN(12, 1, 2, 262144, ROMTYPE_ODD , L"391514-02", 0x17266a55,0x42fbed34,0x53d1f11c,0xcbde89a9,0x826f2d11,0x75cca5cc) + { L"KS ROM v3.1 (A4000)", 3, 1, 40, 70, L"A4000\0", 524288, 13, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL, + 0x2b4566f1, 0x81c631dd,0x096bbb31,0xd2af9029,0x9c76b774,0xdb74076c }, + ALTROM(13, 1, 1, 262144, ROMTYPE_EVEN, 0xf9cbecc9,0x138d8cb4,0x3b8312fe,0x16d69070,0xde607469,0xb3d4078e) + ALTROM(13, 1, 2, 262144, ROMTYPE_ODD , 0xf8248355,0xc2379547,0x9fae3910,0xc185512c,0xa268b82f,0x1ae4fe05) + { L"KS ROM v3.1 (A500,A600,A2000)", 3, 1, 40, 63, L"A500\0A600\0A2000\0", 524288, 14, 0, 0, ROMTYPE_KICK, 0, 0, NULL, + 0xfc24ae0d, 0x3B7F1493,0xB27E2128,0x30F989F2,0x6CA76C02,0x049F09CA }, + { L"KS ROM v3.1 (A1200)", 3, 1, 40, 68, L"A1200\0", 524288, 15, 1, 0, ROMTYPE_KICK, 0, 0, NULL, + 0x1483a091, 0xE2154572,0x3FE8374E,0x91342617,0x604F1B3D,0x703094F1 }, + ALTROMPN(15, 1, 1, 262144, ROMTYPE_EVEN, L"391773-01", 0x08dbf275,0xb8800f5f,0x90929810,0x9ea69690,0xb1b8523f,0xa22ddb37) + ALTROMPN(15, 1, 2, 262144, ROMTYPE_ODD , L"391774-01", 0x16c07bf8,0x90e331be,0x1970b0e5,0x3f53a9b0,0x390b51b5,0x9b3869c2) + { L"KS ROM v3.1 (A3000)", 3, 1, 40, 68, L"A3000\0", 524288, 61, 2, 0, ROMTYPE_KICK, 0, 0, NULL, + 0xefb239cc, 0xF8E210D7,0x2B4C4853,0xE0C9B85D,0x223BA20E,0x3D1B36EE }, + ALTROM(61, 1, 1, 262144, ROMTYPE_EVEN, 0x286b9a0d,0x6763a225,0x8ec493f7,0x408cf663,0x110dae9a,0x17803ad1) + ALTROM(61, 1, 2, 262144, ROMTYPE_ODD , 0x0b8cde6a,0x5f02e97b,0x48ebbba8,0x7d516a56,0xb0400c6f,0xc3434d8d) + { L"KS ROM v3.1 (A4000)(Cloanto)", 3, 1, 40, 68, L"A4000\0", 524288, 31, 2 | 4, 1, ROMTYPE_KICK, 0, 0, NULL, + 0x43b6dd22, 0xC3C48116,0x0866E60D,0x085E436A,0x24DB3617,0xFF60B5F9 }, + { L"KS ROM v3.1 (A4000)", 3, 1, 40, 68, L"A4000\0", 524288, 16, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL, + 0xd6bae334, 0x5FE04842,0xD04A4897,0x20F0F4BB,0x0E469481,0x99406F49 }, + ALTROM(16, 1, 1, 262144, ROMTYPE_EVEN, 0xb2af34f8,0x24e52b5e,0xfc020495,0x17387ab7,0xb1a1475f,0xc540350e) + ALTROM(16, 1, 2, 262144, ROMTYPE_ODD , 0xe65636a3,0x313c7cbd,0xa5779e56,0xf19a41d3,0x4e760f51,0x7626d882) + { L"KS ROM v3.1 (A4000T)", 3, 1, 40, 70, L"A4000T\0", 524288, 17, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL, + 0x75932c3a, 0xB0EC8B84,0xD6768321,0xE01209F1,0x1E6248F2,0xF5281A21 }, + ALTROMPN(17, 1, 1, 262144, ROMTYPE_EVEN, L"391657-01", 0x0ca94f70,0xb3806eda,0xcb3362fc,0x16a154ce,0x1eeec5bf,0x5bc24789) + ALTROMPN(17, 1, 2, 262144, ROMTYPE_ODD , L"391658-01", 0xdfe03120,0xcd7a706c,0x431b04d8,0x7814d3a2,0xd8b39710,0x0cf44c0c) + { L"KS ROM v3.X (A4000)(Cloanto)", 3, 10, 45, 57, L"A4000\0", 524288, 46, 2 | 4, 0, ROMTYPE_KICK, 0, 0, NULL, + 0x3ac99edc, 0x3cbfc9e1,0xfe396360,0x157bd161,0xde74fc90,0x1abee7ec }, + + { L"CD32 KS ROM v3.1", 3, 1, 40, 60, L"CD32\0", 524288, 18, 1, 0, ROMTYPE_KICKCD32, 0, 0, NULL, + 0x1e62d4a5, 0x3525BE88,0x87F79B59,0x29E017B4,0x2380A79E,0xDFEE542D }, + { L"CD32 extended ROM", 3, 1, 40, 60, L"CD32\0", 524288, 19, 1, 0, ROMTYPE_EXTCD32, 0, 0, NULL, + 0x87746be2, 0x5BEF3D62,0x8CE59CC0,0x2A66E6E4,0xAE0DA48F,0x60E78F7F }, + + /* plain CD32 rom */ + { L"CD32 ROM (KS + extended)", 3, 1, 40, 60, L"CD32\0", 2 * 524288, 64, 1, 0, ROMTYPE_KICKCD32 | ROMTYPE_EXTCD32 | ROMTYPE_CD32, 0, 0, NULL, + 0xf5d4f3c8, 0x9fa14825,0xc40a2475,0xa2eba5cf,0x325bd483,0xc447e7c1 }, + /* real CD32 rom dump 391640-03 */ + ALTROMPN(64, 1, 1, 2 * 524288, ROMTYPE_CD32, L"391640-03", 0xa4fbc94a, 0x816ce6c5,0x07787585,0x0c7d4345,0x2230a9ba,0x3a2902db ) + + { L"CD32 MPEG Cartridge ROM", 3, 1, 40, 30, L"CD32FMV\0", 262144, 23, 1, 0, ROMTYPE_CD32CART, 0, 0, NULL, + 0xc35c37bf, 0x03ca81c7,0xa7b259cf,0x64bc9582,0x863eca0f,0x6529f435 }, + + { L"CDTV extended ROM v1.00", 1, 0, 1, 0, L"CDTV\0", 262144, 20, 0, 0, ROMTYPE_EXTCDTV, 0, 0, NULL, + 0x42baa124, 0x7BA40FFA,0x17E500ED,0x9FED041F,0x3424BD81,0xD9C907BE }, + ALTROMPN(20, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, L"252606-01", 0x791cb14b,0x277a1778,0x92449635,0x3ffe56be,0x68063d2a,0x334360e4) + ALTROMPN(20, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, L"252607-01", 0xaccbbc2e,0x41b06d16,0x79c6e693,0x3c3378b7,0x626025f7,0x641ebc5c) + { L"CDTV extended ROM v2.07", 2, 7, 2, 7, L"CDTV\0", 262144, 22, 0, 0, ROMTYPE_EXTCDTV, 0, 0, NULL, + 0xceae68d2, 0x5BC114BB,0xA29F60A6,0x14A31174,0x5B3E2464,0xBFA06846 }, + ALTROM(22, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x36d73cb8,0x9574e546,0x4b390697,0xf28f9a43,0x4e604e5e,0xf5e5490a) + ALTROM(22, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, 0x6e84dce7,0x01a0679e,0x895a1a0f,0x559c7253,0xf539606b,0xd447b54f) + { L"CDTV/A570 extended ROM v2.30", 2, 30, 2, 30, L"CDTV\0", 262144, 21, 0, 0, ROMTYPE_EXTCDTV, 0, 0, L"391298-01", + 0x30b54232, 0xED7E461D,0x1FFF3CDA,0x321631AE,0x42B80E3C,0xD4FA5EBB }, + ALTROM(21, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x48e4d74f,0x54946054,0x2269e410,0x36018402,0xe1f6b855,0xfd89092b) + ALTROM(21, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, 0x8a54f362,0x03df800f,0x032046fd,0x892f6e7e,0xec08b76d,0x33981e8c) + + { L"A1000 bootstrap ROM", 0, 0, 0, 0, L"A1000\0", 65536, 24, 0, 0, ROMTYPE_KICK, 0, 0, NULL, + 0x0b1ad2d0, 0xBA93B8B8,0x5CA0D83A,0x68225CC3,0x3B95050D,0x72D2FDD7 }, + ALTROM(24, 1, 1, 8192, 0, 0x62f11c04, 0xC87F9FAD,0xA4EE4E69,0xF3CCA0C3,0x6193BE82,0x2B9F5FE6) + ALTROMPN(24, 2, 1, 4096, ROMTYPE_EVEN | ROMTYPE_8BIT, L"252179-01", 0x42553bc4,0x8855a97f,0x7a44e3f6,0x2d1c88d9,0x38fee1f4,0xc606af5b) + ALTROMPN(24, 2, 2, 4096, ROMTYPE_ODD | ROMTYPE_8BIT, L"252180-01", 0x8e5b9a37,0xd10f1564,0xb99f5ffe,0x108fa042,0x362e877f,0x569de2c3) + + { L"The Diagnostic 2.0 (Logica)", 2, 0, 2, 0, L"LOGICA\0", 524288, 72, 0, 0, ROMTYPE_KICK | ROMTYPE_SPECIALKICK, 0, 0, NULL, + 0x8484f426, 0xba10d161,0x66b2e2d6,0x177c979c,0x99edf846,0x2b21651e }, + + { L"Freezer: Action Replay Mk I v1.00", 1, 0, 1, 0, L"AR\0", 65536, 52, 0, 0, ROMTYPE_AR, 0, 1, NULL, + 0x2d921771, 0x1EAD9DDA,0x2DAD2914,0x6441F5EF,0x72183750,0x22E01248 }, + ALTROM(52, 1, 1, 32768, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x82d6eb87, 0x7c9bac11,0x28666017,0xeee6f019,0x63fb3890,0x7fbea355) + ALTROM(52, 1, 2, 32768, ROMTYPE_ODD | ROMTYPE_8BIT, 0x40ae490c, 0x81d8e432,0x01b73fd9,0x2e204ebd,0x68af8602,0xb62ce397) + { L"Freezer: Action Replay Mk I v1.50", 1, 50, 1, 50, L"AR\0", 65536, 25, 0, 0, ROMTYPE_AR, 0, 1, NULL, + 0xd4ce0675, 0x843B433B,0x2C56640E,0x045D5FDC,0x854DC6B1,0xA4964E7C }, + ALTROM(25, 1, 1, 32768, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x7fbd6de2, 0xb5f71a5c,0x09d65ecc,0xa8a3bc93,0x93558461,0xca190228) + ALTROM(25, 1, 2, 32768, ROMTYPE_ODD | ROMTYPE_8BIT, 0x43018069, 0xad8ff242,0xb2cbf125,0x1fc53a73,0x581cf57a,0xb69cee00) + { L"Freezer: Action Replay Mk II v2.05", 2, 5, 2, 5, L"AR\0", 131072, 26, 0, 0, ROMTYPE_AR, 0, 1, NULL, + 0x1287301f, 0xF6601DE8,0x888F0050,0x72BF562B,0x9F533BBC,0xAF1B0074 }, + { L"Freezer: Action Replay Mk II v2.12", 2, 12, 2, 12, L"AR\0", 131072, 27, 0, 0, ROMTYPE_AR, 0, 1, NULL, + 0x804d0361, 0x3194A07A,0x0A82D8B5,0xF2B6AEFA,0x3CA581D6,0x8BA8762B }, + { L"Freezer: Action Replay Mk II v2.14", 2, 14, 2, 14, L"AR\0", 131072, 28, 0, 0, ROMTYPE_AR, 0, 1, NULL, + 0x49650e4f, 0x255D6DF6,0x3A4EAB0A,0x838EB1A1,0x6A267B09,0x59DFF634 }, + { L"Freezer: Action Replay Mk III v3.09", 3, 9, 3, 9, L"AR\0", 262144, 29, 0, 0, ROMTYPE_AR, 0, 1, NULL, + 0x0ed9b5aa, 0x0FF3170A,0xBBF0CA64,0xC9DD93D6,0xEC0C7A01,0xB5436824 }, + ALTROM(29, 1, 1, 131072, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x2b84519f, 0x7841873b,0xf009d834,0x1dfa2794,0xb3751bac,0xf86adcc8) + ALTROM(29, 1, 2, 131072, ROMTYPE_ODD | ROMTYPE_8BIT, 0x1d35bd56, 0x6464be16,0x26b51949,0x9e76e4e3,0x409e8016,0x515d48b6) + { L"Freezer: Action Replay Mk III v3.17", 3, 17, 3, 17, L"AR\0", 262144, 30, 0, 0, ROMTYPE_AR, 0, 1, NULL, + 0xc8a16406, 0x5D4987C2,0xE3FFEA8B,0x1B02E314,0x30EF190F,0x2DB76542 }, + { L"Freezer: Action Replay 1200", 0, 0, 0, 0, L"AR\0", 262144, 47, 0, 0, ROMTYPE_AR, 0, 1, NULL, + 0x8d760101, 0x0F6AB834,0x2810094A,0xC0642F62,0xBA42F78B,0xC0B07E6A }, + + { L"Freezer: Action Cartridge Super IV Professional", 0, 0, 0, 0, L"SUPERIV\0", 0, 62, 0, 0, ROMTYPE_SUPERIV, 0, 1, NULL, + 0xffffffff, 0, 0, 0, 0, 0, L"SuperIV" }, + { L"Freezer: Action Cart. Super IV Pro (+ROM v4.3)", 4, 3, 4, 3, L"SUPERIV\0", 170368, 60, 0, 0, ROMTYPE_SUPERIV, 0, 1, NULL, + 0xe668a0be, 0x633A6E65,0xA93580B8,0xDDB0BE9C,0x9A64D4A1,0x7D4B4801 }, + { L"Freezer: X-Power Professional 500 v1.2", 1, 2, 1, 2, L"XPOWER\0", 131072, 65, 0, 0, ROMTYPE_XPOWER, 0, 1, NULL, + 0x9e70c231, 0xa2977a1c,0x41a8ca7d,0x4af4a168,0x726da542,0x179d5963 }, + ALTROM(65, 1, 1, 65536, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xf98742e4,0xe8e683ba,0xd8b38d1f,0x79f3ad83,0xa9e67c6f,0xa91dc96c) + ALTROM(65, 1, 2, 65536, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xdfb9984b,0x8d6bdd49,0x469ec8e2,0x0143fbb3,0x72e92500,0x99f07910) + { L"Freezer: X-Power Professional 500 v1.3", 1, 2, 1, 2, L"XPOWER\0", 131072, 68, 0, 0, ROMTYPE_XPOWER, 0, 1, NULL, + 0x31e057f0, 0x84650266,0x465d1859,0x7fd71dee,0x00775930,0xb7e450ee }, + ALTROM(68, 1, 1, 65536, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x0b2ce0c7,0x45ad5456,0x89192404,0x956f47ce,0xf66a5274,0x57ace33b) + ALTROM(68, 1, 2, 65536, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x34580c35,0x8ad42566,0x7364f238,0x978f4381,0x08f8d5ec,0x470e72ea) + { L"Freezer: Nordic Power v1.5", 1, 5, 1, 5, L"NPOWER\0", 65536, 69, 0, 0, ROMTYPE_NORDIC, 0, 1, NULL, + 0x83b4b21c, 0xc56ced25,0x506a5aab,0x3fa13813,0x4fc9e5ae,0x0f9d3709 }, + ALTROM(69, 1, 1, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xdd207174,0xae67652d,0x64f5db20,0x0f4b2110,0xee59567f,0xfbd90a1b) + ALTROM(69, 1, 2, 32768, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x8f93d85d,0x73c62d21,0x40c0c092,0x6315b702,0xdd5d0f05,0x3dad7fab) + { L"Freezer: Nordic Power v2.0", 2, 0, 2, 0, L"NPOWER\0", 65536, 67, 0, 0, ROMTYPE_NORDIC, 0, 1, NULL, + 0xa4db2906, 0x0aec68f7,0x25470c89,0x6b699ff4,0x6623dec5,0xc777466e }, + ALTROM(67, 1, 1, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xb21be46c,0x50dc607c,0xce976bbd,0x3841eaf0,0x591ddc7e,0xa1939ad2) + ALTROM(67, 1, 2, 32768, ROMTYPE_ODD |ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0x96057aed,0xdd9209e2,0x1d5edfc1,0xcdb52abe,0x93de0f35,0xc43da696) + { L"Freezer: Nordic Power v3.0", 3, 0, 3, 0, L"NPOWER\0", 65536, 70, 0, 0, ROMTYPE_NORDIC, 0, 1, NULL, + 0x72850aef, 0x59c91d1f,0xa8f118f9,0x0bdba05a,0x9ae788d7,0x7a6cc7c9 }, + ALTROM(70, 1, 1, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xf3330e1f,0x3a597db2,0xb7d11b6c,0xb8e13496,0xc215f223,0x88c4ca3c) + ALTROM(70, 1, 2, 32768, ROMTYPE_EVEN|ROMTYPE_SCRAMBLED|ROMTYPE_8BIT, 0xee58e0f9,0x4148f4cb,0xb42cec33,0x8ca144de,0xd4f54118,0xe0f185dd) + { L"Freezer: HRTMon v2.32 (built-in)", 0, 0, 0, 0, L"HRTMON\0", 0, 63, 0, 0, ROMTYPE_HRTMON, 0, 1, NULL, + 0xffffffff, 0, 0, 0, 0, 0, L"HRTMon" }, + + { L"A590/A2091 SCSI boot ROM", 6, 0, 6, 0, L"A590\0A2091\0", 16384, 53, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL, + 0x8396cf4e, 0x5E03BC61,0x8C862ABE,0x7BF79723,0xB4EEF4D2,0x1859A0F2 }, + ALTROM(53, 1, 1, 8192, ROMTYPE_ODD | ROMTYPE_8BIT, 0xb0b8cf24,0xfcf40175,0x05f4d441,0x814b45d5,0x59c19eab,0x43816b30) + ALTROM(53, 1, 2, 8192, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x2e77bbff,0x8a098845,0x068f32cf,0xa4d34a27,0x8cd290f6,0x1d35a52c) + { L"A590/A2091 SCSI boot ROM", 6, 6, 6, 6, L"A590\0A2091\0", 16384, 54, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL, + 0x33e00a7a, 0x739BB828,0xE874F064,0x9360F59D,0x26B5ED3F,0xBC99BB66 }, + ALTROM(54, 1, 1, 8192, ROMTYPE_ODD | ROMTYPE_8BIT, 0xe536bbb2,0xfd7f8a6d,0xa18c1b02,0xd07eb990,0xc2467a24,0x183ede12) + ALTROM(54, 1, 2, 8192, ROMTYPE_EVEN | ROMTYPE_8BIT, 0xc0871d25,0xe155f18a,0xbb90cf82,0x0589c15e,0x70559d3b,0x6b391af8) + { L"A590/A2091 SCSI boot ROM", 7, 0, 7, 0, L"A590\0A2091\0", 16384, 55, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL, + 0x714a97a2, 0xE50F01BA,0xF2899892,0x85547863,0x72A82C33,0x3C91276E }, + ALTROM(55, 1, 1, 8192, ROMTYPE_ODD | ROMTYPE_8BIT, 0xa9ccffed,0x149f5bd5,0x2e2d2990,0x4e3de483,0xb9ad7724,0x48e9278e) + ALTROM(55, 1, 2, 8192, ROMTYPE_EVEN | ROMTYPE_8BIT, 0x2942747a,0xdbd7648e,0x79c75333,0x7ff3e4f4,0x91de224b,0xf05e6bb6) + { L"A590/A2091 SCSI Guru boot ROM", 6, 14, 6, 14, L"A590\0A2091\0", 32768, 56, 0, 0, ROMTYPE_A2091BOOT, 0, 0, NULL, + 0x04e52f93, 0x6DA21B6F,0x5E8F8837,0xD64507CD,0x8A4D5CDC,0xAC4F426B }, + { L"A4091 SCSI boot ROM", 40, 9, 40, 9, L"A4091\0", 32768, 57, 0, 0, ROMTYPE_A4091BOOT, 0, 0, NULL, + 0x00000000, 0, 0, 0, 0, 0 }, + { L"A4091 SCSI boot ROM", 40, 13, 40, 13, L"A4091\0", 32768, 58, 0, 0, ROMTYPE_A4091BOOT, 0, 0, NULL, + 0x54cb9e85, 0x3CE66919,0xF6FD6797,0x4923A12D,0x91B730F1,0xFFB4A7BA }, + + { L"Arcadia OnePlay 2.11", 0, 0, 0, 0, L"ARCADIA\0", 0, 49, 0, 0, ROMTYPE_ARCADIABIOS, 0, 0 }, + { L"Arcadia TenPlay 2.11", 0, 0, 0, 0, L"ARCADIA\0", 0, 50, 0, 0, ROMTYPE_ARCADIABIOS, 0, 0 }, + { L"Arcadia OnePlay 3.00", 0, 0, 0, 0, L"ARCADIA\0", 0, 51, 0, 0, ROMTYPE_ARCADIABIOS, 0, 0 }, + + { L"Arcadia SportTime Table Hockey", 0, 0, 0, 0, L"ARCADIA\0", 0, 33, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia SportTime Bowling", 0, 0, 0, 0, L"ARCADIA\0", 0, 34, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia World Darts", 0, 0, 0, 0, L"ARCADIA\0", 0, 35, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia Magic Johnson's Fast Break", 0, 0, 0, 0, L"ARCADIA\0", 0, 36, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia Leader Board Golf", 0, 0, 0, 0, L"ARCADIA\0", 0, 37, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia Leader Board Golf (alt)", 0, 0, 0, 0, L"ARCADIA\0", 0, 38, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia Ninja Mission", 0, 0, 0, 0, L"ARCADIA\0", 0, 39, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia Road Wars", 0, 0, 0, 0, L"ARCADIA\0", 0, 40, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia Sidewinder", 0, 0, 0, 0, L"ARCADIA\0", 0, 41, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia Spot", 0, 0, 0, 0, L"ARCADIA\0", 0, 42, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia Space Ranger", 0, 0, 0, 0, L"ARCADIA\0", 0, 43, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia Xenon", 0, 0, 0, 0, L"ARCADIA\0", 0, 44, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + { L"Arcadia World Trophy Soccer", 0, 0, 0, 0, L"ARCADIA\0", 0, 45, 0, 0, ROMTYPE_ARCADIAGAME, 0, 2 }, + + { NULL } + +}; + +void romlist_clear (void) +{ + int i; + int mask = 0; + struct romdata *parent; + TCHAR *pn; + + xfree (rl); + rl = 0; + romlist_cnt = 0; + parent = 0; + pn = NULL; + for (i = 0; roms[i].name; i++) { + struct romdata *rd = &roms[i]; + if (rd->group == 0) { + parent = rd; + mask = rd->type; + pn = parent->partnumber; + } else { + rd->type &= ~ROMTYPE_MASK; + rd->type |= mask & ROMTYPE_MASK; + if (rd->partnumber && !pn) { + TCHAR *newpn; + if (parent->partnumber == NULL) + parent->partnumber = my_strdup (L""); + newpn = xcalloc ((_tcslen (parent->partnumber) + 1 + _tcslen (rd->partnumber) + 1) * sizeof (TCHAR), 1); + if (_tcslen (parent->partnumber) > 0) { + _tcscpy (newpn, parent->partnumber); + _tcscat (newpn, L"/"); + } + _tcscat (newpn, rd->partnumber); + xfree (parent->partnumber); + parent->partnumber = newpn; + } + } + } +} + +/* remove rom entries that need 2 or more roms but not everything required is present */ +static void romlist_cleanup (void) +{ + int i = 0; + while (roms[i].name) { + struct romdata *rd = &roms[i]; + int grp = rd->group >> 16; + int ok = 1; + int j = i; + int k = i; + while (rd->name && (rd->group >> 16) == grp && grp > 0) { + struct romlist *rl = romlist_getrl (rd); + if (!rl) + ok = 0; + rd++; + j++; + } + if (ok == 0) { + while (i < j) { + struct romlist *rl = romlist_getrl (&roms[i]); + if (rl) { + int cnt = romlist_cnt - i - 1; + write_log (L"%s '%s' removed from romlist\n", roms[k].name, rl->path); + xfree (rl->path); + if (cnt > 0) + memmove (rl, rl + 1, cnt * sizeof (struct romlist)); + romlist_cnt--; + } + i++; + } + } + i++; + } + for (i = 0; i < romlist_cnt; i++) { + struct romlist *rll = &rl[i]; + //write_log (L"%s (%s)\n", rll->rd->name, rll->path); + } +} + +struct romlist **getromlistbyident(int ver, int rev, int subver, int subrev, TCHAR *model, int all) +{ + int i, j, ok, out, max; + struct romdata *rd; + struct romlist **rdout, *rltmp; + void *buf; + static struct romlist rlstatic; + + for (i = 0; roms[i].name; i++); + if (all) + max = i; + else + max = romlist_cnt; + buf = xmalloc ((sizeof (struct romlist*) + sizeof (struct romlist)) * (i + 1)); + rdout = (struct romlist**)buf; + rltmp = (struct romlist*)((uae_u8*)buf + (i + 1) * sizeof (struct romlist*)); + out = 0; + for (i = 0; i < max; i++) { + ok = 0; + if (!all) + rd = rl[i].rd; + else + rd = &roms[i]; + if (rd->group) + continue; + if (model && !_tcsicmp (model, rd->name)) + ok = 2; + if (rd->ver == ver && (rev < 0 || rd->rev == rev)) { + if (subver >= 0) { + if (rd->subver == subver && (subrev < 0 || rd->subrev == subrev) && rd->subver > 0) + ok = 1; + } else { + ok = 1; + } + } + if (!ok) + continue; + if (model && ok < 2) { + TCHAR *p = rd->model; + ok = 0; + while (*p) { + if (!_tcscmp(rd->model, model)) { + ok = 1; + break; + } + p = p + _tcslen(p) + 1; + } + } + if (!model && rd->type != ROMTYPE_KICK) + ok = 0; + if (ok) { + if (all) { + rdout[out++] = rltmp; + rltmp->path = NULL; + rltmp->rd = rd; + rltmp++; + } else { + rdout[out++] = &rl[i]; + } + } + } + if (out == 0) { + xfree (rdout); + return NULL; + } + for (i = 0; i < out; i++) { + int v1 = rdout[i]->rd->subver * 1000 + rdout[i]->rd->subrev; + for (j = i + 1; j < out; j++) { + int v2 = rdout[j]->rd->subver * 1000 + rdout[j]->rd->subrev; + if (v1 < v2) { + struct romlist *rltmp = rdout[j]; + rdout[j] = rdout[i]; + rdout[i] = rltmp; + } + } + } + rdout[out] = NULL; + return rdout; +} + +struct romdata *getarcadiarombyname (TCHAR *name) +{ + int i; + for (i = 0; roms[i].name; i++) { + if (roms[i].group == 0 && (roms[i].type == ROMTYPE_ARCADIAGAME || roms[i].type == ROMTYPE_ARCADIAGAME)) { + TCHAR *p = roms[i].name; + p = p + _tcslen (p) + 1; + if (_tcslen (name) >= _tcslen (p) + 4) { + TCHAR *p2 = name + _tcslen (name) - _tcslen (p) - 4; + if (!memcmp (p, p2, _tcslen (p)) && !memcmp (p2 + _tcslen (p2) - 4, ".zip", 4)) + return &roms[i]; + } + } + } + return NULL; +} + +struct romlist **getarcadiaroms(void) +{ + int i, out, max; + void *buf; + struct romlist **rdout, *rltmp; + + max = 0; + for (i = 0; roms[i].name; i++) { + if (roms[i].group == 0 && (roms[i].type == ROMTYPE_ARCADIABIOS || roms[i].type == ROMTYPE_ARCADIAGAME)) + max++; + } + buf = xmalloc ((sizeof (struct romlist*) + sizeof (struct romlist)) * (max + 1)); + rdout = (struct romlist**)buf; + rltmp = (struct romlist*)((uae_u8*)buf + (max + 1) * sizeof (struct romlist*)); + out = 0; + for (i = 0; roms[i].name; i++) { + if (roms[i].group == 0 && (roms[i].type == ROMTYPE_ARCADIABIOS || roms[i].type == ROMTYPE_ARCADIAGAME)) { + rdout[out++] = rltmp; + rltmp->path = NULL; + rltmp->rd = &roms[i]; + rltmp++; + } + } + rdout[out] = NULL; + return rdout; +} + + +static int kickstart_checksum_do (uae_u8 *mem, int size) +{ + uae_u32 cksum = 0, prevck = 0; + int i; + for (i = 0; i < size; i+=4) { + uae_u32 data = mem[i]*65536*256 + mem[i+1]*65536 + mem[i+2]*256 + mem[i+3]; + cksum += data; + if (cksum < prevck) + cksum++; + prevck = cksum; + } + return cksum == 0xffffffff; +} + +#define ROM_KEY_NUM 3 +struct rom_key { + uae_u8 *key; + int size; +}; + +static struct rom_key keyring[ROM_KEY_NUM]; + +static void addkey (uae_u8 *key, int size, const TCHAR *name) +{ + int i; + + //write_log (L"addkey(%08x,%d,'%s')\n", key, size, name); + if (key == NULL || size == 0) { + xfree (key); + return; + } + for (i = 0; i < ROM_KEY_NUM; i++) { + if (keyring[i].key && keyring[i].size == size && !memcmp (keyring[i].key, key, size)) { + xfree (key); + //write_log (L"key already in keyring\n"); + return; + } + } + for (i = 0; i < ROM_KEY_NUM; i++) { + if (keyring[i].key == NULL) + break; + } + if (i == ROM_KEY_NUM) { + xfree (key); + //write_log (L"keyring full\n"); + return; + } + keyring[i].key = key; + keyring[i].size = size; + write_log (L"ROM KEY '%s' %d bytes loaded\n", name, size); +} + +static void addkeyfile (const TCHAR *path) +{ + struct zfile *f; + int keysize; + uae_u8 *keybuf; + + f = zfile_fopen (path, L"rb", ZFD_NORMAL); + if (!f) + return; + zfile_fseek (f, 0, SEEK_END); + keysize = zfile_ftell (f); + if (keysize > 0) { + zfile_fseek (f, 0, SEEK_SET); + keybuf = xmalloc (keysize); + zfile_fread (keybuf, 1, keysize, f); + addkey (keybuf, keysize, path); + } + zfile_fclose (f); +} + +void addkeydir (const TCHAR *path) +{ + TCHAR tmp[MAX_DPATH]; + + _tcscpy (tmp, path); + if (zfile_exists (tmp)) { + int i; + for (i = _tcslen (tmp) - 1; i > 0; i--) { + if (tmp[i] == '\\' || tmp[i] == '/') + break; + } + tmp[i] = 0; + } + _tcscat (tmp, L"/"); + _tcscat (tmp, L"rom.key"); + addkeyfile (tmp); +} + +int get_keyring (void) +{ + int i, num = 0; + for (i = 0; i < ROM_KEY_NUM; i++) { + if (keyring[i].key) + num++; + } + return num; +} + +int load_keyring (struct uae_prefs *p, TCHAR *path) +{ + uae_u8 *keybuf; + int keysize; + TCHAR tmp[MAX_PATH], *d; + int keyids[] = { 0, 48, -1 }; + int cnt, i; + + free_keyring (); + keybuf = target_load_keyfile (p, path, &keysize, tmp); + addkey (keybuf, keysize, tmp); + for (i = 0; keyids[i] >= 0; i++) { + struct romdata *rd = getromdatabyid (keyids[i]); + TCHAR *s; + if (rd) { + s = romlist_get (rd); + if (s) + addkeyfile (s); + } + } + + cnt = 0; + for (;;) { + keybuf = NULL; + keysize = 0; + tmp[0] = 0; + switch (cnt) + { + case 0: + if (path) + _tcscpy (tmp, path); + break; + case 1: + _tcscat (tmp, L"rom.key"); + break; + case 2: + if (p) { + _tcscpy (tmp, p->path_rom); + _tcscat (tmp, L"rom.key"); + } + break; + case 3: + _tcscpy (tmp, L"roms/rom.key"); + break; + case 4: + _tcscpy (tmp, start_path_data); + _tcscat (tmp, L"rom.key"); + break; + case 5: + _stprintf (tmp, L"%s../shared/rom/rom.key", start_path_data); + break; + case 6: + if (p) { + for (i = 0; uae_archive_extensions[i]; i++) { + if (_tcsstr (p->romfile, uae_archive_extensions[i])) + break; + } + if (!uae_archive_extensions[i]) { + _tcscpy (tmp, p->romfile); + d = _tcsrchr (tmp, '/'); + if (!d) + d = _tcsrchr (tmp, '\\'); + if (d) + _tcscpy (d + 1, L"rom.key"); + } + } + break; + case 7: + return get_keyring (); + } + cnt++; + if (!tmp[0]) + continue; + addkeyfile (tmp); + } +} +void free_keyring (void) +{ + int i; + for (i = 0; i < ROM_KEY_NUM; i++) + xfree (keyring[i].key); + memset(keyring, 0, sizeof (struct rom_key) * ROM_KEY_NUM); +} + +struct romdata *getromdatabyname (TCHAR *name) +{ + TCHAR tmp[MAX_PATH]; + int i = 0; + while (roms[i].name) { + if (!roms[i].group) { + getromname (&roms[i], tmp); + if (!_tcscmp (tmp, name) || !_tcscmp (roms[i].name, name)) + return &roms[i]; + } + i++; + } + return 0; +} + +struct romdata *getromdatabyid (int id) +{ + int i = 0; + while (roms[i].name) { + if (id == roms[i].id && roms[i].group == 0) + return &roms[i]; + i++; + } + return 0; +} + +struct romdata *getromdatabyidgroup (int id, int group, int subitem) +{ + int i = 0; + group = (group << 16) | subitem; + while (roms[i].name) { + if (id == roms[i].id && roms[i].group == group) + return &roms[i]; + i++; + } + return 0; +} + +STATIC_INLINE int notcrc32 (uae_u32 crc32) +{ + if (crc32 == 0xffffffff || crc32 == 0x00000000) + return 1; + return 0; +} + +struct romdata *getromdatabycrc (uae_u32 crc32) +{ + int i = 0; + while (roms[i].name) { + if (roms[i].group == 0 && crc32 == roms[i].crc32 && !notcrc32(crc32)) + return &roms[i]; + i++; + } + return 0; +} + +static int cmpsha1 (uae_u8 *s1, struct romdata *rd) +{ + int i; + + for (i = 0; i < SHA1_SIZE / 4; i++) { + uae_u32 v1 = (s1[0] << 24) | (s1[1] << 16) | (s1[2] << 8) | (s1[3] << 0); + uae_u32 v2 = rd->sha1[i]; + if (v1 != v2) + return -1; + s1 += 4; + } + 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; +} + +int decode_cloanto_rom_do (uae_u8 *mem, int size, int real_size) +{ + int cnt, t, i; + + for (i = ROM_KEY_NUM - 1; i >= 0; i--) { + uae_u8 sha1[SHA1_SIZE]; + struct romdata *rd; + int keysize = keyring[i].size; + uae_u8 *key = keyring[i].key; + if (!key) + continue; + for (t = cnt = 0; cnt < size; cnt++, t = (t + 1) % keysize) { + mem[cnt] ^= key[t]; + if (real_size == cnt + 1) + t = keysize - 1; + } + if ((mem[2] == 0x4e && mem[3] == 0xf9) || (mem[0] == 0x11 && (mem[1] == 0x11 || mem[1] == 0x14))) { + cloanto_rom = 1; + return 1; + } + get_sha1 (mem, size, sha1); + rd = checkromdata (sha1, size, -1); + if (rd) { + if (rd->cloanto) + cloanto_rom = 1; + return 1; + } + if (i == 0) + break; + for (t = cnt = 0; cnt < size; cnt++, t = (t + 1) % keysize) { + mem[cnt] ^= key[t]; + if (real_size == cnt + 1) + t = keysize - 1; + } + } + return 0; +} + +static int decode_rekick_rom_do (uae_u8 *mem, int size, int real_size) +{ + uae_u32 d1 = 0xdeadfeed, d0; + int i; + + for (i = 0; i < size / 8; i++) { + d0 = ((mem[i * 8 + 0] << 24) | (mem[i * 8 + 1] << 16) | (mem[i * 8 + 2] << 8) | mem[i * 8 + 3]); + d1 = d1 ^ d0; + mem[i * 8 + 0] = d1 >> 24; + mem[i * 8 + 1] = d1 >> 16; + mem[i * 8 + 2] = d1 >> 8; + mem[i * 8 + 3] = d1; + d1 = ((mem[i * 8 + 4] << 24) | (mem[i * 8 + 5] << 16) | (mem[i * 8 + 6] << 8) | mem[i * 8 + 7]); + d0 = d0 ^ d1; + mem[i * 8 + 4] = d0 >> 24; + mem[i * 8 + 5] = d0 >> 16; + mem[i * 8 + 6] = d0 >> 8; + mem[i * 8 + 7] = d0; + } + return 1; +} + +int decode_rom (uae_u8 *mem, int size, int mode, int real_size) +{ + if (mode == 1) { + if (!decode_cloanto_rom_do (mem, size, real_size)) { +#ifndef SINGLEFILE + notify_user (NUMSG_NOROMKEY); +#endif + return 0; + } + return 1; + } else if (mode == 2) { + decode_rekick_rom_do (mem, size, real_size); + return 1; + } + return 0; +} + +struct romdata *getromdatabydata (uae_u8 *rom, int 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 = xmalloc (size); + int tmpsize = size - 11; + memcpy (tmpbuf, rom + 11, tmpsize); + decode_rom (tmpbuf, tmpsize, 1, tmpsize); + rom = tmpbuf; + size = tmpsize; + } +#if 0 + if (size > 0x6c + 524288 && !memcmp (rom, "AMIG", 4)) { + uae_u8 *tmpbuf = (uae_u8*)xmalloc (size); + int tmpsize = size - 0x6c; + memcpy (tmpbuf, rom + 0x6c, tmpsize); + decode_rom (tmpbuf, tmpsize, 2, tmpsize); + rom = tmpbuf; + size = tmpsize; + } +#endif + 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); + } + } + xfree (tmpbuf); + return ret; +} + +struct romdata *getromdatabyzfile (struct zfile *f) +{ + int pos, size; + uae_u8 *p; + struct romdata *rd; + + pos = zfile_ftell (f); + zfile_fseek (f, 0, SEEK_END); + size = zfile_ftell (f); + p = xmalloc (size); + if (!p) + return 0; + memset (p, 0, size); + zfile_fseek (f, 0, SEEK_SET); + zfile_fread (p, 1, size, f); + zfile_fseek (f, pos, SEEK_SET); + rd = getromdatabydata (p, size); + xfree (p); + return rd; +} + +void getromname (struct romdata *rd, TCHAR *name) +{ + name[0] = 0; + if (!rd) + return; + while (rd->group) + rd--; + _tcscat (name, rd->name); + if ((rd->subrev || rd->subver) && rd->subver != rd->ver) + _stprintf (name + _tcslen (name), L" rev %d.%d", rd->subver, rd->subrev); + if (rd->size > 0) + _stprintf (name + _tcslen (name), L" (%dk)", (rd->size + 1023) / 1024); + if (rd->partnumber && _tcslen (rd->partnumber) > 0) + _stprintf (name + _tcslen (name), L" [%s]", rd->partnumber); +} + +struct romlist *getromlistbyromdata (struct romdata *rd) +{ + int ids[2]; + + ids[0] = rd->id; + ids[1] = 0; + return getromlistbyids(ids); +} + +struct romlist *getromlistbyids (int *ids) +{ + struct romdata *rd; + int i, j; + + i = 0; + while (ids[i] >= 0) { + rd = getromdatabyid (ids[i]); + if (rd) { + for (j = 0; j < romlist_cnt; j++) { + if (rl[j].rd->id == rd->id) + return &rl[j]; + } + } + i++; + } + return NULL; +} + +void romwarning (int *ids) +{ + int i, exp; + TCHAR tmp1[MAX_DPATH], tmp2[MAX_DPATH]; + TCHAR tmp3[MAX_DPATH]; + + exp = 0; + tmp2[0] = 0; + i = 0; + while (ids[i] >= 0) { + struct romdata *rd = getromdatabyid (ids[i]); + getromname (rd, tmp1); + _tcscat (tmp2, L"- "); + _tcscat (tmp2, tmp1); + _tcscat (tmp2, L"\n"); + if (rd->type & (ROMTYPE_A2091BOOT | ROMTYPE_A4091BOOT)) + exp++; + i++; + } + translate_message (exp ? NUMSG_EXPROMNEED : NUMSG_ROMNEED, tmp3); + gui_message (tmp3, tmp2); +} + + +static void byteswap (uae_u8 *buf, int size) +{ + int i; + for (i = 0; i < size; i += 2) { + uae_u8 t = buf[i]; + buf[i] = buf[i + 1]; + buf[i + 1] = t; + } +} +static void wordbyteswap (uae_u8 *buf, int size) +{ + int i; + for (i = 0; i < size; i += 4) { + uae_u8 t; + t = buf[i + 0]; + buf[i + 0] = buf[i + 2]; + buf[i + 2] = t; + t = buf[i + 1]; + buf[i + 1] = buf[i + 3]; + buf[i + 3] = t; + } +} + +static void mergecd32 (uae_u8 *dst, uae_u8 *src, int size) +{ + int i, k; + k = 0; + for (i = 0; i < size / 2; i += 2) { + int j = i + size / 2; + dst[k + 1] = src[i + 0]; + dst[k + 0] = src[i + 1]; + dst[k + 3] = src[j + 0]; + dst[k + 2] = src[j + 1]; + k += 4; + } +#if 0 + { + struct zfile *f; + f = zfile_fopen ("c:\\d\\1.rom","wb", ZFD_NORMAL); + zfile_fwrite (dst, 1, size, f); + zfile_fclose(f); + } +#endif +} + +static void descramble (struct romdata *rd, uae_u8 *data, int size, int odd) +{ + int flags = rd->type; + + if (flags & (ROMTYPE_NORDIC | ROMTYPE_XPOWER)) + descramble_nordicpro (data, size, odd); +} + +static int read_rom_file (uae_u8 *buf, struct romdata *rd) +{ + struct zfile *zf; + struct romlist *rl = romlist_getrl (rd); + uae_char tmp[11]; + + if (!rl || _tcslen (rl->path) == 0) + return 0; + zf = zfile_fopen (rl->path, L"rb", ZFD_NORMAL); + if (!zf) + return 0; + addkeydir (rl->path); + zfile_fread (tmp, sizeof tmp, 1, zf); + if (!memcmp (tmp, "AMIROMTYPE1", sizeof tmp)) { + zfile_fread (buf, rd->size, 1, zf); + decode_cloanto_rom_do (buf, rd->size, rd->size); + } else { + memcpy (buf, tmp, sizeof tmp); + zfile_fread (buf + sizeof tmp, rd->size - sizeof (tmp), 1, zf); + } + zfile_fclose (zf); + return 1; +} + +struct zfile *read_rom (struct romdata **prd) +{ + struct romdata *rd2 = *prd; + struct romdata *rd = *prd; + TCHAR *name; + int id = rd->id; + uae_u32 crc32; + int size; + uae_u8 *buf, *buf2; + + /* find parent node */ + for (;;) { + if (rd2 == &roms[0]) + break; + if (rd2[-1].id != id) + break; + rd2--; + } + *prd = rd2; + size = rd2->size; + crc32 = rd2->crc32; + name = rd->name; + buf = xmalloc (size * 2); + memset (buf, 0xff, size * 2); + if (!buf) + return NULL; + buf2 = buf + size; + while (rd->id == id) { + int i, j, add; + int ok = 0; + uae_u32 flags = rd->type; + int odd = (flags & ROMTYPE_ODD) ? 1 : 0; + + add = 0; + for (i = 0; i < 2; i++) { + memset (buf, 0, size); + if (!(flags & (ROMTYPE_EVEN | ROMTYPE_ODD))) { + read_rom_file (buf, rd); + if (flags & ROMTYPE_CD32) { + memcpy (buf2, buf, size); + mergecd32 (buf, buf2, size); + } + add = 1; + i++; + } else { + int romsize = size / 2; + if (i) + odd = !odd; + if (flags & ROMTYPE_8BIT) { + read_rom_file (buf2, rd); + if (flags & ROMTYPE_BYTESWAP) + byteswap (buf2, romsize); + if (flags & ROMTYPE_SCRAMBLED) + descramble (rd, buf2, romsize, odd); + for (j = 0; j < size; j += 2) + buf[j + odd] = buf2[j / 2]; + read_rom_file (buf2, rd + 1); + if (flags & ROMTYPE_BYTESWAP) + byteswap (buf2, romsize); + if (flags & ROMTYPE_SCRAMBLED) + descramble (rd + 1, buf2, romsize, !odd); + for (j = 0; j < size; j += 2) + buf[j + (1 - odd)] = buf2[j / 2]; + } else { + read_rom_file (buf2, rd); + if (flags & ROMTYPE_BYTESWAP) + byteswap (buf2, romsize); + if (flags & ROMTYPE_SCRAMBLED) + descramble (rd, buf2, romsize, odd); + for (j = 0; j < size; j += 4) { + buf[j + 2 * odd + 0] = buf2[j / 2 + 0]; + buf[j + 2 * odd + 1] = buf2[j / 2 + 1]; + } + read_rom_file (buf2, rd + 1); + if (flags & ROMTYPE_BYTESWAP) + byteswap (buf2, romsize); + if (flags & ROMTYPE_SCRAMBLED) + descramble (rd + 1, buf2, romsize, !odd); + for (j = 0; j < size; j += 4) { + buf[j + 2 * (1 - odd) + 0] = buf2[j / 2 + 0]; + buf[j + 2 * (1 - odd) + 1] = buf2[j / 2 + 1]; + } + } + add = 2; + } + if (get_crc32 (buf, size) == crc32) { + ok = 1; + } else { + /* perhaps it is byteswapped without byteswap entry? */ + byteswap (buf, size); + if (get_crc32 (buf, size) == crc32) + ok = 1; + } + if (ok) { + struct zfile *zf = zfile_fopen_empty (NULL, name, size); + if (zf) { + zfile_fwrite (buf, size, 1, zf); + zfile_fseek (zf, 0, SEEK_SET); + } + xfree (buf); + return zf; + } + } + rd += add; + + } + xfree (buf); + return NULL; +} + +struct zfile *rom_fopen (const TCHAR *name, const TCHAR *mode, int mask) +{ + struct zfile *f; + //write_log (L"attempting to load '%s'\n", name); + f = zfile_fopen (name, mode, mask); + //write_log (L"=%p\n", f); + return f; +} + +struct zfile *read_rom_name (const TCHAR *filename) +{ + int i; + struct zfile *f; + + for (i = 0; i < romlist_cnt; i++) { + if (!_tcsicmp (filename, rl[i].path)) { + struct romdata *rd = rl[i].rd; + f = read_rom (&rd); + if (f) + return f; + } + } + f = rom_fopen (filename, L"rb", ZFD_NORMAL); + if (f) { + uae_u8 tmp[11]; + zfile_fread (tmp, sizeof tmp, 1, f); + if (!memcmp (tmp, "AMIROMTYPE1", sizeof tmp)) { + struct zfile *df; + int size; + uae_u8 *buf; + addkeydir (filename); + zfile_fseek (f, 0, SEEK_END); + size = zfile_ftell (f) - sizeof tmp; + zfile_fseek (f, sizeof tmp, SEEK_SET); + buf = xmalloc (size); + zfile_fread (buf, size, 1, f); + df = zfile_fopen_empty (f, L"tmp.rom", size); + decode_cloanto_rom_do (buf, size, size); + zfile_fwrite (buf, size, 1, df); + zfile_fclose (f); + xfree (buf); + zfile_fseek (df, 0, SEEK_SET); + f = df; + } else { + zfile_fseek (f, -((int)sizeof tmp), SEEK_CUR); + } + } + return f; +} + +struct zfile *read_rom_name_guess (const TCHAR *filename) +{ + int i, j; + struct zfile *f; + const TCHAR *name; + + for (i = _tcslen (filename) - 1; i >= 0; i--) { + if (filename[i] == '/' || filename[i] == '\\') + break; + } + if (i < 0) + return NULL; + name = &filename[i]; + + for (i = 0; i < romlist_cnt; i++) { + TCHAR *n = rl[i].path; + for (j = _tcslen (n) - 1; j >= 0; j--) { + if (n[j] == '/' || n[j] == '\\') + break; + } + if (j < 0) + continue; + if (!_tcsicmp (name, n + j)) { + struct romdata *rd = rl[i].rd; + f = read_rom (&rd); + if (f) { + write_log (L"ROM %s not found, using %s\n", filename, rl[i].path); + return f; + } + } + } + return NULL; +} + +void kickstart_fix_checksum (uae_u8 *mem, int size) +{ + uae_u32 cksum = 0, prevck = 0; + int i, ch = size == 524288 ? 0x7ffe8 : 0x3e; + + mem[ch] = 0; + mem[ch + 1] = 0; + mem[ch + 2] = 0; + mem[ch + 3] = 0; + for (i = 0; i < size; i+=4) { + uae_u32 data = (mem[i] << 24) | (mem[i + 1] << 16) | (mem[i + 2] << 8) | mem[i + 3]; + cksum += data; + if (cksum < prevck) + cksum++; + prevck = cksum; + } + cksum ^= 0xffffffff; + mem[ch++] = cksum >> 24; + mem[ch++] = cksum >> 16; + mem[ch++] = cksum >> 8; + mem[ch++] = cksum >> 0; +} + +int kickstart_checksum (uae_u8 *mem, int size) +{ + if (!kickstart_checksum_do (mem, size)) { +#ifndef SINGLEFILE + notify_user (NUMSG_KSROMCRCERROR); +#endif + return 0; + } + return 1; +} + +int configure_rom (struct uae_prefs *p, int *rom, int msg) +{ + struct romdata *rd; + TCHAR *path = 0; + int i; + + i = 0; + while (rom[i] >= 0) { + rd = getromdatabyid (rom[i]); + if (!rd) { + i++; + continue; + } + path = romlist_get (rd); + if (path) + break; + i++; + } + if (!path) { + if (msg) + romwarning(rom); + return 0; + } + if (rd->type & (ROMTYPE_KICK | ROMTYPE_KICKCD32)) + _tcscpy (p->romfile, path); + if (rd->type & (ROMTYPE_EXTCD32 | ROMTYPE_EXTCDTV | ROMTYPE_ARCADIABIOS)) + _tcscpy (p->romextfile, path); + if (rd->type & (ROMTYPE_CD32CART | ROMTYPE_ARCADIAGAME | ROMTYPE_HRTMON | ROMTYPE_XPOWER | ROMTYPE_NORDIC | ROMTYPE_AR | ROMTYPE_SUPERIV)) + _tcscpy (p->cartfile, path); + return 1; +} diff --git a/uaeunp.c b/uaeunp.c index 051ab0ba..86b6c797 100644 --- a/uaeunp.c +++ b/uaeunp.c @@ -15,7 +15,7 @@ TCHAR start_path_data[MAX_DPATH]; TCHAR sep[] = { FSDB_DIR_SEPARATOR, 0 }; struct uae_prefs currprefs; -static int debug = 0; +static int debug = 1; static int amigatest; #define WRITE_LOG_BUF_SIZE 4096 diff --git a/zfile.c b/zfile.c index 1f59618b..52c174f6 100644 --- a/zfile.c +++ b/zfile.c @@ -864,7 +864,9 @@ static struct zfile *ipf (struct zfile *z, int index, int *retcode) zd->tracks = tracks; for (i = 0; i < tracks; i++) { uae_u8 *buf, *p; - caps_loadrevolution (mfm, 0, i, &len); + int mrev, gapo; + caps_loadtrack (mfm, NULL, 0, i, &len, &mrev, &gapo); + //write_log (L"%d: %d %d %d\n", i, mrev, gapo, len); len /= 8; buf = p = xmalloc (len); for (j = 0; j < len / 2; j++) { diff --git a/zfile_archive.c b/zfile_archive.c index cfec72df..ea201503 100644 --- a/zfile_archive.c +++ b/zfile_archive.c @@ -604,16 +604,6 @@ static RARSETCALLBACK pRARSetCallback; typedef int (_stdcall* RARGETDLLVERSION)(void); static RARGETDLLVERSION pRARGetDllVersion; -static int rar_resetf (struct zfile *z) -{ - z->f = _tfopen (z->name, L"rb"); - if (!z->f) { - zfile_fclose (z); - return 0; - } - return 1; -} - static int canrar (void) { static int israr; @@ -670,6 +660,15 @@ struct RARContext HANDLE hArcData; }; +static int rar_resetf (struct zfile *z) +{ + z->f = _tfopen (z->name, z->mode); + if (!z->f) { + zfile_fclose (z); + return 0; + } + return 1; +} static void archive_close_rar (struct RARContext *rc) { @@ -690,17 +689,17 @@ struct zvolume *archive_directory_rar (struct zfile *z) return archive_directory_arcacc (z, ArchiveFormatRAR); rc = xcalloc (sizeof (struct RARContext), 1); zv = zvolume_alloc (z, ArchiveFormatRAR, rc, NULL); - fclose (z->f); /* bleh, unrar.dll fails to open the archive if it is already open.. */ - z->f = NULL; + //fclose (z->f); /* bleh, unrar.dll fails to open the archive if it is already open.. */ + //z->f = NULL; rc->OpenArchiveData.ArcNameW = z->name; rc->OpenArchiveData.OpenMode = RAR_OM_LIST; rc->hArcData = pRAROpenArchiveEx (&rc->OpenArchiveData); if (rc->OpenArchiveData.OpenResult != 0) { xfree (rc); - if (!rar_resetf (z)) { - zfile_fclose_archive (zv); - return NULL; - } +// if (!rar_resetf (z)) { +// zfile_fclose_archive (zv); +// return NULL; +// } zfile_fclose_archive (zv); return archive_directory_arcacc (z, ArchiveFormatRAR); }