From 67ca297825148824f400e8b3078a98474d2f1bb9 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 27 Nov 2005 14:49:31 +0200 Subject: [PATCH] imported winuaesrc1200b1.zip --- cfgfile.c | 2 + compemu_fpp.c | 752 ++++++++------------ compemu_raw_x86.c | 35 +- compemu_support.c | 1 - custom.c | 6 +- disk.c | 5 +- drawing.c | 118 ++- filesys.c | 10 +- fpp.c | 390 +++++----- gfxutil.c | 9 + include/custom.h | 3 + include/options.h | 6 +- inputdevice.c | 9 +- memory.c | 11 +- od-win32/avioutput.c | 5 +- od-win32/build68k_msvc/build68k.rc | 61 ++ od-win32/build68k_msvc/build68k_msvc.vcproj | 15 +- od-win32/build68k_msvc/resource.h | 14 + od-win32/direct3d.c | 34 +- od-win32/dxwrap.c | 42 +- od-win32/hardfile_win32.c | 154 +++- od-win32/lcd.c | 166 +++++ od-win32/lcd.h | 3 + od-win32/md-fpp.h | 197 +++-- od-win32/mman.c | 3 - od-win32/resources/resource.h | 14 +- od-win32/resources/resource.hm | 3 - od-win32/resources/winuae.rc | 547 +++++++------- od-win32/sysconfig.h | 1 + od-win32/win32.c | 22 +- od-win32/win32.h | 4 +- od-win32/win32gfx.c | 96 +-- od-win32/win32gui.c | 37 +- od-win32/winuae_msvc/winuae_msvc.vcproj | 25 +- 34 files changed, 1699 insertions(+), 1101 deletions(-) create mode 100755 od-win32/build68k_msvc/build68k.rc create mode 100755 od-win32/build68k_msvc/resource.h create mode 100755 od-win32/lcd.c create mode 100755 od-win32/lcd.h diff --git a/cfgfile.c b/cfgfile.c index 796a4a85..780e5e89 100755 --- a/cfgfile.c +++ b/cfgfile.c @@ -352,6 +352,7 @@ static void save_options (struct zfile *f, struct uae_prefs *p, int type) cfgfile_write (f, "gfx_refreshrate=%d\n", p->gfx_refreshrate); cfgfile_write (f, "gfx_vsync=%s\n", p->gfx_vsync ? "true" : "false"); cfgfile_write (f, "gfx_lores=%s\n", p->gfx_lores ? "true" : "false"); + cfgfile_write (f, "gfx_lores_mode=%s\n", p->gfx_lores_mode ? 1 : 0); cfgfile_write (f, "gfx_linemode=%s\n", linemode1[p->gfx_linedbl]); cfgfile_write (f, "gfx_correct_aspect=%s\n", p->gfx_correct_aspect ? "true" : "false"); cfgfile_write (f, "gfx_fullscreen_amiga=%s\n", p->gfx_afullscreen ? "true" : "false"); @@ -677,6 +678,7 @@ static int cfgfile_parse_host (struct uae_prefs *p, char *option, char *value) || cfgfile_yesno (option, value, "filesys_no_fsdb", &p->filesys_no_uaefsdb) || cfgfile_yesno (option, value, "gfx_vsync", &p->gfx_vsync) || cfgfile_yesno (option, value, "gfx_lores", &p->gfx_lores) + || cfgfile_yesno (option, value, "gfx_lores_mode", &p->gfx_lores_mode) || cfgfile_yesno (option, value, "gfx_correct_aspect", &p->gfx_correct_aspect) || cfgfile_yesno (option, value, "gfx_fullscreen_amiga", &p->gfx_afullscreen) || cfgfile_yesno (option, value, "gfx_fullscreen_picasso", &p->gfx_pfullscreen) diff --git a/compemu_fpp.c b/compemu_fpp.c index 795805e1..82e96df2 100755 --- a/compemu_fpp.c +++ b/compemu_fpp.c @@ -5,7 +5,8 @@ * * Copyright 1996 Herman ten Brugge * Adapted for JIT compilation (c) Bernd Meyer, 2000 - */ + * Modified 2005 Peter Keunecke + */ #include @@ -25,11 +26,34 @@ #define MAKE_FPSR(r) do { fmov_rr(FP_RESULT,r); } while (0) -#define delay //nop() ;nop() -#define delay2 //nop() ;nop() +#define delay //nop() ;nop() /* Who tried this with the JIT ? */ +#define delay2 //nop() ;nop() /* the delays will have to emit( ;-) */ uae_s32 temp_fp[3]; /* To convert between FP/integer */ +/* 128 words, indexed through the low byte of the 68k fpu control word */ +static uae_u16 x86_fpucw[]={ + 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, /* p0r0 */ + 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, /* p0r1 */ + 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, /* p0r2 */ + 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, /* p0r3 */ + + 0x107f, 0x107f, 0x107f, 0x107f, 0x107f, 0x107f, 0x107f, 0x107f, /* p1r0 */ + 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, 0x1c7f, /* p1r1 */ + 0x147f, 0x147f, 0x147f, 0x147f, 0x147f, 0x147f, 0x147f, 0x147f, /* p1r2 */ + 0x187f, 0x187f, 0x187f, 0x187f, 0x187f, 0x187f, 0x187f, 0x187f, /* p1r3 */ + + 0x127f, 0x127f, 0x127f, 0x127f, 0x127f, 0x127f, 0x127f, 0x127f, /* p2r0 */ + 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, 0x1e7f, /* p2r1 */ + 0x167f, 0x167f, 0x167f, 0x167f, 0x167f, 0x167f, 0x167f, 0x167f, /* p2r2 */ + 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, 0x1a7f, /* p2r3 */ + + 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, 0x137f, /* p3r0 */ + 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, 0x1f7f, /* p3r1 */ + 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, 0x177f, /* p3r2 */ + 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f, 0x1b7f /* p3r3 */ +}; + /* return register number, or -1 for failure */ STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra) { @@ -97,7 +121,7 @@ STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra) case 4: case 5: case 6: - break; + break; default: return -1; } @@ -114,7 +138,7 @@ STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra) break; case 4: ad=S1; - + lea_l_brr(reg+8,reg+8,-(reg == 7?sz2[size]:sz1[size])); mov_l_rr(ad,reg+8); break; @@ -164,7 +188,7 @@ STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra) tmp = next_iword (); ad = get_disp_ea_020 (tmppc, tmp); break; - case 4: + case 4: { uae_u32 address=start_pc+((char *)comp_pc_p-(char *)start_pc_p)+ m68k_pc_offset; @@ -260,24 +284,56 @@ STATIC_INLINE int put_fp_value (int val, uae_u32 opcode, uae_u16 extra) switch (mode) { case 0: switch (size) { - case 6: + case 6: /* FMOVE.B FPx, reg */ +#if USE_X86_FPUCW + if (!(regs.fpcr & 0xf0)) { /* if extended round to nearest */ + mov_l_ri(S1,0x10); /* use extended round to zero mode */ + fldcw_m_indexed(S1,(uae_u32)x86_fpucw); + fmovi_mr((uae_u32)temp_fp,val); + mov_b_rm(reg,(uae_u32)temp_fp); + mov_l_rm(S1,(uae_u32)®s.fpcr); + and_l_ri(S1,0xf0); /* restore control word */ + fldcw_m_indexed(S1,(uae_u32)x86_fpucw); + return 0; + } +#endif fmovi_mr((uae_u32)temp_fp,val); - delay; mov_b_rm(reg,(uae_u32)temp_fp); return 0; - case 4: + case 4: /* FMOVE.W FPx, reg */ +#if USE_X86_FPUCW + if (!(regs.fpcr & 0xf0)) { /* if extended round to nearest */ + mov_l_ri(S1,0x10); /* use extended round to zero mode */ + fldcw_m_indexed(S1,(uae_u32)x86_fpucw); + fmovi_mr((uae_u32)temp_fp,val); + mov_w_rm(reg,(uae_u32)temp_fp); + mov_l_rm(S1,(uae_u32)®s.fpcr); + and_l_ri(S1,0xf0); /* restore control word */ + fldcw_m_indexed(S1,(uae_u32)x86_fpucw); + return 0; + } +#endif fmovi_mr((uae_u32)temp_fp,val); - delay; mov_w_rm(reg,(uae_u32)temp_fp); return 0; - case 0: + case 0: /* FMOVE.L FPx, reg */ +#if USE_X86_FPUCW + if (!(regs.fpcr & 0xf0)) { /* if extended round to nearest */ + mov_l_ri(S1,0x10); /* use extended round to zero mode */ + fldcw_m_indexed(S1,(uae_u32)x86_fpucw); + fmovi_mr((uae_u32)temp_fp,val); + mov_l_rm(reg,(uae_u32)temp_fp); + mov_l_rm(S1,(uae_u32)®s.fpcr); + and_l_ri(S1,0xf0); /* restore control word */ + fldcw_m_indexed(S1,(uae_u32)x86_fpucw); + return 0; + } +#endif fmovi_mr((uae_u32)temp_fp,val); - delay; mov_l_rm(reg,(uae_u32)temp_fp); return 0; case 1: fmovs_mr((uae_u32)temp_fp,val); - delay; mov_l_rm(reg,(uae_u32)temp_fp); return 0; default: @@ -302,7 +358,7 @@ STATIC_INLINE int put_fp_value (int val, uae_u32 opcode, uae_u16 extra) default: return -1; } - + switch (mode) { case 2: ad=S1; @@ -523,28 +579,27 @@ void comp_fscc_opp (uae_u32 opcode, uae_u16 extra) return; } if ((opcode & 0x38) != 0) { /* We can only do to integer register */ - FAIL(1); + FAIL(1); return; } fflags_into_flags(S2); reg=(opcode&7); - + mov_l_ri(S1,255); mov_l_ri(S4,0); - switch(extra&0x0f) { /* according to fpp.c, the 0x10 bit is ignored - */ + switch(extra&0x0f) { /* according to fpp.c, the 0x10 bit is ignored */ case 0: break; /* set never */ - case 1: mov_l_rr(S2,S4); - cmov_l_rr(S4,S1,4); + case 1: mov_l_rr(S2,S4); + cmov_l_rr(S4,S1,4); cmov_l_rr(S4,S2,10); break; case 2: cmov_l_rr(S4,S1,7); break; case 3: cmov_l_rr(S4,S1,3); break; - case 4: mov_l_rr(S2,S4); - cmov_l_rr(S4,S1,2); + case 4: mov_l_rr(S2,S4); + cmov_l_rr(S4,S1,2); cmov_l_rr(S4,S2,10); break; - case 5: mov_l_rr(S2,S4); - cmov_l_rr(S4,S1,6); + case 5: mov_l_rr(S2,S4); + cmov_l_rr(S4,S1,6); cmov_l_rr(S4,S2,10); break; case 6: cmov_l_rr(S4,S1,5); break; case 7: cmov_l_rr(S4,S1,11); break; @@ -622,49 +677,49 @@ void comp_fbcc_opp (uae_u32 opcode) fflags_into_flags(S2); // mov_l_mi((uae_u32)&foink3,cc); - switch(cc) { + switch(cc) { case 0: break; /* jump never */ - case 1: - mov_l_rr(S2,PC_P); - cmov_l_rr(PC_P,S1,4); + case 1: + mov_l_rr(S2,PC_P); + cmov_l_rr(PC_P,S1,4); cmov_l_rr(PC_P,S2,10); break; case 2: register_branch(v1,v2,7); break; case 3: register_branch(v1,v2,3); break; - case 4: - mov_l_rr(S2,PC_P); - cmov_l_rr(PC_P,S1,2); + case 4: + mov_l_rr(S2,PC_P); + cmov_l_rr(PC_P,S1,2); cmov_l_rr(PC_P,S2,10); break; case 5: - mov_l_rr(S2,PC_P); - cmov_l_rr(PC_P,S1,6); + mov_l_rr(S2,PC_P); + cmov_l_rr(PC_P,S1,6); cmov_l_rr(PC_P,S2,10); break; case 6: register_branch(v1,v2,5); break; case 7: register_branch(v1,v2,11); break; case 8: register_branch(v1,v2,10); break; case 9: register_branch(v1,v2,4); break; - case 10: - cmov_l_rr(PC_P,S1,10); + case 10: + cmov_l_rr(PC_P,S1,10); cmov_l_rr(PC_P,S1,7); break; - case 11: - cmov_l_rr(PC_P,S1,4); + case 11: + cmov_l_rr(PC_P,S1,4); cmov_l_rr(PC_P,S1,3); break; case 12: register_branch(v1,v2,2); break; case 13: register_branch(v1,v2,6); break; - case 14: - cmov_l_rr(PC_P,S1,5); + case 14: + cmov_l_rr(PC_P,S1,5); cmov_l_rr(PC_P,S1,10); break; case 15: mov_l_rr(PC_P,S1); break; } } - /* Floating point conditions + /* Floating point conditions The "NotANumber" part could be problematic; Howver, when NaN is encountered, the ftst instruction sets bot N and Z to 1 on the x87, so quite often things just fall into place. This is probably not accurate wrt the 68k FPU, but it is *as* accurate as this was before. However, some more thought should go into fixing this stuff up so it accurately emulates the 68k FPU. ->====> 11) & 3) { - case 0: /* static pred */ + case 0: /* static pred */ list = extra & 0xff; incr = -1; break; - case 2: /* static postinc */ + case 2: /* static postinc */ list = extra & 0xff; incr = 1; break; - case 1: /* dynamic pred */ - case 3: /* dynamic postinc */ + case 1: /* dynamic pred */ + case 3: /* dynamic postinc */ abort(); } while (list) { @@ -960,13 +990,13 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra) if (incr < 0) { /* Predecrement */ fmov_ext_mr((uae_u32)temp_fp,fpp_movem_index2[list]); delay; - sub_l_ri(ad,4); + sub_l_ri(ad,4); mov_l_rm(S2,(uae_u32)temp_fp); writelong_clobber(ad,S2,S3); - sub_l_ri(ad,4); + sub_l_ri(ad,4); mov_l_rm(S2,(uae_u32)temp_fp+4); writelong_clobber(ad,S2,S3); - sub_l_ri(ad,4); + sub_l_ri(ad,4); mov_w_rm(S2,(uae_u32)temp_fp+8); writeword_clobber(ad,S2,S3); } else { /* postinc */ @@ -997,7 +1027,7 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra) case 2: break; case 1: - case 3: + case 3: default: FAIL(1); return; } @@ -1011,16 +1041,16 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra) return; } switch ((extra >> 11) & 3) { - case 0: /* static pred */ + case 0: /* static pred */ list = extra & 0xff; incr = -1; break; - case 2: /* static postinc */ + case 2: /* static postinc */ list = extra & 0xff; incr = 1; break; - case 1: /* dynamic pred */ - case 3: /* dynamic postinc */ + case 1: /* dynamic pred */ + case 3: /* dynamic postinc */ abort(); } @@ -1077,12 +1107,12 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra) } } else { if (extra & 0x1000) { - mov_l_mr((uae_u32)®s.fpcr,opcode & 15); + mov_l_mr((uae_u32)®s.fpcr,opcode & 15); #if USE_X86_FPUCW mov_l_rr(S1,opcode & 15); - and_l_ri(S1,0x000000f0); + and_l_ri(S1,0xf0); fldcw_m_indexed(S1,(uae_u32)x86_fpucw); -#endif +#endif return; } if (extra & 0x0800) { @@ -1100,9 +1130,9 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra) uae_u32 val=comp_get_ilong((m68k_pc_offset+=4)-4); mov_l_mi((uae_u32)®s.fpcr,val); #if USE_X86_FPUCW - mov_l_ri(S1,val&0x000000f0); + mov_l_ri(S1,val&0xf0); fldcw_m_indexed(S1,(uae_u32)x86_fpucw); -#endif +#endif return; } if (extra & 0x0800) { @@ -1129,443 +1159,303 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra) case 0: case 2: /* Extremely common */ - reg = (extra >> 7) & 7; + dreg = (extra >> 7) & 7; if ((extra & 0xfc00) == 0x5c00) { - switch (extra & 0x7f) { + //write_log ("JIT FMOVECR %x\n", extra & 0x7f); + dont_care_fflags(); + switch (extra & 0x7f) { case 0x00: - fmov_pi(reg); + fmov_pi(dreg); break; case 0x0b: - fmov_log10_2(reg); + fmov_log10_2(dreg); break; case 0x0c: - fmov_rm(reg,(uae_u32)&const_e); + fmov_ext_rm(dreg,&xhex_exp_1); break; case 0x0d: - fmov_log2_e(reg); + fmov_log2_e(dreg); break; case 0x0e: - fmov_rm(reg,(uae_u32)&const_log10_e); + fmov_ext_rm(dreg,&xhex_l10_e); break; case 0x0f: - fmov_0(reg); + fmov_0(dreg); break; case 0x30: - fmov_loge_2(reg); + fmov_loge_2(dreg); break; case 0x31: - fmov_rm(reg,(uae_u32)&const_loge_10); + fmov_ext_rm(dreg,&xhex_ln_10); break; case 0x32: - fmov_1(reg); + fmov_1(dreg); break; case 0x33: + fmovs_rm(dreg,&fp_1e1); + break; case 0x34: + fmovs_rm(dreg,&fp_1e2); + break; case 0x35: + fmovs_rm(dreg,&fp_1e4); + break; case 0x36: + fmov_rm(dreg,&fp_1e8); + break; case 0x37: + fmov_ext_rm(dreg,&xhex_1e16); + break; case 0x38: + fmov_ext_rm(dreg,&xhex_1e32); + break; case 0x39: + fmov_ext_rm(dreg,&xhex_1e64); + break; case 0x3a: + fmov_ext_rm(dreg,&xhex_1e128); + break; case 0x3b: - fmov_rm(reg,(uae_u32)(power10+(extra & 0x7f)-0x32)); + fmov_ext_rm(dreg,&xhex_1e256); + break; + case 0x3c: + fmov_ext_rm(dreg,&xhex_1e512); + break; + case 0x3d: + fmov_ext_rm(dreg,&xhex_1e1024); + break; + case 0x3e: + fmov_ext_rm(dreg,&xhex_1e2048); + break; + case 0x3f: + fmov_ext_rm(dreg,&xhex_1e4096); break; default: - /* This is not valid, so we fail */ FAIL(1); return; } + MAKE_FPSR (dreg); return; } - + switch (extra & 0x7f) { - case 0x00: /* FMOVE */ - case 0x40: /* Explicit rounding. This is just a quick fix. Same - * for all other cases that have three choices */ - case 0x44: + case 0x00: /* FMOVE */ + case 0x40: + case 0x44: dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fmov_rr(reg,src); - MAKE_FPSR (src); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fmov_rr(dreg,sreg); break; - case 0x01: /* FINT */ + case 0x01: /* FINT */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - frndint_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + frndint_rr(dreg,sreg); break; - case 0x02: /* FSINH */ + case 0x02: /* FSINH */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fsinh_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fsinh_rr(dreg,sreg); break; - case 0x03: /* FINTRZ */ -#if USE_X86_FPUCW + case 0x03: /* FINTRZ */ +#if USE_X86_FPUCW /* If we have control over the CW, we can do this */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + if ((regs.fpcr & 0x30) == 0x10) /* maybe unsafe, because this test is done */ + frndint_rr(dreg,sreg); /* during the JIT compilation and not at runtime */ + else { + mov_l_ri(S1,(regs.fpcr & 0xC0) | 0x10); /* use round to zero */ + fldcw_m_indexed(S1,(uae_u32)x86_fpucw); + frndint_rr(dreg,sreg); + mov_l_rm(S1,(uae_u32)®s.fpcr); + and_l_ri(S1,0xf0); /* restore control word */ + fldcw_m_indexed(S1,(uae_u32)x86_fpucw); } - mov_l_ri(S1,16); /* Switch to "round to zero" mode */ - fldcw_m_indexed(S1,(uae_u32)x86_fpucw); - - frndint_rr(reg,src); - - /* restore control word */ - mov_l_rm(S1,(uae_u32)®s.fpcr); - and_l_ri(S1,0x000000f0); - fldcw_m_indexed(S1,(uae_u32)x86_fpucw); - - MAKE_FPSR (reg); break; -#endif - FAIL(1); +#endif + FAIL(1); return; - regs.fp[reg] = (int) src; - MAKE_FPSR (regs.fp[reg]); - break; - case 0x04: /* FSQRT */ + case 0x04: /* FSQRT */ case 0x41: case 0x45: dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fsqrt_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fsqrt_rr(dreg,sreg); break; - case 0x06: /* FLOGNP1 */ + case 0x06: /* FLOGNP1 */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - flogNP1_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + flogNP1_rr(dreg,sreg); break; - case 0x08: /* FETOXM1 */ + case 0x08: /* FETOXM1 */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fetoxM1_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fetoxM1_rr(dreg,sreg); break; - case 0x09: /* FTANH */ + case 0x09: /* FTANH */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - ftanh_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + ftanh_rr(dreg,sreg); break; - case 0x0a: /* FATAN */ + case 0x0a: /* FATAN */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fatan_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fatan_rr(dreg,sreg); break; - case 0x0c: /* FASIN */ + case 0x0c: /* FASIN */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fasin_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fasin_rr(dreg,sreg); break; - case 0x0d: /* FATANH */ + case 0x0d: /* FATANH */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fatanh_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fatanh_rr(dreg,sreg); break; - case 0x0e: /* FSIN */ + case 0x0e: /* FSIN */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fsin_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fsin_rr(dreg,sreg); break; - case 0x0f: /* FTAN */ + case 0x0f: /* FTAN */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - ftan_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + ftan_rr(dreg,sreg); break; - case 0x10: /* FETOX */ + case 0x10: /* FETOX */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fetox_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fetox_rr(dreg,sreg); break; - case 0x11: /* FTWOTOX */ + case 0x11: /* FTWOTOX */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - ftwotox_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + ftwotox_rr(dreg,sreg); break; - case 0x12: /* FTENTOX */ + case 0x12: /* FTENTOX */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - ftentox_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + ftentox_rr(dreg,sreg); break; - case 0x14: /* FLOGN */ + case 0x14: /* FLOGN */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - flogN_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + flogN_rr(dreg,sreg); break; - - case 0x15: /* FLOG10 */ + case 0x15: /* FLOG10 */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - flog10_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + flog10_rr(dreg,sreg); break; - - case 0x16: /* FLOG2 */ + case 0x16: /* FLOG2 */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - flog2_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + flog2_rr(dreg,sreg); break; - case 0x18: /* FABS */ + case 0x18: /* FABS */ case 0x58: case 0x5c: dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fabs_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fabs_rr(dreg,sreg); break; - case 0x19: /* FCOSH */ + case 0x19: /* FCOSH */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fcosh_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fcosh_rr(dreg,sreg); break; - case 0x1a: /* FNEG */ + case 0x1a: /* FNEG */ case 0x5a: case 0x5e: dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fneg_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fneg_rr(dreg,sreg); break; - case 0x1c: /* FACOS */ + case 0x1c: /* FACOS */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} +#if USE_X86_FPUCW + if ((regs.fpcr & 0x30) != 0x10) { + mov_l_ri(S1,(regs.fpcr & 0xC0) | 0x10); /* use round to zero */ + fldcw_m_indexed(S1,(uae_u32)x86_fpucw); + facos_rr(dreg,sreg); + mov_l_rm(S1,(uae_u32)®s.fpcr); + and_l_ri(S1,0xf0); /* restore control word */ + fldcw_m_indexed(S1,(uae_u32)x86_fpucw); + break; } - facos_rr(reg,src); - MAKE_FPSR (reg); +#endif + facos_rr(dreg,sreg); break; - case 0x1d: /* FCOS */ + case 0x1d: /* FCOS */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fcos_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fcos_rr(dreg,sreg); break; - case 0x1e: /* FGETEXP */ + case 0x1e: /* FGETEXP */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fgetexp_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fgetexp_rr(dreg,sreg); break; - case 0x1f: /* FGETMAN */ + case 0x1f: /* FGETMAN */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fgetman_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fgetman_rr(dreg,sreg); break; - case 0x20: /* FDIV */ + case 0x20: /* FDIV */ case 0x60: case 0x64: dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fdiv_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fdiv_rr(dreg,sreg); break; - case 0x21: /* FMOD */ + case 0x21: /* FMOD */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - frem_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + frem_rr(dreg,sreg); break; - case 0x22: /* FADD */ + case 0x22: /* FADD */ case 0x62: case 0x66: dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fadd_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fadd_rr(dreg,sreg); break; - case 0x23: /* FMUL */ + case 0x23: /* FMUL */ case 0x63: case 0x67: dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fmul_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fmul_rr(dreg,sreg); break; - case 0x24: /* FSGLDIV */ + case 0x24: /* FSGLDIV */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fdiv_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fdiv_rr(dreg,sreg); break; - case 0x25: /* FREM */ + case 0x25: /* FREM */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - frem1_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + frem1_rr(dreg,sreg); break; - case 0x26: /* FSCALE */ + case 0x26: /* FSCALE */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fscale_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fscale_rr(dreg,sreg); break; - case 0x27: /* FSGLMUL */ + case 0x27: /* FSGLMUL */ dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fmul_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fmul_rr(dreg,sreg); break; - case 0x28: /* FSUB */ + case 0x28: /* FSUB */ case 0x68: case 0x6c: dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fsub_rr(reg,src); - MAKE_FPSR (reg); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fsub_rr(dreg,sreg); break; - case 0x30: /* FSINCOS */ + case 0x30: /* FSINCOS */ case 0x31: case 0x32: case 0x33: @@ -1574,43 +1464,29 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra) case 0x36: case 0x37: dont_care_fflags(); - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - if (reg == (extra & 7)) - fsin_rr(reg, src); + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + if (dreg == (extra & 7)) + fsin_rr(dreg, sreg); else - fsincos_rr(reg, extra & 7, src); - MAKE_FPSR (reg); - break; - case 0x38: /* FCMP */ - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fmov_rr(FP_RESULT,reg); - fsub_rr(FP_RESULT,src); /* Right way? */ - break; - case 0x3a: /* FTST */ - src=get_fp_value (opcode, extra); - if (src < 0) { - FAIL(1); /* Illegal instruction */ - return; - } - fmov_rr(FP_RESULT,src); + fsincos_rr(dreg, extra & 7, sreg); break; + case 0x38: /* FCMP */ + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fmov_rr(FP_RESULT,dreg); + fsub_rr(FP_RESULT,sreg); /* Right way? */ + return; + case 0x3a: /* FTST */ + if ((sreg=get_fp_value(opcode,extra)) < 0) {FAIL(1);return;} + fmov_rr(FP_RESULT,sreg); + return; default: - FAIL(1); + FAIL(1); return; - break; } + MAKE_FPSR (dreg); return; } m68k_setpc (m68k_getpc () - 4); op_illg (opcode); } - #endif diff --git a/compemu_raw_x86.c b/compemu_raw_x86.c index 049f8eeb..e06cc39d 100755 --- a/compemu_raw_x86.c +++ b/compemu_raw_x86.c @@ -2526,7 +2526,7 @@ static void raw_init_cpu(void) c->x86_model = c->x86_mask = 0; /* So far unknown... */ c->x86_vendor_id[0] = '\0'; /* Unset */ c->x86_hwcap = 0; - + /* Get vendor name */ c->x86_vendor_id[12] = '\0'; cpuid(0x00000000, @@ -2568,7 +2568,7 @@ static void raw_init_cpu(void) } } } - + /* Canonicalize processor ID */ switch (c->x86) { case 3: @@ -3049,14 +3049,13 @@ LOWFUNC(NONE,NONE,2,raw_fmov_rr,(FW d, FR s)) } LENDFUNC(NONE,NONE,2,raw_fmov_rr,(FW d, FR s)) -LOWFUNC(NONE,READ,4,raw_fldcw_m_indexed,(R4 index, IMM base)) +LOWFUNC(NONE,READ,2,raw_fldcw_m_indexed,(R4 index, IMM base)) { emit_byte(0xd9); emit_byte(0xa8+index); emit_long(base); } -LENDFUNC(NONE,READ,4,raw_fldcw_m_indexed,(R4 index, IMM base)) - +LENDFUNC(NONE,READ,2,raw_fldcw_m_indexed,(R4 index, IMM base)) LOWFUNC(NONE,NONE,2,raw_fsqrt_rr,(FW d, FR s)) { @@ -3500,29 +3499,33 @@ LOWFUNC(NONE,NONE,2,raw_fasin_rr,(FW d, FR s)) } LENDFUNC(NONE,NONE,2,raw_fasin_rr,(FW d, FR s)) +static uae_u32 pihalf[] = {0x2168c234, 0xc90fdaa2, 0x3fff}; // LSB=0 to get acos(1)=0 LOWFUNC(NONE,NONE,2,raw_facos_rr,(FW d, FR s)) { int ds; ds=stackpos(s); emit_byte(0xd9); - emit_byte(0xe8); /* fld 1.0 */ - emit_byte(0xd9); - emit_byte(0xc1+ds); /* fld x */ + emit_byte(0xc0+ds); /* fld x */ emit_byte(0xd8); emit_byte(0xc8); /* fmul x*x */ - emit_byte(0xd8); - emit_byte(0xe9); /* fsubr 1 - (x^2) */ + emit_byte(0xd9); + emit_byte(0xe8); /* fld 1.0 */ + emit_byte(0xde); + emit_byte(0xe1); /* fsubrp 1 - (x^2) */ emit_byte(0xd9); emit_byte(0xfa); /* fsqrt sqrt(1-(x^2)) */ emit_byte(0xd9); - emit_byte(0xc9); /* fxch swap with 1.0 */ - emit_byte(0xd8); - emit_byte(0xc2+ds); /* fadd 1 + x */ + emit_byte(0xc1+ds); /* fld x again */ emit_byte(0xd9); - emit_byte(0xf3); /* fpatan atan(sqrt(1-(x^2))/(1+x)) & pop */ - emit_byte(0xd8); - emit_byte(0xc0); /* fadd 2*atan(sqrt(1-(x^2))/(1+x)) */ + emit_byte(0xc9); /* fxch swap x with sqrt(1-(x^2)) */ + emit_byte(0xd9); + emit_byte(0xf3); /* fpatan atan(x/sqrt(1-(x^2))) & pop */ + emit_byte(0xdb); + emit_byte(0x2d); + emit_long((uae_u32)&pihalf); /* fld load pi/2 from pihalf */ + emit_byte(0xde); + emit_byte(0xe1); /* fsubrp pi/2 - asin(x) & pop */ tos_make(d); /* store y=acos(x) */ } LENDFUNC(NONE,NONE,2,raw_facos_rr,(FW d, FR s)) diff --git a/compemu_support.c b/compemu_support.c index 88af2db4..343e823e 100755 --- a/compemu_support.c +++ b/compemu_support.c @@ -4502,7 +4502,6 @@ MIDFUNC(2,fmul_rr,(FRW d, FR s)) } MENDFUNC(2,fmul_rr,(FRW d, FR s)) - /******************************************************************** * Support functions exposed to gencomp. CREATE time * ********************************************************************/ diff --git a/custom.c b/custom.c index 579c90f7..9d186c9b 100755 --- a/custom.c +++ b/custom.c @@ -10,9 +10,9 @@ //#define CUSTOM_DEBUG #define SPRITE_DEBUG 0 -#define SPRITE_DEBUG_MINY 0 -#define SPRITE_DEBUG_MAXY 100 -//#define SPRITE_MASK 0 +#define SPRITE_DEBUG_MINY 0x6a +#define SPRITE_DEBUG_MAXY 0x70 +//#define SPRITE_MASK 128 #define SPRITE_MASK (1|2|4|8|16|32|64|128) #define SPR0_HPOS 0x15 #define MAX_SPRITES 8 diff --git a/disk.c b/disk.c index 4c3dfdca..767b9f69 100755 --- a/disk.c +++ b/disk.c @@ -2032,7 +2032,7 @@ static int disk_sync_cycle; void DISK_handler (void) { - int i, flag = diskevent_flag; + int flag = diskevent_flag; eventtab[ev_disk].active = 0; DISK_update (disk_sync_cycle); if (flag & (DISK_REVOLUTION << 0)) @@ -2049,6 +2049,8 @@ void DISK_handler (void) if (flag & DISK_INDEXSYNC) { cia_diskindex (); #if 0 + { + int i; for (i = 0; i < MAX_FLOPPY_DRIVES; i++) { drive *drv = &floppy[i]; if (drv->dskready_time) { @@ -2060,6 +2062,7 @@ void DISK_handler (void) } } } + } #endif } } diff --git a/drawing.c b/drawing.c index 7e9b2be1..90743339 100755 --- a/drawing.c +++ b/drawing.c @@ -97,6 +97,9 @@ static int dblpf_ind1_aga[256], dblpf_ind2_aga[256]; static uae_u8 spriteagadpfpixels[1]; static int dblpf_ind1_aga[1], dblpf_ind2_aga[1]; #endif +int xredcolor_s, xredcolor_b, xredcolor_m; +int xgreencolor_s, xgreencolor_b, xgreencolor_m; +int xbluecolor_s, xbluecolor_b, xbluecolor_m; struct color_entry colors_for_drawing; @@ -353,23 +356,53 @@ static void pfield_init_linetoscr (void) } } +static uae_u8 merge_2pixel8(uae_u8 p1, uae_u8 p2) +{ + return p1; +} +static uae_u16 merge_2pixel16(uae_u16 p1, uae_u16 p2) +{ + uae_u16 v = ((((p1 >> xredcolor_s) & xredcolor_m) + ((p2 >> xredcolor_s) & xredcolor_m)) / 2) << xredcolor_s; + v |= ((((p1 >> xbluecolor_s) & xbluecolor_m) + ((p2 >> xbluecolor_s) & xbluecolor_m)) / 2) << xbluecolor_s; + v |= ((((p1 >> xgreencolor_s) & xgreencolor_m) + ((p2 >> xgreencolor_s) & xgreencolor_m)) / 2) << xgreencolor_s; + return v; +} +static uae_u32 merge_2pixel32(uae_u32 p1, uae_u32 p2) +{ + uae_u32 v = ((((p1 >> 16) & 0xff) + ((p2 >> 16) & 0xff)) / 2) << 16; + v |= ((((p1 >> 8) & 0xff) + ((p2 >> 8) & 0xff)) / 2) << 8; + v |= ((((p1 >> 0) & 0xff) + ((p2 >> 0) & 0xff)) / 2) << 0; + return v; +} + /* If C++ compilers didn't suck, we'd use templates. */ #define TYPE uae_u8 +#define PMERGE merge_2pixel8 + #define LNAME linetoscr_8 #define SRC_INC 1 #define HDOUBLE 0 #define AGAC 0 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_8_stretch1 #define SRC_INC 1 #define HDOUBLE 1 #define AGAC 0 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_8_shrink1 #define SRC_INC 2 #define HDOUBLE 0 #define AGAC 0 +#define HMERGE 0 +#include "linetoscr.c" +#define LNAME linetoscr_8_shrink2 +#define SRC_INC 2 +#define HDOUBLE 0 +#define AGAC 0 +#define HMERGE 1 #include "linetoscr.c" #ifdef AGA @@ -377,36 +410,56 @@ static void pfield_init_linetoscr (void) #define SRC_INC 1 #define HDOUBLE 0 #define AGAC 1 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_8_stretch1_aga #define SRC_INC 1 #define HDOUBLE 1 #define AGAC 1 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_8_shrink1_aga #define SRC_INC 2 #define HDOUBLE 0 #define AGAC 1 +#define HMERGE 0 +#include "linetoscr.c" +#define LNAME linetoscr_8_shrink2_aga +#define SRC_INC 2 +#define HDOUBLE 0 +#define AGAC 1 +#define HMERGE 1 #include "linetoscr.c" #endif #undef TYPE - +#undef PMERGE #define TYPE uae_u16 +#define PMERGE merge_2pixel16 + #define LNAME linetoscr_16 #define SRC_INC 1 #define HDOUBLE 0 #define AGAC 0 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_16_stretch1 #define SRC_INC 1 #define HDOUBLE 1 #define AGAC 0 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_16_shrink1 #define SRC_INC 2 #define HDOUBLE 0 #define AGAC 0 +#define HMERGE 0 +#include "linetoscr.c" +#define LNAME linetoscr_16_shrink2 +#define SRC_INC 2 +#define HDOUBLE 0 +#define AGAC 0 +#define HMERGE 1 #include "linetoscr.c" #ifdef AGA @@ -414,36 +467,56 @@ static void pfield_init_linetoscr (void) #define SRC_INC 1 #define HDOUBLE 0 #define AGAC 1 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_16_stretch1_aga #define SRC_INC 1 #define HDOUBLE 1 #define AGAC 1 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_16_shrink1_aga #define SRC_INC 2 #define HDOUBLE 0 #define AGAC 1 +#define HMERGE 0 +#include "linetoscr.c" +#define LNAME linetoscr_16_shrink2_aga +#define SRC_INC 2 +#define HDOUBLE 0 +#define AGAC 1 +#define HMERGE 1 #include "linetoscr.c" #endif #undef TYPE - +#undef PMERGE #define TYPE uae_u32 +#define PMERGE merge_2pixel32 + #define LNAME linetoscr_32 #define SRC_INC 1 #define HDOUBLE 0 #define AGAC 0 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_32_stretch1 #define SRC_INC 1 #define HDOUBLE 1 #define AGAC 0 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_32_shrink1 #define SRC_INC 2 #define HDOUBLE 0 #define AGAC 0 +#define HMERGE 0 +#include "linetoscr.c" +#define LNAME linetoscr_32_shrink2 +#define SRC_INC 2 +#define HDOUBLE 0 +#define AGAC 0 +#define HMERGE 1 #include "linetoscr.c" #ifdef AGA @@ -451,16 +524,25 @@ static void pfield_init_linetoscr (void) #define SRC_INC 1 #define HDOUBLE 0 #define AGAC 1 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_32_stretch1_aga #define SRC_INC 1 #define HDOUBLE 1 #define AGAC 1 +#define HMERGE 0 #include "linetoscr.c" #define LNAME linetoscr_32_shrink1_aga #define SRC_INC 2 #define HDOUBLE 0 #define AGAC 1 +#define HMERGE 0 +#include "linetoscr.c" +#define LNAME linetoscr_32_shrink2_aga +#define SRC_INC 2 +#define HDOUBLE 0 +#define AGAC 1 +#define HMERGE 1 #include "linetoscr.c" #endif @@ -563,10 +645,18 @@ static void pfield_do_linetoscr (int start, int stop) case 4: src_pixel = linetoscr_32_stretch1_aga (src_pixel, start, stop); break; } else if (res_shift < 0) - switch (gfxvidinfo.pixbytes) { - case 1: src_pixel = linetoscr_8_shrink1_aga (src_pixel, start, stop); break; - case 2: src_pixel = linetoscr_16_shrink1_aga (src_pixel, start, stop); break; - case 4: src_pixel = linetoscr_32_shrink1_aga (src_pixel, start, stop); break; + if (currprefs.gfx_lores_mode) { + switch (gfxvidinfo.pixbytes) { + case 1: src_pixel = linetoscr_8_shrink2_aga (src_pixel, start, stop); break; + case 2: src_pixel = linetoscr_16_shrink2_aga (src_pixel, start, stop); break; + case 4: src_pixel = linetoscr_32_shrink2_aga (src_pixel, start, stop); break; + } + } else { + switch (gfxvidinfo.pixbytes) { + case 1: src_pixel = linetoscr_8_shrink1_aga (src_pixel, start, stop); break; + case 2: src_pixel = linetoscr_16_shrink1_aga (src_pixel, start, stop); break; + case 4: src_pixel = linetoscr_32_shrink1_aga (src_pixel, start, stop); break; + } } } else { #endif @@ -583,10 +673,18 @@ static void pfield_do_linetoscr (int start, int stop) case 4: src_pixel = linetoscr_32_stretch1 (src_pixel, start, stop); break; } else if (res_shift < 0) - switch (gfxvidinfo.pixbytes) { - case 1: src_pixel = linetoscr_8_shrink1 (src_pixel, start, stop); break; - case 2: src_pixel = linetoscr_16_shrink1 (src_pixel, start, stop); break; - case 4: src_pixel = linetoscr_32_shrink1 (src_pixel, start, stop); break; + if (currprefs.gfx_lores_mode) { + switch (gfxvidinfo.pixbytes) { + case 1: src_pixel = linetoscr_8_shrink2 (src_pixel, start, stop); break; + case 2: src_pixel = linetoscr_16_shrink2 (src_pixel, start, stop); break; + case 4: src_pixel = linetoscr_32_shrink2 (src_pixel, start, stop); break; + } + } else { + switch (gfxvidinfo.pixbytes) { + case 1: src_pixel = linetoscr_8_shrink1 (src_pixel, start, stop); break; + case 2: src_pixel = linetoscr_16_shrink1 (src_pixel, start, stop); break; + case 4: src_pixel = linetoscr_32_shrink1 (src_pixel, start, stop); break; + } } #ifdef AGA } diff --git a/filesys.c b/filesys.c index 9b3447f7..ccce4188 100755 --- a/filesys.c +++ b/filesys.c @@ -3871,14 +3871,14 @@ static int rdb_mount (UnitInfo *uip, int unit_no, int partnum, uaecptr parmpacke int oldversion, oldrevision; int newversion, newrevision; - if (lastblock * hfd->blocksize > hfd->size) { - rdbmnt - write_log("failed, too small (%d*%d > %I64u)\n", lastblock, hfd->blocksize, hfd->size); - return -2; - } if (hfd->blocksize == 0) { rdbmnt write_log("failed, blocksize == 0\n"); + return -1; + } + if (lastblock * hfd->blocksize > hfd->size) { + rdbmnt + write_log("failed, too small (%d*%d > %I64u)\n", lastblock, hfd->blocksize, hfd->size); return -2; } for (rdblock = 0; rdblock < lastblock; rdblock++) { diff --git a/fpp.c b/fpp.c index 31c0560a..78bce48e 100755 --- a/fpp.c +++ b/fpp.c @@ -4,7 +4,8 @@ * MC68881 emulation * * Copyright 1996 Herman ten Brugge - */ + * Modified 2005 Peter Keunecke + */ #define __USE_ISOC9X /* We might be able to pick up a NaN */ #include @@ -22,6 +23,80 @@ #include "md-fpp.h" #include "savestate.h" +uae_u32 xhex_pi[] ={0x2168c235, 0xc90fdaa2, 0x4000}; +uae_u32 xhex_exp_1[] ={0xa2bb4a9a, 0xadf85458, 0x4000}; +uae_u32 xhex_l2_e[] ={0x5c17f0bc, 0xb8aa3b29, 0x3fff}; +uae_u32 xhex_ln_2[] ={0xd1cf79ac, 0xb17217f7, 0x3ffe}; +uae_u32 xhex_ln_10[] ={0xaaa8ac17, 0x935d8ddd, 0x4000}; +uae_u32 xhex_l10_2[] ={0xfbcff798, 0x9a209a84, 0x3ffd}; +uae_u32 xhex_l10_e[] ={0x37287195, 0xde5bd8a9, 0x3ffd}; +uae_u32 xhex_1e16[] ={0x04000000, 0x8e1bc9bf, 0x4034}; +uae_u32 xhex_1e32[] ={0x2b70b59e, 0x9dc5ada8, 0x4069}; +uae_u32 xhex_1e64[] ={0xffcfa6d5, 0xc2781f49, 0x40d3}; +uae_u32 xhex_1e128[] ={0x80e98ce0, 0x93ba47c9, 0x41a8}; +uae_u32 xhex_1e256[] ={0x9df9de8e, 0xaa7eebfb, 0x4351}; +uae_u32 xhex_1e512[] ={0xa60e91c7, 0xe319a0ae, 0x46a3}; +uae_u32 xhex_1e1024[]={0x81750c17, 0xc9767586, 0x4d48}; +uae_u32 xhex_1e2048[]={0xc53d5de5, 0x9e8b3b5d, 0x5a92}; +uae_u32 xhex_1e4096[]={0x8a20979b, 0xc4605202, 0x7525}; +uae_u32 xhex_inf[] ={0x00000000, 0x00000000, 0x7fff}; +uae_u32 xhex_nan[] ={0xffffffff, 0xffffffff, 0x7fff}; +#if USE_LONG_DOUBLE +static long double *fp_pi = (long double *)xhex_pi; +static long double *fp_exp_1 = (long double *)xhex_exp_1; +static long double *fp_l2_e = (long double *)xhex_l2_e; +static long double *fp_ln_2 = (long double *)xhex_ln_2; +static long double *fp_ln_10 = (long double *)xhex_ln_10; +static long double *fp_l10_2 = (long double *)xhex_l10_2; +static long double *fp_l10_e = (long double *)xhex_l10_e; +static long double *fp_1e16 = (long double *)xhex_1e16; +static long double *fp_1e32 = (long double *)xhex_1e32; +static long double *fp_1e64 = (long double *)xhex_1e64; +static long double *fp_1e128 = (long double *)xhex_1e128; +static long double *fp_1e256 = (long double *)xhex_1e256; +static long double *fp_1e512 = (long double *)xhex_1e512; +static long double *fp_1e1024 = (long double *)xhex_1e1024; +static long double *fp_1e2048 = (long double *)xhex_1e2048; +static long double *fp_1e4096 = (long double *)xhex_1e4096; +static long double *fp_inf = (long double *)xhex_inf; +static long double *fp_nan = (long double *)xhex_nan; +#else +static uae_u32 dhex_pi[] ={0x54442D18, 0x400921FB}; +static uae_u32 dhex_exp_1[] ={0x8B145769, 0x4005BF0A}; +static uae_u32 dhex_l2_e[] ={0x652B82FE, 0x3FF71547}; +static uae_u32 dhex_ln_2[] ={0xFEFA39EF, 0x3FE62E42}; +static uae_u32 dhex_ln_10[] ={0xBBB55516, 0x40026BB1}; +static uae_u32 dhex_l10_2[] ={0x509F79FF, 0x3FD34413}; +static uae_u32 dhex_l10_e[] ={0x1526E50E, 0x3FDBCB7B}; +static uae_u32 dhex_1e16[] ={0x37E08000, 0x4341C379}; +static uae_u32 dhex_1e32[] ={0xB5056E17, 0x4693B8B5}; +static uae_u32 dhex_1e64[] ={0xE93FF9F5, 0x4D384F03}; +static uae_u32 dhex_1e128[] ={0xF9301D32, 0x5A827748}; +static uae_u32 dhex_1e256[] ={0x7F73BF3C, 0x75154FDD}; +static uae_u32 dhex_inf[] ={0x00000000, 0x7ff00000}; +static uae_u32 dhex_nan[] ={0xffffffff, 0x7fffffff}; +static double *fp_pi = (double *)dhex_pi; +static double *fp_exp_1 = (double *)dhex_exp_1; +static double *fp_l2_e = (double *)dhex_l2_e; +static double *fp_ln_2 = (double *)dhex_ln_2; +static double *fp_ln_10 = (double *)dhex_ln_10; +static double *fp_l10_2 = (double *)dhex_l10_2; +static double *fp_l10_e = (double *)dhex_l10_e; +static double *fp_1e16 = (double *)dhex_1e16; +static double *fp_1e32 = (double *)dhex_1e32; +static double *fp_1e64 = (double *)dhex_1e64; +static double *fp_1e128 = (double *)dhex_1e128; +static double *fp_1e256 = (double *)dhex_1e256; +static double *fp_1e512 = (double *)dhex_inf; +static double *fp_1e1024 = (double *)dhex_inf; +static double *fp_1e2048 = (double *)dhex_inf; +static double *fp_1e4096 = (double *)dhex_inf; +static double *fp_inf = (double *)dhex_inf; +static double *fp_nan = (double *)dhex_nan; +#endif +double fp_1e8 = 1.0e8; +float fp_1e0 = 1, fp_1e1 = 10, fp_1e2 = 100, fp_1e4 = 10000; + #if 1 STATIC_INLINE int isinrom (void) @@ -37,37 +112,23 @@ STATIC_INLINE int isinrom (void) #define MAKE_FPSR(r) regs.fp_result=(r) +static uae_u16 x87_cw_tab[] = { + 0x137f, 0x1f7f, 0x177f, 0x1b7f, /* Extended */ + 0x107f, 0x1c7f, 0x147f, 0x187f, /* Single */ + 0x127f, 0x1e7f, 0x167f, 0x1a7f, /* Double */ + 0x137f, 0x1f7f, 0x177f, 0x1b7f}; /* undefined */ + /* Nearest, toZero, Down, Up */ static __inline__ void native_set_fpucw (uae_u32 m68k_cw) { #if USE_X86_FPUCW - int mprec=(m68k_cw>>6)&3; - int mround=(m68k_cw>>4)&3; - uae_u16 x; - - int iprec=0; - int iround=0; + uae_u16 x87_cw = x87_cw_tab[(m68k_cw>>4)&0xf]; - switch(mprec) { - case 0: /* extend */ iprec=3; break; - case 1: /* single */ iprec=0; break; - case 2: /* double */ iprec=2; break; - case 3: /* undef */ iprec=3; break; - } - - switch(mround) { - case 0: /* nearest */ iround=0; break; - case 1: /* zero */ iround=3; break; - case 2: /* down */ iround=1; break; - case 3: /* up */ iround=2; break; - } - - x=0x107f + (iprec<<8) + (iround<<10); #if defined(X86_MSVC_ASSEMBLY) __asm { - fldcw x + fldcw word ptr x87_cw } #elif defined(X86_ASSEMBLY) - __asm__ ("fldcw %0" : : "m" (*&x)); + __asm__ ("fldcw %0" : : "m" (*&x87_cw)); #endif #endif } @@ -80,21 +141,18 @@ typedef uae_s32 tointtype; static __inline__ tointtype toint(fptype src) { - switch ((regs.fpcr >> 4) & 0x3) { - case 0: -#if USE_X86_FPUCW - return (tointtype) (src); -#else - return (tointtype) (src + 0.5); -#endif - case 1: + switch ((regs.fpcr >> 4) & 3) { + case 0: /* to nearest */ + if (regs.fpcr & 0xf0) /* if not Extended RN */ + return (tointtype)floor (src + 0.5); + case 1: /* to zero */ return (tointtype) src; - case 2: + case 2: /* down */ return (tointtype)floor (src); - case 3: + case 3: /* up */ return (tointtype)ceil (src); - } - return (tointtype)src; /* Should never be reached */ + } + return (tointtype)src; /* never reached */ } uae_u32 get_fpsr (void) @@ -123,11 +181,7 @@ STATIC_INLINE void set_fpsr (uae_u32 x) regs.fpsr = x; if (x & 0x01000000) { -#ifdef NAN - regs.fp_result = NAN; -#else - regs.fp_result = pow (1e100, 10) - pow(1e100, 10); /* Any better way? */ -#endif + regs.fp_result = *fp_nan; } else if (x & 0x04000000) regs.fp_result = 0; @@ -137,7 +191,6 @@ STATIC_INLINE void set_fpsr (uae_u32 x) regs.fp_result = 1; } - /* single : S 8*E 23*F */ /* double : S 11*E 52*F */ /* extended : S 15*E 64*F */ @@ -1097,78 +1150,77 @@ void fpp_opp (uae_u32 opcode, uae_u16 extra) if ((extra & 0xfc00) == 0x5c00) { switch (extra & 0x7f) { case 0x00: - regs.fp[reg] = 4.0 * atan (1.0); + regs.fp[reg] = *fp_pi; break; case 0x0b: - regs.fp[reg] = log10 (2.0); + regs.fp[reg] = *fp_l10_2; break; case 0x0c: - regs.fp[reg] = exp (1.0); + regs.fp[reg] = *fp_exp_1; break; case 0x0d: - regs.fp[reg] = log (exp (1.0)) / log (2.0); + regs.fp[reg] = *fp_l2_e; break; case 0x0e: - regs.fp[reg] = log (exp (1.0)) / log (10.0); + regs.fp[reg] = *fp_l10_e; break; case 0x0f: regs.fp[reg] = 0.0; break; case 0x30: - regs.fp[reg] = log (2.0); + regs.fp[reg] = *fp_ln_2; break; case 0x31: - regs.fp[reg] = log (10.0); + regs.fp[reg] = *fp_ln_10; break; case 0x32: - regs.fp[reg] = 1.0e0; + regs.fp[reg] = (fptype)fp_1e0; break; case 0x33: - regs.fp[reg] = 1.0e1; + regs.fp[reg] = (fptype)fp_1e1; break; case 0x34: - regs.fp[reg] = 1.0e2; + regs.fp[reg] = (fptype)fp_1e2; break; case 0x35: - regs.fp[reg] = 1.0e4; + regs.fp[reg] = (fptype)fp_1e4; break; case 0x36: - regs.fp[reg] = 1.0e8; + regs.fp[reg] = (fptype)fp_1e8; break; case 0x37: - regs.fp[reg] = 1.0e16; + regs.fp[reg] = *fp_1e16; break; case 0x38: - regs.fp[reg] = 1.0e32; + regs.fp[reg] = *fp_1e32; break; case 0x39: - regs.fp[reg] = 1.0e64; + regs.fp[reg] = *fp_1e64; break; case 0x3a: - regs.fp[reg] = 1.0e128; + regs.fp[reg] = *fp_1e128; break; case 0x3b: - regs.fp[reg] = 1.0e256; + regs.fp[reg] = *fp_1e256; break; -#if 0 case 0x3c: - regs.fp[reg] = 1.0e512; + regs.fp[reg] = *fp_1e512; break; case 0x3d: - regs.fp[reg] = 1.0e1024; + regs.fp[reg] = *fp_1e1024; break; case 0x3e: - regs.fp[reg] = 1.0e2048; + regs.fp[reg] = *fp_1e2048; break; case 0x3f: - regs.fp[reg] = 1.0e4096; + regs.fp[reg] = *fp_1e4096; break; -#endif default: m68k_setpc (m68k_getpc () - 4); op_illg (opcode); - break; + return; } + MAKE_FPSR (regs.fp[reg]); /* see Motorola 68k Manual */ return; } if (get_fp_value (opcode, extra, &src) == 0) { @@ -1177,194 +1229,194 @@ void fpp_opp (uae_u32 opcode, uae_u16 extra) return; } switch (extra & 0x7f) { - case 0x00: /* FMOVE */ - case 0x40: /* Explicit rounding. This is just a quick fix. Same - * for all other cases that have three choices */ - case 0x44: - regs.fp[reg] = src; - /* Brian King was here. to register needs FPSR updated. - * See page 3-73 in Motorola 68K programmers reference manual. - * %%%FPU */ + case 0x00: /* FMOVE */ + case 0x40: /* Explicit rounding. This is just a quick fix. */ + case 0x44: /* Same for all other cases that have three choices */ + regs.fp[reg] = src; /* Brian King was here. */ + /* to register needs FPSR updated. See Motorola 68K Manual. */ if ((extra & 0x44) == 0x40) fround (reg); - MAKE_FPSR (regs.fp[reg]); break; - case 0x01: /* FINT */ + case 0x01: /* FINT */ /* need to take the current rounding mode into account */ - regs.fp[reg] = (fptype)toint(src); +#if defined(X86_MSVC_ASSEMBLY) + { + fptype tmp_fp; + + __asm { +#if USE_LONG_DOUBLE + fld tbyte ptr src + frndint + fstp tbyte ptr tmp_fp +#else + fld qword ptr src + frndint + fstp qword ptr tmp_fp +#endif + } + regs.fp[reg] = tmp_fp; + } +#else /* no X86_MSVC */ + switch ((regs.fpcr >> 4) & 3) { + case 0: /* to nearest */ + regs.fp[reg] = floor (src + 0.5); + break; + case 1: /* to zero */ + if (src >= 0.0) + regs.fp[reg] = floor (src); + else + regs.fp[reg] = ceil (src); + break; + case 2: /* down */ + regs.fp[reg] = floor (src); + break; + case 3: /* up */ + regs.fp[reg] = ceil (src); + break; + default: /* never reached */ + regs.fp[reg] = src; + } +#endif /* X86_MSVC */ break; - case 0x02: /* FSINH */ + case 0x02: /* FSINH */ regs.fp[reg] = sinh (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x03: /* FINTRZ */ + case 0x03: /* FINTRZ */ regs.fp[reg] = (int) src; - MAKE_FPSR (regs.fp[reg]); break; - case 0x04: /* FSQRT */ + case 0x04: /* FSQRT */ case 0x41: case 0x45: regs.fp[reg] = sqrt (src); if ((extra & 0x44) == 0x40) fround (reg); - MAKE_FPSR (regs.fp[reg]); break; - case 0x06: /* FLOGNP1 */ + case 0x06: /* FLOGNP1 */ regs.fp[reg] = log (src + 1.0); - MAKE_FPSR (regs.fp[reg]); break; - case 0x08: /* FETOXM1 */ + case 0x08: /* FETOXM1 */ regs.fp[reg] = exp (src) - 1.0; - MAKE_FPSR (regs.fp[reg]); break; - case 0x09: /* FTANH */ + case 0x09: /* FTANH */ regs.fp[reg] = tanh (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x0a: /* FATAN */ + case 0x0a: /* FATAN */ regs.fp[reg] = atan (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x0c: /* FASIN */ + case 0x0c: /* FASIN */ regs.fp[reg] = asin (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x0d: /* FATANH */ -#if 1 /* The BeBox doesn't have atanh, and it isn't in the HPUX libm either */ + case 0x0d: /* FATANH */ +#if 1 /* The BeBox doesn't have atanh, and it isn't in the HPUX libm either */ regs.fp[reg] = log ((1 + src) / (1 - src)) / 2; #else regs.fp[reg] = atanh (src); #endif - MAKE_FPSR (regs.fp[reg]); break; - case 0x0e: /* FSIN */ + case 0x0e: /* FSIN */ regs.fp[reg] = sin (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x0f: /* FTAN */ + case 0x0f: /* FTAN */ regs.fp[reg] = tan (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x10: /* FETOX */ + case 0x10: /* FETOX */ regs.fp[reg] = exp (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x11: /* FTWOTOX */ + case 0x11: /* FTWOTOX */ regs.fp[reg] = pow (2.0, src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x12: /* FTENTOX */ + case 0x12: /* FTENTOX */ regs.fp[reg] = pow (10.0, src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x14: /* FLOGN */ + case 0x14: /* FLOGN */ regs.fp[reg] = log (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x15: /* FLOG10 */ + case 0x15: /* FLOG10 */ regs.fp[reg] = log10 (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x16: /* FLOG2 */ - regs.fp[reg] = log (src) / log (2.0); - MAKE_FPSR (regs.fp[reg]); + case 0x16: /* FLOG2 */ + regs.fp[reg] = *fp_l2_e * log (src); break; - case 0x18: /* FABS */ + case 0x18: /* FABS */ case 0x58: case 0x5c: regs.fp[reg] = src < 0 ? -src : src; if ((extra & 0x44) == 0x40) fround (reg); - MAKE_FPSR (regs.fp[reg]); break; - case 0x19: /* FCOSH */ + case 0x19: /* FCOSH */ regs.fp[reg] = cosh (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x1a: /* FNEG */ + case 0x1a: /* FNEG */ case 0x5a: case 0x5e: regs.fp[reg] = -src; if ((extra & 0x44) == 0x40) fround (reg); - MAKE_FPSR (regs.fp[reg]); break; - case 0x1c: /* FACOS */ + case 0x1c: /* FACOS */ regs.fp[reg] = acos (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x1d: /* FCOS */ + case 0x1d: /* FCOS */ regs.fp[reg] = cos (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x1e: /* FGETEXP */ - { - int expon; - frexp (src, &expon); - regs.fp[reg] = (double) (expon - 1); - MAKE_FPSR (regs.fp[reg]); - } - break; - case 0x1f: /* FGETMAN */ - { - int expon; - regs.fp[reg] = frexp (src, &expon) * 2.0; - MAKE_FPSR (regs.fp[reg]); - } - break; - case 0x20: /* FDIV */ + case 0x1e: /* FGETEXP */ + { + int expon; + frexp (src, &expon); + regs.fp[reg] = (double) (expon - 1); + } + break; + case 0x1f: /* FGETMAN */ + { + int expon; + regs.fp[reg] = frexp (src, &expon) * 2.0; + } + break; + case 0x20: /* FDIV */ case 0x60: case 0x64: regs.fp[reg] /= src; if ((extra & 0x44) == 0x40) fround (reg); - MAKE_FPSR (regs.fp[reg]); break; - case 0x21: /* FMOD */ + case 0x21: /* FMOD */ regs.fp[reg] = regs.fp[reg] - (double) ((int) (regs.fp[reg] / src)) * src; - MAKE_FPSR (regs.fp[reg]); break; - case 0x22: /* FADD */ + case 0x22: /* FADD */ case 0x62: case 0x66: regs.fp[reg] += src; if ((extra & 0x44) == 0x40) fround (reg); - MAKE_FPSR (regs.fp[reg]); break; - case 0x23: /* FMUL */ + case 0x23: /* FMUL */ case 0x63: case 0x67: regs.fp[reg] *= src; if ((extra & 0x44) == 0x40) fround (reg); - MAKE_FPSR (regs.fp[reg]); break; - case 0x24: /* FSGLDIV */ + case 0x24: /* FSGLDIV */ regs.fp[reg] /= src; - MAKE_FPSR (regs.fp[reg]); break; - case 0x25: /* FREM */ + case 0x25: /* FREM */ regs.fp[reg] = regs.fp[reg] - (double) ((int) (regs.fp[reg] / src + 0.5)) * src; - MAKE_FPSR (regs.fp[reg]); break; - case 0x26: /* FSCALE */ - regs.fp[reg] *= exp (log (2.0) * src); - MAKE_FPSR (regs.fp[reg]); + case 0x26: /* FSCALE */ + regs.fp[reg] *= exp (*fp_ln_2 * (int) src); break; - case 0x27: /* FSGLMUL */ + case 0x27: /* FSGLMUL */ regs.fp[reg] *= src; - MAKE_FPSR (regs.fp[reg]); break; - case 0x28: /* FSUB */ + case 0x28: /* FSUB */ case 0x68: case 0x6c: regs.fp[reg] -= src; if ((extra & 0x44) == 0x40) fround (reg); - MAKE_FPSR (regs.fp[reg]); break; - case 0x30: /* FSINCOS */ + case 0x30: /* FSINCOS */ case 0x31: case 0x32: case 0x33: @@ -1374,24 +1426,24 @@ void fpp_opp (uae_u32 opcode, uae_u16 extra) case 0x37: regs.fp[extra & 7] = cos (src); regs.fp[reg] = sin (src); - MAKE_FPSR (regs.fp[reg]); break; - case 0x38: /* FCMP */ - { - fptype tmp = regs.fp[reg] - src; - regs.fpsr = 0; - MAKE_FPSR (tmp); - } - break; - case 0x3a: /* FTST */ + case 0x38: /* FCMP */ + { + fptype tmp = regs.fp[reg] - src; + regs.fpsr = 0; + MAKE_FPSR (tmp); + } + return; + case 0x3a: /* FTST */ regs.fpsr = 0; MAKE_FPSR (src); - break; + return; default: m68k_setpc (m68k_getpc () - 4); op_illg (opcode); - break; + return; } + MAKE_FPSR (regs.fp[reg]); return; } m68k_setpc (m68k_getpc () - 4); diff --git a/gfxutil.c b/gfxutil.c index 8e7f981d..ef585d2b 100755 --- a/gfxutil.c +++ b/gfxutil.c @@ -147,6 +147,15 @@ void alloc_colors64k (int rw, int gw, int bw, int rs, int gs, int bs, int aw, in xbluecolors[i] = greyscale (doColor (i, bw, bs)) | doAlpha (alpha, aw, as); } #endif + xredcolor_b = rw; + xgreencolor_b = gw; + xbluecolor_b = bw; + xredcolor_s = rs; + xgreencolor_s = gs; + xbluecolor_s = bs; + xredcolor_m = (1 << rw) - 1; + xgreencolor_m = (1 << gw) - 1; + xbluecolor_m = (1 << bw) - 1; } static int allocated[4096]; diff --git a/include/custom.h b/include/custom.h index 3f4f526a..0185064c 100755 --- a/include/custom.h +++ b/include/custom.h @@ -147,6 +147,9 @@ extern uae_u32 lorestab_l[256][2]; /* AGA mode color lookup tables */ extern unsigned int xredcolors[256], xgreencolors[256], xbluecolors[256]; #endif +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]; diff --git a/include/options.h b/include/options.h index 8df33db4..376e26db 100755 --- a/include/options.h +++ b/include/options.h @@ -8,8 +8,8 @@ */ #define UAEMAJOR 1 -#define UAEMINOR 1 -#define UAESUBREV 1 +#define UAEMINOR 2 +#define UAESUBREV 0 typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang; @@ -120,6 +120,7 @@ struct uae_prefs { int gfx_refreshrate; int gfx_vsync; int gfx_lores; + int gfx_lores_mode; int gfx_linedbl; int gfx_correct_aspect; int gfx_afullscreen; @@ -220,6 +221,7 @@ struct uae_prefs { int win32_iconified_nosound; int win32_no_overlay; /* If this is set, we won't try and use any RGB overlays */ + int win32_borderless; int win32_ctrl_F11_is_quit; int win32_automount_drives; int win32_automount_netdrives; diff --git a/inputdevice.c b/inputdevice.c index 8dd7d989..e28130e8 100755 --- a/inputdevice.c +++ b/inputdevice.c @@ -43,6 +43,8 @@ #include "savestate.h" #include "arcadia.h" +int inputdevice_logging = 0; + #define DIR_LEFT 1 #define DIR_RIGHT 2 #define DIR_UP 4 @@ -1008,7 +1010,8 @@ void inputdevice_do_keyboard (int code, int state) uae_reset (r); } record_key ((uae_u8)((key << 1) | (key >> 7))); - //write_log("Amiga key %02.2X %d\n", key & 0x7f, key >> 7); + if (inputdevice_logging > 0) + write_log("Amiga key %02.2X %d\n", key & 0x7f, key >> 7); return; } inputdevice_add_inputcode (code, state); @@ -1185,7 +1188,8 @@ int handle_input_event (int nr, int state, int max, int autofire) if (nr <= 0) return 0; ie = &events[nr]; - //write_log("'%s' %d %d\n", ie->name, state, max); + if (inputdevice_logging > 0) + write_log("'%s' %d %d\n", ie->name, state, max); if (autofire) { if (state) queue_input_event (nr, state, max, currprefs.input_autofire_framecnt, 1); @@ -1722,7 +1726,6 @@ static int inputdevice_translatekeycode_2 (int keyboard, int scancode, int state int event = na->eventid[j][sublevdir[state == 0 ? 1 : 0][k]]; char *custom = na->custom[j][sublevdir[state == 0 ? 1 : 0][k]]; handled |= handle_input_event (event, state, 1, autofire); - //write_log ("'%s' %d ('%s') %d\n", na->name, event, events[event].name, state); } return handled; } diff --git a/memory.c b/memory.c index d6124d0b..8938d630 100755 --- a/memory.c +++ b/memory.c @@ -1871,10 +1871,8 @@ static void allocate_memory (void) memsize = allocated_chipmem = currprefs.chipmem_size; chipmem_full_mask = chipmem_mask = allocated_chipmem - 1; - if ((currprefs.chipset_mask & CSMASK_ECS_AGNUS) && allocated_chipmem < 0x100000) { - chipmem_full_mask = 0x100000 - 1; - memsize *= 2; - } + if (memsize < 0x100000) + memsize = 0x100000; chipmemory = mapped_malloc (memsize, "chip"); if (chipmemory == 0) { write_log ("Fatal error: out of memory for chipmem.\n"); @@ -1886,6 +1884,11 @@ static void allocate_memory (void) } } + currprefs.chipset_mask = changed_prefs.chipset_mask; + chipmem_full_mask = allocated_chipmem - 1; + if ((currprefs.chipset_mask & CSMASK_ECS_AGNUS) && allocated_chipmem < 0x100000) + chipmem_full_mask = 0x100000 - 1; + if (allocated_bogomem != currprefs.bogomem_size) { if (bogomemory) mapped_free (bogomemory); diff --git a/od-win32/avioutput.c b/od-win32/avioutput.c index e8889bd4..98181b62 100755 --- a/od-win32/avioutput.c +++ b/od-win32/avioutput.c @@ -171,7 +171,7 @@ LPSTR AVIOutput_ChooseAudioCodec(HWND hwnd) // set the source format wfxSrc.wFormatTag = WAVE_FORMAT_PCM; - wfxSrc.nChannels = workprefs.sound_stereo ? 2 : 1; + wfxSrc.nChannels = currprefs.sound_stereo == 2 ? 4 : (currprefs.sound_stereo ? 2 : 1); wfxSrc.nSamplesPerSec = workprefs.sound_freq; wfxSrc.nBlockAlign = wfxSrc.nChannels * (workprefs.sound_bits / 8); wfxSrc.nAvgBytesPerSec = wfxSrc.nBlockAlign * wfxSrc.nSamplesPerSec; @@ -605,7 +605,8 @@ static void writewavheader (uae_u32 size) { uae_u16 tw; uae_u32 tl; - int bits = 16, channels = currprefs.sound_stereo ? 2 : 1; + int bits = 16; + int channels = currprefs.sound_stereo == 2 ? 4 : (currprefs.sound_stereo ? 2 : 1); fseek (wavfile, 0, SEEK_SET); fwrite ("RIFF", 1, 4, wavfile); diff --git a/od-win32/build68k_msvc/build68k.rc b/od-win32/build68k_msvc/build68k.rc new file mode 100755 index 00000000..c1017f88 --- /dev/null +++ b/od-win32/build68k_msvc/build68k.rc @@ -0,0 +1,61 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE 11, 1 +#pragma code_page(1252) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/od-win32/build68k_msvc/build68k_msvc.vcproj b/od-win32/build68k_msvc/build68k_msvc.vcproj index 897949fe..ff903fe5 100755 --- a/od-win32/build68k_msvc/build68k_msvc.vcproj +++ b/od-win32/build68k_msvc/build68k_msvc.vcproj @@ -4,7 +4,6 @@ Version="8,00" Name="build68k" ProjectGUID="{AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}" - SignManifests="true" > + + + + diff --git a/od-win32/build68k_msvc/resource.h b/od-win32/build68k_msvc/resource.h new file mode 100755 index 00000000..0a253e1c --- /dev/null +++ b/od-win32/build68k_msvc/resource.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by build68k.rc + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/od-win32/direct3d.c b/od-win32/direct3d.c index a7b56061..dc5dc09b 100755 --- a/od-win32/direct3d.c +++ b/od-win32/direct3d.c @@ -20,6 +20,18 @@ #include "direct3d.h" +typedef D3DXMATRIX (CALLBACK* D3DXMATRIXPERSPECTIVEFOVLH) + (D3DXMATRIX *pOut,FLOAT fovy,FLOAT Aspect,FLOAT zn,FLOAT zf); +static D3DXMATRIXPERSPECTIVEFOVLH pD3DXMatrixPerspectiveFovLH; +typedef HRESULT (CALLBACK* D3DXCREATETEXTURE) + (LPDIRECT3DDEVICE9 pDevice,UINT Width,UINT Height,UINT MipLevels,DWORD Usage, + D3DFORMAT Format,D3DPOOL Pool,LPDIRECT3DTEXTURE9 *ppTexture); +static D3DXCREATETEXTURE pD3DXCreateTexture; +typedef HRESULT (CALLBACK* D3DXCHECKTEXTUREREQUIREMENTS) + (LPDIRECT3DDEVICE9 pDevice,UINT *pWidth,UINT *pHeight,UINT *pNumMipLevels, + DWORD Usage,D3DFORMAT *pFormat,D3DPOOL Pool); +static D3DXCHECKTEXTUREREQUIREMENTS pD3DXCheckTextureRequirements; + static int tformat; static int d3d_enabled, scanlines_ok; static HINSTANCE d3dDLL; @@ -101,7 +113,7 @@ static int restoredeviceobjects(void) // Set the projection matrix aspect = ((FLOAT)dsdbb.Width) / dsdbb.Height; - D3DXMatrixPerspectiveFovLH (&matrix, D3DX_PI/4, aspect, 1.0f, 100.0f); + pD3DXMatrixPerspectiveFovLH (&matrix, D3DX_PI/4, aspect, 1.0f, 100.0f); hr = IDirect3DDevice9_SetTransform(d3ddev, D3DTS_PROJECTION, &matrix); // turn off lighting @@ -129,11 +141,11 @@ static int createtexture (int w, int h) UINT hh = h; D3DFORMAT format = tformat; - hr = D3DXCheckTextureRequirements(d3ddev, &ww, &hh, NULL, 0, &format, D3DPOOL_MANAGED); + hr = pD3DXCheckTextureRequirements(d3ddev, &ww, &hh, NULL, 0, &format, D3DPOOL_MANAGED); if (FAILED (hr)) { write_log ("D3DXCheckTextureRequirements failed: %s\n", D3D_ErrorString (hr)); } - hr = D3DXCreateTexture(d3ddev, ww, hh, 0, 0, format, D3DPOOL_MANAGED, &texture); + hr = pD3DXCreateTexture(d3ddev, ww, hh, 0, 0, format, D3DPOOL_MANAGED, &texture); if (FAILED (hr)) { write_log ("D3DXCreateTexture failed: %s\n", D3D_ErrorString (hr)); } @@ -149,12 +161,12 @@ static int createsltexture (void) UINT hh = required_sl_texture_h; D3DFORMAT format = D3DFMT_A4R4G4B4; - hr = D3DXCheckTextureRequirements(d3ddev, &ww, &hh, NULL, 0, &format, D3DPOOL_MANAGED); + hr = pD3DXCheckTextureRequirements(d3ddev, &ww, &hh, NULL, 0, &format, D3DPOOL_MANAGED); if (FAILED (hr)) { write_log ("SL D3DXCheckTextureRequirements failed: %s\n", D3D_ErrorString (hr)); return 0; } - hr = D3DXCreateTexture(d3ddev, ww, hh, 0, 0, format, D3DPOOL_MANAGED, &sltexture); + hr = pD3DXCreateTexture(d3ddev, ww, hh, 0, 0, format, D3DPOOL_MANAGED, &sltexture); if (FAILED (hr)) { write_log ("SL D3DXCreateTexture failed: %s\n", D3D_ErrorString (hr)); return 0; @@ -229,6 +241,8 @@ const char *D3D_init (HWND ahwnd, int w_w, int w_h, int t_w, int t_h, int depth) LPDIRECT3D9 (WINAPI *D3DCreate)(UINT); D3DDISPLAYMODE mode; D3DCAPS9 d3dCaps; + char d3dxdlls[100]; + HINSTANCE d3dxDLL; d3d_enabled = 0; scanlines_ok = 0; @@ -242,6 +256,16 @@ const char *D3D_init (HWND ahwnd, int w_w, int w_h, int t_w, int t_h, int depth) strcpy (errmsg, "Direct3D: DirectX 9 or newer required"); return errmsg; } + + sprintf (d3dxdlls, "d3dx9_%d.dll", 27); + d3dxDLL = LoadLibrary(d3dxdlls); + pD3DXMatrixPerspectiveFovLH = (D3DXMATRIXPERSPECTIVEFOVLH)GetProcAddress( + d3dxDLL, "D3DXMatrixPerspectiveFovLH"); + pD3DXCreateTexture = (D3DXCREATETEXTURE)GetProcAddress( + d3dxDLL, "D3DXCreateTexture"); + pD3DXCheckTextureRequirements = (D3DXCHECKTEXTUREREQUIREMENTS)GetProcAddress( + d3dxDLL, "D3DXCheckTextureRequirements"); + D3DCreate = (LPDIRECT3D9 (WINAPI *)(UINT)) GetProcAddress(d3dDLL, "Direct3DCreate9"); if(D3DCreate == NULL) { diff --git a/od-win32/dxwrap.c b/od-win32/dxwrap.c index 2517500b..f9d22386 100755 --- a/od-win32/dxwrap.c +++ b/od-win32/dxwrap.c @@ -677,16 +677,14 @@ void ddraw_unlockscr( void ) int DirectDraw_Start( GUID *guid ) { HRESULT ddrval; - DDCAPS_DX7 drivercaps, helcaps; - /* Prepare our DirectDrawState structure */ - ZeroMemory( &DirectDrawState, sizeof( DirectDrawState ) ); - ZeroMemory( &drivercaps, sizeof( drivercaps ) ); - ZeroMemory( &helcaps, sizeof( helcaps ) ); - drivercaps.dwSize = sizeof( drivercaps ); - helcaps.dwSize = sizeof( helcaps ); + ZeroMemory(&DirectDrawState, sizeof(DirectDrawState)); + ZeroMemory(&drivercaps, sizeof(drivercaps)); + ZeroMemory(&helcaps, sizeof(helcaps)); + drivercaps.dwSize = sizeof(drivercaps); + helcaps.dwSize = sizeof(helcaps); - ddrval = DirectDrawCreate( guid, &DirectDrawState.directdraw.ddx, NULL ); + ddrval = DirectDrawCreate(guid, &DirectDrawState.directdraw.ddx, NULL); if (FAILED(ddrval)) { if (guid != NULL) return 0; @@ -695,19 +693,18 @@ int DirectDraw_Start( GUID *guid ) DirectDrawState.initialized = TRUE; - ddrval = IDirectDraw_QueryInterface( DirectDrawState.directdraw.ddx, + ddrval = IDirectDraw_QueryInterface(DirectDrawState.directdraw.ddx, &IID_IDirectDraw7, - (LPVOID *)&DirectDrawState.directdraw.dd ); - if(FAILED(ddrval)) - { + (LPVOID *)&DirectDrawState.directdraw.dd); + if(FAILED(ddrval)) { gui_message("start_ddraw(): DirectX 7 or newer required"); DirectDraw_Release(); return 0; } - DirectDraw_GetCaps( &drivercaps, &helcaps ); - ShowDDCaps( drivercaps, 1 ); - ShowDDCaps( helcaps, 0 ); + DirectDraw_GetCaps(&drivercaps, &helcaps); + ShowDDCaps(drivercaps, 1); + ShowDDCaps(helcaps, 0); if (SUCCEEDED(DirectDraw_GetDisplayMode ())) return 1; if (guid != NULL) { @@ -2025,26 +2022,25 @@ HRESULT DirectDraw_GetDC( HDC *hdc, surface_type_e surface ) * 1999.08.02 Brian King Creation * */ -HRESULT DirectDraw_ReleaseDC( HDC hdc, surface_type_e surface ) +HRESULT DirectDraw_ReleaseDC (HDC hdc, surface_type_e surface) { HRESULT result; - if( surface == primary_surface ) - result = IDirectDrawSurface7_ReleaseDC( DirectDrawState.primary.surface, hdc ); + if (surface == primary_surface) + result = IDirectDrawSurface7_ReleaseDC(DirectDrawState.primary.surface, hdc); else if (surface == overlay_surface) - result = IDirectDrawSurface7_ReleaseDC( DirectDrawState.overlay.surface, hdc ); + result = IDirectDrawSurface7_ReleaseDC(DirectDrawState.overlay.surface, hdc); else - result = IDirectDrawSurface7_ReleaseDC( DirectDrawState.secondary.surface, hdc ); + result = IDirectDrawSurface7_ReleaseDC(DirectDrawState.secondary.surface, hdc); return result; } extern int display_change_requested; -HRESULT DirectDraw_UpdateOverlay( RECT sr, RECT dr ) +HRESULT DirectDraw_UpdateOverlay(RECT sr, RECT dr) { HRESULT result = DD_OK; - if (DirectDrawState.isoverlay && DirectDrawState.overlay.surface) - { + if (DirectDrawState.isoverlay && DirectDrawState.overlay.surface) { if ((drivercaps.dwCaps & DDCAPS_ALIGNBOUNDARYSRC) && drivercaps.dwAlignBoundarySrc) sr.left = (sr.left + drivercaps.dwAlignBoundarySrc / 2) & ~(drivercaps.dwAlignBoundarySrc - 1); if ((drivercaps.dwCaps & DDCAPS_ALIGNSIZESRC) && drivercaps.dwAlignSizeSrc) diff --git a/od-win32/hardfile_win32.c b/od-win32/hardfile_win32.c index ea78d60f..d5b3314a 100755 --- a/od-win32/hardfile_win32.c +++ b/od-win32/hardfile_win32.c @@ -819,7 +819,7 @@ int hdf_init (void) done = 1; num_drives = 0; #ifdef WINDDK - buffer = VirtualAlloc (NULL, 512, MEM_COMMIT, PAGE_READWRITE); + buffer = VirtualAlloc (NULL, 65536, MEM_COMMIT, PAGE_READWRITE); if (buffer) { memset (uae_drives, 0, sizeof (uae_drives)); num_drives = 0; @@ -861,7 +861,159 @@ char *hdf_getnameharddrive (int index, int flags) sprintf (name, "%s (%s)", uae_drives[index].device_name, tmp); return name; } + if (flags & 2) + return uae_drives[index].device_path; return uae_drives[index].device_name; } +static int progressdialogreturn; +static int progressdialogactive; + +static INT_PTR CALLBACK ProgressDialogProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch(msg) + { + case WM_DESTROY: + PostQuitMessage (0); + progressdialogactive = 0; + return TRUE; + case WM_CLOSE: + DestroyWindow(hDlg); + if (progressdialogreturn < 0) + progressdialogreturn = 0; + return TRUE; + case WM_INITDIALOG: + return TRUE; + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDCANCEL: + progressdialogreturn = 0; + DestroyWindow (hDlg); + return TRUE; + } + break; + } + return FALSE; +} + +extern HMODULE hUIDLL; +extern HINSTANCE hInst; + +#define COPY_CACHE_SIZE 1024*1024 +int harddrive_to_hdf(HWND hDlg, struct uae_prefs *p, int idx) +{ + HANDLE h = INVALID_HANDLE_VALUE, hdst = INVALID_HANDLE_VALUE; + void *cache = NULL; + DWORD ret, high, low, got, gotdst; + uae_u64 size, sizecnt, written; + char path[MAX_DPATH], tmp[MAX_DPATH], tmp2[MAX_DPATH]; + DWORD retcode = 0; + HWND hwnd, hwndprogress, hwndprogresstxt; + MSG msg; + int pct, cnt; + + cache = VirtualAlloc (NULL, COPY_CACHE_SIZE, MEM_COMMIT, PAGE_READWRITE); + if (!cache) + goto err; + h = CreateFile (uae_drives[idx].device_path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS | FILE_FLAG_NO_BUFFERING, NULL); + if (h == INVALID_HANDLE_VALUE) + goto err; + size = uae_drives[idx].size; + path[0] = 0; + DiskSelection (hDlg, IDC_PATH_NAME, 3, p, 0); + GetDlgItemText (hDlg, IDC_PATH_NAME, path, MAX_DPATH); + if (*path == 0) + goto err; + hdst = CreateFile (path, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN | FILE_FLAG_NO_BUFFERING, NULL); + if (hdst == INVALID_HANDLE_VALUE) + goto err; + low = (DWORD)size; + high = size >> 32; + ret = SetFilePointer(hdst, low, &high, FILE_BEGIN); + if (ret == INVALID_FILE_SIZE && GetLastError() != NO_ERROR) + goto err; + if (!SetEndOfFile(hdst)) + goto err; + high = 0; + SetFilePointer(hdst, 0, &high, FILE_BEGIN); + SetFilePointer(h, 0, &high, FILE_BEGIN); + progressdialogreturn = -1; + progressdialogactive = 1; + hwnd = CreateDialog (hUIDLL ? hUIDLL : hInst, MAKEINTRESOURCE (IDD_PROGRESSBAR), hDlg, ProgressDialogProc); + if (hwnd == NULL) + goto err; + hwndprogress = GetDlgItem(hwnd, IDC_PROGRESSBAR); + hwndprogresstxt = GetDlgItem(hwnd, IDC_PROGRESSBAR_TEXT); + ShowWindow (hwnd, SW_SHOW); + pct = 0; + cnt = 1000; + sizecnt = 0; + written = 0; + for (;;) { + if (progressdialogreturn >= 0) + break; + if (cnt > 0) { + SendMessage(hwndprogress, PBM_SETPOS, (WPARAM)pct, 0); + sprintf (tmp, "%dM / %dM (%d%%)", (int)(written >> 20), (int)(size >> 20), pct); + SendMessage(hwndprogresstxt, WM_SETTEXT, 0, (LPARAM)tmp); + while (PeekMessage (&msg, 0, 0, 0, PM_REMOVE)) { + TranslateMessage (&msg); + DispatchMessage (&msg); + } + cnt = 0; + } + got = gotdst = 0; + ReadFile(h, cache, COPY_CACHE_SIZE, &got, NULL); + if (got > 0) { + if (written + got > size) + got = size - written; + WriteFile(hdst, cache, got, &gotdst, NULL); + written += gotdst; + if (written == size) + break; + } + if (got != COPY_CACHE_SIZE) { + progressdialogreturn = 1; + break; + } + if (got != gotdst) { + progressdialogreturn = 2; + break; + } + cnt++; + sizecnt += got; + pct = (int)(sizecnt * 100 / size); + } + if (progressdialogactive) { + DestroyWindow (hwnd); + while (PeekMessage (&msg, 0, 0, 0, PM_REMOVE)) { + TranslateMessage (&msg); + DispatchMessage (&msg); + } + } + if (progressdialogreturn >= 0) + goto err; + retcode = 1; + WIN32GUI_LoadUIString (IDS_HDCLONE_OK, tmp, MAX_DPATH); + gui_message (tmp); + goto ok; + +err: + WIN32GUI_LoadUIString (IDS_HDCLONE_FAIL, tmp, MAX_DPATH); + sprintf (tmp2, tmp, GetLastError()); + gui_message (tmp2); + +ok: + if (h != INVALID_HANDLE_VALUE) + CloseHandle(h); + if (cache) + VirtualFree(cache, 0, MEM_RELEASE); + if (hdst != INVALID_HANDLE_VALUE) + CloseHandle(hdst); + return retcode; +} + diff --git a/od-win32/lcd.c b/od-win32/lcd.c new file mode 100755 index 00000000..714b0b6f --- /dev/null +++ b/od-win32/lcd.c @@ -0,0 +1,166 @@ + +#include "sysconfig.h" +#include "sysdeps.h" + +#if defined(LOGITECHLCD) + +#include "gui.h" +#include "lcd.h" + +#include + +static int inited; +static lgLcdConnectContext cctx; +static lgLcdDeviceDesc desc; +static int device; +static lgLcdBitmapHeader *lbh; +static uae_u8 *bitmap; + +#define TD_NUM_WIDTH 7 +#define TD_NUM_HEIGHT 7 +#define NUMBERS_NUM 16 +#define TD_LED_WIDTH 24 + +static char *numbers = { /* ugly 0123456789CHD%x */ +"+++++++--++++-+++++++++++++++++-++++++++++++++++++++++++++++++++++++++++++++-++++++-++++----++---+++++++++++++++" +"+xxxxx+--+xx+-+xxxxx++xxxxx++x+-+x++xxxxx++xxxxx++xxxxx++xxxxx++xxxxx++xxxx+-+x++x+-+xxx++-+xx+-+x+xxxxxxxxxxxx+" +"+x+++x+--++x+-+++++x++++++x++x+++x++x++++++x++++++++++x++x+++x++x+++x++x++++-+x++x+-+x++x+--+x++x++xxxxxxxxxxxx+" +"+x+-+x+---+x+-+xxxxx++xxxxx++xxxxx++xxxxx++xxxxx+--++x+-+xxxxx++xxxxx++x+----+xxxx+-+x++x+----+x+++xxxxxxxxxxxx+" +"+x+++x+---+x+-+x++++++++++x++++++x++++++x++x+++x+--+x+--+x+++x++++++x++x++++-+x++x+-+x++x+---+x+x++xxxxxxxxxxxx+" +"+xxxxx+---+x+-+xxxxx++xxxxx+----+x++xxxxx++xxxxx+--+x+--+xxxxx++xxxxx++xxxx+-+x++x+-+xxx+---+x++xx+xxxxxxxxxxxx+" +"+++++++---+++-++++++++++++++----+++++++++++++++++--+++--++++++++++++++++++++-++++++-++++----------++++++++++++++" +}; +static char *one = { "x" }; + +void lcd_close(void) +{ + lgLcdDeInit(); + xfree(lbh); + lbh = NULL; + bitmap = NULL; + inited = 0; +} + +static int lcd_init(void) +{ + DWORD ret; + lgLcdOpenContext octx; + + ret = lgLcdInit(); + if (ret != ERROR_SUCCESS) { + if (ret == RPC_S_SERVER_UNAVAILABLE || ret == ERROR_OLD_WIN_VERSION) { + write_log ("LCD: Logitech LCD system not detected\n"); + return 0; + } + write_log ("LCD: lgLcdInit() returned %d\n", ret); + return 0; + } + memset (&cctx, 0, sizeof (cctx)); + cctx.appFriendlyName = "WinUAE"; + cctx.isPersistent = TRUE; + cctx.isAutostartable = FALSE; + ret = lgLcdConnect(&cctx); + if (ret != ERROR_SUCCESS) { + write_log ("LCD: lgLcdConnect() returned %d\n", ret); + lcd_close(); + return 0; + } + ret = lgLcdEnumerate(cctx.connection, 0, &desc); + if (ret != ERROR_SUCCESS) { + write_log ("LCD: lgLcdEnumerate() returned %d\n", ret); + lcd_close(); + return 0; + } + lbh = xcalloc (1, sizeof (lgLcdBitmapHeader) + desc.Width * desc.Height); + lbh->Format = LGLCD_BMP_FORMAT_160x43x1; + bitmap = (uae_u8*)lbh + sizeof (lgLcdBitmapHeader); + memset (&octx, 0, sizeof (octx)); + octx.connection = cctx.connection; + octx.index = 0; + ret = lgLcdOpen(&octx); + if (ret != ERROR_SUCCESS) { + write_log("LCD: lgLcdOpen() returned %d\n", ret); + lcd_close(); + return 0; + } + device = octx.device; + write_log("LCD: Logitech LCD system initialized\n"); + return 1; +} + +static void putnumber(int x, int y, int n, int inv) +{ + int xx, yy; + uae_u8 *dst, *src; + for (yy = 0; yy < TD_NUM_HEIGHT; yy++) { + for (xx = 0; xx < TD_NUM_WIDTH; xx++) { + dst = bitmap + (yy + y) * desc.Width + (xx + x); + src = numbers + n * TD_NUM_WIDTH + yy * TD_NUM_WIDTH * NUMBERS_NUM + xx; + *dst = 0; + if (*src == 'x') + *dst = 0xff; + if (inv) + *dst ^= 0xff; + } + } +} + +static void putnumbers(int x, int y, int num, int inv) +{ + putnumber(x, y, num / 10, inv); + putnumber(x + TD_NUM_WIDTH, y, num % 10, inv); +} + +void lcd_update(int led, int on) +{ + int track, x, y, y1, y2; + + if (!inited) + return; + + x = 10; + y1 = desc.Height - TD_NUM_HEIGHT - 2; + y2 = y1 - TD_NUM_HEIGHT - 4; + if (led >= 1 && led <= 4) { + x += (led - 1) * TD_LED_WIDTH; + y = y1; + track = gui_data.drive_track[led - 1]; + putnumbers(x, y, track, on); + } else if (led == 0) { + y = y2; + x += 2 * TD_LED_WIDTH; + putnumber(x, y, 14, on); + putnumber(x + TD_NUM_WIDTH, y, 15, on); + } else if (led == 5) { + y = y2; + x += 3 * TD_LED_WIDTH; + putnumber(x, y, 11, on); + putnumber(x + TD_NUM_WIDTH, y, 12, on); + } else if (led == 6) { + y = y2; + x += 4 * TD_LED_WIDTH; + putnumber(x, y, 10, on); + putnumber(x + TD_NUM_WIDTH, y, 12, on); + } else if (led == 7) { + y = y2; + x += 1 * TD_LED_WIDTH; + putnumbers(x, y, gui_data.fps <= 999 ? gui_data.fps / 10 : 99, 0); + } else if (led == 8) { + y = y2; + x += 0 * TD_LED_WIDTH; + putnumbers(x, y, gui_data.idle <= 999 ? gui_data.idle / 10 : 99, 0); + } + lgLcdUpdateBitmap(device, lbh, LGLCD_ASYNC_UPDATE(LGLCD_PRIORITY_NORMAL)); +} + +int lcd_open(void) +{ + if (!inited) { + if (!lcd_init()) + return 0; + inited = 1; + } + return 1; +} + +#endif diff --git a/od-win32/lcd.h b/od-win32/lcd.h new file mode 100755 index 00000000..087b6d3e --- /dev/null +++ b/od-win32/lcd.h @@ -0,0 +1,3 @@ +extern int lcd_open(void); +extern void lcd_close(void); +extern void lcd_update(int, int); diff --git a/od-win32/md-fpp.h b/od-win32/md-fpp.h index 82cd75da..45ff78fb 100755 --- a/od-win32/md-fpp.h +++ b/od-win32/md-fpp.h @@ -3,123 +3,178 @@ * * MC68881 emulation * - * Conversion routines for hosts with unknown floating point format. + * Conversion routines for hosts knowing floating point format. * * Copyright 1996 Herman ten Brugge + * Modified 2005 Peter Keunecke */ +#if USE_LONG_DOUBLE +STATIC_INLINE long double to_exten(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) +{ + uae_u32 longarray[] = {wrd3,wrd2,((wrd1>>16)&0xffff)}; // little endian + register long double *longdoublewords = longarray; + + return(*longdoublewords); +} +#define HAVE_to_exten + +STATIC_INLINE void from_exten(long double src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3) +{ + register uae_u32 *longarray = &src; + register uae_u16 *finalword = &src + 8; + + *wrd1 = ((uae_u32)*finalword)<<16; + *wrd2 = longarray[1]; + *wrd3 = longarray[0]; // little endian +} +#define HAVE_from_exten +#endif /* USE_LONG_DOUBLE */ + +#if defined(X86_MSVC_ASSEMBLY) #ifndef HAVE_to_single -STATIC_INLINE double to_single (uae_u32 value) +#define HAVE_to_single +STATIC_INLINE double to_single (uae_u32 longvalue) { - double frac; + double floatfake; - if ((value & 0x7fffffff) == 0) - return (0.0); - frac = (double) ((value & 0x7fffff) | 0x800000) / 8388608.0; - if (value & 0x80000000) - frac = -frac; - return (ldexp (frac, ((value >> 23) & 0xff) - 127)); + __asm { + fld dword ptr longvalue; + fstp qword ptr floatfake; + } + return(floatfake); } #endif #ifndef HAVE_from_single -STATIC_INLINE uae_u32 from_single (double src) +#define HAVE_from_single +STATIC_INLINE uae_u32 from_single (double floatfake) { - int expon; - uae_u32 tmp; - double frac; + uae_u32 longvalue; - if (src == 0.0) - return 0; - if (src < 0) { - tmp = 0x80000000; - src = -src; - } else { - tmp = 0; + __asm { + fld qword ptr floatfake; + fstp dword ptr longvalue; } - frac = frexp (src, &expon); - frac += 0.5 / 16777216.0; - if (frac >= 1.0) { - frac /= 2.0; - expon++; - } - if (expon <= -127) return 0; - if (expon >= 127) expon = 127; - return (tmp | (((expon + 127 - 1) & 0xff) << 23) | - (((int) (frac * 16777216.0)) & 0x7fffff)); + return(longvalue); } #endif #ifndef HAVE_to_exten +#define HAVE_to_exten STATIC_INLINE double to_exten(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) { - double frac; + uae_u32 longarray[] = {wrd3,wrd2,((wrd1>>16)&0xffff)}; // little endian + double extenfake; - if ((wrd1 & 0x7fff0000) == 0 && wrd2 == 0 && wrd3 == 0) - return 0.0; - frac = (double) wrd2 / 2147483648.0 + - (double) wrd3 / 9223372036854775808.0; - if (wrd1 & 0x80000000) - frac = -frac; - return ldexp (frac, ((wrd1 >> 16) & 0x7fff) - 16383); + __asm { + fld tbyte ptr longarray; + fstp qword ptr extenfake; + } + return(extenfake); } #endif #ifndef HAVE_from_exten +#define HAVE_from_exten STATIC_INLINE void from_exten(double src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3) { - int expon; - double frac; + uae_u32 longarray[3], *srcarray = (uae_u32 *)&src; - if (src == 0.0) { - *wrd1 = 0; - *wrd2 = 0; - *wrd3 = 0; - return; - } - if (src < 0) { - *wrd1 = 0x80000000; - src = -src; - } else { - *wrd1 = 0; + __asm { + fld qword ptr src; + fstp tbyte ptr longarray; } - frac = frexp (src, &expon); - frac += 0.5 / 18446744073709551616.0; - if (frac >= 1.0) { - frac /= 2.0; - expon++; - } - *wrd1 |= (((expon + 16383 - 1) & 0x7fff) << 16); - *wrd2 = (uae_u32) (frac * 4294967296.0); - *wrd3 = (uae_u32) (frac * 18446744073709551616.0 - *wrd2 * 4294967296.0); + *wrd1 = (longarray[2] & 0xffff) <<16; + *wrd2 = longarray[1]; + *wrd3 = longarray[0]; // little endian + if (!srcarray[0] && (srcarray[1]==0x7ff00000 || srcarray[1]==0xfff00000)) + *wrd2 = 0; // The MSB of the mantissa was set wrongly for infinity, causing a NaN +} +#endif +#endif /* X86_MSVC_ASSEMBLY */ + +#ifndef HAVE_to_single +#define HAVE_to_single +STATIC_INLINE double to_single (uae_u32 value) +{ + union { + float f; + uae_u32 u; + } val; + + val.u = value; + return val.f; +} +#endif + +#ifndef HAVE_from_single +#define HAVE_from_single +STATIC_INLINE uae_u32 from_single (double src) +{ + union { + float f; + uae_u32 u; + } val; + + val.f = (float) src; + return val.u; } #endif #ifndef HAVE_to_double +#define HAVE_to_double STATIC_INLINE double to_double(uae_u32 wrd1, uae_u32 wrd2) +{ + union { + double d; + uae_u32 u[2]; + } val; + + val.u[0] = wrd2; // little endian + val.u[1] = wrd1; + return val.d; +} +#endif + +#ifndef HAVE_from_double +#define HAVE_from_double +STATIC_INLINE void from_double(double src, uae_u32 * wrd1, uae_u32 * wrd2) +{ + register uae_u32 *longarray = (uae_u32 *)&src; + + *wrd1 = longarray[1]; // little endian + *wrd2 = longarray[0]; +} +#endif + +static double twoto32 = 4294967296.0; +#ifndef HAVE_to_exten +#define HAVE_to_exten +STATIC_INLINE double to_exten(uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3) { double frac; - if ((wrd1 & 0x7fffffff) == 0 && wrd2 == 0) + if ((wrd1 & 0x7fff0000) == 0 && wrd2 == 0 && wrd3 == 0) return 0.0; - frac = (double) ((wrd1 & 0xfffff) | 0x100000) / 1048576.0 + - (double) wrd2 / 4503599627370496.0; + frac = ((double)wrd2 + ((double)wrd3 / twoto32)) / 2147483648.0; if (wrd1 & 0x80000000) frac = -frac; - return ldexp (frac, ((wrd1 >> 20) & 0x7ff) - 1023); + return ldexp (frac, ((wrd1 >> 16) & 0x7fff) - 16383); } #endif -#ifndef HAVE_from_double -STATIC_INLINE void from_double(double src, uae_u32 * wrd1, uae_u32 * wrd2) +#ifndef HAVE_from_exten +#define HAVE_from_exten +STATIC_INLINE void from_exten(double src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3) { int expon; - int tmp; double frac; if (src == 0.0) { *wrd1 = 0; *wrd2 = 0; + *wrd3 = 0; return; } if (src < 0) { @@ -129,13 +184,13 @@ STATIC_INLINE void from_double(double src, uae_u32 * wrd1, uae_u32 * wrd2) *wrd1 = 0; } frac = frexp (src, &expon); - frac += 0.5 / 9007199254740992.0; + frac += 0.5 / (twoto32 * twoto32); if (frac >= 1.0) { frac /= 2.0; expon++; } - tmp = (uae_u32) (frac * 2097152.0); - *wrd1 |= (((expon + 1023 - 1) & 0x7ff) << 20) | (tmp & 0xfffff); - *wrd2 = (uae_u32) (frac * 9007199254740992.0 - tmp * 4294967296.0); + *wrd1 |= (((expon + 16383 - 1) & 0x7fff) << 16); + *wrd2 = (uae_u32) (frac * twoto32); + *wrd3 = (uae_u32) ((frac * twoto32 - *wrd2) * twoto32); } #endif diff --git a/od-win32/mman.c b/od-win32/mman.c index 9fc75734..4dbe6458 100755 --- a/od-win32/mman.c +++ b/od-win32/mman.c @@ -132,9 +132,6 @@ void init_shm(void) allocated = 1; } - while (memstats.dwAvailPageFile + memstats.dwAvailPhys < max_z3fastmem) - max_z3fastmem <<= 1; - write_log("Max Z3FastRAM %dM. Total physical RAM %uM\n", max_z3fastmem >> 20, totalphys64 >> 20); } diff --git a/od-win32/resources/resource.h b/od-win32/resources/resource.h index b3bd85c2..91107bb4 100755 --- a/od-win32/resources/resource.h +++ b/od-win32/resources/resource.h @@ -5,6 +5,7 @@ #define IDS_KICKSTART 1 #define IDS_DISK 2 #define IDS_DISPLAY 3 +#define IDC_HARDDRIVE_IMAGE 3 #define IDS_HARDDISK 4 #define IDS_FLOPPY 5 #define IDS_ABOUT 6 @@ -226,6 +227,7 @@ #define IDD_FRONTEND 249 #define IDS_SOUND_SWAP_PAULA 249 #define IDS_SOUND_SWAP_AHI 250 +#define IDD_PROGRESSBAR 250 #define IDS_SOUND_SWAP_BOTH 251 #define IDS_NUMSG_NEEDEXT2 300 #define IDS_NUMSG_NOROMKEY 301 @@ -255,6 +257,8 @@ #define IDS_NUMSG_KICKREP 325 #define IDS_NUMSG_KICKREPNO 326 #define IDS_NUMSG_NOROM 327 +#define IDS_HDCLONE_OK 328 +#define IDS_HDCLONE_FAIL 329 #define IDS_QS_MODELS 1000 #define IDS_QS_MODEL_A500 1001 #define IDS_QS_MODEL_A500P 1002 @@ -315,6 +319,7 @@ #define IDC_LORES 1176 #define IDC_VSYNC 1177 #define IDC_AFULLSCREEN 1178 +#define IDC_LORES_SMOOTHED 1179 #define IDC_FRAMERATE 1185 #define IDC_RATETEXT 1186 #define IDC_XSIZE 1187 @@ -649,6 +654,8 @@ #define IDC_CATWEASEL 1611 #define IDC_AVIOUTPUT_FPS_STATIC 1612 #define IDC_INPUTAMIGA 1612 +#define IDC_ALWAYSONTOP2 1612 +#define IDC_BORDERLESS 1612 #define IDC_AVIOUTPUT_VIDEO 1613 #define IDC_INPUTAUTOFIRE 1613 #define IDC_AVIOUTPUT_AUDIO 1614 @@ -819,6 +826,9 @@ #define IDC_FE_SCREENSHOT 1702 #define IDC_PATHS_DEFAULTTYPE 1704 #define IDC_SCSIMODE 1705 +#define IDC_PROGRESS1 1705 +#define IDC_PROGRESSBAR 1705 +#define IDC_PROGRESSBAR_TEXT 1706 #define ID__FLOPPYDRIVES 40004 #define ID_FLOPPYDRIVES_DF0 40005 #define ID_ST_CONFIGURATION 40010 @@ -837,9 +847,9 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NO_MFC 1 #define _APS_3D_CONTROLS 1 -#define _APS_NEXT_RESOURCE_VALUE 249 +#define _APS_NEXT_RESOURCE_VALUE 251 #define _APS_NEXT_COMMAND_VALUE 40021 -#define _APS_NEXT_CONTROL_VALUE 1705 +#define _APS_NEXT_CONTROL_VALUE 1707 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/od-win32/resources/resource.hm b/od-win32/resources/resource.hm index 55d14238..732d9696 100755 --- a/od-win32/resources/resource.hm +++ b/od-win32/resources/resource.hm @@ -5,8 +5,5 @@ #define HIDC_EDITDESCRIPTION 0x8087057e // IDD_LOADSAVE [English (United States)] #define HIDC_EDITNAME 0x8087057d // IDD_LOADSAVE [English (United States)] #define HIDC_EDITPATH 0x80870582 // IDD_LOADSAVE [English (United States)] -#define HIDC_LORES 0x806c0498 // IDD_DISPLAY [English (United States)] #define HIDC_MAPDRIVES 0x807105e3 // IDD_HARDDISK [English (United States)] #define HIDC_MAPDRIVES_NET 0x807105e4 // IDD_HARDDISK [English (United States)] -#define HIDC_PFULLSCREEN 0x806c04a8 // IDD_DISPLAY [English (United States)] -#define HIDC_TEST16BIT 0x806c05e2 // IDD_DISPLAY [English (United States)] diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index 7e6b4550..9456e012 100755 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -36,18 +36,18 @@ STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD EXSTYLE WS_EX_CONTEXTHELP FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN - GROUPBOX "ROM Settings:",-1,5,0,290,74 - RTEXT "Boot ROM File:",IDC_ROMTEXT,10,15,75,10 + GROUPBOX "System ROM settings",-1,5,0,290,74 + RTEXT "Main ROM File:",IDC_ROMTEXT,10,15,75,10 COMBOBOX IDC_ROMFILE,89,12,186,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "...",IDC_KICKCHOOSER,280,10,10,15 RTEXT "Extended ROM File:",IDC_ROMFILE2TEXT,10,35,75,10 COMBOBOX IDC_ROMFILE2,89,31,186,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "...",IDC_ROMCHOOSER2,280,30,10,15 - CONTROL "MAPROM emulation [] Creates BlizKick-compatible memory area.",IDC_MAPROM, + CONTROL "MapROM emulation [] Creates BlizKick-compatible memory area.",IDC_MAPROM, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,95,54,82,10 - CONTROL "ShapeShifter support [] Patches Kickstart ROM for ShapeShifter compatibility.",IDC_KICKSHIFTER, + CONTROL "ShapeShifter support [] Patches the system ROM for ShapeShifter compatibility.",IDC_KICKSHIFTER, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,54,80,10 - GROUPBOX "Misc settings:",-1,5,76,290,57 + GROUPBOX "Miscellaneous",-1,5,76,290,57 RTEXT "Cartridge ROM File:",IDC_FLASHTEXT2,8,93,75,10 COMBOBOX IDC_CARTFILE,89,90,186,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "...",IDC_CARTCHOOSER,280,90,10,15 @@ -61,36 +61,37 @@ STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN GROUPBOX "Screen",IDC_SCREENRESTEXT,12,0,199,67,BS_LEFT - RTEXT "Fullscreen",IDC_SELECTRESTEXT,17,17,34,15,SS_CENTERIMAGE - COMBOBOX IDC_DISPLAYSELECT,57,10,147,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_RESOLUTION,57,27,52,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_REFRESHRATE,143,27,61,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - RTEXT "Windowed",IDC_WINDOWEDTEXT,18,51,35,8 - EDITTEXT IDC_XSIZE,57,48,35,12,ES_NUMBER - EDITTEXT IDC_YSIZE,101,48,35,12,ES_NUMBER - CONTROL "VSync",IDC_VSYNC,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,145,49,54,10 - GROUPBOX "Settings",IDC_SETTINGSTEXT,12,77,199,89 - CONTROL "Full Screen",IDC_AFULLSCREEN,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,35,89,90,10 - CONTROL "Full Screen RTG",IDC_PFULLSCREEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,131,89,70,10,0,HIDC_PFULLSCREEN - CONTROL "Correct aspect ratio",IDC_ASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,35,106,90,10 - CONTROL "Lo-res",IDC_LORES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,131,106,70,10,0,HIDC_LORES + RTEXT "Full screen:",IDC_SELECTRESTEXT,17,17,38,15,SS_CENTERIMAGE + COMBOBOX IDC_DISPLAYSELECT,59,10,147,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_RESOLUTION,59,27,52,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_REFRESHRATE,145,27,61,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + RTEXT "Windowed:",IDC_WINDOWEDTEXT,18,51,37,8 + EDITTEXT IDC_XSIZE,59,48,35,12,ES_NUMBER + EDITTEXT IDC_YSIZE,103,48,35,12,ES_NUMBER + CONTROL "Vertical sync",IDC_VSYNC,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,147,49,54,10 + GROUPBOX "Settings",IDC_SETTINGSTEXT,12,73,199,93 + CONTROL "Full-screen native modes",IDC_AFULLSCREEN,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,21,85,92,10 + CONTROL "Full-screen RTG modes",IDC_PFULLSCREEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,85,87,10 + CONTROL "Correct aspect ratio",IDC_ASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,21,99,92,10 + CONTROL "Force low resolution",IDC_LORES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,99,85,10 LTEXT "Refresh:",IDC_REFRESHTEXT,18,129,28,8 - CONTROL "Slider1",IDC_FRAMERATE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,46,124,75,20 - EDITTEXT IDC_RATETEXT,126,128,77,12,ES_CENTER | ES_READONLY + CONTROL "Slider1",IDC_FRAMERATE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,47,124,75,20 + EDITTEXT IDC_RATETEXT,127,128,77,12,ES_CENTER | ES_READONLY GROUPBOX "Centering",IDC_STATIC,221,0,61,67 CONTROL "Horizontal",IDC_XCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,229,16,45,10 CONTROL "Vertical",IDC_YCENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,229,32,39,10 - GROUPBOX "Line mode",IDC_LINEMODE,222,77,61,74 + GROUPBOX "Line mode",IDC_LINEMODE,222,73,61,73 CONTROL "Normal",IDC_LM_NORMAL,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,233,89,38,10 - CONTROL "Doubled",IDC_LM_DOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,233,105,41,10 - CONTROL "Scanline",IDC_LM_SCANLINES,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,233,121,40,10 + CONTROL "Double",IDC_LM_DOUBLED,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,233,105,41,10 + CONTROL "Scanlines",IDC_LM_SCANLINES,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,233,121,40,10 COMBOBOX IDC_DA_MODE,35,183,58,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | NOT WS_VISIBLE | WS_VSCROLL | WS_TABSTOP CONTROL "",IDC_DA_SLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | NOT WS_VISIBLE | WS_TABSTOP,99,179,101,20 - PUSHBUTTON "Detect pixel format",IDC_TEST16BIT,210,181,73,14,0,0,HIDC_TEST16BIT - LTEXT "FPS Adj.",IDC_REFRESH2TEXT,18,149,28,8 - CONTROL "",IDC_FRAMERATE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,46,144,127,20 - EDITTEXT IDC_RATE2TEXT,177,148,26,12,ES_CENTER | ES_READONLY - COMBOBOX IDC_RESOLUTIONDEPTH,110,27,32,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Detect Pixel Format",IDC_TEST16BIT,210,181,73,14 + LTEXT "FPS Adj.:",IDC_REFRESH2TEXT,17,149,30,8 + CONTROL "",IDC_FRAMERATE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,47,144,127,20 + EDITTEXT IDC_RATE2TEXT,178,148,26,12,ES_CENTER | ES_READONLY + COMBOBOX IDC_RESOLUTIONDEPTH,112,27,32,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + CONTROL "Filtered low resolution",IDC_LORES_SMOOTHED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,113,85,10 END IDD_MEMORY DIALOGEX 0, 0, 300, 175 @@ -98,16 +99,16 @@ STYLE 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,40,274,93 + GROUPBOX "Memory settings",-1,14,40,274,93 RTEXT "Chip:",-1,24,60,20,10,SS_CENTERIMAGE CONTROL "Slider1",IDC_CHIPMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,55,50,20 RTEXT "Fast:",IDC_FASTTEXT,24,85,20,10,SS_CENTERIMAGE CONTROL "Slider1",IDC_FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,54,80,50,20 RTEXT "Slow:",-1,149,60,20,10,SS_CENTERIMAGE CONTROL "Slider1",IDC_SLOWMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,55,50,20 - RTEXT "Z3-Fast:",IDC_Z3TEXT,139,85,30,10,SS_CENTERIMAGE + RTEXT "Z3 Fast:",IDC_Z3TEXT,139,85,30,10,SS_CENTERIMAGE CONTROL "Slider1",IDC_Z3FASTMEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,80,60,20 - RTEXT "RTG: [] Graphics card memory. Required for Picasso96 emulation.",IDC_GFXCARDTEXT,96,110,76,10,SS_NOTIFY | SS_CENTERIMAGE + RTEXT "RTG: [] Graphics card memory. Required for RTG (Picasso96) emulation.",IDC_GFXCARDTEXT,81,110,90,10,SS_NOTIFY | SS_CENTERIMAGE CONTROL "Slider1",IDC_P96MEM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,179,105,60,20 EDITTEXT IDC_CHIPRAM,105,59,30,12,ES_CENTER | ES_READONLY EDITTEXT IDC_FASTRAM,105,86,30,12,ES_CENTER | ES_READONLY @@ -120,7 +121,7 @@ IDD_CPU DIALOGEX 0, 0, 300, 177 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - GROUPBOX "CPU Type:",IDC_STATIC,5,5,81,166,BS_LEFT + GROUPBOX "CPU",IDC_STATIC,5,5,81,166,BS_LEFT CONTROL "68000",IDC_CPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,10,18,63,10 CONTROL "68010",IDC_CPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,10,33,65,10 CONTROL "68EC020",IDC_CPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,10,48,65,10 @@ -130,9 +131,9 @@ BEGIN CONTROL "68040",IDC_CPU6,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,10,108,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,130,70,10 - CONTROL "JIT [] Enable Just-In-Time CPU emulator. Increases the speed of CPU emulation 10-100x. Requires 68020 or 68040 CPU.",IDC_JITENABLE, + CONTROL "JIT [] Enable just-in-time CPU emulator. Significantly increases the speed of CPU emulation. Requires 68020 or 68040 CPU.",IDC_JITENABLE, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,145,64,10 - GROUPBOX "CPU Emulation Speed:",IDC_STATIC,90,5,205,86 + GROUPBOX "CPU emulation speed",IDC_STATIC,90,5,205,86 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 @@ -141,20 +142,20 @@ BEGIN RTEXT "CPU",IDC_CS_CPU_TEXT,96,71,15,10,SS_CENTERIMAGE | WS_TABSTOP CONTROL "Slider1",IDC_SPEED,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,114,66,67,20 LTEXT "Chipset",IDC_CS_CHIPSET_TEXT,182,71,25,10,SS_CENTERIMAGE | NOT WS_GROUP | WS_TABSTOP - RTEXT "CPU Idle",IDC_CS_CPU_TEXT2,236,56,32,10,SS_CENTERIMAGE | WS_TABSTOP + RTEXT "CPU idle",IDC_CS_CPU_TEXT2,236,56,32,10,SS_CENTERIMAGE | WS_TABSTOP CONTROL "",IDC_CPUIDLE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,219,66,69,20 - GROUPBOX "Advanced JIT settings:",IDC_STATIC,90,92,205,79 - RTEXT "Cache Size:",IDC_CS_CACHE_TEXT,95,109,45,10,SS_CENTERIMAGE | WS_TABSTOP + GROUPBOX "Advanced JIT settings",IDC_STATIC,90,92,205,79 + RTEXT "Cache size:",IDC_CS_CACHE_TEXT,95,109,45,10,SS_CENTERIMAGE | WS_TABSTOP CONTROL "Slider1",IDC_CACHE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,140,104,115,20 EDITTEXT IDC_CACHETEXT,255,109,30,12,ES_CENTER | ES_READONLY - CONTROL "Hard Flush",IDC_HARDFLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,128,60,10 - CONTROL "Const Jump",IDC_CONSTJUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,142,60,10 - CONTROL "FPU Support",IDC_JITFPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,155,60,10 - CONTROL "Force Settings",IDC_FORCE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,165,128,61,10 - CONTROL "No Flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,165,142,60,10 + CONTROL "Hard flush",IDC_HARDFLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,128,60,10 + CONTROL "Constant jump",IDC_CONSTJUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,142,60,10 + CONTROL "FPU support",IDC_JITFPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,100,155,60,10 + CONTROL "Force settings",IDC_FORCE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,165,128,61,10 + CONTROL "No flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,165,142,60,10 CONTROL "Direct",IDC_TRUST0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,230,128,34,10 CONTROL "Indirect",IDC_TRUST1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,230,142,45,10 - CONTROL "After Picasso96",IDC_TRUST2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,230,155,64,10 + CONTROL "After RTG",IDC_TRUST2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,230,155,64,10 END IDD_FLOPPY DIALOGEX 0, 0, 300, 224 @@ -164,42 +165,42 @@ BEGIN RTEXT "DF0:",IDC_STATIC,10,7,20,10,SS_CENTERIMAGE COMBOBOX IDC_DF0TEXT,2,22,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_DF0TYPE,123,6,49,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Write Protected",IDC_STATIC,174,8,59,10,SS_CENTERIMAGE + 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 RTEXT "DF1:",IDC_STATIC,10,42,20,10,SS_CENTERIMAGE COMBOBOX IDC_DF1TEXT,2,58,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_DF1TYPE,123,42,49,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Write Protected",IDC_STATIC,174,43,59,10,SS_CENTERIMAGE + 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 RTEXT "DF2:",IDC_STATIC,10,77,20,10,SS_CENTERIMAGE COMBOBOX IDC_DF2TEXT,2,93,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_DF2TYPE,123,77,49,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Write Protected",IDC_STATIC,174,77,59,10,SS_CENTERIMAGE + 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 RTEXT "DF3:",IDC_STATIC,10,112,20,9,SS_CENTERIMAGE COMBOBOX IDC_DF3TEXT,2,128,296,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_DF3TYPE,123,112,49,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Write Protected",IDC_STATIC,174,113,59,10,SS_CENTERIMAGE + 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 disk image",IDC_SETTINGSTEXT,5,183,289,35 + GROUPBOX "New floppy disk image",IDC_SETTINGSTEXT,5,183,289,35 COMBOBOX IDC_FLOPPYTYPE,16,196,51,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Create Standard ""Floppy"" [] Creates standard 880kb ADF disk image.",IDC_CREATE,76,196,97,15 - PUSHBUTTON "Create Custom ""Floppy"" [] Creates ~2Mb low level (MFM) ADF disk image. Useful for programs that use non-AmigaDOS disk format (for example some save disks or MSDOS formatted floppies)",IDC_CREATE_RAW,183,196,101,15 + PUSHBUTTON "Create standard disk [] Creates a standard 880 KB ADF disk image.",IDC_CREATE,76,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,183,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,152,116,20 EDITTEXT IDC_FLOPPYSPDTEXT,169,155,107,12,ES_CENTER | ES_READONLY - PUSHBUTTON "Delete Saveimage",IDC_SAVEIMAGE0,43,5,70,15,NOT WS_VISIBLE - PUSHBUTTON "Delete Saveimage",IDC_SAVEIMAGE1,43,40,70,15,NOT WS_VISIBLE - PUSHBUTTON "Delete Saveimage",IDC_SAVEIMAGE2,43,75,70,15,NOT WS_VISIBLE - PUSHBUTTON "Delete Saveimage",IDC_SAVEIMAGE3,43,110,70,15,NOT WS_VISIBLE + 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 END IDD_HARDDISK DIALOGEX 0, 0, 300, 231 @@ -208,15 +209,15 @@ 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,182 - PUSHBUTTON "Add &Directory...",IDC_NEW_FS,5,186,60,15 - PUSHBUTTON "Add &Hardfile...",IDC_NEW_HF,70,186,60,15 - PUSHBUTTON "Add Ha&rddrive...",IDC_NEW_HD,135,186,60,15 + PUSHBUTTON "Add &directory...",IDC_NEW_FS,5,186,60,15 + PUSHBUTTON "Add &hardfile...",IDC_NEW_HF,70,186,60,15 + PUSHBUTTON "Add ha&rd drive...",IDC_NEW_HD,135,186,60,15 PUSHBUTTON "Remove",IDC_REMOVE,235,186,60,15 PUSHBUTTON "&Properties",IDC_EDIT,235,207,60,15 - CONTROL "Add PC Drives at Startup",IDC_MAPDRIVES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,205,100,10,0,HIDC_MAPDRIVES + CONTROL "Add PC drives at startup",IDC_MAPDRIVES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,205,100,10,0,HIDC_MAPDRIVES CONTROL "Disable UAEFSDB-support",IDC_NOUAEFSDB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,205,115,10 CONTROL "Don't use Windows Recycle Bin",IDC_NORECYCLEBIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,216,115,10 - CONTROL "Add Network Drives...",IDC_MAPDRIVES_NET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,216,101,10,0,HIDC_MAPDRIVES_NET + CONTROL "Include network drives",IDC_MAPDRIVES_NET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,216,101,10,0,HIDC_MAPDRIVES_NET END IDD_SOUND DIALOGEX 0, 0, 300, 244 @@ -225,7 +226,7 @@ FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN RTEXT "Sound device:",IDC_SOUNDCARD,8,9,51,13,SS_CENTERIMAGE COMBOBOX IDC_SOUNDCARDLIST,64,9,229,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Sound Emulation",IDC_SOUNDSETTINGS,5,30,120,68 + GROUPBOX "Sound emulation",IDC_SOUNDSETTINGS,5,30,120,68 CONTROL "Disabled",IDC_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,13,45,43,10 CONTROL "Disabled, but emulated",IDC_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,57,88,10 CONTROL "Enabled",IDC_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,69,42,10 @@ -237,29 +238,29 @@ BEGIN CONTROL "Slider1",IDC_SOUNDBUFFERRAM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,138,75,106,19 EDITTEXT IDC_SOUNDBUFFERMEM,248,78,40,12,ES_CENTER | ES_READONLY GROUPBOX "Settings",IDC_SOUNDINTERPOLATION2,6,101,290,60 - LTEXT "Frequency",IDC_SOUNDFREQTXT,13,111,37,8,SS_CENTERIMAGE + LTEXT "Frequency:",IDC_SOUNDFREQTXT,13,111,37,8,SS_CENTERIMAGE COMBOBOX IDC_SOUNDFREQ,15,120,59,75,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "Audio filter",IDC_SOUNDFILTERTXT,227,135,34,8,SS_CENTERIMAGE + LTEXT "Audio filter:",IDC_SOUNDFILTERTXT,227,135,34,8,SS_CENTERIMAGE COMBOBOX IDC_SOUNDFILTER,227,144,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Stereo mode",IDC_SOUNDSTEREOTXT,86,111,41,8,SS_CENTERIMAGE + LTEXT "Stereo mode:",IDC_SOUNDSTEREOTXT,86,111,41,8,SS_CENTERIMAGE COMBOBOX IDC_SOUNDSTEREO,85,120,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Interpolation",IDC_SOUNDINTERPOLATIONTXT,227,111,41,8,SS_CENTERIMAGE + LTEXT "Interpolation:",IDC_SOUNDINTERPOLATIONTXT,227,111,41,8,SS_CENTERIMAGE COMBOBOX IDC_SOUNDINTERPOLATION,227,119,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Stereo separation",IDC_SOUNDSTEREOSEPTXT,155,111,56,8,SS_CENTERIMAGE + LTEXT "Stereo separation:",IDC_SOUNDSTEREOSEPTXT,155,111,56,8,SS_CENTERIMAGE COMBOBOX IDC_SOUNDSTEREOSEP,156,120,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Stereo mixing delay",IDC_SOUNDSTEREOMIXTXT,155,135,63,8,SS_CENTERIMAGE + LTEXT "Stereo mixing delay:",IDC_SOUNDSTEREOMIXTXT,155,135,63,8,SS_CENTERIMAGE COMBOBOX IDC_SOUNDSTEREOMIX,156,144,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Disk Drive Sound Emulation",IDC_STATIC,6,164,290,46 + GROUPBOX "Floppy drive sound emulation",IDC_STATIC,6,164,290,46 CONTROL "",IDC_SOUNDDRIVEVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,14,172,107,19 EDITTEXT IDC_SOUNDDRIVEVOLUME2,124,178,40,12,ES_CENTER | ES_READONLY COMBOBOX IDC_SOUNDDRIVE,237,174,46,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_SOUNDDRIVESELECT,18,192,265,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Sound driver lag compensation",IDC_STATIC,6,211,290,31 + GROUPBOX "Audio driver lag compensation",IDC_STATIC,6,211,290,31 CONTROL "Slider1",IDC_SOUNDADJUST,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,14,221,107,19 EDITTEXT IDC_SOUNDADJUSTNUM,124,224,40,12,ES_CENTER | ES_READONLY PUSHBUTTON "Calibrate",IDC_SOUNDCALIBRATE,183,223,40,14 COMBOBOX IDC_SOUNDSWAP,85,144,62,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Swap channels",IDC_SOUNDSWAPTXT,86,135,50,8,SS_CENTERIMAGE + LTEXT "Swap channels:",IDC_SOUNDSWAPTXT,86,135,50,8,SS_CENTERIMAGE END IDD_LOADSAVE DIALOGEX 0, 0, 302, 241 @@ -276,13 +277,13 @@ BEGIN CONTROL "Ignore link",IDC_CONFIGNOLINK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,146,206,48,10 EDITTEXT IDC_EDITPATH,199,161,49,15,ES_AUTOHSCROLL | WS_DISABLED,0,HIDC_EDITPATH CONTROL "Autoload",IDC_CONFIGAUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,253,163,42,10 - GROUPBOX "Extra info",IDC_STATIC,199,179,96,38,BS_LEFT + GROUPBOX "Additional information",IDC_STATIC,199,179,96,38,BS_LEFT PUSHBUTTON "View",IDC_VIEWINFO,210,195,35,15 PUSHBUTTON "Set",IDC_SETINFO,250,195,35,15 PUSHBUTTON "Load",IDC_QUICKLOAD,5,225,40,15 PUSHBUTTON "Save",IDC_QUICKSAVE,50,225,40,15 - PUSHBUTTON "Load From...",IDC_LOAD,125,225,45,15 - PUSHBUTTON "Save As...",IDC_SAVE,175,225,40,15 + PUSHBUTTON "Load from...",IDC_LOAD,125,225,45,15 + PUSHBUTTON "Save as...",IDC_SAVE,175,225,40,15 PUSHBUTTON "Delete",IDC_DELETE,255,225,40,15 END @@ -290,7 +291,7 @@ IDD_PORTS DIALOGEX 0, 0, 300, 222 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN - GROUPBOX "Parallel Port",IDC_SERPARFRAME,5,2,291,68 + GROUPBOX "Parallel port",IDC_SERPARFRAME,5,2,291,68 RTEXT "Printer:",IDC_STATIC,12,15,25,15,SS_CENTERIMAGE COMBOBOX IDC_PRINTERLIST,49,15,153,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Flush print job",IDC_FLUSHPRINTER,220,14,58,12 @@ -300,21 +301,21 @@ BEGIN EDITTEXT IDC_PRINTERAUTOFLUSH,263,33,25,12,ES_NUMBER RTEXT "Ghostscript extra parameters:",IDC_STATIC,12,49,91,15,SS_CENTERIMAGE EDITTEXT IDC_PS_PARAMS,120,50,169,12,ES_AUTOHSCROLL - GROUPBOX "Serial Port",IDC_SERIALFRAME,4,72,292,29 + GROUPBOX "Serial port",IDC_SERIALFRAME,4,72,292,29 COMBOBOX IDC_SERIAL,19,83,95,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Shared",IDC_SHARED,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,132,83,48,13 CONTROL "RTS/CTS",IDC_SER_CTSRTS,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,185,83,53,12 - CONTROL "Direct []Use when emulating serial linked games on two PCs running WinUAE",IDC_SERIAL_DIRECT, + CONTROL "Direct []Use when emulating serial-link games on two PCs running WinUAE",IDC_SERIAL_DIRECT, "Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,243,83,46,12 GROUPBOX "MIDI",IDC_MIDIFRAME,4,104,292,33 RTEXT "Out:",IDC_MIDI,10,115,34,15,SS_CENTERIMAGE COMBOBOX IDC_MIDIOUTLIST,50,115,95,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP RTEXT "In:",IDC_MIDI2,150,115,29,15,SS_CENTERIMAGE COMBOBOX IDC_MIDIINLIST,185,115,95,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Mouse/Joystick Ports",IDC_PORT0,4,139,292,75 + GROUPBOX "Mouse/joystick ports",IDC_PORT0,4,139,292,75 COMBOBOX IDC_PORT0_JOYS,45,155,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_PORT1_JOYS,45,176,241,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Swap Ports",IDC_SWAP,211,195,75,14 + PUSHBUTTON "Swap ports",IDC_SWAP,211,195,75,14 RTEXT "Port 0:",IDC_STATIC,11,154,25,15,SS_CENTERIMAGE RTEXT "Port 1:",IDC_STATIC,11,175,25,15,SS_CENTERIMAGE LTEXT "X-Arcade layout information []#1",IDC_STATIC,16,195,106,15,SS_NOTIFY | SS_CENTERIMAGE @@ -322,7 +323,7 @@ END IDD_CONTRIBUTORS DIALOGEX 0, 0, 411, 242 STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION -CAPTION "UAE Authors and Contributors..." +CAPTION "UAE authors and contributors..." FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Ok",ID_OK,177,219,53,14 @@ -352,35 +353,35 @@ IDD_MISC1 DIALOGEX 0, 0, 300, 219 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN - GROUPBOX "Advanced:",IDC_STATIC,8,4,285,110 - CONTROL "Middle-Mouse-Button --> ALT-TAB",IDC_JULIAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,19,120,10 - CONTROL "Show GUI on startup",IDC_SHOWGUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,34,120,10 - CONTROL "On-Screen LEDs",IDC_SHOWLEDS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,49,115,10 - CONTROL "UAEscsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,64,117,10 - CONTROL "Don't show Taskbar button",IDC_NOTASKBARBUTTON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,78,117,10 - CONTROL "BSDsocket.library emulation",IDC_SOCKETS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,19,120,10 - CONTROL "Use CTRL-F11 to quit",IDC_CTRLF11,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,34,120,10 - CONTROL "Don't use RGB overlays",IDC_NOOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,49,120,10 - CONTROL "Syncronize clock",IDC_CLOCKSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,78,115,10 - GROUPBOX "Keyboard LEDs:",IDC_STATIC,7,120,85,94 + GROUPBOX "Advanced",IDC_STATIC,8,4,285,110 + CONTROL "Untrap mouse with middle button",IDC_JULIAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,17,120,10 + CONTROL "Show GUI on startup",IDC_SHOWGUI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,31,120,10 + CONTROL "On-screen LEDs",IDC_SHOWLEDS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,45,115,10 + CONTROL "uaescsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,59,117,10 + CONTROL "Don't show taskbar button",IDC_NOTASKBARBUTTON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,72,117,10 + CONTROL "bsdsocket.library emulation",IDC_SOCKETS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,17,120,10 + CONTROL "Use CTRL-F11 to quit",IDC_CTRLF11,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,31,120,10 + CONTROL "Don't use RGB overlays",IDC_NOOVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,45,120,10 + CONTROL "Syncronize clock",IDC_CLOCKSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,72,115,10 + GROUPBOX "Keyboard LEDs",IDC_STATIC,7,120,85,94 COMBOBOX IDC_KBLED1,22,134,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_KBLED2,22,153,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_KBLED3,22,173,56,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Logging:",IDC_STATIC,97,120,195,25 + GROUPBOX "Logging",IDC_STATIC,97,120,195,25 CONTROL "Create log file",IDC_CREATELOGFILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,131,72,10,0,HIDC_CREATELOGFILE - CONTROL "Illegal mem accesses",IDC_ILLEGAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,189,131,80,10 - GROUPBOX "State files:",IDC_STATIC,98,146,195,69 + CONTROL "Illegal memory accesses",IDC_ILLEGAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,189,131,95,10 + GROUPBOX "State files",IDC_STATIC,98,146,195,69 PUSHBUTTON "Load state...",IDC_DOLOADSTATE,105,162,49,14 PUSHBUTTON "Save state...",IDC_DOSAVESTATE,106,188,49,14 CONTROL "Enable state recording",IDC_STATE_CAPTURE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,188,161,88,10 - RTEXT "Recording rate (seconds)",IDC_STATE_RATE_TEXT,157,179,86,10,SS_CENTERIMAGE | WS_TABSTOP + RTEXT "Recording rate (seconds):",IDC_STATE_RATE_TEXT,157,179,86,10,SS_CENTERIMAGE | WS_TABSTOP COMBOBOX IDC_STATE_RATE,248,177,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - RTEXT "Recording buffer (MB)",IDC_STATE_BUFFERSIZE_TEXT,157,199,83,10,SS_CENTERIMAGE | WS_TABSTOP + RTEXT "Recording buffer (MB):",IDC_STATE_BUFFERSIZE_TEXT,157,199,83,10,SS_CENTERIMAGE | WS_TABSTOP COMBOBOX IDC_STATE_BUFFERSIZE,248,197,38,65,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - CONTROL "Always on top",IDC_ALWAYSONTOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,92,117,10 - CONTROL "Catweasel",IDC_CATWEASEL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,92,115,10 - CONTROL "USB-mode",IDC_KBLED_USB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,196,64,10 - COMBOBOX IDC_SCSIMODE,159,62,104,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Always on top",IDC_ALWAYSONTOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,29,85,117,10 + CONTROL "Catweasel",IDC_CATWEASEL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,85,115,10 + CONTROL "USB mode",IDC_KBLED_USB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,196,64,10 + COMBOBOX IDC_SCSIMODE,159,57,104,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP END IDD_HARDFILE DIALOGEX 0, 0, 299, 212 @@ -388,36 +389,36 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS CAPTION "Hardfile Settings" FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - GROUPBOX "Hard File Settings",IDC_STATIC,10,5,280,113 + GROUPBOX "Settings",IDC_STATIC,10,5,280,113 RTEXT "Path:",IDC_HARDFILE_DIR_TEXT,26,18,22,10 EDITTEXT IDC_PATH_NAME,52,15,213,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_SELECTOR,271,15,11,15 - RTEXT "Filesystem:",IDC_HARDFILE_FILESYS_TEXT,14,37,34,10 + RTEXT "File system:",IDC_HARDFILE_FILESYS_TEXT,14,37,34,10 EDITTEXT IDC_PATH_FILESYS,52,34,213,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_FILESYS_SELECTOR,271,34,11,15 RTEXT "Device:",IDC_HARDFILE_DEVICE_TEXT,17,58,31,10 EDITTEXT IDC_HARDFILE_DEVICE,52,54,40,15,ES_AUTOHSCROLL - RTEXT "BootPri:",IDC_HARDFILE_BOOTPRI_TEXT,18,79,30,8 - EDITTEXT IDC_HARDFILE_BOOTPRI,52,75,40,15 - CONTROL "Read/Write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,57,50,10 - PUSHBUTTON "Enable RDB-mode",IDC_HDF_RDB,192,55,92,14 + RTEXT "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,15,101,44,8 + EDITTEXT IDC_HARDFILE_BOOTPRI,65,96,40,15 + CONTROL "Read/write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,57,50,10 + PUSHBUTTON "Enable RDB mode",IDC_HDF_RDB,192,55,92,14 RTEXT "Surfaces:",IDC_SURFACES_TEXT,112,79,30,10 EDITTEXT IDC_HEADS,147,75,35,15,ES_NUMBER RTEXT "Reserved:",IDC_RESERVED_TEXT,197,79,35,10 EDITTEXT IDC_RESERVED,237,75,35,15,ES_NUMBER RTEXT "Sectors:",IDC_SECTORS_TEXT,112,101,30,10 EDITTEXT IDC_SECTORS,147,96,35,15,ES_NUMBER - RTEXT "Block-Size:",IDC_BLOCKSIZE_TEXT,197,101,35,10 + RTEXT "Block size:",IDC_BLOCKSIZE_TEXT,197,101,35,10 EDITTEXT IDC_BLOCKSIZE,237,96,35,15,ES_NUMBER - GROUPBOX "New Hard File",IDC_STATIC,10,120,280,62 + GROUPBOX "New hard disk image file",IDC_STATIC,10,120,280,62 PUSHBUTTON "Create",IDC_HF_CREATE,50,135,80,14 EDITTEXT IDC_HF_SIZE,146,135,61,15,ES_NUMBER PUSHBUTTON "OK",IDOK,102,191,50,14 PUSHBUTTON "Cancel",IDCANCEL,158,191,50,14 EDITTEXT IDC_HF_DOSTYPE,146,158,61,15 COMBOBOX IDC_HF_TYPE,50,158,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - RTEXT "DosType",IDC_STATIC,212,160,30,10,SS_CENTERIMAGE - RTEXT "Megabytes",IDC_STATIC,212,138,35,10,SS_CENTERIMAGE + RTEXT "DOS type",IDC_STATIC,212,160,30,10,SS_CENTERIMAGE + RTEXT "MB",IDC_STATIC,212,138,11,10,SS_CENTERIMAGE RTEXT "Type:",IDC_STATIC,18,160,25,10,SS_CENTERIMAGE END @@ -426,16 +427,16 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS CAPTION "Volume Settings" FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - LTEXT "Device Name:",-1,5,9,54,10 + LTEXT "Device name:",-1,5,9,54,10 EDITTEXT IDC_VOLUME_DEVICE,65,5,86,15,ES_AUTOHSCROLL - LTEXT "Volume Label:",-1,5,31,54,10 + LTEXT "Volume label:",-1,5,31,54,10 EDITTEXT IDC_VOLUME_NAME,65,25,85,15,ES_AUTOHSCROLL LTEXT "Path:",-1,5,51,44,10 EDITTEXT IDC_PATH_NAME,65,46,213,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_SELECTOR,283,46,10,15 - CONTROL "Read/Write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,5,70,50,10 - RTEXT "BootPri:",IDC_VOLUME_BOOTPRI_TEXT,68,70,30,8 - EDITTEXT IDC_VOLUME_BOOTPRI,106,68,27,15 + CONTROL "Read/write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,72,70,50,10 + RTEXT "Boot priority:",IDC_VOLUME_BOOTPRI_TEXT,135,70,51,8 + EDITTEXT IDC_VOLUME_BOOTPRI,199,68,27,15 PUSHBUTTON "OK",IDOK,120,91,48,15 PUSHBUTTON "Cancel",IDCANCEL,175,91,48,15 END @@ -456,28 +457,28 @@ IDD_CHIPSET DIALOGEX 0, 65490, 300, 229 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - GROUPBOX "Chipset type",IDC_STATIC,14,11,145,82 - CONTROL "OCS [] The original Amiga chipset (A1000, most A500s)",IDC_OCS, + GROUPBOX "Chipset",IDC_STATIC,14,11,145,82 + CONTROL "OCS [] Original Amiga chipset. A1000 and most A500s.",IDC_OCS, "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,38,31,51,10 - CONTROL "ECS Agnus [] Partial Enhanced Chipset. Later A500 and A2000 hardware revisions.",IDC_ECS_AGNUS, + CONTROL "ECS Agnus [] Enhanced Chipset (ECS Agnus chip only). Later A500 and A2000 hardware revisions.",IDC_ECS_AGNUS, "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,38,47,55,10 - CONTROL "Full ECS [] Full ECS Chipset, ECS Agnus and ECS Denise. (A500+, A600, A3000)",IDC_ECS, + CONTROL "Full ECS [] Full ECS Chipset (ECS Agnus and ECS Denise chips). A500+, A600, A3000.",IDC_ECS, "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,38,63,52,10 - CONTROL "AGA [] The next generation Amiga chipset (A1200, A4000 and CD32)",IDC_AGA, + CONTROL "AGA [] Advanced Graphics Architecture chipset. A1200, A4000 and CD32.",IDC_AGA, "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,101,31,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,102,63,50,10 - GROUPBOX "Misc chipset options",IDC_STATIC,168,11,114,82 + GROUPBOX "Options",IDC_STATIC,168,11,114,82 CONTROL "Fast Copper [] Faster but less compatible copper emulation.",IDC_FASTCOPPER, "Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,176,198,98,10 CONTROL "Immediate Blitter [] Faster but less compatible blitter emulation.",IDC_BLITIMM, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,174,30,96,10 - CONTROL "Cycle exact CPU and Blitter [] The most compatible A500 emulation mode. Very fast PC recommended.",IDC_CYCLEEXACT, + CONTROL "Cycle-exact CPU and Blitter [] The most compatible A500 emulation mode. Very fast PC recommended.",IDC_CYCLEEXACT, "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,174,43,100,10 GROUPBOX "Collision level",IDC_STATIC,14,97,267,48 CONTROL "None [] Collision hardware emulation disabled.",IDC_COLLISION0, "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,40,113,50,10 - CONTROL "Sprites only [] Emulate only sprite vs sprite collisions.",IDC_COLLISION1, + CONTROL "Sprites only [] Emulate only sprite vs. sprite collisions.",IDC_COLLISION1, "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,39,129,50,10 CONTROL "Sprites and Sprites vs. Playfield [] Recommended collision emulation level.",IDC_COLLISION2, "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,104,113,161,10 @@ -487,7 +488,7 @@ BEGIN CONTROL "Disabled",IDC_CS_SOUND0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,39,167,102,10 CONTROL "Emulated",IDC_CS_SOUND1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,39,182,91,10 CONTROL "Emulated, 100% accurate",IDC_CS_SOUND2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,39,197,95,10 - CONTROL "Genlock connected [] Allow Kickstart to detect genlock. Genlock is not emulated.",IDC_GENLOCK, + CONTROL "Genlock connected [] Allow boot sequence to detect genlock. Genlock is not emulated.",IDC_GENLOCK, "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,174,56,100,10 END @@ -495,7 +496,7 @@ IDD_AVIOUTPUT DIALOGEX 0, 0, 197, 233 STYLE DS_SETFONT | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN - GROUPBOX "Output Properties:",IDC_STATIC,5,8,184,96 + GROUPBOX "Output properties",IDC_STATIC,5,8,184,96 EDITTEXT IDC_AVIOUTPUT_FILETEXT,26,21,120,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_CLIENTEDGE PUSHBUTTON "...",IDC_AVIOUTPUT_FILE,148,21,19,12 CONTROL "Audio",IDC_AVIOUTPUT_AUDIO,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | BS_FLAT | WS_TABSTOP,26,36,32,11 @@ -504,16 +505,16 @@ BEGIN CONTROL "",IDC_AVIOUTPUT_VIDEO_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | SS_SUNKEN | WS_GROUP,60,50,107,11 CONTROL "Disable frame rate limit while recording",IDC_AVIOUTPUT_FRAMELIMITER, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,28,68,142,10 - CONTROL "AVIOutput enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,26,83,142,14 - GROUPBOX "Playback Rate:",IDC_STATIC,5,107,184,50 + CONTROL "AVI output enabled",IDC_AVIOUTPUT_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,26,83,142,14 + GROUPBOX "Playback rate",IDC_STATIC,5,107,184,50 CONTROL "PAL",IDC_AVIOUTPUT_PAL,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,24,121,66,12 CONTROL "NTSC",IDC_AVIOUTPUT_NTSC,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,102,121,66,12 CONTROL "Slider1",IDC_AVIOUTPUT_FPS,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_ENABLESELRANGE | WS_TABSTOP,21,137,120,11 LTEXT "fps",IDC_AVIOUTPUT_FPS_STATIC,148,138,23,8 - PUSHBUTTON "Save Screenshot",IDC_SCREENSHOT,15,176,85,14 + PUSHBUTTON "Save screenshot",IDC_SCREENSHOT,15,176,85,14 GROUPBOX "Ripper",IDC_STATIC,5,160,184,63 PUSHBUTTON "Pro Wizard",IDC_PROWIZARD,112,176,69,14,WS_DISABLED - CONTROL "Sampleripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,198,84,14 + CONTROL "Sample ripper",IDC_SAMPLERIPPER_ACTIVATED,"Button",BS_AUTORADIOBUTTON | BS_PUSHLIKE | BS_FLAT,15,198,84,14 END IDD_INPUT DIALOGEX 0, 0, 300, 242 @@ -545,24 +546,24 @@ IDD_FILTER DIALOGEX 0, 0, 296, 216 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN - GROUPBOX "Filter settings:",-1,0,0,294,174 + GROUPBOX "Filter settings",-1,0,0,294,174 CONTROL "Enable",IDC_FILTERENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,26,17,38,10 COMBOBOX IDC_FILTERMODE,67,15,56,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_FILTERFILTER,128,15,65,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Reset to defaults",IDC_FILTERDEFAULT,197,15,73,14 - RTEXT "Horizontal Size",-1,25,44,57,10,SS_CENTERIMAGE + RTEXT "Horizontal size:",-1,21,44,61,10,SS_CENTERIMAGE CONTROL "Slider1",IDC_FILTERHZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,89,37,158,19 EDITTEXT IDC_FILTERHZV,248,40,34,12,ES_CENTER | ES_READONLY - RTEXT "Vertical Size",-1,26,64,57,10,SS_CENTERIMAGE + RTEXT "Vertical size:",-1,22,64,61,10,SS_CENTERIMAGE CONTROL "Slider1",IDC_FILTERVZ,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,89,57,157,19 EDITTEXT IDC_FILTERVZV,248,59,34,12,ES_CENTER | ES_READONLY - RTEXT "Horizontal Position",-1,26,84,57,10,SS_CENTERIMAGE + RTEXT "Horizontal position:",-1,22,84,61,10,SS_CENTERIMAGE CONTROL "Slider1",IDC_FILTERHO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,89,77,157,19 EDITTEXT IDC_FILTERHOV,248,79,34,12,ES_CENTER | ES_READONLY - RTEXT "Vertical Position",-1,26,103,57,10,SS_CENTERIMAGE + RTEXT "Vertical position:",-1,22,103,61,10,SS_CENTERIMAGE CONTROL "Slider1",IDC_FILTERVO,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,89,97,157,19 EDITTEXT IDC_FILTERVOV,248,101,34,12,ES_CENTER | ES_READONLY - RTEXT "Scanlines",-1,27,133,57,10,SS_CENTERIMAGE + RTEXT "Scanlines:",-1,27,133,57,10,SS_CENTERIMAGE CONTROL "Slider1",IDC_FILTERSL,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,89,126,157,19 EDITTEXT IDC_FILTERSLV,248,128,34,12,ES_CENTER | ES_READONLY COMBOBOX IDC_FILTERSLR,56,146,27,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP @@ -580,26 +581,28 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS CAPTION "Harddrive Settings" FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - LTEXT "Harddrive:",-1,7,11,35,10 + LTEXT "Hard drive:",-1,7,11,35,10 COMBOBOX IDC_HARDDRIVE,49,9,246,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "Read/Write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,30,50,10 - DEFPUSHBUTTON "OK",IDOK,115,30,50,14 - PUSHBUTTON "Cancel",IDCANCEL,189,30,50,14 + CONTROL "Read/write",IDC_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,185,33,50,10 + DEFPUSHBUTTON "Add hard drive",IDOK,116,30,57,14 + PUSHBUTTON "Cancel",IDCANCEL,241,30,54,14 + DEFPUSHBUTTON "Create hard disk image file",IDC_HARDDRIVE_IMAGE,9,30,95,14 + EDITTEXT IDC_PATH_NAME,89,49,169,15,ES_AUTOHSCROLL | NOT WS_VISIBLE END IDD_MISC2 DIALOGEX 0, 0, 300, 92 STYLE 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 + GROUPBOX "When active",IDC_STATIC,8,7,88,73 RTEXT "Run at priority:",IDC_ACTIVE_PRI,14,17,45,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 + GROUPBOX "When inactive",IDC_STATIC,102,7,92,73 RTEXT "Run at priority:",IDC_INACTIVE_PRI,109,17,45,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 output",IDC_INACTIVE_NOSOUND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,63,79,10 - GROUPBOX "When Minimized:",IDC_STATIC,199,7,92,73 + GROUPBOX "When minimized",IDC_STATIC,199,7,92,73 RTEXT "Run at priority:",IDC_MINIMIZED_PRI,207,18,45,10,SS_CENTERIMAGE | WS_TABSTOP COMBOBOX IDC_MINIMIZED_PRIORITY,207,30,76,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Pause emulation",IDC_MINIMIZED_PAUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,207,50,69,10 @@ -611,9 +614,9 @@ STYLE DS_SETFONT | DS_SETFOREGROUND | DS_3DLOOK | DS_CONTROL | DS_CENTER | DS_CE 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 disk image",IDC_DISKLISTREMOVE,153,223,93,15 + PUSHBUTTON "Remove floppy disk image",IDC_DISKLISTREMOVE,153,223,93,15 COMBOBOX IDC_DISKTEXT,3,205,293,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Insert disk image",IDC_DISKLISTINSERT,38,223,93,15 + PUSHBUTTON "Insert floppy disk image",IDC_DISKLISTINSERT,38,223,93,15 END IDD_PANEL DIALOGEX 0, 0, 420, 278 @@ -636,22 +639,22 @@ IDD_PATHS DIALOGEX 0, 0, 300, 237 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN - LTEXT "ROM path:",IDC_PATHS_ROML,14,9,260,8,SS_CENTERIMAGE + LTEXT "System ROMs:",IDC_PATHS_ROML,14,9,260,8,SS_CENTERIMAGE EDITTEXT IDC_PATHS_ROM,14,22,261,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_PATHS_ROMS,281,22,11,15 - LTEXT "Configuration file path:",IDC_PATHS_CONFIGL,14,40,260,8,SS_CENTERIMAGE + LTEXT "Configuration files:",IDC_PATHS_CONFIGL,14,40,260,8,SS_CENTERIMAGE EDITTEXT IDC_PATHS_CONFIG,14,52,261,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_PATHS_CONFIGS,281,52,11,15 - LTEXT "Screenshot path:",IDC_PATHS_SCREENSHOTL,14,71,260,8,SS_CENTERIMAGE + LTEXT "Screenshots:",IDC_PATHS_SCREENSHOTL,14,71,260,8,SS_CENTERIMAGE EDITTEXT IDC_PATHS_SCREENSHOT,14,83,261,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_PATHS_SCREENSHOTS,281,83,11,15 - LTEXT "State file path:",IDC_PATHS_STATEFILEL,14,102,260,8,SS_CENTERIMAGE + LTEXT "State files:",IDC_PATHS_STATEFILEL,14,102,260,8,SS_CENTERIMAGE EDITTEXT IDC_PATHS_SAVESTATE,14,114,261,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_PATHS_SAVESTATES,281,114,11,15 - LTEXT "Video path:",IDC_PATHS_AVIOUTPUTL,14,132,260,8,SS_CENTERIMAGE + LTEXT "Videos:",IDC_PATHS_AVIOUTPUTL,14,132,260,8,SS_CENTERIMAGE EDITTEXT IDC_PATHS_AVIOUTPUT,14,144,261,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_PATHS_AVIOUTPUTS,282,144,11,15 - LTEXT "Saveimage path:",IDC_PATHS_SAVEIMAGEL,14,163,260,8,SS_CENTERIMAGE + LTEXT "Saveimages:",IDC_PATHS_SAVEIMAGEL,14,163,260,8,SS_CENTERIMAGE EDITTEXT IDC_PATHS_SAVEIMAGE,14,175,261,15,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_PATHS_SAVEIMAGES,281,175,11,15 PUSHBUTTON "Reset to defaults",IDC_PATHS_DEFAULT,14,199,92,14 @@ -664,7 +667,7 @@ IDD_QUICKSTART DIALOGEX 0, 0, 300, 242 STYLE DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN - GROUPBOX "Hardware configuration",IDC_QUICKSTART_CONFIG,3,0,294,54 + GROUPBOX "Emulated hardware",IDC_QUICKSTART_CONFIG,3,0,294,54 RTEXT "Model:",IDC_STATIC,5,14,56,10,SS_CENTERIMAGE COMBOBOX IDC_QUICKSTART_MODEL,65,12,225,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP RTEXT "Configuration:",IDC_STATIC,5,33,56,10,SS_CENTERIMAGE @@ -676,22 +679,22 @@ BEGIN 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 "Disk Drives",IDC_QUICKSTART_DF,3,126,294,84 - LTEXT "Disk Drive DF0:",IDC_STATIC,10,138,56,10,SS_CENTERIMAGE - PUSHBUTTON "Select Disk Image",IDC_DF0QQ,77,135,98,15 - RTEXT "Write Protected",IDC_STATIC,180,139,58,10,SS_CENTERIMAGE + GROUPBOX "Emulated floppy drives",IDC_QUICKSTART_DF,3,126,294,84 + LTEXT "Floppy drive DF0:",IDC_STATIC,10,138,56,10,SS_CENTERIMAGE + PUSHBUTTON "Select disk image",IDC_DF0QQ,77,135,98,15 + RTEXT "Write-protected",IDC_STATIC,180,139,58,10,SS_CENTERIMAGE CONTROL "",IDC_DF0WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,245,137,10,15 PUSHBUTTON "Eject",IDC_EJECT0Q,260,136,30,15 COMBOBOX IDC_DF0TEXTQ,9,154,282,75,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - LTEXT "Disk Drive DF1:",IDC_STATIC,10,176,56,10,SS_CENTERIMAGE - PUSHBUTTON "Select Disk Image",IDC_DF1QQ,77,172,98,15 - RTEXT "Write Protected",IDC_STATIC,180,175,58,10,SS_CENTERIMAGE + LTEXT "Floppy drive DF1:",IDC_STATIC,10,176,56,10,SS_CENTERIMAGE + PUSHBUTTON "Select disk image",IDC_DF1QQ,77,172,98,15 + RTEXT "Write-protected",IDC_STATIC,180,175,58,10,SS_CENTERIMAGE CONTROL "",IDC_DF1WPQ,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,245,173,10,15 PUSHBUTTON "Eject",IDC_EJECT1Q,260,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 + 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,199,222,94,10 + CONTROL "Start in Quickstart mode",IDC_QUICKSTARTMODE,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,199,222,94,10 END IDD_FRONTEND DIALOGEX 0, 0, 420, 242 @@ -703,6 +706,53 @@ BEGIN GROUPBOX "",IDC_FE_SCREENSHOT,249,7,160,128 END +IDD_PROGRESSBAR DIALOGEX 0, 0, 229, 58 +STYLE 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",WS_BORDER | 0x1,7,19,215,14 + CTEXT "x",IDC_PROGRESSBAR_TEXT,23,5,187,10,SS_CENTERIMAGE | WS_TABSTOP +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_SOUND, DIALOG + BEGIN + BOTTOMMARGIN, 243 + END + + IDD_LOADSAVE, DIALOG + BEGIN + BOTTOMMARGIN, 240 + END + + IDD_CONTRIBUTORS, DIALOG + BEGIN + RIGHTMARGIN, 370 + BOTTOMMARGIN, 212 + END + + IDD_INPUT, DIALOG + BEGIN + BOTTOMMARGIN, 187 + END + + IDD_QUICKSTART, DIALOG + BEGIN + RIGHTMARGIN, 299 + END +END +#endif // APSTUDIO_INVOKED + #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// @@ -805,43 +855,6 @@ END IDC_MYHAND CURSOR "H_arrow.cur" -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_SOUND, DIALOG - BEGIN - BOTTOMMARGIN, 243 - END - - IDD_LOADSAVE, DIALOG - BEGIN - BOTTOMMARGIN, 240 - END - - IDD_CONTRIBUTORS, DIALOG - BEGIN - RIGHTMARGIN, 370 - BOTTOMMARGIN, 212 - END - - IDD_INPUT, DIALOG - BEGIN - BOTTOMMARGIN, 187 - END - - IDD_QUICKSTART, DIALOG - BEGIN - RIGHTMARGIN, 299 - END -END -#endif // APSTUDIO_INVOKED - - ///////////////////////////////////////////////////////////////////////////// // // Menu @@ -852,7 +865,7 @@ BEGIN POPUP "Menu" BEGIN MENUITEM "Configuration", ID_ST_CONFIGURATION - POPUP "Floppy Drives" + POPUP "Floppy drives" BEGIN MENUITEM "Eject all drives", ID_ST_EJECTALL MENUITEM "DF0:", ID_ST_DF0 @@ -893,14 +906,14 @@ IDB_XARCADE BITMAP "xarcade-winuae.bmp" STRINGTABLE BEGIN IDS_KICKSTART "ROM" - IDS_DISK "Disk Swapper" + IDS_DISK "Disk swapper" IDS_DISPLAY "Display" - IDS_HARDDISK "Hard Drives" - IDS_FLOPPY "Disk Drives" + IDS_HARDDISK "Hard drives" + IDS_FLOPPY "Disk drives" IDS_ABOUT "About" IDS_LOADSAVE "Configurations" IDS_AVIOUTPUT "Output" - IDS_PORTS "Game & I/O Ports" + IDS_PORTS "Game & I/O ports" IDS_MISC1 "Misc" IDS_MEMORY "RAM" IDS_CPU "CPU" @@ -919,7 +932,7 @@ END STRINGTABLE BEGIN - IDS_EXTTEXT "Amiga Disk Files" + IDS_EXTTEXT "Floppy disk image files" IDS_EXTACTUAL "ADF" IDS_SOUND "Sound" IDS_CDROM "CD-ROM" @@ -937,38 +950,38 @@ STRINGTABLE BEGIN IDS_NINTH "ninth " IDS_TENTH "tenth " - IDS_SELECTADF "Select an Amiga Disk File image..." - IDS_ADF "Amiga Disk Files" - IDS_CHOOSEBLANK "Choose your blank Amiga Disk File..." - IDS_SELECTHDF "Select a Hard Disk File..." - IDS_HDF "Hard Disk Files" - IDS_SELECTUAE "Select a UAE Config-File..." - IDS_UAE "UAE Config Files" - IDS_SELECTROM "Select an Amiga ROM file..." - IDS_ROM "Amiga ROM Files" - IDS_SELECTKEY "Select an Amiga Key-File..." - IDS_KEY "Amiga Kickstart Key-Files" - IDS_SELECTINFO "Select information for your config..." + 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 your file-system root directory..." + 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" IDS_INVALIDPRTPORT "The printer you have in this configuration is not valid on this machine.\n" - IDS_RESTOREUSS "Restore a UAE Snap-Shot File" - IDS_USS "UAE Snap-Shot Files" - IDS_WRONGOSVERSION "WinUAE is no longer supported on Windows NT. Please upgrade to either Windows 2000 or Windows XP." - IDS_SELECTFLASH "Select a flash/battery backed RAM file..." - IDS_FLASH "UAE flash/battery backed RAM file" - IDS_INPUTHOSTWIDGET "Input Source" - IDS_INPUTAMIGAEVENT "Input Target" + 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 UAE Snap-Shot File" + IDS_SAVEUSS "Save a WinUAE snapshot file" IDS_MIDIOVERFLOW "Sysexbuffer overflow. Should not happen. Please report this to\nberndroesch1@compuserve.de" END @@ -979,15 +992,13 @@ BEGIN IDS_SECTORS "Sectors" IDS_SURFACES "Bill Panagouleas - Hardware support\nSpecial thanks to Alexander Kneer and Tobias Abt (The Picasso96 Team)\nSteven Weiser - Postscript printing emulation idea and testing.\nHungarian translation - Péter Tóth , Balázs Rátkai , Iván Herczeg , András Arató" IDS_RESERVED "Reserved" - IDS_BLOCKSIZE "Block Size" + IDS_BLOCKSIZE "Block size" IDS_NAME "Name" IDS_DESCRIPTION "Description" - IDS_INSTALLDIRECTX "You have to install DirectX on your system before you can use UAE.\nRefer to the documentation for further details.\n" - IDS_REGKEYCREATEFAILED "WinUAE could not create Registry keys! You need administrator privileges.\n" - IDS_COULDNOTLOADCONFIG "Could not load selected configuration!\n" - IDS_NOHELP "Online help is disabled, because you have not installed the HtmlHelp system. Go to http://msdn.microsoft.com/library/tools/htmlhelp/wkshp/download.htm to get HtmlHelp.\n" + 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 COM-port you have in this configuration is not valid on this machine.\n" + IDS_INVALIDCOMPORT "The COM port you have in this configuration is not valid on this machine.\n" END STRINGTABLE @@ -995,7 +1006,6 @@ BEGIN IDS_HFDSIZE "Size" IDS_DEVICE "Device" IDS_BOOTPRI "BootPri" - IDS_WRONGDXVERSION "WinUAE requires DirectX 8 or newer." IDS_FLOPPY_COMPATIBLE " (compatible)" IDS_FLOPPY_TURBO "Turbo" IDS_YES "yes" @@ -1004,17 +1014,16 @@ BEGIN IDS_PRI_NORMAL "Normal" IDS_PRI_BELOWNORMAL "Below Normal" IDS_PRI_LOW "Low" - IDS_OLDRTGLIBRARY "Your LIBS:Picasso96/rtg.library (%d.%d) requires updating.\nReplace it with version from ""Amiga Programs""-directory in WinUAE archive.\nNew library fixes graphics problems and increases performance." - IDS_DEFAULT_AF2005 "AmigaForever 2005" - IDS_DEFAULT_AF "AmigaForever (old)" + IDS_OLDRTGLIBRARY "The installed LIBS:Picasso96/rtg.library (%d.%d) file needs to be updated.\nA newer version is included in the ""Amiga Programs"" directory of the WinUAE distribution archive.\nThe new library fixes graphics problems and increases performance." + IDS_DEFAULT_AF2005 "Amiga Forever 2005" + IDS_DEFAULT_AF "Amiga Forever (old)" IDS_DEFAULT_WINUAE "WinUAE default" END STRINGTABLE BEGIN - IDS_WSOCK2NEEDED "Please upgrade to Winsock2.\n" IDS_UNSUPPORTEDPIXELFORMAT - "Error: Unsupported pixel format - use a different screen mode\n" + "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" @@ -1022,14 +1031,14 @@ BEGIN "Are you sure you want to Delete this configuration?\n" IDS_DELETECONFIGTITLE "Confirm Delete" IDS_GFXCARDCHECK "WinUAE will now determine your graphic-card's 16-bit pixel format.\nYour screen will go black for two seconds, with a resolution of 640x480 @ 60Hz.\nThis procedure is necessary to properly display your Amiga software on 16-bit\ndisplay-modes, and should be done whenever you run WinUAE for the first time, or\ninstall a new graphics-card in your PC. Proceed with this test?\n" - IDS_GFXCARDTITLE "Pixel Format Detection" + IDS_GFXCARDTITLE "Pixel format detection" IDS_MUSTSELECTPATH "You must select a path!" - IDS_SETTINGSERROR "Settings Error" + 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-file..." - IDS_CREATIONERROR "Creation Error" - IDS_ERRORTITLE "WinUAE Message" + IDS_FAILEDHARDFILECREATION "Failed to create hard disk image file..." + IDS_CREATIONERROR "Creation error" + IDS_ERRORTITLE "WinUAE message" END STRINGTABLE @@ -1059,7 +1068,7 @@ BEGIN IDS_AVIOUTPUT_NOCODEC "no codec selected" IDS_DISK_IMAGENAME "Disk image" IDS_DISK_DRIVENAME "Drive" - IDS_AGA8BIT "AGA emulation requires 16 bit or higher display depth\nSwitching from 8-bit to 16-bit" + 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 @@ -1069,22 +1078,22 @@ END STRINGTABLE BEGIN IDS_UNSUPPORTEDSCREENMODE_2 - "the desktop is running in 8 bit color depth, which UAE can't use in windowed mode." + "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 a Picasso96 display with a color depth different from that of the desktop and an overlay was unavailable." + "you selected an RTG (Picasso96) display with a color depth different from that of the desktop and an overlay was unavailable." IDS_FLOPPYTYPE35DD "3.5"" DD" IDS_FLOPPYTYPE35HD "3.5"" HD" IDS_FLOPPYTYPE525SD "5.25"" SD" IDS_FLOPPYTYPEDISABLED "Disabled" - IDS_STMENUNOFLOPPY "No disk inserted" + IDS_STMENUNOFLOPPY "No floppy disk inserted" IDS_TREEVIEW_HARDWARE "Hardware" IDS_TREEVIEW_HOST "Host" - IDS_TREEVIEW_MISC "Misc" + IDS_TREEVIEW_MISC "Miscellaneous" IDS_TREEVIEW_SETTINGS "Settings" - IDS_WINUAETITLE_MMB "[Mouse active - press Alt-Tab or middle-button to cancel]" - IDS_WINUAETITLE_NORMAL "[Mouse active - press Alt-Tab to cancel]" + IDS_WINUAETITLE_MMB "[Mouse active - press ALT+TAB or middle-button to cancel]" + IDS_WINUAETITLE_NORMAL "[Mouse active - press ALT+TAB to cancel]" IDS_STARTEMULATION "Start" IDS_TREEVIEW_ABOUT "About" END @@ -1095,7 +1104,7 @@ BEGIN IDS_DEFAULT_HOST "Default Configuration" IDS_SOUND_4CHANNEL "4 Channels" IDS_HF_FS_CUSTOM "Custom" - IDS_SELECTFS "Select filesystem handler (FastFileSystem, SmartFilesystem,...)" + 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 (T=up B=down F=left H=right, left ALT = fire)\nX-Arcade (Left)\nX-Arcade (Right)" IDS_STATEFILE_UNCOMPRESSED "Uncompressed" IDS_STATEFILE_RAMDUMP "RAM dump" @@ -1107,30 +1116,30 @@ END STRINGTABLE BEGIN - IDS_NUMSG_NEEDEXT2 "Program uses non-standard disk format. You may need to use ""Custom"" floppy instead of standard adf. This message does not appear again." - IDS_NUMSG_NOROMKEY "Could not find ROM key file." - IDS_NUMSG_KSROMCRCERROR "Kickstart checksum incorrect. You probably have a corrupted ROM image." - IDS_NUMSG_KSROMREADERROR "Error while reading Kickstart." + 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 Kickstart ROM found." + IDS_NUMSG_NOEXTROM "No extended ROM found." IDS_NUMSG_MODRIP_NOTFOUND "No modules or compressed data found." IDS_NUMSG_MODRIP_FINISHED "Scan finished." IDS_NUMSG_MODRIP_SAVE "Module/packed data found\n%s\nDo you want to save it?" - IDS_NUMSG_KS68020 "Your Kickstart requires a 68020 CPU or later CPU." - IDS_NUMSG_ROMNEED "You need any following ROM(s):\n\n%s\n\nCheck ROM-path in Paths-panel and click ""Rescan ROMs""-button." - IDS_NUMSG_STATEHD "WARNING: State saves do not support harddrive emulation. This message does not appear again." - IDS_NUMSG_NOCAPS "This disk image needs the S.P.S. plugin\nwhich is available from\nhttp//www.softpres.org/" - IDS_NUMSG_OLDCAPS "You need updated S.P.S. plugin\nwhich is available from\nhttp//www.softpres.org/" + IDS_NUMSG_KS68020 "The selected system ROM requires a 68020 CPU 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: State saves do not support hard drive emulation. This message does not appear again." + IDS_NUMSG_NOCAPS "This 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 - "Selected disk image is not bootable (bootblock CRC error)" - IDS_IMGCHK_BOOTBLOCKNO "Selected disk image is not bootable (no bootblock)" - IDS_IMGCHK_DAMAGED "Selected disk image is damaged or unformatted" - IDS_IMGCHK_KS2 "Selected disk image requires Kickstart 2.04 or 3.0\nConfiguration updated" - IDS_IMGCHK_KS3 "Selected disk image requires Kickstart 3.0 or later\nConfiguration updated" - IDS_ROMSCANEND "ROM scan finished" + "Selected floppy disk image is not bootable (boot block checksum error)" + IDS_IMGCHK_BOOTBLOCKNO "Selected floppy disk image is not bootable (no boot block)" + IDS_IMGCHK_DAMAGED "Selected floppy disk image is damaged or unformatted" + IDS_IMGCHK_KS2 "Selected floppy disk image requires a 2.04 or later system ROM.\nThe configuration has been updated." + IDS_IMGCHK_KS3 "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 @@ -1138,12 +1147,14 @@ BEGIN IDS_ROM_AVAILABLE "available" IDS_ROM_UNAVAILABLE "unavailable" IDS_HARDDRIVESAFETYWARNING - "WARNING: Non-empty or Amiga formatted\nharddrive detected and safety test was disabled\n\nHarddrives marked with 'HD_*_' are not empty" - IDS_NUMSG_KS68EC020 "Your Kickstart requires a 68EC020 or later CPU." - IDS_ROMSCANNOROMS "No supported Kickstart ROMs detected." - IDS_NUMSG_KICKREP "You need to have a diskfile in DF0 to use the Kickstart replacement." - IDS_NUMSG_KICKREPNO "Diskfiles in DF0: is not compatible with Kickstart replacement." + "Warning: The safety test has been disabled, and non-empty hard disks were detected.\n\nHard disks marked with 'HD_*_' are not empty." + IDS_NUMSG_KS68EC020 "The selected system ROM requires a 68EC020 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 Kickstart ROM, trying Kickstart replacement." + IDS_HDCLONE_OK "Hard drive image file created succesfully." + IDS_HDCLONE_FAIL "Hard drive image file creation failed, error code %d." END STRINGTABLE diff --git a/od-win32/sysconfig.h b/od-win32/sysconfig.h index 2dd9939a..e5e9f282 100755 --- a/od-win32/sysconfig.h +++ b/od-win32/sysconfig.h @@ -50,6 +50,7 @@ #define PROWIZARD /* Pro-Wizard module ripper */ #define ARCADIA /* Arcadia arcade system */ #define ARCHIVEACCESS /* ArchiveAccess decompression library */ +#define LOGITECHLCD /* Logitech G15 LCD */ #else diff --git a/od-win32/win32.c b/od-win32/win32.c index 6383d104..8c0d3270 100755 --- a/od-win32/win32.c +++ b/od-win32/win32.c @@ -63,6 +63,7 @@ #include "scsidev.h" #include "disk.h" #include "catweasel.h" +#include "lcd.h" extern FILE *debugfile; extern int console_logging; @@ -93,7 +94,7 @@ int toggle_sound; int paraport_mask; HKEY hWinUAEKey = NULL; -COLORREF g_dwBackgroundColor = RGB(10, 0, 10); +COLORREF g_dwBackgroundColor; static int emulation_paused; static int activatemouse = 1; @@ -1170,8 +1171,10 @@ int WIN32_RegisterClasses( void ) { WNDCLASS wc; HDC hDC; - - hDC = GetDC( NULL ); + COLORREF black = RGB(0, 0, 0); + + g_dwBackgroundColor = RGB(10, 0, 10); + hDC = GetDC (NULL); if (GetDeviceCaps (hDC, NUMCOLORS) != -1) g_dwBackgroundColor = RGB (255, 0, 255); ReleaseDC (NULL, hDC); @@ -1196,7 +1199,7 @@ int WIN32_RegisterClasses( void ) wc.hInstance = 0; wc.hIcon = LoadIcon (GetModuleHandle (NULL), MAKEINTRESOURCE (IDI_APPICON)); wc.hCursor = LoadCursor (NULL, IDC_ARROW); - wc.hbrBackground = CreateSolidBrush (g_dwBackgroundColor); + wc.hbrBackground = CreateSolidBrush (black); wc.lpszMenuName = 0; wc.lpszClassName = "PCsuxRox"; if (!RegisterClass (&wc)) @@ -1707,6 +1710,7 @@ void target_default_options (struct uae_prefs *p, int type) p->win32_automount_netdrives = 0; p->win32_kbledmode = 0; p->win32_uaescsimode = get_aspi_path(1) ? 2 : ((os_winnt && os_winnt_admin) ? 0 : 1); + p->win32_borderless = 0; } if (type == 1 || type == 0) { p->win32_midioutdev = -2; @@ -1737,6 +1741,7 @@ void target_save_options (struct zfile *f, struct uae_prefs *p) cfgfile_target_write (f, "midiout_device=%d\n", p->win32_midioutdev ); cfgfile_target_write (f, "midiin_device=%d\n", p->win32_midiindev ); cfgfile_target_write (f, "no_overlay=%s\n", p->win32_no_overlay ? "true" : "false" ); + cfgfile_target_write (f, "borderless=%s\n", p->win32_borderless ? "true" : "false" ); cfgfile_target_write (f, "uaescsimode=%s\n", scsimode[p->win32_uaescsimode]); cfgfile_target_write (f, "soundcard=%d\n", p->win32_soundcard ); cfgfile_target_write (f, "cpu_idle=%d\n", p->cpu_idle); @@ -1775,6 +1780,7 @@ int target_parse_option (struct uae_prefs *p, char *option, char *value) || cfgfile_yesno (option, value, "logfile", &p->win32_logfile) || cfgfile_yesno (option, value, "networking", &p->socket_emu) || cfgfile_yesno (option, value, "no_overlay", &p->win32_no_overlay) + || cfgfile_yesno (option, value, "borderless", &p->win32_borderless) || cfgfile_yesno (option, value, "inactive_pause", &p->win32_inactive_pause) || cfgfile_yesno (option, value, "inactive_nosound", &p->win32_inactive_nosound) || cfgfile_yesno (option, value, "iconified_pause", &p->win32_iconified_pause) @@ -2400,8 +2406,6 @@ static void getstartpaths(int start_data) extern void test (void); - - static int PASCAL WinMain2 (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { @@ -2509,10 +2513,16 @@ static int PASCAL WinMain2 (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR #endif #ifdef PARALLEL_PORT paraport_mask = paraport_init (); +#endif +#ifdef LOGITECHLCD + lcd_open(); #endif real_main (argc, argv); } +#ifdef LOGITECHLCD + lcd_close(); +#endif if (mm_timerres && timermode == 0) timeend (); #ifdef AVIOUTPUT diff --git a/od-win32/win32.h b/od-win32/win32.h index aa9f9b3c..dc926ade 100755 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -21,8 +21,8 @@ extern int manual_painting_needed; extern int manual_palette_refresh_needed; extern int mouseactive, focus; extern int ignore_messages_all; -#define WINUAEBETA 0 -#define WINUAEBETASTR "" +#define WINUAEBETA 1 +#define WINUAEBETASTR " Beta 1" extern char start_path_exe[MAX_DPATH]; extern char start_path_data[MAX_DPATH]; diff --git a/od-win32/win32gfx.c b/od-win32/win32gfx.c index 16595406..ea21c5d6 100755 --- a/od-win32/win32gfx.c +++ b/od-win32/win32gfx.c @@ -1033,9 +1033,12 @@ int check_prefs_changed_gfx (void) c |= currprefs.gfx_filter != changed_prefs.gfx_filter ? 1 : 0; c |= currprefs.gfx_filter_filtermode != changed_prefs.gfx_filter_filtermode ? 1 : 0; c |= currprefs.gfx_lores != changed_prefs.gfx_lores ? 1 : 0; + c |= currprefs.gfx_lores_mode != changed_prefs.gfx_lores_mode ? 1 : 0; c |= currprefs.gfx_linedbl != changed_prefs.gfx_linedbl ? 1 : 0; c |= currprefs.gfx_display != changed_prefs.gfx_display ? 1 : 0; c |= currprefs.win32_alwaysontop != changed_prefs.win32_alwaysontop ? 1 : 0; + c |= currprefs.win32_borderless != changed_prefs.win32_borderless ? 1 : 0; + c |= currprefs.win32_no_overlay != changed_prefs.win32_no_overlay ? 1 : 0; if (display_change_requested || c) { if (!display_change_requested) @@ -1055,9 +1058,12 @@ int check_prefs_changed_gfx (void) currprefs.gfx_filter = changed_prefs.gfx_filter; currprefs.gfx_filter_filtermode = changed_prefs.gfx_filter_filtermode; currprefs.gfx_lores = changed_prefs.gfx_lores; + currprefs.gfx_lores_mode = changed_prefs.gfx_lores_mode; currprefs.gfx_linedbl = changed_prefs.gfx_linedbl; currprefs.gfx_display = changed_prefs.gfx_display; currprefs.win32_alwaysontop = changed_prefs.win32_alwaysontop; + currprefs.win32_borderless = changed_prefs.win32_borderless; + currprefs.win32_no_overlay = changed_prefs.win32_no_overlay; inputdevice_unacquire (); close_windows (); graphics_init (); @@ -1709,15 +1715,25 @@ static int create_windows (void) int fs = currentmode->flags & (DM_W_FULLSCREEN | DM_DX_FULLSCREEN | DM_D3D_FULLSCREEN); DWORD exstyle = currprefs.win32_notaskbarbutton ? 0 : WS_EX_APPWINDOW; DWORD flags = 0; - DWORD style = NORMAL_WINDOW_STYLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; HWND hhWnd = currprefs.win32_notaskbarbutton ? hHiddenWnd : NULL; + int borderless = currprefs.win32_borderless; + DWORD style = NORMAL_WINDOW_STYLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; + int cymenu = GetSystemMetrics (SM_CYMENU); + int cyborder = GetSystemMetrics (SM_CYBORDER); + int cxborder = GetSystemMetrics(SM_CXBORDER); + int gap = 3; + int x, y; + + hMainWnd = NULL; + x = 2; y = 2; + if (borderless) + cymenu = cyborder = cxborder = 0; if (!fs) { RECT rc; - LONG stored_x = 1, stored_y = GetSystemMetrics (SM_CYMENU) + GetSystemMetrics (SM_CYBORDER); + LONG stored_x = 1, stored_y = cymenu + cyborder; DWORD regkeytype; DWORD regkeysize = sizeof (LONG); - int cx = GetSystemMetrics(SM_CXBORDER), cy = GetSystemMetrics(SM_CYBORDER); int oldx, oldy; int first = 2; @@ -1728,8 +1744,8 @@ static int create_windows (void) first--; if (stored_x < GetSystemMetrics (SM_XVIRTUALSCREEN)) stored_x = GetSystemMetrics (SM_XVIRTUALSCREEN); - if (stored_y < GetSystemMetrics (SM_YVIRTUALSCREEN) + GetSystemMetrics (SM_CYMENU) + cy) - stored_y = GetSystemMetrics (SM_YVIRTUALSCREEN) + GetSystemMetrics (SM_CYMENU) + cy; + if (stored_y < GetSystemMetrics (SM_YVIRTUALSCREEN) + cymenu + cyborder) + stored_y = GetSystemMetrics (SM_YVIRTUALSCREEN) + cymenu + cyborder; if (stored_x > GetSystemMetrics (SM_CXVIRTUALSCREEN)) rc.left = 1; @@ -1741,12 +1757,12 @@ static int create_windows (void) else rc.top = stored_y; - rc.right = rc.left + 2 + currentmode->current_width + 2; - rc.bottom = rc.top + 2 + currentmode->current_height + 2 + GetSystemMetrics (SM_CYMENU) - 1; + rc.right = rc.left + gap + currentmode->current_width + gap - 2; + rc.bottom = rc.top + gap + currentmode->current_height + gap + cymenu - 1 - 2; oldx = rc.left; oldy = rc.top; - AdjustWindowRect (&rc, NORMAL_WINDOW_STYLE, FALSE); + AdjustWindowRect (&rc, borderless ? WS_POPUP : style, FALSE); win_x_diff = rc.left - oldx; win_y_diff = rc.top - oldy; @@ -1766,32 +1782,34 @@ static int create_windows (void) #endif flags |= (currprefs.win32_alwaysontop ? WS_EX_TOPMOST : 0); - hMainWnd = CreateWindowEx (WS_EX_ACCEPTFILES | exstyle | flags, - "PCsuxRox", "WinUAE", - style, - rc.left, rc.top, - rc.right - rc.left + 1, rc.bottom - rc.top + 1, - hhWnd, NULL, 0, NULL); + if (!borderless) { + hMainWnd = CreateWindowEx (WS_EX_ACCEPTFILES | exstyle | flags, + "PCsuxRox", "WinUAE", + style, + rc.left, rc.top, + rc.right - rc.left + 1, rc.bottom - rc.top + 1, + hhWnd, NULL, 0, NULL); - if (! hMainWnd) { - write_log ("main window creation failed\n"); - return 0; + if (!hMainWnd) { + write_log ("main window creation failed\n"); + return 0; + } + createstatuswindow (); + } else { + x = rc.left; + y = rc.top; } - createstatuswindow (); - } - else - hMainWnd = NULL; hAmigaWnd = CreateWindowEx (fs ? WS_EX_ACCEPTFILES | WS_EX_TOPMOST : WS_EX_ACCEPTFILES | exstyle | (currprefs.win32_alwaysontop ? WS_EX_TOPMOST : 0), "AmigaPowah", "WinUAE", WS_CLIPCHILDREN | WS_CLIPSIBLINGS | (hMainWnd ? WS_VISIBLE | WS_CHILD : WS_VISIBLE | WS_POPUP), - hMainWnd ? 2 : CW_USEDEFAULT, hMainWnd ? 2 : CW_USEDEFAULT, + x, y, currentmode->current_width, currentmode->current_height, hMainWnd ? hMainWnd : hhWnd, NULL, 0, NULL); - if (! hAmigaWnd) { + if (!hAmigaWnd) { write_log ("creation of amiga window failed\n"); close_hwnds(); return 0; @@ -1802,10 +1820,8 @@ static int create_windows (void) ShowWindow (hMainWnd, SW_SHOWNORMAL); UpdateWindow (hMainWnd); } - if (hAmigaWnd) { - UpdateWindow (hAmigaWnd); - ShowWindow (hAmigaWnd, SW_SHOWNORMAL); - } + UpdateWindow (hAmigaWnd); + ShowWindow (hAmigaWnd, SW_SHOWNORMAL); return 1; } @@ -1825,17 +1841,20 @@ static void setoverlay(void) GetClientRect (hMainWnd, &dr); // adjust the dest-rect to avoid the status-bar - if( hStatusWnd ) - { + if (hStatusWnd) { if (GetWindowRect (hStatusWnd, &statusr)) dr.bottom = dr.bottom - ( statusr.bottom - statusr.top ); } - ClientToScreen( hMainWnd, &p ); - dr.left = p.x + 2; - dr.top = p.y + 2; - dr.right += p.x; - dr.bottom += p.y; + ClientToScreen(hMainWnd, &p); + if (!currprefs.win32_borderless) { + p.x += 2; + p.y += 2; + } + dr.left = p.x; + dr.top = p.y; + dr.right += p.x + 1; + dr.bottom += p.y + 1; /* overlay's coordinates are relative to monitor's top/left-corner */ dr.left -= mi.rcMonitor.left; dr.top -= mi.rcMonitor.top; @@ -1847,8 +1866,8 @@ static void setoverlay(void) sr.left = 0; sr.top = 0; - sr.right = currentmode->current_width; - sr.bottom = currentmode->current_height; + sr.right = w; + sr.bottom = h; // Adjust our dst-rect to match the dimensions of our src-rect if (dr.right - dr.left > sr.right - sr.left) @@ -1856,11 +1875,6 @@ static void setoverlay(void) if (dr.bottom - dr.top > sr.bottom - sr.top) dr.bottom = dr.top + sr.bottom - sr.top; - sr.left = 0; - sr.top = 0; - sr.right = w; - sr.bottom = h; - maxwidth = mi.rcMonitor.right - mi.rcMonitor.left; if (dr.right > maxwidth) { sr.right = w - (dr.right - maxwidth); diff --git a/od-win32/win32gui.c b/od-win32/win32gui.c index 159a0c26..2752bbcb 100755 --- a/od-win32/win32gui.c +++ b/od-win32/win32gui.c @@ -69,6 +69,7 @@ #include "moduleripper.h" #endif #include "catweasel.h" +#include "lcd.h" #define DISK_FORMAT_STRING "(*.adf;*.adz;*.gz;*.dms;*.fdi;*.ipf;*.zip;*.rar;*.7z;*.exe)\0*.adf;*.adz;*.gz;*.dms;*.fdi;*.ipf;*.zip;*.rar;*.7z;*.exe\0" #define ROM_FORMAT_STRING "(*.rom;*.zip;*.rar;*.7z;*.roz)\0*.rom;*.zip;*.rar;*.7z;*.roz\0" @@ -3589,8 +3590,8 @@ static void values_to_displaydlg (HWND hDlg) CheckDlgButton (hDlg, IDC_AFULLSCREEN, workprefs.gfx_afullscreen); CheckDlgButton (hDlg, IDC_PFULLSCREEN, workprefs.gfx_pfullscreen); CheckDlgButton (hDlg, IDC_ASPECT, workprefs.gfx_correct_aspect); - CheckDlgButton (hDlg, IDC_LORES, workprefs.gfx_linedbl ? FALSE : TRUE); CheckDlgButton (hDlg, IDC_LORES, workprefs.gfx_lores); + CheckDlgButton (hDlg, IDC_LORES_SMOOTHED, workprefs.gfx_lores_mode); CheckDlgButton (hDlg, IDC_VSYNC, workprefs.gfx_vsync); CheckDlgButton (hDlg, IDC_XCENTER, workprefs.gfx_xcenter); @@ -3640,6 +3641,7 @@ static void values_from_displaydlg (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l workprefs.gfx_afullscreen = IsDlgButtonChecked (hDlg, IDC_AFULLSCREEN); workprefs.gfx_lores = IsDlgButtonChecked (hDlg, IDC_LORES); + workprefs.gfx_lores_mode = IsDlgButtonChecked (hDlg, IDC_LORES_SMOOTHED); workprefs.gfx_correct_aspect = IsDlgButtonChecked (hDlg, IDC_ASPECT); workprefs.gfx_linedbl = ( IsDlgButtonChecked( hDlg, IDC_LM_SCANLINES ) ? 2 : IsDlgButtonChecked( hDlg, IDC_LM_DOUBLED ) ? 1 : 0 ); @@ -4318,7 +4320,7 @@ static void enable_for_miscdlg (HWND hDlg) EnableWindow (GetDlgItem (hDlg, IDC_NOSPEED), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_NOSPEEDPAUSE), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_NOSOUND), TRUE); - EnableWindow (GetDlgItem (hDlg, IDC_NOOVERLAY), FALSE); + EnableWindow (GetDlgItem (hDlg, IDC_NOOVERLAY), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_DOSAVESTATE), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SCSIMODE), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SCSIDEVICE), FALSE); @@ -4527,13 +4529,13 @@ static INT_PTR MiscDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) workprefs.illegal_mem = IsDlgButtonChecked (hDlg, IDC_ILLEGAL); break; case IDC_JULIAN: - workprefs.win32_middle_mouse = IsDlgButtonChecked( hDlg, IDC_JULIAN ); + workprefs.win32_middle_mouse = IsDlgButtonChecked(hDlg, IDC_JULIAN); break; case IDC_NOOVERLAY: - workprefs.win32_no_overlay = IsDlgButtonChecked( hDlg, IDC_NOOVERLAY ); + workprefs.win32_no_overlay = IsDlgButtonChecked(hDlg, IDC_NOOVERLAY); break; case IDC_SHOWLEDS: - workprefs.leds_on_screen = IsDlgButtonChecked( hDlg, IDC_SHOWLEDS ); + workprefs.leds_on_screen = IsDlgButtonChecked(hDlg, IDC_SHOWLEDS); break; case IDC_SHOWGUI: workprefs.start_gui = IsDlgButtonChecked (hDlg, IDC_SHOWGUI); @@ -5521,18 +5523,24 @@ static INT_PTR CALLBACK HardfileSettingsProc (HWND hDlg, UINT msg, WPARAM wParam return FALSE; } +extern int harddrive_to_hdf(HWND, struct uae_prefs*, int); static INT_PTR CALLBACK HarddriveSettingsProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { static int recursive = 0; int i, index; LRESULT posn; + static int oposn; switch (msg) { case WM_INITDIALOG: + oposn = -1; hdf_init (); recursive++; CheckDlgButton (hDlg, IDC_RW, current_hfdlg.rw); SendDlgItemMessage(hDlg, IDC_HARDDRIVE, CB_RESETCONTENT, 0, 0); + EnableWindow(GetDlgItem(hDlg, IDC_HARDDRIVE_IMAGE), FALSE); + EnableWindow(GetDlgItem(hDlg, IDOK), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_RW), FALSE); index = -1; for (i = 0; i < hdf_getnumharddrives(); i++) { SendDlgItemMessage( hDlg, IDC_HARDDRIVE, CB_ADDSTRING, 0, (LPARAM)hdf_getnameharddrive(i, 1)); @@ -5547,7 +5555,15 @@ static INT_PTR CALLBACK HarddriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara if (recursive) break; recursive++; - + posn = SendDlgItemMessage (hDlg, IDC_HARDDRIVE, CB_GETCURSEL, 0, 0); + if (oposn != posn) { + oposn = posn; + if (posn >= 0) { + EnableWindow(GetDlgItem(hDlg, IDC_HARDDRIVE_IMAGE), TRUE); + EnableWindow(GetDlgItem(hDlg, IDOK), TRUE); + EnableWindow(GetDlgItem(hDlg, IDC_RW), TRUE); + } + } if (HIWORD (wParam) == BN_CLICKED) { switch (LOWORD (wParam)) { case IDOK: @@ -5556,10 +5572,12 @@ static INT_PTR CALLBACK HarddriveSettingsProc (HWND hDlg, UINT msg, WPARAM wPara case IDCANCEL: EndDialog (hDlg, 0); break; + case IDC_HARDDRIVE_IMAGE: + if (posn != CB_ERR) + harddrive_to_hdf(hDlg, &workprefs, posn); + break; } } - - posn = SendDlgItemMessage (hDlg, IDC_HARDDRIVE, CB_GETCURSEL, 0, 0); if (posn != CB_ERR) strcpy (current_hfdlg.filename, hdf_getnameharddrive ((int)posn, 0)); current_hfdlg.rw = IsDlgButtonChecked (hDlg, IDC_RW); @@ -8944,6 +8962,9 @@ void gui_led (int led, int on) int pos = -1, j; indicator_leds (led, on); +#ifdef LOGITECHLCD + lcd_update (led, on); +#endif if (!hStatusWnd) return; if (on) diff --git a/od-win32/winuae_msvc/winuae_msvc.vcproj b/od-win32/winuae_msvc/winuae_msvc.vcproj index e835f726..984db2b9 100755 --- a/od-win32/winuae_msvc/winuae_msvc.vcproj +++ b/od-win32/winuae_msvc/winuae_msvc.vcproj @@ -22,7 +22,7 @@ OutputDirectory=".\Debug" IntermediateDirectory=".\Debug" ConfigurationType="1" - InheritedPropertySheets="UpgradeFromVC71.vsprops" + InheritedPropertySheets="..\..\..\..\..\msvs8\VC\VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2" @@ -84,7 +84,7 @@ + + -- 2.47.3