static int blit_linecyclecounter, blit_misscyclecounter;
#ifdef CPUEMU_6
-extern int cycle_line[];
+extern uae_u8 cycle_line[];
#endif
static long blit_firstline_cycles;
/*
- line draw takes 4 cycles (two 2-cycle blits combined)
+ line draw takes 4 cycles (-X-X)
it also have real idle cycles and only 2 dma fetches
(read from C, write to D, but see below)
static int blit_cycle_diagram_line[] =
{
- 0, 4, 3,5,4,5 /* guessed */
+ 0, 4, 0,3,0,4, 0,0,0,0,0,0,0,0,0,0 /* guessed */
};
static int blit_cycle_diagram_finald[] =
return 0;
if (cycle_line[hpos] == 0)
return 1;
- if (cycle_line[hpos] & (CYCLE_REFRESH | CYCLE_SPRITE | CYCLE_MISC))
+ if (cycle_line[hpos] & CYCLE_REFRESH)
return -1;
return 0;
}
blitahold = 0;
blitonedot = 1;
blt_info.bltddat = blit_func(blitahold, blitbhold, blitchold, bltcon0 & 0xFF);
+}
+
+static void blitter_line_proc(void)
+{
if (!blitsign){
if (bltcon0 & 0x800)
bltapt += (uae_s16)blt_info.bltamod;
while (blit_last_hpos < hpos) {
int c = channel_state (blit_cyclecounter);
for (;;) {
-
- if (c == 5) {
- blit_cyclecounter++;
- break;
+ if (c) {
+ if (!canblit(blit_last_hpos))
+ break;
}
-#if 1
- if (c && canblit(blit_last_hpos) <= 0)
- break;
-#endif
-#if 1
- if (c != 0)
- cycle_line[blit_last_hpos] |= CYCLE_BLITTER;
-#endif
blit_cyclecounter++;
- if (c == 4) {
- /* believe it or not but try Cardamon or Cardamom without this.. */
- if (ddat1use)
- bltdpt = bltcpt;
+ if (c == 3) {
blitter_read();
+ cycle_line[blit_last_hpos] |= CYCLE_BLITTER;
+ } else if (c == 4) {
+ if (ddat1use) {
+ bltdpt = bltcpt;
+ }
+ ddat1use = 1;
blitter_line();
- blitter_write();
+ blitter_line_proc();
blitter_nxline();
- ddat1use = 1;
+ blitter_write();
+ cycle_line[blit_last_hpos] |= CYCLE_BLITTER;
if (blt_info.vblitsize == 0) {
- blitter_done();
- return;
+ bltdpt = bltcpt;
+ blitter_done();
+ return;
}
}
- break;
+ break;
}
blit_last_hpos++;
}
do {
blitter_read();
blitter_line();
+ blitter_line_proc();
blitter_write();
bltdpt = bltcpt;
blitter_nxline();
static __inline__ int isbyte(uae_s32 x)
{
- return (x>=-128 && x<=127);
+ return (x>=-128 && x<=127);
}
LOWFUNC(NONE,WRITE,1,raw_push_l_r,(R4 r))
LOWFUNC(NONE,NONE,2,raw_imul_64_32,(RW4 d, RW4 s))
{
- if (d!=MUL_NREG1 || s!=MUL_NREG2)
+#ifdef JIT_DEBUG
+ if (d!=MUL_NREG1 || s!=MUL_NREG2) {
+ printf("Bad register in IMUL: d=%d, s=%d\n",d,s);
abort();
+ }
+#endif
emit_byte(0xf7);
emit_byte(0xea);
}
LOWFUNC(NONE,NONE,2,raw_mul_64_32,(RW4 d, RW4 s))
{
+#ifdef JIT_DEBUG
if (d!=MUL_NREG1 || s!=MUL_NREG2) {
printf("Bad register in MUL: d=%d, s=%d\n",d,s);
abort();
}
+#endif
emit_byte(0xf7);
emit_byte(0xe2);
}
LENDFUNC(NONE,NONE,2,raw_mul_64_32,(RW4 d, RW4 s))
-LOWFUNC(NONE,NONE,2,raw_mul_32_32,(RW4 d, R4 s))
-{
- abort(); /* %^$&%^$%#^ x86! */
- emit_byte(0x0f);
- emit_byte(0xaf);
- emit_byte(0xc0+8*d+s);
-}
-LENDFUNC(NONE,NONE,2,raw_mul_32_32,(RW4 d, R4 s))
-
LOWFUNC(NONE,NONE,2,raw_mov_b_rr,(W1 d, R1 s))
{
emit_byte(0x88);
}
LENDFUNC(NONE,NONE,2,raw_mov_w_rr,(W2 d, R2 s))
-LOWFUNC(NONE,READ,4,raw_mov_l_rrm_indexed,(W4 d,R4 baser, R4 index, IMM factor))
+LOWFUNC(NONE,READ,3,raw_mov_l_rrm_indexed,(W4 d, R4 baser, R4 index))
{
- int isebp=(baser==5)?0x40:0;
- int fi;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
-
-
emit_byte(0x8b);
- emit_byte(0x04+8*d+isebp);
- emit_byte(baser+8*index+0x40*fi);
- if (isebp)
- emit_byte(0x00);
-}
-LENDFUNC(NONE,READ,4,raw_mov_l_rrm_indexed,(W4 d,R4 baser, R4 index, IMM factor))
-
-LOWFUNC(NONE,READ,4,raw_mov_w_rrm_indexed,(W2 d, R4 baser, R4 index, IMM factor))
-{
- int fi;
- int isebp;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
+ if (baser==5) {
+ emit_byte(0x44+8*d);
+ emit_byte(8*index+baser);
+ emit_byte(0);
+ return;
}
- isebp=(baser==5)?0x40:0;
-
- emit_byte(0x66);
- emit_byte(0x8b);
- emit_byte(0x04+8*d+isebp);
- emit_byte(baser+8*index+0x40*fi);
- if (isebp)
- emit_byte(0x00);
-}
-LENDFUNC(NONE,READ,4,raw_mov_w_rrm_indexed,(W2 d, R4 baser, R4 index, IMM factor))
-
-LOWFUNC(NONE,READ,4,raw_mov_b_rrm_indexed,(W1 d, R4 baser, R4 index, IMM factor))
-{
- int fi;
- int isebp;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
- isebp=(baser==5)?0x40:0;
-
- emit_byte(0x8a);
- emit_byte(0x04+8*d+isebp);
- emit_byte(baser+8*index+0x40*fi);
- if (isebp)
- emit_byte(0x00);
-}
-LENDFUNC(NONE,READ,4,raw_mov_b_rrm_indexed,(W1 d, R4 baser, R4 index, IMM factor))
-
-LOWFUNC(NONE,WRITE,4,raw_mov_l_mrr_indexed,(R4 baser, R4 index, IMM factor, R4 s))
-{
- int fi;
- int isebp;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
-
-
- isebp=(baser==5)?0x40:0;
-
- emit_byte(0x89);
- emit_byte(0x04+8*s+isebp);
- emit_byte(baser+8*index+0x40*fi);
- if (isebp)
- emit_byte(0x00);
+ emit_byte(0x04+8*d);
+ emit_byte(8*index+baser);
}
-LENDFUNC(NONE,WRITE,4,raw_mov_l_mrr_indexed,(R4 baser, R4 index, IMM factor, R4 s))
+LENDFUNC(NONE,READ,3,raw_mov_l_rrm_indexed,(W4 d, R4 baser, R4 index))
-LOWFUNC(NONE,WRITE,4,raw_mov_w_mrr_indexed,(R4 baser, R4 index, IMM factor, R2 s))
+LOWFUNC(NONE,READ,3,raw_mov_w_rrm_indexed,(W2 d, R4 baser, R4 index))
{
- int fi;
- int isebp;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
- isebp=(baser==5)?0x40:0;
-
emit_byte(0x66);
- emit_byte(0x89);
- emit_byte(0x04+8*s+isebp);
- emit_byte(baser+8*index+0x40*fi);
- if (isebp)
- emit_byte(0x00);
+ emit_byte(0x8b);
+ if (baser==5) {
+ emit_byte(0x44+8*d);
+ emit_byte(8*index+baser);
+ emit_byte(0);
+ return;
+ }
+ emit_byte(0x04+8*d);
+ emit_byte(8*index+baser);
}
-LENDFUNC(NONE,WRITE,4,raw_mov_w_mrr_indexed,(R4 baser, R4 index, IMM factor, R2 s))
+LENDFUNC(NONE,READ,3,raw_mov_w_rrm_indexed,(W2 d, R4 baser, R4 index))
-LOWFUNC(NONE,WRITE,4,raw_mov_b_mrr_indexed,(R4 baser, R4 index, IMM factor, R1 s))
+LOWFUNC(NONE,READ,3,raw_mov_b_rrm_indexed,(W1 d, R4 baser, R4 index))
{
- int fi;
- int isebp;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
- isebp=(baser==5)?0x40:0;
-
- emit_byte(0x88);
- emit_byte(0x04+8*s+isebp);
- emit_byte(baser+8*index+0x40*fi);
- if (isebp)
- emit_byte(0x00);
+ emit_byte(0x8a);
+ if (baser==5) {
+ emit_byte(0x44+8*d);
+ emit_byte(8*index+baser);
+ emit_byte(0);
+ return;
+ }
+ emit_byte(0x04+8*d);
+ emit_byte(8*index+baser);
}
-LENDFUNC(NONE,WRITE,4,raw_mov_b_mrr_indexed,(R4 baser, R4 index, IMM factor, R1 s))
+LENDFUNC(NONE,READ,3,raw_mov_b_rrm_indexed,(W1 d, R4 baser, R4 index))
-LOWFUNC(NONE,WRITE,5,raw_mov_l_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R4 s))
+LOWFUNC(NONE,WRITE,3,raw_mov_l_mrr_indexed,(R4 baser, R4 index, R4 s))
{
- int fi;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
-
emit_byte(0x89);
- emit_byte(0x84+8*s);
- emit_byte(baser+8*index+0x40*fi);
- emit_long(base);
+ if (baser==5) {
+ emit_byte(0x44+8*s);
+ emit_byte(8*index+baser);
+ emit_byte(0);
+ return;
+ }
+ emit_byte(0x04+8*s);
+ emit_byte(8*index+baser);
}
-LENDFUNC(NONE,WRITE,5,raw_mov_l_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R4 s))
+LENDFUNC(NONE,WRITE,3,raw_mov_l_mrr_indexed,(R4 baser, R4 index, R4 s))
-LOWFUNC(NONE,WRITE,5,raw_mov_w_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R2 s))
+LOWFUNC(NONE,WRITE,3,raw_mov_w_mrr_indexed,(R4 baser, R4 index, R2 s))
{
- int fi;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
-
emit_byte(0x66);
emit_byte(0x89);
- emit_byte(0x84+8*s);
- emit_byte(baser+8*index+0x40*fi);
- emit_long(base);
+ if (baser==5) {
+ emit_byte(0x44+8*s);
+ emit_byte(8*index+baser);
+ emit_byte(0);
+ return;
+ }
+ emit_byte(0x04+8*s);
+ emit_byte(8*index+baser);
}
-LENDFUNC(NONE,WRITE,5,raw_mov_w_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R2 s))
+LENDFUNC(NONE,WRITE,3,raw_mov_w_mrr_indexed,(R4 baser, R4 index, R2 s))
-LOWFUNC(NONE,WRITE,5,raw_mov_b_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R1 s))
+LOWFUNC(NONE,WRITE,3,raw_mov_b_mrr_indexed,(R4 baser, R4 index, R1 s))
{
- int fi;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
-
emit_byte(0x88);
- emit_byte(0x84+8*s);
- emit_byte(baser+8*index+0x40*fi);
- emit_long(base);
-}
-LENDFUNC(NONE,WRITE,5,raw_mov_b_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R1 s))
-
-LOWFUNC(NONE,READ,5,raw_mov_l_brrm_indexed,(W4 d, IMM base, R4 baser, R4 index, IMM factor))
-{
- int fi;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
-
- emit_byte(0x8b);
- emit_byte(0x84+8*d);
- emit_byte(baser+8*index+0x40*fi);
- emit_long(base);
-}
-LENDFUNC(NONE,READ,5,raw_mov_l_brrm_indexed,(W4 d, IMM base, R4 baser, R4 index, IMM factor))
-
-LOWFUNC(NONE,READ,5,raw_mov_w_brrm_indexed,(W2 d, IMM base, R4 baser, R4 index, IMM factor))
-{
- int fi;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
-
- emit_byte(0x66);
- emit_byte(0x8b);
- emit_byte(0x84+8*d);
- emit_byte(baser+8*index+0x40*fi);
- emit_long(base);
-}
-LENDFUNC(NONE,READ,5,raw_mov_w_brrm_indexed,(W2 d, IMM base, R4 baser, R4 index, IMM factor))
-
-LOWFUNC(NONE,READ,5,raw_mov_b_brrm_indexed,(W1 d, IMM base, R4 baser, R4 index, IMM factor))
-{
- int fi;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
-
- emit_byte(0x8a);
- emit_byte(0x84+8*d);
- emit_byte(baser+8*index+0x40*fi);
- emit_long(base);
+ if (baser==5) {
+ emit_byte(0x44+8*s);
+ emit_byte(8*index+baser);
+ emit_byte(0);
+ return;
+ }
+ emit_byte(0x04+8*s);
+ emit_byte(8*index+baser);
}
-LENDFUNC(NONE,READ,5,raw_mov_b_brrm_indexed,(W1 d, IMM base, R4 baser, R4 index, IMM factor))
+LENDFUNC(NONE,WRITE,3,raw_mov_b_mrr_indexed,(R4 baser, R4 index, R1 s))
-LOWFUNC(NONE,READ,4,raw_mov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor))
+LOWFUNC(NONE,READ,3,raw_mov_l_rm_indexed,(W4 d, IMM base, R4 index))
{
- int fi;
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default:
- fprintf(stderr,"Bad factor %d in mov_l_rm_indexed!\n",factor);
- abort();
- }
emit_byte(0x8b);
emit_byte(0x04+8*d);
- emit_byte(0x05+8*index+64*fi);
+ emit_byte(0x85+8*index);
emit_long(base);
}
-LENDFUNC(NONE,READ,4,raw_mov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor))
+LENDFUNC(NONE,READ,3,raw_mov_l_rm_indexed,(W4 d, IMM base, R4 index))
-LOWFUNC(NONE,READ,5,raw_cmov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor, IMM cond))
+LOWFUNC(NONE,READ,4,raw_cmov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM cond))
{
- int fi;
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default:
- fprintf(stderr,"Bad factor %d in mov_l_rm_indexed!\n",factor);
- abort();
- }
if (have_cmov) {
emit_byte(0x0f);
emit_byte(0x40+cond);
- emit_byte(0x04+8*d);
- emit_byte(0x05+8*index+64*fi);
- emit_long(base);
}
else { /* replacement using branch and mov */
int uncc=(cond^1);
emit_byte(0x70+uncc);
emit_byte(7); /* skip next 7 bytes if not cc=true */
emit_byte(0x8b);
- emit_byte(0x04+8*d);
- emit_byte(0x05+8*index+64*fi);
- emit_long(base);
}
+ emit_byte(0x04+8*d);
+ emit_byte(0x85+8*index);
+ emit_long(base);
}
-LENDFUNC(NONE,READ,5,raw_cmov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor, IMM cond))
+LENDFUNC(NONE,READ,4,raw_cmov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM cond))
LOWFUNC(NONE,READ,3,raw_cmov_l_rm,(W4 d, IMM mem, IMM cond))
{
LOWFUNC(NONE,NONE,5,raw_lea_l_brr_indexed,(W4 d, R4 s, R4 index, IMM factor, IMM offset))
{
- int fi;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
-
emit_byte(0x8d);
+ if (!offset) {
+ if (s!=5) {
+ emit_byte(0x04+8*d);
+ emit_byte(0x40*factor+8*index+s);
+ return;
+ }
+ emit_byte(0x44+8*d);
+ emit_byte(0x40*factor+8*index+s);
+ emit_byte(0);
+ return;
+ }
emit_byte(0x84+8*d);
- emit_byte(0x40*fi+8*index+s);
+ emit_byte(0x40*factor+8*index+s);
emit_long(offset);
}
LENDFUNC(NONE,NONE,5,raw_lea_l_brr_indexed,(W4 d, R4 s, R4 index, IMM factor, IMM offset))
-LOWFUNC(NONE,NONE,4,raw_lea_l_rr_indexed,(W4 d, R4 s, R4 index, IMM factor))
+LOWFUNC(NONE,NONE,3,raw_lea_l_rr_indexed,(W4 d, R4 s, R4 index))
{
- int isebp=(s==5)?0x40:0;
- int fi;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
-
emit_byte(0x8d);
- emit_byte(0x04+8*d+isebp);
- emit_byte(0x40*fi+8*index+s);
- if (isebp)
- emit_byte(0);
+ if (s==5) {
+ emit_byte(0x44+8*d);
+ emit_byte(8*index+s);
+ emit_byte(0);
+ return;
+ }
+ emit_byte(0x04+8*d);
+ emit_byte(8*index+s);
}
-LENDFUNC(NONE,NONE,4,raw_lea_l_rr_indexed,(W4 d, R4 s, R4 index, IMM factor))
+LENDFUNC(NONE,NONE,3,raw_lea_l_rr_indexed,(W4 d, R4 s, R4 index))
LOWFUNC(NONE,WRITE,3,raw_mov_l_bRr,(R4 d, R4 s, IMM offset))
{
}
LENDFUNC(WRITE,NONE,2,raw_cmp_b,(R1 d, R1 s))
-LOWFUNC(WRITE,READ,4,raw_cmp_l_rm_indexed,(R4 d, IMM offset, R4 index, IMM factor))
-{
- int fi;
-
- switch(factor) {
- case 1: fi=0; break;
- case 2: fi=1; break;
- case 4: fi=2; break;
- case 8: fi=3; break;
- default: abort();
- }
- emit_byte(0x39);
- emit_byte(0x04+8*d);
- emit_byte(5+8*index+0x40*fi);
- emit_long(offset);
-}
-LENDFUNC(WRITE,READ,4,raw_cmp_l_rm_indexed,(R4 d, IMM offset, R4 index, IMM factor))
-
LOWFUNC(WRITE,NONE,2,raw_xor_l,(RW4 d, R4 s))
{
emit_byte(0x31);
static __inline__ void raw_jmp_m_indexed(uae_u32 base, uae_u32 r, uae_u32 m)
{
- int mu;
- switch(m) {
- case 1: mu=0; break;
- case 2: mu=1; break;
- case 4: mu=2; break;
- case 8: mu=3; break;
- default: abort();
+ int sib;
+
+ switch (m) {
+ case 1: sib = 0x05; break;
+ case 2: sib = 0x45; break;
+ case 4: sib = 0x85; break;
+ case 8: sib = 0xC5; break;
+ default: abort();
}
lopt_emit_all();
emit_byte(0xff);
emit_byte(0x24);
- emit_byte(0x05+8*r+0x40*mu);
+ emit_byte(8*r+sib);
emit_long(base);
}
emit_long(base);
}
-
static __inline__ void raw_call(uae_u32 t)
{
lopt_emit_all();
}
#endif
if (dir==SIG_READ) {
- switch(size) {
+ switch (size) {
case 1: *((uae_u8*)pr)=get_byte(addr); break;
case 2: *((uae_u16*)pr)=swap16(get_word(addr)); break;
case 4: *((uae_u32*)pr)=swap32(get_long(addr)); break;
}
}
else { /* write */
- switch(size) {
+ switch (size) {
case 1: put_byte(addr,*((uae_u8*)pr)); break;
case 2: put_word(addr,swap16(*((uae_u16*)pr))); break;
case 4: put_long(addr,swap32(*((uae_u32*)pr))); break;
uae_u32 m68k_pc_offset;
-/* Some arithmetic ooperations can be optimized away if the operands
+/* Some arithmetic operations can be optimized away if the operands
are known to be constant. But that's only a good idea when the
side effects they would have on the flags are not important. This
variable indicates whether we need the side effects or not
raw_zero_extend_16_rr(rr,rr);
raw_zero_extend_16_rr(bestreg,bestreg);
raw_bswap_32(bestreg);
- raw_lea_l_brr_indexed(rr,rr,bestreg,1,0);
+ raw_lea_l_rr_indexed(rr,rr,bestreg);
live.state[r].validsize=4;
live.nat[rr].touched=touchcnt++;
return rr;
}
MENDFUNC(2,shrl_b_rr,(RW1 d, R1 r))
-
-
MIDFUNC(2,shll_l_ri,(RW4 r, IMM i))
{
if (!i && !needflags)
}
MENDFUNC(2,shra_b_rr,(RW1 d, R1 r))
-
MIDFUNC(2,setcc,(W1 d, IMM cc))
{
CLOBBER_SETCC;
}
MENDFUNC(2,mul_64_32,(RW4 d, RW4 s))
-MIDFUNC(2,mul_32_32,(RW4 d, R4 s))
-{
- CLOBBER_MUL;
- s=readreg(s,4);
- d=rmw(d,4,4);
- raw_mul_32_32(d,s);
- unlock(s);
- unlock(d);
-}
-MENDFUNC(2,mul_32_32,(RW4 d, R4 s))
-
MIDFUNC(2,sign_extend_16_rr,(W4 d, R2 s))
{
int isrmw;
}
MENDFUNC(2,sign_extend_8_rr,(W4 d, R1 s))
-
MIDFUNC(2,zero_extend_16_rr,(W4 d, R2 s))
{
int isrmw;
}
MENDFUNC(2,mov_w_rr,(W2 d, R2 s))
-
-MIDFUNC(4,mov_l_rrm_indexed,(W4 d,R4 baser, R4 index, IMM factor))
+MIDFUNC(3,mov_l_rrm_indexed,(W4 d,R4 baser, R4 index))
{
CLOBBER_MOV;
baser=readreg(baser,4);
index=readreg(index,4);
d=writereg(d,4);
- raw_mov_l_rrm_indexed(d,baser,index,factor);
+ raw_mov_l_rrm_indexed(d,baser,index);
unlock(d);
unlock(baser);
unlock(index);
}
-MENDFUNC(4,mov_l_rrm_indexed,(W4 d,R4 baser, R4 index, IMM factor))
+MENDFUNC(3,mov_l_rrm_indexed,(W4 d,R4 baser, R4 index))
-MIDFUNC(4,mov_w_rrm_indexed,(W2 d, R4 baser, R4 index, IMM factor))
+MIDFUNC(3,mov_w_rrm_indexed,(W2 d, R4 baser, R4 index))
{
CLOBBER_MOV;
baser=readreg(baser,4);
index=readreg(index,4);
d=writereg(d,2);
- raw_mov_w_rrm_indexed(d,baser,index,factor);
+ raw_mov_w_rrm_indexed(d,baser,index);
unlock(d);
unlock(baser);
unlock(index);
}
-MENDFUNC(4,mov_w_rrm_indexed,(W2 d, R4 baser, R4 index, IMM factor))
+MENDFUNC(3,mov_w_rrm_indexed,(W2 d, R4 baser, R4 index))
-MIDFUNC(4,mov_b_rrm_indexed,(W1 d, R4 baser, R4 index, IMM factor))
+MIDFUNC(3,mov_b_rrm_indexed,(W1 d, R4 baser, R4 index))
{
CLOBBER_MOV;
baser=readreg(baser,4);
index=readreg(index,4);
d=writereg(d,1);
- raw_mov_b_rrm_indexed(d,baser,index,factor);
+ raw_mov_b_rrm_indexed(d,baser,index);
unlock(d);
unlock(baser);
unlock(index);
}
-MENDFUNC(4,mov_b_rrm_indexed,(W1 d, R4 baser, R4 index, IMM factor))
-
+MENDFUNC(3,mov_b_rrm_indexed,(W1 d, R4 baser, R4 index))
-MIDFUNC(4,mov_l_mrr_indexed,(R4 baser, R4 index, IMM factor, R4 s))
+MIDFUNC(3,mov_l_mrr_indexed,(R4 baser, R4 index, R4 s))
{
CLOBBER_MOV;
baser=readreg(baser,4);
Dif (baser==s || index==s)
abort();
-
- raw_mov_l_mrr_indexed(baser,index,factor,s);
+ raw_mov_l_mrr_indexed(baser,index,s);
unlock(s);
unlock(baser);
unlock(index);
}
-MENDFUNC(4,mov_l_mrr_indexed,(R4 baser, R4 index, IMM factor, R4 s))
+MENDFUNC(3,mov_l_mrr_indexed,(R4 baser, R4 index, R4 s))
-MIDFUNC(4,mov_w_mrr_indexed,(R4 baser, R4 index, IMM factor, R2 s))
+MIDFUNC(3,mov_w_mrr_indexed,(R4 baser, R4 index, R2 s))
{
CLOBBER_MOV;
baser=readreg(baser,4);
index=readreg(index,4);
s=readreg(s,2);
- raw_mov_w_mrr_indexed(baser,index,factor,s);
+ raw_mov_w_mrr_indexed(baser,index,s);
unlock(s);
unlock(baser);
unlock(index);
}
-MENDFUNC(4,mov_w_mrr_indexed,(R4 baser, R4 index, IMM factor, R2 s))
+MENDFUNC(3,mov_w_mrr_indexed,(R4 baser, R4 index, R2 s))
-MIDFUNC(4,mov_b_mrr_indexed,(R4 baser, R4 index, IMM factor, R1 s))
+MIDFUNC(3,mov_b_mrr_indexed,(R4 baser, R4 index, R1 s))
{
CLOBBER_MOV;
s=readreg(s,1);
baser=readreg(baser,4);
index=readreg(index,4);
- raw_mov_b_mrr_indexed(baser,index,factor,s);
- unlock(s);
- unlock(baser);
- unlock(index);
-}
-MENDFUNC(4,mov_b_mrr_indexed,(R4 baser, R4 index, IMM factor, R1 s))
-
-
-MIDFUNC(5,mov_l_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R4 s))
-{
- int basereg=baser;
- int indexreg=index;
-
- CLOBBER_MOV;
- s=readreg(s,4);
- baser=readreg_offset(baser,4);
- index=readreg_offset(index,4);
-
- base+=get_offset(basereg);
- base+=factor*get_offset(indexreg);
-
- raw_mov_l_bmrr_indexed(base,baser,index,factor,s);
- unlock(s);
- unlock(baser);
- unlock(index);
-}
-MENDFUNC(5,mov_l_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R4 s))
-
-MIDFUNC(5,mov_w_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R2 s))
-{
- int basereg=baser;
- int indexreg=index;
-
- CLOBBER_MOV;
- s=readreg(s,2);
- baser=readreg_offset(baser,4);
- index=readreg_offset(index,4);
-
- base+=get_offset(basereg);
- base+=factor*get_offset(indexreg);
-
- raw_mov_w_bmrr_indexed(base,baser,index,factor,s);
- unlock(s);
- unlock(baser);
- unlock(index);
-}
-MENDFUNC(5,mov_w_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R2 s))
-
-MIDFUNC(5,mov_b_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R1 s))
-{
- int basereg=baser;
- int indexreg=index;
-
- CLOBBER_MOV;
- s=readreg(s,1);
- baser=readreg_offset(baser,4);
- index=readreg_offset(index,4);
-
- base+=get_offset(basereg);
- base+=factor*get_offset(indexreg);
-
- raw_mov_b_bmrr_indexed(base,baser,index,factor,s);
+ raw_mov_b_mrr_indexed(baser,index,s);
unlock(s);
unlock(baser);
unlock(index);
}
-MENDFUNC(5,mov_b_bmrr_indexed,(IMM base, R4 baser, R4 index, IMM factor, R1 s))
-
+MENDFUNC(3,mov_b_mrr_indexed,(R4 baser, R4 index, R1 s))
-
-/* Read a long from base+baser+factor*index */
-MIDFUNC(5,mov_l_brrm_indexed,(W4 d, IMM base, R4 baser, R4 index, IMM factor))
-{
- int basereg=baser;
- int indexreg=index;
-
- CLOBBER_MOV;
- baser=readreg_offset(baser,4);
- index=readreg_offset(index,4);
- base+=get_offset(basereg);
- base+=factor*get_offset(indexreg);
- d=writereg(d,4);
- raw_mov_l_brrm_indexed(d,base,baser,index,factor);
- unlock(d);
- unlock(baser);
- unlock(index);
-}
-MENDFUNC(5,mov_l_brrm_indexed,(W4 d, IMM base, R4 baser, R4 index, IMM factor))
-
-
-MIDFUNC(5,mov_w_brrm_indexed,(W2 d, IMM base, R4 baser, R4 index, IMM factor))
-{
- int basereg=baser;
- int indexreg=index;
-
- CLOBBER_MOV;
- remove_offset(d,-1);
- baser=readreg_offset(baser,4);
- index=readreg_offset(index,4);
- base+=get_offset(basereg);
- base+=factor*get_offset(indexreg);
- d=writereg(d,2);
- raw_mov_w_brrm_indexed(d,base,baser,index,factor);
- unlock(d);
- unlock(baser);
- unlock(index);
-}
-MENDFUNC(5,mov_w_brrm_indexed,(W2 d, IMM base, R4 baser, R4 index, IMM factor))
-
-
-MIDFUNC(5,mov_b_brrm_indexed,(W1 d, IMM base, R4 baser, R4 index, IMM factor))
-{
- int basereg=baser;
- int indexreg=index;
-
- CLOBBER_MOV;
- remove_offset(d,-1);
- baser=readreg_offset(baser,4);
- index=readreg_offset(index,4);
- base+=get_offset(basereg);
- base+=factor*get_offset(indexreg);
- d=writereg(d,1);
- raw_mov_b_brrm_indexed(d,base,baser,index,factor);
- unlock(d);
- unlock(baser);
- unlock(index);
-}
-MENDFUNC(5,mov_b_brrm_indexed,(W1 d, IMM base, R4 baser, R4 index, IMM factor))
-
-/* Read a long from base+factor*index */
-MIDFUNC(4,mov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor))
+/* Read a long from base+4*index */
+MIDFUNC(3,mov_l_rm_indexed,(W4 d, IMM base, R4 index))
{
int indexreg=index;
if (isconst(index)) {
- COMPCALL(mov_l_rm)(d,base+factor*live.state[index].val);
+ COMPCALL(mov_l_rm)(d,base+4*live.state[index].val);
return;
}
CLOBBER_MOV;
index=readreg_offset(index,4);
- base+=get_offset(indexreg)*factor;
+ base+=get_offset(indexreg)*4;
d=writereg(d,4);
- raw_mov_l_rm_indexed(d,base,index,factor);
+ raw_mov_l_rm_indexed(d,base,index);
unlock(index);
unlock(d);
}
-MENDFUNC(4,mov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM factor))
-
+MENDFUNC(3,mov_l_rm_indexed,(W4 d, IMM base, R4 index))
/* read the long at the address contained in s+offset and store in d */
MIDFUNC(3,mov_l_rR,(W4 d, R4 s, IMM offset))
MIDFUNC(5,lea_l_brr_indexed,(W4 d, R4 s, R4 index, IMM factor, IMM offset))
{
- if (!offset) {
- COMPCALL(lea_l_rr_indexed)(d,s,index,factor);
- return;
- }
CLOBBER_LEA;
s=readreg(s,4);
index=readreg(index,4);
}
MENDFUNC(5,lea_l_brr_indexed,(W4 d, R4 s, R4 index, IMM factor, IMM offset))
-MIDFUNC(4,lea_l_rr_indexed,(W4 d, R4 s, R4 index, IMM factor))
-{
- CLOBBER_LEA;
- s=readreg(s,4);
- index=readreg(index,4);
- d=writereg(d,4);
-
- raw_lea_l_rr_indexed(d,s,index,factor);
- unlock(d);
- unlock(index);
- unlock(s);
-}
-MENDFUNC(4,lea_l_rr_indexed,(W4 d, R4 s, R4 index, IMM factor))
-
/* write d to the long at the address contained in s+offset */
MIDFUNC(3,mov_l_bRr,(R4 d, R4 s, IMM offset))
{
}
MENDFUNC(2,test_b_rr,(R1 d, R1 s))
-
MIDFUNC(2,and_l_ri,(RW4 d, IMM i))
{
if (isconst (d) && ! needflags) {
}
MENDFUNC(5,call_r_02,(R4 r, R4 in1, R4 in2, IMM isize1, IMM isize2))
-
MIDFUNC(1,forget_about,(W4 r))
{
if (isinreg(r))
live.fate[i].mem=(uae_u32*)(fscratch+i);
}
-
for (i=0;i<N_REGS;i++) {
live.nat[i].touched=0;
live.nat[i].nholds=0;
raw_fp_init();
}
-
static void vinton(int i, uae_s8* vton, int depth)
{
int n;
branch_cc=cond;
}
-
static uae_u32 get_handler_address(uae_u32 addr)
{
uae_u32 cl=cacheline(addr);
#endif
mov_l_rr(f,address);
- shrl_l_ri(f,16); /* The index into the baseaddr table */
- mov_l_rm_indexed(f,(uae_u32)(baseaddr),f,4);
-
- if (address==source && size>1) { /* IBrowse does this! */
- add_l(f,address); /* f now has the final address */
- switch(size) {
- case 2: bswap_16(source); mov_w_Rr(f,source,0); bswap_16(source); break;
- case 4: bswap_32(source); mov_l_Rr(f,source,0); bswap_32(source); break;
+ shrl_l_ri(f,16); /* The index into the baseaddr table */
+ mov_l_rm_indexed(f,(uae_u32)(baseaddr),f);
+
+ if (address==source) { /* IBrowse does this! */
+ if (size > 1) {
+ add_l(f,address); /* f now holds the final address */
+ switch (size) {
+ case 2: bswap_16(source); mov_w_Rr(f,source,0);
+ bswap_16(source); return;
+ case 4: bswap_32(source); mov_l_Rr(f,source,0);
+ bswap_32(source); return;
+ }
}
}
- else {
- /* f now holds the offset */
- switch(size) {
- case 1: mov_b_mrr_indexed(address,f,1,source); break;
- case 2: bswap_16(source); mov_w_mrr_indexed(address,f,1,source); bswap_16(source); break;
- case 4: bswap_32(source); mov_l_mrr_indexed(address,f,1,source); bswap_32(source); break;
- }
+ switch (size) { /* f now holds the offset */
+ case 1: mov_b_mrr_indexed(address,f,source); break;
+ case 2: bswap_16(source); mov_w_mrr_indexed(address,f,source);
+ bswap_16(source); break; /* base, index, source */
+ case 4: bswap_32(source); mov_l_mrr_indexed(address,f,source);
+ bswap_32(source); break;
}
}
-
-
static __inline__ void writemem(int address, int source, int offset, int size, int tmp)
{
int f=tmp;
mov_l_rr(f,address);
shrl_l_ri(f,16); /* The index into the mem bank table */
- mov_l_rm_indexed(f,(uae_u32)mem_banks,f,4);
+ mov_l_rm_indexed(f,(uae_u32)mem_banks,f);
/* Now f holds a pointer to the actual membank */
mov_l_rR(f,f,offset);
/* Now f holds the address of the b/w/lput function */
forget_about(tmp);
}
-
void writebyte(int address, int source, int tmp)
{
int distrust;
mov_l_rr(f,address);
shrl_l_ri(f,16); /* The index into the baseaddr table */
- mov_l_rm_indexed(f,(uae_u32)baseaddr,f,4);
+ mov_l_rm_indexed(f,(uae_u32)baseaddr,f);
/* f now holds the offset */
switch(size) {
- case 1: mov_b_rrm_indexed(dest,address,f,1); break;
- case 2: mov_w_rrm_indexed(dest,address,f,1); bswap_16(dest); break;
- case 4: mov_l_rrm_indexed(dest,address,f,1); bswap_32(dest); break;
+ case 1: mov_b_rrm_indexed(dest,address,f); break;
+ case 2: mov_w_rrm_indexed(dest,address,f); bswap_16(dest); break;
+ case 4: mov_l_rrm_indexed(dest,address,f); bswap_32(dest); break;
}
forget_about(tmp);
}
mov_l_rr(f,address);
shrl_l_ri(f,16); /* The index into the mem bank table */
- mov_l_rm_indexed(f,(uae_u32)mem_banks,f,4);
+ mov_l_rm_indexed(f,(uae_u32)mem_banks,f);
/* Now f holds a pointer to the actual membank */
mov_l_rR(f,f,offset);
/* Now f holds the address of the b/w/lget function */
mov_l_rr(f,address);
mov_l_rr(dest,address); // gb-- nop if dest==address
shrl_l_ri(f,16);
- mov_l_rm_indexed(f, (uae_u32)baseaddr, f, 4);
+ mov_l_rm_indexed(f,(uae_u32)baseaddr,f);
add_l(dest,f);
forget_about(tmp);
}
f=dest;
mov_l_rr(f,address);
shrl_l_ri(f,16); /* The index into the baseaddr bank table */
- mov_l_rm_indexed(dest,(uae_u32)baseaddr,f,4);
+ mov_l_rm_indexed(dest,(uae_u32)baseaddr,f);
add_l(dest,address);
and_l_ri (dest, ~1);
forget_about(tmp);
#endif
}
-
-/* base is a register, but dp is an actual value.
- target is a register, as is tmp */
+/* base, target and tmp are registers, but dp is the actual opcode extension word */
void calc_disp_ea_020(int base, uae_u32 dp, int target, int tmp)
{
int reg = (dp >> 12) & 15;
else { /* 68000 version */
if ((dp & 0x800) == 0) { /* Sign extend */
sign_extend_16_rr(target,reg);
- lea_l_brr_indexed(target,base,target,1<<regd_shift,(uae_s32)((uae_s8)dp));
+ lea_l_brr_indexed(target,base,target,regd_shift,(uae_s32)(uae_s8)dp);
}
else {
- lea_l_brr_indexed(target,base,reg,1<<regd_shift,(uae_s32)((uae_s8)dp));
+ lea_l_brr_indexed(target,base,reg,regd_shift,(uae_s32)(uae_s8)dp);
}
}
forget_about(tmp);
#if USE_NORMAL_CALLING_CONVENTION
raw_inc_sp(4);
#endif
- if (needed_flags) {
- //raw_mov_l_mi((uae_u32)&foink3,(uae_u32)opcode+65536);
- }
- else {
- //raw_mov_l_mi((uae_u32)&foink3,(uae_u32)opcode);
- }
+ /*if (needed_flags)
+ raw_mov_l_mi((uae_u32)&foink3,(uae_u32)opcode+65536);
+ else
+ raw_mov_l_mi((uae_u32)&foink3,(uae_u32)opcode);
+ */
if (i<blocklen-1) {
uae_s8* branchadd;
raw_and_l_ri(r,TAGMASK);
raw_mov_l_ri(r2,(uae_u32)popall_do_nothing);
raw_sub_l_mi((uae_u32)&countdown,scaled_cycles(totcycles));
- raw_cmov_l_rm_indexed(r2,(uae_u32)cache_tags,r,4,9);
+ raw_cmov_l_rm_indexed(r2,(uae_u32)cache_tags,r,9);
raw_jmp_r(r2);
}
else if (was_comp && isconst(PC_P)) {
raw_and_l_ri(r,TAGMASK);
raw_mov_l_ri(r2,(uae_u32)popall_do_nothing);
raw_sub_l_mi((uae_u32)&countdown,scaled_cycles(totcycles));
- raw_cmov_l_rm_indexed(r2,(uae_u32)cache_tags,r,4,9);
+ raw_cmov_l_rm_indexed(r2,(uae_u32)cache_tags,r,9);
raw_jmp_r(r2);
}
}
#define SPR0_HPOS 0x15
#define MAX_SPRITES 8
#define SPRITE_COLLISIONS
-#define SPEEDUP
+//#define SPEEDUP
#include "sysconfig.h"
#include "sysdeps.h"
static int sprite_width, sprres, sprite_buffer_res;
#ifdef CPUEMU_6
-int cycle_line[256];
+uae_u8 cycle_line[256];
#endif
static uae_u32 bpl1dat;
/* The current instruction words. */
unsigned int i1, i2;
unsigned int saved_i1, saved_i2;
- enum copper_states state;
+ enum copper_states state, state_prev;
/* Instruction pointer. */
uaecptr ip, saved_ip;
int hpos, vpos;
STATIC_INLINE uae_u16 VHPOSR (void)
{
- uae_u16 v = GETVPOS() << 8;
+ uae_u16 vp = GETVPOS();
uae_u16 hp = GETHPOS();
- v |= hp;
+ vp <<= 8;
+ vp |= hp;
if (currprefs.cpu_level >= 2)
hsyncdelay();
- return v;
+ return vp;
}
STATIC_INLINE void COP1LCH (uae_u16 v) { cop1lc = (cop1lc & 0xffff) | ((uae_u32)v << 16); }
unset_special (SPCFLAG_COPPER);
cop_state.ignore_next = 0;
+ if (!oldstrobe)
+ cop_state.state_prev = cop_state.state;
cop_state.state = COP_read1;
cop_state.vpos = vpos;
cop_state.hpos = current_hpos () & ~1;
if (dmaen (DMA_COPPER)) {
copper_enabled_thisline = 1;
set_special (SPCFLAG_COPPER);
- } else if (oldstrobe > 0 && oldstrobe != num) {
- /* dma disabled and accessing both COPxJMPs -> copper stops! */
+ } else if (oldstrobe > 0 && oldstrobe != num && cop_state.state_prev == COP_wait) {
+ /* dma disabled, copper idle and accessing both COPxJMPs -> copper stops! */
cop_state.state = COP_stop;
}
}
cop_state.hpos = current_hpos () & ~1;
cop_state.vpos = vpos;
- cop_state.state = COP_wait;
+ /* apparently there is small delay until copper wakes up.. */
+ cop_state.state = COP_wait_in2;
compute_spcflag_copper ();
}
#ifndef CUSTOM_SIMPLE
maxspr = hpos;
- minspr = last_sprite_hpos;
+ minspr = last_sprite_hpos + 1;
if (minspr >= SPR0_HPOS + MAX_SPRITES * 4 || maxspr < SPR0_HPOS)
return;
if (minspr < SPR0_HPOS)
minspr = SPR0_HPOS;
- for (i = minspr; i < maxspr; i++) {
+ for (i = minspr; i <= maxspr; i++) {
int cycle = -1;
int num = (i - SPR0_HPOS) / 4;
switch ((i - SPR0_HPOS) & 3)
if (currprefs.cpu_cycle_exact || currprefs.blitter_cycle_exact) {
decide_blitter (hpos);
memset (cycle_line, 0, sizeof cycle_line);
-#if 1
-{
- cycle_line[maxhpos - 1] = CYCLE_REFRESH;
cycle_line[1] = CYCLE_REFRESH;
+ cycle_line[3] = CYCLE_REFRESH;
cycle_line[5] = CYCLE_REFRESH;
cycle_line[7] = CYCLE_REFRESH;
-}
-#endif
-#if 0
-{
- int i;
- for (i = 12; i < 0x16; i += 2)
- cycle_line[i] = CYCLE_NOCPU;
- //cycle_line[4] = CYCLE_REFRESH;
- //cycle_line[6] = CYCLE_REFRESH;
- //cycle_line[8] = CYCLE_REFRESH;
- //cycle_line[10] = CYCLE_REFRESH;
-}
-#endif
}
#endif
if ((currprefs.chipset_mask & CSMASK_AGA) || (!currprefs.chipset_mask & CSMASK_ECS_AGNUS))
#endif
ham_lastcolor = colors_for_drawing.color_regs_ecs[pv];
- ham_linebuf[ham_decode_pixel++] = 0; //ham_lastcolor;
+ ham_linebuf[ham_decode_pixel++] = ham_lastcolor;
}
#ifdef AGA
} else if (currprefs.chipset_mask & CSMASK_AGA) {
break;
case 3:
tmppc = m68k_getpc ();
- write_log ("####### tpmpc %08lx\n", tmppc);
tmp = next_iword ();
ad = get_disp_ea_020 (tmppc, tmp);
break;
regs.fp[reg] = sinh (src);
break;
case 0x03: /* FINTRZ */
- regs.fp[reg] = (int) src;
+ if (src >= 0.0)
+ regs.fp[reg] = floor (src);
+ else
+ regs.fp[reg] = ceil (src);
break;
case 0x04: /* FSQRT */
case 0x41:
break;
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;
+ regs.fp[reg] = 0.5 * log ((1 + src) / (1 - src));
#else
regs.fp[reg] = atanh (src);
#endif
fround (reg);
break;
case 0x21: /* FMOD */
- regs.fp[reg] = regs.fp[reg] - (double) ((int) (regs.fp[reg] / src)) * src;
+ {
+ fptype divi = regs.fp[reg] / src;
+
+ if (divi >= 0.0)
+ regs.fp[reg] -= src * floor (divi);
+ else
+ regs.fp[reg] -= src * ceil (divi);
+ }
break;
case 0x22: /* FADD */
case 0x62:
regs.fp[reg] /= src;
break;
case 0x25: /* FREM */
- regs.fp[reg] = regs.fp[reg] - (double) ((int) (regs.fp[reg] / src + 0.5)) * src;
+ regs.fp[reg] -= src * floor ((regs.fp[reg] / src) + 0.5);
break;
case 0x26: /* FSCALE */
+#ifdef ldexp
+ regs.fp[reg] = ldexp (regs.fp[reg], (int) src);
+#else
regs.fp[reg] *= exp (*fp_ln_2 * (int) src);
+#endif
break;
case 0x27: /* FSGLMUL */
regs.fp[reg] *= src;
fill_prefetch_next();
start_brace ();
printf ("\tuae_u32 newv = (uae_s32)(uae_s16)dst * (uae_s32)(uae_s16)src;\n");
- if (using_ce)
+ if (using_ce) {
printf ("\tint cycles = 36 * %d, bits;\n", CYCLE_UNIT / 2);
+ printf ("\tuae_u32 usrc;\n");
+ }
genflags (flag_logical, sz_long, "newv", "", "");
if (using_ce) {
- printf ("\tsrc <<= 1;\n");
- printf ("\tfor(bits = 0; bits < 16 && src; bits++, src >>= 1)\n");
- printf ("\t\tif ((src & 3) == 1 || (src & 3) == 2) cycles += 2 * %d;\n", CYCLE_UNIT / 2);
+ printf ("\tusrc = ((uae_u32)src) << 1;\n");
+ printf ("\tfor(bits = 0; bits < 16 && usrc; bits++, usrc >>= 1)\n");
+ printf ("\t\tif ((usrc & 3) == 1 || (usrc & 3) == 2) cycles += 2 * %d;\n", CYCLE_UNIT / 2);
addcycles3 ("\t");
}
genastore ("newv", curi->dmode, "dstreg", sz_long, "dst");
DECLARE(imul_64_32(RW4 d, RW4 s));
DECLARE(mul_64_32(RW4 d, RW4 s));
DECLARE(imul_32_32(RW4 d, R4 s));
-DECLARE(mul_32_32(RW4 d, R4 s));
DECLARE(mov_b_rr(W1 d, R1 s));
DECLARE(mov_w_rr(W2 d, R2 s));
-DECLARE(mov_l_rrm_indexed(W4 d,R4 baser, R4 index, IMM factor));
-DECLARE(mov_w_rrm_indexed(W2 d, R4 baser, R4 index, IMM factor));
-DECLARE(mov_b_rrm_indexed(W1 d, R4 baser, R4 index, IMM factor));
-DECLARE(mov_l_mrr_indexed(R4 baser, R4 index, IMM factor, R4 s));
-DECLARE(mov_w_mrr_indexed(R4 baser, R4 index, IMM factor, R2 s));
-DECLARE(mov_b_mrr_indexed(R4 baser, R4 index, IMM factor, R1 s));
-DECLARE(mov_l_bmrr_indexed(IMM base, R4 baser, R4 index, IMM factor, R4 s));
-DECLARE(mov_w_bmrr_indexed(IMM base, R4 baser, R4 index, IMM factor, R2 s));
-DECLARE(mov_b_bmrr_indexed(IMM base, R4 baser, R4 index, IMM factor, R1 s));
-DECLARE(mov_l_brrm_indexed(W4 d, IMM base, R4 baser, R4 index, IMM factor));
-DECLARE(mov_w_brrm_indexed(W2 d, IMM base, R4 baser, R4 index, IMM factor));
-DECLARE(mov_b_brrm_indexed(W1 d, IMM base, R4 baser, R4 index, IMM factor));
-DECLARE(mov_l_rm_indexed(W4 d, IMM base, R4 index, IMM factor));
+DECLARE(mov_l_rrm_indexed(W4 d, R4 baser, R4 index));
+DECLARE(mov_w_rrm_indexed(W2 d, R4 baser, R4 index));
+DECLARE(mov_b_rrm_indexed(W1 d, R4 baser, R4 index));
+DECLARE(mov_l_mrr_indexed(R4 baser, R4 index, R4 s));
+DECLARE(mov_w_mrr_indexed(R4 baser, R4 index, R2 s));
+DECLARE(mov_b_mrr_indexed(R4 baser, R4 index, R1 s));
+DECLARE(mov_l_rm_indexed(W4 d, IMM base, R4 index));
DECLARE(mov_l_rR(W4 d, R4 s, IMM offset));
DECLARE(mov_w_rR(W2 d, R4 s, IMM offset));
DECLARE(mov_b_rR(W1 d, R4 s, IMM offset));
DECLARE(mov_b_Rr(R4 d, R1 s, IMM offset));
DECLARE(lea_l_brr(W4 d, R4 s, IMM offset));
DECLARE(lea_l_brr_indexed(W4 d, R4 s, R4 index, IMM factor, IMM offset));
-DECLARE(lea_l_rr_indexed(W4 d, R4 s, R4 index, IMM factor));
DECLARE(mov_l_bRr(R4 d, R4 s, IMM offset));
DECLARE(mov_w_bRr(R4 d, R2 s, IMM offset));
DECLARE(mov_b_bRr(R4 d, R1 s, IMM offset));
#ifdef JIT
special_mem |= S_READ;
#endif
- if (currprefs.illegal_mem) {
+ if (currprefs.illegal_mem && addr < 0xf00000) {
if (illegal_count < MAX_ILG) {
illegal_count++;
write_log ("Illegal wget at %08lx PC=%x\n", addr, m68k_getpc());
static void calc (float *xp, float *yp, float *sxp, float *syp)
{
- int xm, ym;
- int fx, fy;
float x, y, sx, sy, tx, ty;
- double mx, my;
+ double mx, my, fx, fy;
- xm = currprefs.gfx_lores ? 2 : 1;
- ym = currprefs.gfx_linedbl ? 1 : 2;
-#if 0
- if (window_w >= 1024)
- xm *= 2;
- else if (window_w < 500)
- xm /= 2;
- if (window_h >= 960)
- ym *= 2;
- else if (window_h < 350)
- ym /= 2;
-#endif
- fx = (tin_w * xm - window_w) / 2;
- fy = (tin_h * ym - window_h) / 2;
+ fx = (twidth * window_w / tin_w) / 2;
+ fy = (theight * window_h / tin_h) / 2;
+
+ tx = fx / ((currprefs.gfx_filter_horiz_zoom_mult + currprefs.gfx_filter_horiz_zoom / 4) / 1000.0);
+ ty = fy / ((currprefs.gfx_filter_vert_zoom_mult + currprefs.gfx_filter_vert_zoom / 4) / 1000.0);
+
+ mx = (currprefs.gfx_filter_horiz_offset / 1000.0) * fx;
+ my = (currprefs.gfx_filter_vert_offset / 1000.0) * fy;
- mx = (currprefs.gfx_filter_horiz_zoom_mult * (currprefs.gfx_filter_horiz_zoom + 100)) / (100.0 * 1000.0);
- my = (currprefs.gfx_filter_vert_zoom_mult * (currprefs.gfx_filter_vert_zoom + 100)) / (100.0 * 1000.0);
+ x = -tx;
+ y = -ty;
+ sx = tx;
+ sy = ty;
- tx = x = (float)((window_w * currprefs.gfx_filter_horiz_offset / 100.0) * mx);
- ty = y = (float)((window_h * currprefs.gfx_filter_vert_offset / 100.0) * my);
- sx = x + (float)((twidth * window_w / tin_w) * mx);
- sy = y + (float)((theight * window_h / tin_h) * my);
+ x += fx + mx;
+ y += fy + my;
+ sx += tx + mx;
+ sy += ty + my;
- x -= fx; y -= fy;
- sx += 2 * fx; sy += 2 * fy;
*xp = x; *yp = y;
*sxp = sx; *syp = sy;
}
static void OGL_dorender (int newtex)
{
- float x1, y1, x2, y2, tx, ty;
uae_u8 *data = gfxvidinfo.bufmem;
- int fx, fy, xm, ym;
+ float x1, y1, x2, y2, tx, ty;
+ double mx, my, fx, fy, xm, ym;
xm = currprefs.gfx_lores ? 2 : 1;
ym = currprefs.gfx_linedbl ? 1 : 2;
- if (w_width >= 1024)
- xm *= 2;
- else if (w_width < 500)
- xm /= 2;
- if (w_height >= 960)
- ym *= 2;
- else if (w_height < 350)
- ym /= 2;
- fx = (t_width * xm - w_width) / 2;
- fy = (t_height * ym - w_height) / 2;
+
+ fx = (required_texture_size * w_width / t_width) / 2.0;
+ fy = (required_texture_size * w_height / t_height) / 2.0;
+
+ tx = fx / ((currprefs.gfx_filter_horiz_zoom_mult + currprefs.gfx_filter_horiz_zoom / 4.0) / 1000.0);
+ ty = fy / ((currprefs.gfx_filter_vert_zoom_mult + currprefs.gfx_filter_vert_zoom / 4.0) / 1000.0);
+
+ mx = (currprefs.gfx_filter_horiz_offset / 1000.0) * fx;
+ my = (currprefs.gfx_filter_vert_offset / 1000.0) * fy;
+
+ x1 = -tx;
+ y1 = -ty;
+ x2 = tx;
+ y2 = ty;
+ x1 += fx + mx;
+ y1 += fy + my;
+ x2 += tx + mx;
+ y2 += ty + my;
+
#ifdef FSAA
glEnable (GL_MULTISAMPLE_ARB);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
- tx = x1 = (float)(w_width * currprefs.gfx_filter_horiz_offset / 100.0);
- ty = y1 = (float)(w_height * currprefs.gfx_filter_vert_offset / 100.0);
- x2 = x1 + (float)((required_texture_size * w_width / t_width) * ((currprefs.gfx_filter_horiz_zoom_mult * (currprefs.gfx_filter_horiz_zoom + 100)) / (100.0 * 1000.0)));
- y2 = y1 + (float)((required_texture_size * w_height / t_height) * ((currprefs.gfx_filter_vert_zoom_mult * (currprefs.gfx_filter_vert_zoom + 100)) / (100.0 * 1000.0)));
- x1 += (x2 - tx) / 2;
- y1 += (y2 - ty) / 2;
- x1 -= fx; y1 -= fy;
- x2 += 2 * fx; y2 += 2 * fy;
-
glBindTexture (GL_TEXTURE_2D, tex[0]);
if (newtex)
glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, t_width, t_height, ti2d_format, ti2d_type, data);
#define IDC_CAPS 1077
#define IDC_ABIME 1078
#define IDC_AMIGASYS 1079
+#define IDC_AMIGASYS2 1080
+#define IDC_AMIKIT 1080
#define IDC_RICHEDIT1 1091
#define IDC_RICHEDIT2 1092
#define IDC_CONTRIBUTORS 1124
FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
GROUPBOX "System ROM Settings",-1,5,0,290,74
- RTEXT "Main ROM File:",IDC_ROMTEXT,10,15,75,10
+ 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
+ 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 a BlizKick-compatible memory area.",IDC_MAPROM,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,95,54,82,10
CONTROL "ShapeShifter support [] Patches the system ROM for ShapeShifter compatibility.",IDC_KICKSHIFTER,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,54,80,10
GROUPBOX "Miscellaneous",-1,5,76,290,57
- RTEXT "Cartridge ROM File:",IDC_FLASHTEXT2,8,93,75,10
+ 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
- RTEXT "Flash RAM File:",IDC_FLASHTEXT,8,112,75,10
+ RTEXT "Flash RAM file:",IDC_FLASHTEXT,8,112,75,10
EDITTEXT IDC_FLASHFILE,89,110,185,13,ES_AUTOHSCROLL
PUSHBUTTON "...",IDC_FLASHCHOOSER,280,110,10,15
END
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
- LTEXT "FPS Adj.:",IDC_REFRESH2TEXT,17,149,30,8
+ 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 "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. Significantly increases the speed of CPU emulation. Requires 68020 or 68040 CPU.",IDC_JITENABLE,
+ CONTROL "JIT [] Enable just-in-time CPU emulator. Significantly increases the speed of the 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
CONTROL "Fastest possible, but maintain chipset timing",IDC_CS_HOST,
PUSHBUTTON "...",IDC_DF3,287,109,10,15
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 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
+ 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
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&rd drive...",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
GROUPBOX "Volume",IDC_STATIC,131,30,164,31
CONTROL "",IDC_SOUNDVOLUME,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,137,38,105,20
EDITTEXT IDC_SOUNDVOLUME2,247,41,40,12,ES_CENTER | ES_READONLY
- GROUPBOX "Sound buffer size",IDC_STATIC,132,67,164,31
+ GROUPBOX "Sound Buffer Size",IDC_STATIC,132,67,164,31
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
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 "Additional information",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 "Delete",IDC_DELETE,255,225,40,15
+ PUSHBUTTON "Save As...",IDC_SAVE,175,225,40,15
END
IDD_PORTS DIALOGEX 0, 0, 300, 222
PUSHBUTTON "Flush print job",IDC_FLUSHPRINTER,220,14,58,12
CONTROL "PostScript detection",IDC_PSPRINTERDETECT,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,11,33,78,12
CONTROL "PostScript printer emulation",IDC_PSPRINTER,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,93,33,100,12
- RTEXT "Autoflush timeout [] Time in seconds after pending print job is automatically flushed.",IDC_PRINTERAUTOFLUSHTXT,202,32,57,15,SS_NOTIFY | SS_CENTERIMAGE
+ RTEXT "Autoflush timeout [] Time in seconds after a pending print job is automatically flushed.",IDC_PRINTERAUTOFLUSHTXT,202,32,57,15,SS_NOTIFY | SS_CENTERIMAGE
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
CONTROL "",IDC_CAPS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,200,145,80,15
CONTROL "",IDC_ABIME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,110,145,80,15
CONTROL "",IDC_CLOANTOHOME,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,20,90,80,20
- CONTROL "",IDC_AMIGASYS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,110,169,80,15
+ CONTROL "",IDC_AMIGASYS,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,63,169,80,15
+ CONTROL "",IDC_AMIKIT,"RICHEDIT",TCS_SCROLLOPPOSITE | TCS_RAGGEDRIGHT | TCS_MULTISELECT | WS_DISABLED,157,169,80,15
END
IDD_MISC1 DIALOGEX 0, 0, 300, 219
IDD_SETINFO DIALOGEX 0, 0, 229, 85
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Info Settings"
+CAPTION "Additional Information Settings"
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
RTEXT "Path:",-1,5,20,24,15,SS_CENTERIMAGE
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
GROUPBOX "Chipset",IDC_STATIC,14,11,145,82
- CONTROL "OCS [] Original Amiga chipset. A1000 and most A500s.",IDC_OCS,
+ CONTROL "OCS [] Original chipset. A1000 and most A500s.",IDC_OCS,
"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,38,31,51,10
- CONTROL "ECS Agnus [] Enhanced Chipset (ECS Agnus chip only). 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 chips). A500+, A600, A3000.",IDC_ECS,
+ CONTROL "Full ECS [] Full ECS chipset (ECS Agnus and ECS Denise chips). A500+, A600 and A3000.",IDC_ECS,
"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,38,63,52,10
CONTROL "AGA [] Advanced Graphics Architecture chipset. A1200, A4000 and CD32.",IDC_AGA,
"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,101,31,51,10
RTEXT "Best compatibility",IDC_STATIC,13,70,67,10,SS_CENTERIMAGE
CONTROL "",IDC_QUICKSTART_COMPATIBILITY,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,88,65,115,21
RTEXT "Low compatibility",IDC_STATIC,215,70,63,10,SS_CENTERIMAGE
- GROUPBOX "Host configuration",IDC_QUICKSTART_HOST,3,91,294,33
+ GROUPBOX "Host Configuration",IDC_QUICKSTART_HOST,3,91,294,33
RTEXT "Configuration:",IDC_STATIC,5,105,55,10,SS_CENTERIMAGE
COMBOBOX IDC_QUICKSTART_HOSTCONFIG,65,103,225,50,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
GROUPBOX "Emulated Floppy Drives",IDC_QUICKSTART_DF,3,126,294,84
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,1,1,0
- PRODUCTVERSION 1,1,1,0
+ FILEVERSION 1,2,0,0
+ PRODUCTVERSION 1,2,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
BLOCK "040904b0"
BEGIN
VALUE "FileDescription", "WinUAE"
- VALUE "FileVersion", "1.1.1"
+ VALUE "FileVersion", "1.2"
VALUE "InternalName", "WinUAE"
VALUE "LegalCopyright", "© 1996-2005 under the GNU Public License (GPL)"
VALUE "OriginalFilename", "WinUAE.exe"
VALUE "ProductName", "WinUAE"
- VALUE "ProductVersion", "1.1.1"
+ VALUE "ProductVersion", "1.2"
END
END
BLOCK "VarFileInfo"
IDS_AVIOUTPUT_NOCODEC "no codec selected"
IDS_DISK_IMAGENAME "Disk image"
IDS_DISK_DRIVENAME "Drive"
- IDS_AGA8BIT "AGA emulation requires a 16 bit or higher display depth\nSwitching from 8-bit to 16-bit"
+ IDS_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
STRINGTABLE
BEGIN
IDS_UNSUPPORTEDSCREENMODE_2
- "the desktop is running in 8 bit color depth, which WinUAE 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"
+ "the desktop is too small for the specified window size."
IDS_UNSUPPORTEDSCREENMODE_4
"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_TREEVIEW_HOST "Host"
IDS_TREEVIEW_MISC "Miscellaneous"
IDS_TREEVIEW_SETTINGS "Settings"
- IDS_WINUAETITLE_MMB "[Mouse active - press ALT+TAB or middle-button to cancel]"
+ IDS_WINUAETITLE_MMB "[Mouse active - press ALT+TAB or middle mouse button to cancel]"
IDS_WINUAETITLE_NORMAL "[Mouse active - press ALT+TAB to cancel]"
IDS_STARTEMULATION "Start"
IDS_TREEVIEW_ABOUT "About"
STRINGTABLE
BEGIN
- IDS_NOHARDDRIVES "No Amiga formatted or completely empty harddrives detected."
+ IDS_NOHARDDRIVES "No hard disks detected that were either empty or RDB-partitioned."
IDS_DEFAULT_HOST "Default Configuration"
IDS_SOUND_4CHANNEL "4 Channels"
IDS_HF_FS_CUSTOM "Custom"
IDS_SELECTFS "Select file system handler (FastFileSystem, SmartFilesystem, etc.)"
- IDS_KEYJOY "Keyboard Layout A (Numeric keypad, 0 and 5 = fire)\nKeyboard Layout B (Cursor keys, right CTRL and ALT = fire)\nKeyboard Layout C (T=up B=down F=left H=right, left ALT = fire)\nX-Arcade (Left)\nX-Arcade (Right)"
+ 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"
IDS_STATEFILE_WAVE "Wave audio dump"
STRINGTABLE
BEGIN
IDS_NUMSG_NOEXTROM "No extended ROM found."
- IDS_NUMSG_MODRIP_NOTFOUND "No modules or compressed data found."
+ IDS_NUMSG_MODRIP_NOTFOUND "No music modules or packed data found."
IDS_NUMSG_MODRIP_FINISHED "Scan finished."
- IDS_NUMSG_MODRIP_SAVE "Module/packed data found\n%s\nDo you want to save it?"
- IDS_NUMSG_KS68020 "The selected system ROM requires a 68020 CPU or higher CPU."
+ IDS_NUMSG_MODRIP_SAVE "Module/packed data found\n%s\nWould you like to save it?"
+ IDS_NUMSG_KS68020 "The selected system ROM requires a 68020 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_STATEHD "WARNING: State saves do not support hard drive emulation. This message will not appear again."
+ IDS_NUMSG_NOCAPS "Selected disk image needs the SPS plugin\nwhich is available from\nhttp//www.softpres.org/"
IDS_NUMSG_OLDCAPS "You need an updated SPS plugin\nwhich is available from\nhttp//www.softpres.org/"
IDS_IMGCHK_BOOTBLOCKCRCERROR
- "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."
+ "The selected floppy disk image is not bootable (boot block checksum error)"
+ IDS_IMGCHK_BOOTBLOCKNO "The selected floppy disk image is not bootable (no boot block)"
+ IDS_IMGCHK_DAMAGED "The selected floppy disk image is damaged or unformatted"
+ IDS_IMGCHK_KS2 "The selected floppy disk image requires a 2.04 or later system ROM.\nThe configuration has been updated."
+ IDS_IMGCHK_KS3 "The selected floppy disk image requires a 3.0 or later system ROM.\nThe configuration has been updated."
IDS_ROMSCANEND "Scan of ROMs finished"
END
"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_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 system ROM replacement."
IDS_HDCLONE_OK "Hard drive image file created succesfully."
IDS_HDCLONE_FAIL "Hard drive image file creation failed, error code %d."
END
extern int mouseactive, focus;
extern int ignore_messages_all;
#define WINUAEBETA 1
-#define WINUAEBETASTR " Beta 3"
+#define WINUAEBETASTR " Beta 4"
extern char start_path_exe[MAX_DPATH];
extern char start_path_data[MAX_DPATH];
{IDC_ABIME, FALSE, "abime.net", "http://www.abime.net/"},
{IDC_CAPS, FALSE, "SPS", "http://www.softpres.org/"},
{IDC_AMIGASYS, FALSE, "AmigaSYS", "http://amigasys.fw.hu/"},
+ {IDC_AMIKIT, FALSE, "AmiKit", "http://amikit.amiga.sk/"},
{ -1, FALSE, NULL, NULL }
};