return 0;
}
+static void audio_unpack (struct cdunit *cdu, struct cdtoc *t)
+{
+ // do this even if audio is not compressed, t->handle also could be
+ // compressed and we want to unpack it in background too
+ while (cdimage_unpack_active == 1)
+ Sleep (10);
+ cdimage_unpack_active = 0;
+ write_comm_pipe_u32 (&unpack_pipe, cdu - &cdunits[0], 0);
+ write_comm_pipe_u32 (&unpack_pipe, t - &cdu->toc[0], 1);
+ while (cdimage_unpack_active == 0)
+ Sleep (10);
+}
+
static void *cdda_play_func (void *v)
{
int cdda_pos;
if (!t) {
write_log (_T("IMAGE CDDA: illegal sector number %d\n"), cdu->cdda_start);
setstate (cdu, AUDIO_STATUS_PLAY_ERROR);
+ } else {
+ audio_unpack (cdu, t);
}
} else {
write_log (_T("IMAGE CDDA: playing from %d to %d, track %d ('%s', offset %lld, secoffset %d (%d))\n"),
cdu->cdda_start, cdu->cdda_end, t->track, t->fname, t->offset, sector, t->index1);
oldtrack = t->track;
- // do this even if audio is not compressed, t->handle also could be
- // compressed and we want to unpack it in background too
- while (cdimage_unpack_active == 1)
- Sleep (10);
- cdimage_unpack_active = 0;
- write_comm_pipe_u32 (&unpack_pipe, cdu - &cdunits[0], 0);
- write_comm_pipe_u32 (&unpack_pipe, t - &cdu->toc[0], 1);
- while (cdimage_unpack_active == 0)
- Sleep (10);
+ audio_unpack (cdu, t);
}
idleframes = cdu->cdda_delay_frames;
while (cdu->cdda_paused && cdu->cdda_play > 0) {
sector = cdda_pos;
struct cdtoc *t1 = findtoc (cdu, §or);
- struct cdtoc *t2 = findtoc (cdu, §or + 2 * 75);
+ int tsector = cdda_pos + 2 * 75;
+ struct cdtoc *t2 = findtoc (cdu, &tsector);
if (t1 != t2) {
for (sector = cdda_pos; sector < cdda_pos + 2 * 75; sector++) {
int sec = sector;
oldtrack = t->track;
write_log (_T("IMAGE CDDA: track %d ('%s', offset %lld, secoffset %d (%d))\n"),
t->track, t->fname, t->offset, sector, t->index1);
+ audio_unpack (cdu, t);
}
if (!(t->ctrl & 4)) {
if (t->enctype == ENC_CHD) {
static struct decision thisline_decision;
static int fetch_cycle, fetch_modulo_cycle;
+static int bitplane_dma_turned_on;
enum plfstate
{
static void remember_ctable (void)
{
- /* This can happen when program program crashes very badly */
+ /* This can happen when program crashes very badly */
if (next_color_entry >= COLOR_TABLE_SIZE)
return;
if (remembered_color_entry < 0) {
fm_maxplane = 1 << fm_maxplane_shift;
fetch_modulo_cycle = fetchunit - fetchstart;
- // wacky pixels / raf megademo hires unaligned scroller feature
- if ((thisline_decision.plfleft < 0) && bplcon0_res >= RES_HIRES) {
- if (fetch_cycle & (fetchunit >> 1)) {
- fetch_cycle &= ~(fetchunit_mask >> 1);
- fetch_cycle += fetchunit;
- }
+ if (thisline_decision.plfleft < 0) {
+ thisline_decision.bplres = bplcon0_res;
+ thisline_decision.bplcon0 = bplcon0;
+ thisline_decision.nr_planes = bplcon0_planes;
}
if (is_bitplane_dma (hpos - 1))
* ECS/AGA: BPL DMA restarts but only if DMA was turned off
outside of DDF or during current line, otherwise display
processing jumps immediately to "DDFSTOP passed"-condition */
- if (!(currprefs.chipset_mask & CSMASK_ECS_AGNUS))
+ if (!(currprefs.chipset_mask & CSMASK_ECS_AGNUS)) {
+ bitplane_dma_turned_on = hpos;
return;
+ }
if (fetch_state != fetch_not_started)
return;
if (diwstate != DIW_waiting_stop)
ok = 0;
}
if (ok && diwstate == DIW_waiting_stop) {
- if (dmaen (DMA_BITPLANE)) {
+ if (dmaen (DMA_BITPLANE) && bitplane_dma_turned_on + 4 < hpos) {
start_bpl_dma (hpos, plfstrt);
estimate_last_fetch_cycle (plfstrt);
}
ddfstrt_old_hpos = -1;
bpldmawasactive = false;
reset_bpldelays ();
+ bitplane_dma_turned_on = 0;
if (plf_state > plf_active)
plf_state = plf_idle;
v |= 1;
#endif
- if (bplcon0d == v)
+ if (bplcon0d == v && !immediate)
return;
bplcon0dd = -1;
unsigned long c;
int extra;
+ if (!cycles)
+ return;
c = get_cycles ();
extra = c & (CYCLE_UNIT - 1);
if (extra) {
cycles -= extra;
}
c = cycles;
- while (c >= CYCLE_UNIT) {
+ while (c) {
int hpos = current_hpos () + 1;
decide_line (hpos);
sync_copper (hpos);
decide_fetch_ce (hpos);
if (bltstate != BLT_done)
decide_blitter (hpos);
+ if (c < CYCLE_UNIT)
+ break;
do_cycles (1 * CYCLE_UNIT);
c -= CYCLE_UNIT;
}
#define GF_LRMW 256
#define GF_NOFAULTPC 512
#define GF_RMW 1024
+#define GF_OPCE020 2048
/* For the current opcode, the next lower level that will have different code.
* Initialized to -1 for each opcode. If it remains unchanged, indicates we
static int tail_ce020, total_ce020, head_in_ea_ce020;
static bool head_ce020_cycs_done, tail_ce020_done;
+static int subhead_ce020;
+static instr *curi_ce020;
+static bool no_prefetch_ce020;
+static bool got_ea_ce020;
static void fpulimit (void)
{
static void get_prefetch_020 (void)
{
- if (!using_prefetch_020)
+ if (!using_prefetch_020 || no_prefetch_ce020)
return;
printf ("\tregs.irc = %s (%d);\n", prefetch_word, m68k_pc_offset);
}
static void get_prefetch_020_0 (void)
{
- if (!using_prefetch_020)
+ if (!using_prefetch_020 || no_prefetch_ce020)
return;
printf ("\tregs.irc = %s (0);\n", prefetch_word);
}
}
if (!tail_ce020_done) {
total_ce020 -= 2;
+#if 0
if (iswrite) {
printf("\t/* C - %d = %d */\n", memory_cycle_cnt, total_ce020 - memory_cycle_cnt);
total_ce020 -= memory_cycle_cnt;
} else {
printf("\t/* C = %d */\n", total_ce020);
}
+#endif
if (0 && total_ce020 <= 0) {
printf ("\t/* C was zero */\n");
total_ce020 = 1;
static void returncycles (char *s, int cycles)
{
if (using_ce || using_ce020) {
- if (tail_ce020 == 1)
+#if 0
+ if (tail_ce020 == 0)
+ printf ("\tregs.ce020memcycles -= 2 * cpucycleunit; /* T=0 */ \n");
+ else if (tail_ce020 == 1)
printf ("\tregs.ce020memcycles -= 1 * cpucycleunit; /* T=1 */ \n");
else if (tail_ce020 == 2)
- printf ("\tregs.ce020memcycles -= 2 * cpucycleunit; /* T=2 */\n");
+ printf ("\tregs.ce020memcycles -= 0 * cpucycleunit; /* T=2 */\n");
+#endif
printf ("%sreturn;\n", s);
return;
}
irc2ir ();
fill_prefetch_1 (2);
} else if (using_prefetch_020) {
- did_prefetch = 1;
+ did_prefetch = 2;
+ total_ce020 -= 4;
+ returntail (false);
if (cpu_level >= 3)
printf ("\tfill_prefetch_030 ();\n");
else if (cpu_level == 2)
head_cycs (h);
//c = 0;
+#if 0
+ if (tail_ce020 == 1)
+ printf ("\tregs.ce020memcycles -= 1 * cpucycleunit; /* T=1 */ \n");
+ else if (tail_ce020 == 2)
+ printf ("\tregs.ce020memcycles -= 2 * cpucycleunit; /* T=2 */\n");
+#endif
+ if (1 && !subhead && (h > 0 || t > 0 || c > 0) && got_ea_ce020) {
+ if (!did_prefetch) {
+ get_prefetch_020 ();
+ did_prefetch = 1;
+ }
+ if (1) {
+ if (h > 0) {
+ printf ("\tif (regs.ce020memcycles > %d * cpucycleunit)\n", h);
+ printf ("\t\tregs.ce020memcycles = %d * cpucycleunit;\n", h);
+ } else {
+ printf ("\tregs.ce020memcycles = 0;\n", h);
+ }
+ }
+ }
+#if 0
if (tail_ce020 >= 0 && h >= 0 && head_in_ea_ce020 == 0) {
int largest = tail_ce020 > h ? tail_ce020: h;
if (tail_ce020 != h) {
#endif
} else if (h) {
printf ("\t/* ea tail == op head (%d) */\n", h);
+
printf ("\tregs.ce020memcycles -= %d * cpucycleunit;\n", h);
printf ("\tif (regs.ce020memcycles < 0) {\n");
//printf ("\t\tx_do_cycles (-regs.ce020memcycles);\n");
printf ("\t}\n");
}
}
+#endif
+
if (h < 0)
h = 0;
h += oph;
}
}
- if (0 && c > 0) {
+
+ if (h) {
+ printf ("\tif (regs.ce020memcycles > %d * cpucycleunit)\n", h);
+ printf ("\t\tregs.ce020memcycles = %d * cpucycleunit;\n", h);
+ } else {
+ printf ("\tregs.ce020memcycles = 0;\n", h);
+ }
+
+ if (1 && c > 0) {
printf ("\t%s (%d);\n", do_cycles, c);
count_cycles += c;
}
tail_ce020 = t;
head_in_ea_ce020 = oph;
+ got_ea_ce020 = true;
// if (t > 0)
// printf ("\tregs.ce020_tail = get_cycles () + %d * cpucycleunit;\n", t);
}
SETCE020(8, 2, 10)
break;
case Ad16: // (d16,An)
- case PC16: // (d16,PC,Xn)
+ case PC16: // (d16,PC)
if (!l)
SETCE020(2, 0, 4)
else
SETCE020H(8, 0, 8)
break;
case Ad16: // (d16,An)
- case PC16: // (d16,PC,Xn)
+ case PC16: // (d16,PC)
if (!l)
SETCE020H(4, 0, 4)
else
SETCE020(4, 2, 6)
break;
case Ad16: // (d16,An)
- case PC16: // (d16,PC,Xn)
+ case PC16: // (d16,PC)
ws++;
SETCE020(2, 2, 4)
break;
SETCE020H(4, 0, 4)
break;
case Ad16: // (d16,An)
- case PC16: // (d16,PC,Xn)
+ case PC16: // (d16,PC)
SETCE020H(2, 0, 2)
break;
case absw:
return oph;
}
-static int gence020cycles_jea (amodes mode)
+static int gence020cycles_jea (instr *curi, amodes mode)
{
- int h = 0, t = 0, c = 0;
+ int h = 0, t = 0, c = 0, oph = 0;
switch (mode)
{
case Aind: // (An)
- SETCE020(2, 0, 2)
+ SETCE020H(2, 0, 2)
break;
case Ad16: // (d16,An)
- case PC16: // (d16,PC,Xn)
- SETCE020(4, 0, 4)
+ case PC16: // (d16,PC)
+ SETCE020H(4, 0, 4)
break;
case absw:
- SETCE020(2, 0, 2)
+ SETCE020H(2, 0, 2)
break;
case absl:
- SETCE020(2, 0, 2)
+ SETCE020H(2, 0, 2)
break;
}
- addcycles_ea_ce020 ("jea", h, t, c);
- return 0;
+ addcycles_ea_ce020 ("jea", h, t, c, oph);
+ return oph;
}
+static void next_level_000 (void)
+{
+ if (next_cpu_level < 0)
+ next_cpu_level = 0;
+}
+
+static void maybeaddop_ce020 (int flags)
+{
+ if (flags & GF_OPCE020)
+ addop_ce020 (curi_ce020, subhead_ce020);
+}
+
+
/* getv == 1: fetch data; getv != 0: check for odd address. If movem != 0,
* the calling routine handles Apdi and Aipi modes.
* gb-- movem == 2 means the same thing but for a MOVE16 instruction */
default:
term ();
}
+ maybeaddop_ce020 (flags);
syncmovepc (getv, flags);
return;
case Areg:
default:
term ();
}
+ maybeaddop_ce020 (flags);
syncmovepc (getv, flags);
return;
case Aind: // (An)
}
break;
case Ad16: // (d16,An)
- switch (fetchmode)
- {
- case fetchmode_fea:
- case fetchmode_cea:
- addcycles_ce020 (2);
- break;
- case fetchmode_jea:
- addcycles_ce020 (4);
- break;
- }
printf ("\tuaecptr %sa;\n", name);
add_mmu040_movem (movem);
printf ("\t%sa = m68k_areg (regs, %s) + (uae_s32)(uae_s16)%s;\n", name, reg, gen_nextiword (flags));
count_read_ea++;
break;
+ case PC16: // (d16,PC)
+ printf ("\tuaecptr %sa;\n", name);
+ add_mmu040_movem (movem);
+ printf ("\t%sa = m68k_getpc () + %d;\n", name, m68k_pc_offset);
+ printf ("\t%sa += (uae_s32)(uae_s16)%s;\n", name, gen_nextiword (flags));
+ break;
case Ad8r: // (d8,An,Xn)
switch (fetchmode)
{
case fetchmode_fea:
+ addcycles_ce020 (4);
+ break;
case fetchmode_cea:
case fetchmode_jea:
- addcycles_ce020 (4);
break;
}
printf ("\tuaecptr %sa;\n", name);
insn_n_cycles += 4;
printf ("\t%sa = %s (m68k_areg (regs, %s), %d);\n", name, disp020, reg, mmudisp020cnt++);
} else {
+ printf ("\t%sa = %s (m68k_areg (regs, %s), %s);\n", name, disp000, reg, gen_nextiword (flags));
if (!(flags & GF_AD8R)) {
addcycles000 (2);
insn_n_cycles += 2;
count_cycles_ea += 2;
}
- printf ("\t%sa = %s (m68k_areg (regs, %s), %s);\n", name, disp000, reg, gen_nextiword (flags));
count_read_ea++;
}
break;
- case PC16: // (d16,PC,Xn)
+ case PC8r: // (d8,PC,Xn)
switch (fetchmode)
{
case fetchmode_fea:
- case fetchmode_cea:
- case fetchmode_jea:
addcycles_ce020 (4);
break;
- }
- printf ("\tuaecptr %sa;\n", name);
- add_mmu040_movem (movem);
- printf ("\t%sa = m68k_getpc () + %d;\n", name, m68k_pc_offset);
- printf ("\t%sa += (uae_s32)(uae_s16)%s;\n", name, gen_nextiword (flags));
- break;
- case PC8r: // (d8,PC,Xn)
- switch (fetchmode)
- {
- case fetchmode_fea:
case fetchmode_cea:
- addcycles_ce020 (4);
+ case fetchmode_jea:
break;
}
printf ("\tuaecptr tmppc;\n");
default:
term ();
}
+ maybeaddop_ce020 (flags);
syncmovepc (getv, flags);
return;
case imm0:
term ();
printf ("\tuae_s8 %s = %s;\n", name, gen_nextibyte (flags));
count_read_ea++;
+ maybeaddop_ce020 (flags);
syncmovepc (getv, flags);
return;
case imm1:
term ();
printf ("\tuae_s16 %s = %s;\n", name, gen_nextiword (flags));
count_read_ea++;
+ maybeaddop_ce020 (flags);
syncmovepc (getv, flags);
return;
case imm2:
term ();
gen_nextilong ("uae_s32", name, flags);
count_read_ea += 2;
+ maybeaddop_ce020 (flags);
syncmovepc (getv, flags);
return;
case immi:
if (getv != 1)
term ();
printf ("\tuae_u32 %s = %s;\n", name, reg);
+ maybeaddop_ce020 (flags);
syncmovepc (getv, flags);
return;
default:
}
syncmovepc (getv, flags);
+ maybeaddop_ce020 (flags);
/* We get here for all non-reg non-immediate addressing modes to
* actually fetch the value. */
subhead = gence020cycles_cea (curi, mode);
break;
case fetchmode_jea:
- subhead = gence020cycles_jea (mode);
+ subhead = gence020cycles_jea (curi, mode);
break;
}
genamode2x (mode, reg, size, name, getv, movem, flags, curi->fetchmode);
amodes dmode, char *dreg, wordsizes dsize, char *dname, int dgetv, int dflags)
{
int subhead = 0;
+ bool eadmode = false;
+
if (using_ce020) {
switch (curi->fetchmode)
{
case fetchmode_fea:
- if (smode >= imm || isreg (smode))
+ if (smode >= imm || isreg (smode)) {
subhead = gence020cycles_fea (dmode);
- else
+ eadmode = true;
+ } else {
subhead = gence020cycles_fea (smode);
+ }
break;
case fetchmode_cea:
subhead = gence020cycles_cea (curi, smode);
subhead = gence020cycles_ciea (curi, ssize, dmode);
break;
case fetchmode_jea:
- subhead = gence020cycles_jea (smode);
+ subhead = gence020cycles_jea (curi, smode);
break;
default:
printf ("\t/* No EA */\n");
break;
}
}
+ subhead_ce020 = subhead;
+ curi_ce020 = curi;
genamode3 (curi, smode, sreg, ssize, sname, sgetv, 0, sflags);
- genamode3 (NULL, dmode, dreg, dsize, dname, dgetv, 0, dflags);
- if (using_ce020)
- addop_ce020 (curi, subhead);
+ genamode3 (NULL, dmode, dreg, dsize, dname, dgetv, 0, dflags | (eadmode == true ? GF_OPCE020 : 0));
+ if (eadmode == false)
+ maybeaddop_ce020 (GF_OPCE020);
}
static void genastore_2 (char *from, amodes mode, char *reg, wordsizes size, char *to, int store_dir, int flags)
tail_ce020_done = false;
head_in_ea_ce020 = 0;
head_ce020_cycs_done = false;
+ no_prefetch_ce020 = false;
+ got_ea_ce020 = false;
prefetch_long = NULL;
srcli = NULL;
genastore ("newv", curi->smode, "srcreg", curi->size, "src");
break;
case i_CLR:
+ next_level_000 ();
genamode (curi, curi->smode, "srcreg", curi->size, "src", cpu_level == 0 ? 1 : 2, 0, 0);
fill_prefetch_next ();
if (isreg (curi->smode) && curi->size == sz_long)
fea = true;
}
} else if (curi->dmode == Ad16) {
+ // MOVE EA,(d16,An)
h = 2; t = 0; c = 4;
fea = true;
} else if (curi->dmode == Ad8r) {
h = 4; t = 0; c = 6;
fea = true;
} else if (curi->dmode == absw) {
+ // MOVE EA,xxx.W
h = 2; t = 0; c = 4;
fea = true;
} else if (curi->dmode == absl) {
+ // MOVE EA,xxx.L
h = 0; t = 0; c = 6;
fea = true;
} else {
tail_ce020_done = true;
break;
case i_JSR: // TODO: check stack write order
+ no_prefetch_ce020 = true;
genamode (curi, curi->smode, "srcreg", curi->size, "src", 0, 0, GF_AA|GF_NOREFILL);
start_brace ();
printf ("\tuaecptr oldpc = m68k_getpc () + %d;\n", m68k_pc_offset);
fill_prefetch_next ();
break;
case i_JMP:
+ no_prefetch_ce020 = true;
genamode (curi, curi->smode, "srcreg", curi->size, "src", 0, 0, GF_AA | ((curi->smode == Ad8r || curi->smode == PC8r) ? 0 : GF_NOREFILL));
if (using_exception_3) {
printf ("\tif (srca & 1) {\n");
break;
case i_BSR:
// .b and .w confirmed
+ if (using_ce020)
+ no_prefetch_ce020 = true;
printf ("\tuae_s32 s;\n");
if (curi->size == sz_long) {
if (next_cpu_level < 1)
break;
case i_Scc:
// confirmed
+ next_level_000 ();
genamode (curi, curi->smode, "srcreg", curi->size, "src", cpu_level == 0 ? 1 : 2, 0, 0);
start_brace ();
fill_prefetch_next();
curi->dmode, "dstreg", sz_long, "dst", 1, 0);
printf ("\tCLEAR_CZNV ();\n");
printf ("\tif (src == 0) {\n");
- if (cpu_level > 0)
+ if (cpu_level > 1)
printf ("\t\tdivbyzero_special (0, dst);\n");
incpc ("%d", m68k_pc_offset);
printf ("\t\tException (5);\n");
curi->smode, "srcreg", sz_word, "src", 1, 0,
curi->dmode, "dstreg", sz_long, "dst", 1, 0);
printf ("\tif (src == 0) {\n");
- if (cpu_level > 0)
+ if (cpu_level > 1)
printf ("\t\tdivbyzero_special (1, dst);\n");
incpc ("%d", m68k_pc_offset);
printf ("\t\tException (5);\n");
return buffer;
}
+static char *m68k_cc[] = {
+ "T",
+ "F",
+ "HI",
+ "LS",
+ "CC",
+ "CS",
+ "NE",
+ "EQ",
+ "VC",
+ "VS",
+ "PL",
+ "MI",
+ "GE",
+ "LT",
+ "GT",
+ "LE"
+};
+
static char *outopcode (int opcode)
{
static char out[100];
if (ins->suse) strcat (out,",");
strcat (out, decodeEA (ins->dmode, ins->size));
}
+ if (ins->mnemo == i_DBcc || ins->mnemo == i_Scc || ins->mnemo == i_Bcc || ins->mnemo == i_TRAPcc) {
+ strcat (out, " (");
+ strcat (out, m68k_cc[table68k[opcode].cc]);
+ strcat (out, ")");
+ }
+
return out;
}
pc = x_get_word (m68k_areg (regs, 7)) << 16;
pc |= x_get_word (m68k_areg (regs, 7) + 2);
m68k_areg (regs, 7) += 4;
- if (pc & 1)
- exception3 (0x4e75, pc);
- else
- m68k_setpc (pc);
+ m68k_setpc (pc);
}
STATIC_INLINE void m68k_do_bsr_ce (uaecptr oldpc, uae_s32 offset)
int flags = 0;
TCHAR *name = NULL;
int otherbuttonpressed = 0;
+ int acc = input_acquired;
//write_log (_T("switchdevice '%s' %d %d\n"), id->name, num, buttonmode);
}
#endif
write_log (_T("inputdevice change '%s':%d->%d\n"), name, num, newport);
+ inputdevice_unacquire ();
inputdevice_joyport_config (&changed_prefs, name, newport, -1, 2);
inputdevice_validate_jports (&changed_prefs, -1);
inputdevice_copyconfig (&changed_prefs, &currprefs);
+ if (acc)
+ inputdevice_acquire (TRUE);
return 1;
}
}
}
}
write_log (_T("inputdevice change '%s':%d->%d\n"), name, num, newport);
+ inputdevice_unacquire ();
inputdevice_copyconfig (&currprefs, &changed_prefs);
inputdevice_validate_jports (&changed_prefs, -1);
inputdevice_copyconfig (&changed_prefs, &currprefs);
+ if (acc)
+ inputdevice_acquire (TRUE);
return 1;
}
return 0;
return;
if (!id->enabled) {
frame_time_t t = read_processor_time ();
+
if (buttonstate) {
switchdevice_timeout = t;
} else {
if (input_play)
return;
if (!joysticks[joy].enabled) {
- if (v1 && v1 != v2)
- switchdevice (&joysticks[joy], v1 < 0 ? 0 : 1, false);
+ if (v1 > 0)
+ v1 = 1;
+ else if (v1 < 0)
+ v1 = -1;
+ if (v2 > 0)
+ v2 = 1;
+ else if (v2 < 0)
+ v2 = -1;
+ if (v1 && v1 != v2) {
+ static int prevdir;
+ static struct timeval tv1;
+ struct timeval tv2;
+ gettimeofday (&tv2, NULL);
+ if ((uae_s64)tv2.tv_sec * 1000000 + tv2.tv_usec < (uae_s64)tv1.tv_sec * 1000000 + tv1.tv_usec + 500000 && prevdir == v1) {
+ switchdevice (&joysticks[joy], v1 < 0 ? 0 : 1, false);
+ tv1.tv_sec = 0;
+ tv1.tv_usec = 0;
+ prevdir = 0;
+ } else {
+ tv1.tv_sec = tv2.tv_sec;
+ tv1.tv_usec = tv2.tv_usec;
+ prevdir = v1;
+ }
+ }
return;
}
for (i = 0; i < MAX_INPUT_SUB_EVENT; i++) {
}
}
-static bool inputdevice_inserted (struct uae_prefs *p, int portnum, int id, int mode, int type)
+static void inputdevice_inserted (struct uae_prefs *p, int portnum, int id, int mode, int type)
{
for (int k = 0; k < MAX_JPORTS; k++) {
if (p->jports[k].id == id && k != portnum) {
if (type == IDTYPE_JOYSTICK) {
// if this joystick is already in port 0, reset port 0 back to original
- // and insert joystick in port 1. Probably what user wanted.
if (k == 0 && portnum == 1) {
memcpy (&p->jports[0], &stored_ports[0], sizeof (struct jport));
- return false;
+ return;
}
} else if (type == IDTYPE_MOUSE) {
- return true;
+ return;
}
- return true;
+ return;
}
}
- return false;
}
void store_inputdevice_config (struct uae_prefs *p)
}
idf = &idev[type];
for (i = 0; i < idf->get_num (); i++) {
- TCHAR *name1 = idf->get_friendlyname (i);
TCHAR *name2 = idf->get_uniquename (i);
- if ((name1 && !_tcscmp (name1, value)) || (name2 && !_tcscmp (name2, value))) {
- if (!inputdevice_inserted (p, portnum, idnum + 1, mode, type)) {
- p->jports[portnum].id = idnum + i;
- if (mode >= 0)
- p->jports[portnum].mode = mode;
- set_config_changed ();
- return 1;
- }
- return 0;
+ if (name2 && !_tcscmp (name2, value)) {
+ inputdevice_inserted (p, portnum, idnum + i, mode, type);
+ p->jports[portnum].id = idnum + i;
+ if (mode >= 0)
+ p->jports[portnum].mode = mode;
+ set_config_changed ();
+ return 1;
+ }
+ }
+ for (i = 0; i < idf->get_num (); i++) {
+ TCHAR *name1 = idf->get_friendlyname (i);
+ if (name1 && !_tcscmp (name1, value)) {
+ inputdevice_inserted (p, portnum, idnum + i, mode, type);
+ p->jports[portnum].id = idnum + i;
+ if (mode >= 0)
+ p->jports[portnum].mode = mode;
+ set_config_changed ();
+ return 1;
}
}
}
}
}
if (got == 2) {
- if (inputdevice_inserted (p, portnum, start, mode, type))
- return 0;
+ inputdevice_inserted (p, portnum, start, mode, type);
p->jports[portnum].id = start;
if (mode >= 0)
p->jports[portnum].mode = mode;
static void fixup_prefs_dim2 (struct wh *wh)
{
+ if (wh->special)
+ return;
if (wh->width < 160) {
error_log (_T("Width (%d) must be at least 128."), wh->width);
wh->width = 160;
|| (p->fastmem_size != 0 && (p->fastmem_size < 0x100000 || p->fastmem_size > 0x800000)))
{
error_log (_T("Unsupported fastmem size %d (0x%x)."), p->fastmem_size, p->fastmem_size);
+ p->fastmem_size = 0;
err = 1;
}
if (p->rtgmem_size > max_z3fastmem && p->rtgmem_type == GFXBOARD_UAE_Z3) {
x_do_cycles_pre = do_cycles;
x_do_cycles_post = do_cycles_post;
} else if (currprefs.cpu_model < 68020) {
+ // 68000/010
if (currprefs.cpu_cycle_exact) {
x_prefetch = get_word_ce000_prefetch;
x_prefetch_long = NULL;
return is_cpu_tracer ();
}
-static void set_cpu_caches (void)
+static void set_cpu_caches (bool flush)
{
int i;
}
#endif
if (currprefs.cpu_model == 68020) {
- if (regs.cacr & 0x08) { // clear instr cache
+ if ((regs.cacr & 0x08) || flush) { // clear instr cache
for (i = 0; i < CACHELINES020; i++)
caches020[i].valid = 0;
}
}
} else if (currprefs.cpu_model == 68030) {
//regs.cacr |= 0x100;
- if (regs.cacr & 0x08) { // clear instr cache
+ if ((regs.cacr & 0x08) || flush) { // clear instr cache
for (i = 0; i < CACHELINES030; i++) {
icaches030[i].valid[0] = 0;
icaches030[i].valid[1] = 0;
icaches030[(regs.caar >> 4) & (CACHELINES030 - 1)].valid[(regs.caar >> 2) & 3] = 0;
regs.cacr &= ~0x04;
}
- if (regs.cacr & 0x800) { // clear data cache
+ if ((regs.cacr & 0x800) || flush) { // clear data cache
for (i = 0; i < CACHELINES030; i++) {
dcaches030[i].valid[0] = 0;
dcaches030[i].valid[1] = 0;
#ifdef JIT
build_comp ();
#endif
- set_cpu_caches ();
+ set_cpu_caches (true);
}
#define CYCLES_DIV 8192
|| currprefs.fpu_no_unimplemented != changed_prefs.fpu_no_unimplemented
|| currprefs.cpu_compatible != changed_prefs.cpu_compatible
|| currprefs.cpu_cycle_exact != changed_prefs.cpu_cycle_exact) {
- bool doprefetch = !currprefs.cpu_compatible && changed_prefs.cpu_compatible;
+
prefs_changed_cpu ();
- if (doprefetch)
- fill_prefetch ();
build_cpufunctbl ();
+ fill_prefetch ();
changed = true;
}
if (changed
else if (currprefs.cpu_model == 68060)
cacr_mask = 0xf8e0e000;
regs.cacr = *regp & cacr_mask;
- set_cpu_caches ();
+ set_cpu_caches (false);
}
break;
/* 68040/060 only */
mmu_tt_modified ();
if (currprefs.cpu_model == 68020) {
regs.cacr |= 8;
- set_cpu_caches ();
+ set_cpu_caches (false);
}
mmufixup[0].reg = -1;
if (regs.irc == 0xffff)
gui_message (_T("OPCODE %04X HAS FAULTY PREFETCH!"), prevopcode);
+ //write_log (_T("%x %04x\n"), r->instruction_pc, regs.irc);
+
opcode = regs.irc;
prevopcode = opcode;
regs.irc = 0xffff;
#ifdef CPUEMU_20
-// only opcode fetch prefetch
+// only opcode fetch prefetch (030+ more compatible)
static void m68k_run_2pf (void)
{
struct regstruct *r = ®s;
}
}
-// full prefetch 020+
+// full prefetch 020 (more compatible)
static void m68k_run_2p (void)
{
struct regstruct *r = ®s;
if (khz > 0 && khz < 800000)
currprefs.m68k_speed = changed_prefs.m68k_speed = 0;
}
- set_cpu_caches ();
+ set_cpu_caches (true);
if (flags & 0x40000000) {
if (model == 68020) {
for (int i = 0; i < CACHELINES020; i++) {
{
if (currprefs.cachesize)
return;
- uaecptr pc = m68k_getpc ();
if (currprefs.cpu_model == 68020) {
fill_prefetch_020 ();
} else if (currprefs.cpu_model == 68030) {
+ if (!currprefs.cpu_cycle_exact)
+ return;
fill_prefetch_030 ();
} else if (currprefs.cpu_model <= 68010) {
+ uaecptr pc = m68k_getpc ();
regs.ir = x_get_word (pc);
regs.irc = x_get_word (pc + 2);
}
if (currprefs.win32_kbledmode) {
oldleds = led;
} else if (!currprefs.win32_kbledmode && kbhandle != INVALID_HANDLE_VALUE) {
-#ifdef WINDDK
KEYBOARD_INDICATOR_PARAMETERS InputBuffer;
KEYBOARD_INDICATOR_PARAMETERS OutputBuffer;
ULONG DataLength = sizeof(KEYBOARD_INDICATOR_PARAMETERS);
led |= KBLED_CAPSLOCKM;
if (OutputBuffer.LedFlags & KEYBOARD_SCROLL_LOCK_ON)
led |= KBLED_SCROLLLOCKM;
-#endif
}
return led;
}
oldleds ^= KBLED_SCROLLLOCKM;
}
} else if (kbhandle != INVALID_HANDLE_VALUE) {
-#ifdef WINDDK
KEYBOARD_INDICATOR_PARAMETERS InputBuffer;
ULONG DataLength = sizeof(KEYBOARD_INDICATOR_PARAMETERS);
ULONG ReturnedLength;
if (!DeviceIoControl (kbhandle, IOCTL_KEYBOARD_SET_INDICATORS,
&InputBuffer, DataLength, NULL, 0, &ReturnedLength, NULL))
write_log (_T("kbleds: DeviceIoControl() failed %d\n"), GetLastError());
-#endif
}
}
lpdi = di_keyboard[num].lpdi;
unacquire (lpdi, _T("keyboard"));
if (currprefs.keyboard_leds_in_use) {
-#ifdef WINDDK
if (!currprefs.win32_kbledmode) {
if (DefineDosDevice (DDD_RAW_TARGET_PATH, _T("Kbd"), _T("\\Device\\KeyboardClass0"))) {
kbhandle = CreateFile (_T("\\\\.\\Kbd"), GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
write_log (_T("kbled: DefineDosDevice failed, error %d\n"), GetLastError());
}
}
-#else
- currprefs.kbledmode = 1;
-#endif
oldleds = get_leds ();
if (oldusedleds < 0)
oldusedleds = newleds = oldleds;
set_leds (oldleds);
oldusedleds = oldleds;
}
-#ifdef WINDDK
if (kbhandle != INVALID_HANDLE_VALUE) {
CloseHandle (kbhandle);
DefineDosDevice (DDD_REMOVE_DEFINITION, _T("Kbd"), NULL);
kbhandle = INVALID_HANDLE_VALUE;
}
-#endif
}
//unlock_kb ();
}
<ConfigurationType>Application</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>v110</PlatformToolset>
+ <PlatformToolset>v120_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Test|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
- <PlatformToolset>v110</PlatformToolset>
+ <PlatformToolset>v120_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Test|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
rm -rf fullrelease
cd ..
-rm -rf lib
+cd wix
+rm -rf bin
+rm -rf obj
+cd ..
+
cd ..
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>v110</PlatformToolset>
+ <PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
- <PlatformToolset>v110</PlatformToolset>
+ <PlatformToolset>v120_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Test|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
#define LANG_DLL 1
#if WINUAEPUBLICBETA
-#define WINUAEBETA _T("10")
+#define WINUAEBETA _T("11")
#else
#define WINUAEBETA _T("")
#endif
-#define WINUAEDATE MAKEBD(2013, 10, 26)
+#define WINUAEDATE MAKEBD(2013, 11, 2)
#define WINUAEEXTRA _T("")
//#define WINUAEEXTRA _T("AmiKit Preview")
//#define WINUAEEXTRA _T("Amiga Forever Edition")
}
case IDC_FILTERKEEPAUTOSCALEASPECT:
{
- workprefs.gfx_filter_keep_autoscale_aspect = currprefs.gfx_filter_keep_autoscale_aspect = ischecked (hDlg, IDC_FILTERKEEPAUTOSCALEASPECT) ? 10 : 0;
+ workprefs.gfx_filter_keep_autoscale_aspect = currprefs.gfx_filter_keep_autoscale_aspect = ischecked (hDlg, IDC_FILTERKEEPAUTOSCALEASPECT) ? 1 : 0;
enable_for_hw3ddlg (hDlg);
values_to_hw3ddlg (hDlg);
updatedisplayarea ();
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winuae", "winuae_msvc.vcxproj", "{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencpu", "..\gencpu_msvc\gencpu_msvc.vcxproj", "{DEF7ACF7-050E-4069-BB99-5B5D93F60521}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unpackers", "..\unpackers\unpackers.vcxproj", "{98BA115B-829F-4085-9729-ABD0D779A60A}"
EndProject
+Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "wix", "..\wix\wix.wixproj", "{BE211CE1-3955-4674-A664-5038FC791980}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ FullRelease|Mixed Platforms = FullRelease|Mixed Platforms
FullRelease|Win32 = FullRelease|Win32
FullRelease|x64 = FullRelease|x64
+ FullRelease|x86 = FullRelease|x86
+ Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ Test|Mixed Platforms = Test|Mixed Platforms
Test|Win32 = Test|Win32
Test|x64 = Test|x64
+ Test|x86 = Test|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|Win32.ActiveCfg = Debug|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|Win32.Build.0 = Debug|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|x64.ActiveCfg = Debug|x64
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|x64.Build.0 = Debug|x64
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|x86.ActiveCfg = Debug|Win32
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Debug|x86.Build.0 = Debug|Win32
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|Win32.Build.0 = FullRelease|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|x64.ActiveCfg = FullRelease|x64
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|x64.Build.0 = FullRelease|x64
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.FullRelease|x86.Build.0 = FullRelease|Win32
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|Mixed Platforms.Build.0 = Release|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|Win32.ActiveCfg = Release|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|Win32.Build.0 = Release|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|x64.ActiveCfg = Release|x64
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|x64.Build.0 = Release|x64
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|x86.ActiveCfg = Release|Win32
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Release|x86.Build.0 = Release|Win32
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|Mixed Platforms.Build.0 = Test|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|Win32.ActiveCfg = Test|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|Win32.Build.0 = Test|Win32
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|x64.ActiveCfg = Test|x64
{4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|x64.Build.0 = Test|x64
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|x86.ActiveCfg = Test|Win32
+ {4ADAA943-1AC8-4FB5-82E5-4FB753B6C2DA}.Test|x86.Build.0 = Test|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|Win32.ActiveCfg = Debug|Win32
{DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|x64.ActiveCfg = Debug|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|x86.ActiveCfg = Debug|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Debug|x86.Build.0 = Debug|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
{DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
{DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.FullRelease|x86.Build.0 = FullRelease|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|Mixed Platforms.Build.0 = Release|Win32
{DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|Win32.ActiveCfg = Release|Win32
{DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|x64.ActiveCfg = Release|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|x86.ActiveCfg = Release|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Release|x86.Build.0 = Release|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|Mixed Platforms.Build.0 = Test|Win32
{DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|Win32.ActiveCfg = Test|Win32
{DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|x64.ActiveCfg = Test|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|x86.ActiveCfg = Test|Win32
+ {DEF7ACF7-050E-4069-BB99-5B5D93F60521}.Test|x86.Build.0 = Test|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|Win32.ActiveCfg = Debug|Win32
{54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|x64.ActiveCfg = Debug|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|x86.ActiveCfg = Debug|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Debug|x86.Build.0 = Debug|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
{54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
{54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.FullRelease|x86.Build.0 = FullRelease|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|Mixed Platforms.Build.0 = Release|Win32
{54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|Win32.ActiveCfg = Release|Win32
{54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|x64.ActiveCfg = Release|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|x86.ActiveCfg = Release|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Release|x86.Build.0 = Release|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|Mixed Platforms.Build.0 = Test|Win32
{54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|Win32.ActiveCfg = Test|Win32
{54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|x64.ActiveCfg = Test|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|x86.ActiveCfg = Test|Win32
+ {54197DFF-9CAA-4A9F-B9C2-2881EA04EACB}.Test|x86.Build.0 = Test|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|Win32.ActiveCfg = Debug|Win32
{765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|x64.ActiveCfg = Debug|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|x86.ActiveCfg = Debug|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Debug|x86.Build.0 = Debug|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
{765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
{765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.FullRelease|x86.Build.0 = FullRelease|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|Mixed Platforms.Build.0 = Release|Win32
{765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|Win32.ActiveCfg = Release|Win32
{765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|x64.ActiveCfg = Release|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|x86.ActiveCfg = Release|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Release|x86.Build.0 = Release|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|Mixed Platforms.Build.0 = Test|Win32
{765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|Win32.ActiveCfg = Test|Win32
{765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|x64.ActiveCfg = Test|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|x86.ActiveCfg = Test|Win32
+ {765B0AF0-B8D3-4998-89AF-D6F939E1CD18}.Test|x86.Build.0 = Test|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|Win32.ActiveCfg = Debug|Win32
{AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|x64.ActiveCfg = Debug|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|x86.ActiveCfg = Debug|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Debug|x86.Build.0 = Debug|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
{AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
{AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.FullRelease|x86.Build.0 = FullRelease|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|Mixed Platforms.Build.0 = Release|Win32
{AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|Win32.ActiveCfg = Release|Win32
{AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|x64.ActiveCfg = Release|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|x86.ActiveCfg = Release|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Release|x86.Build.0 = Release|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|Mixed Platforms.Build.0 = Test|Win32
{AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|Win32.ActiveCfg = Test|Win32
{AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|x64.ActiveCfg = Test|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|x86.ActiveCfg = Test|Win32
+ {AF3DBBDE-E006-4DC3-9A26-CB0D7D82AE3C}.Test|x86.Build.0 = Test|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|Win32.ActiveCfg = Debug|Win32
{DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|x64.ActiveCfg = Debug|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|x86.ActiveCfg = Debug|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Debug|x86.Build.0 = Debug|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
{DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
{DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.FullRelease|x86.Build.0 = FullRelease|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|Mixed Platforms.Build.0 = Release|Win32
{DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|Win32.ActiveCfg = Release|Win32
{DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|x64.ActiveCfg = Release|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|x86.ActiveCfg = Release|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Release|x86.Build.0 = Release|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|Mixed Platforms.Build.0 = Test|Win32
{DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|Win32.ActiveCfg = Test|Win32
{DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|x64.ActiveCfg = Test|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|x86.ActiveCfg = Test|Win32
+ {DAF2EB1A-546A-41B3-9755-187562C01E3C}.Test|x86.Build.0 = Test|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|Win32.ActiveCfg = Debug|Win32
{C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|x64.ActiveCfg = Debug|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|x86.ActiveCfg = Debug|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Debug|x86.Build.0 = Debug|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
{C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
{C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.FullRelease|x86.Build.0 = FullRelease|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|Mixed Platforms.Build.0 = Release|Win32
{C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|Win32.ActiveCfg = Release|Win32
{C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|x64.ActiveCfg = Release|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|x86.ActiveCfg = Release|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Release|x86.Build.0 = Release|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|Mixed Platforms.Build.0 = Test|Win32
{C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|Win32.ActiveCfg = Test|Win32
{C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|x64.ActiveCfg = Test|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|x86.ActiveCfg = Test|Win32
+ {C85288FB-A035-42CA-B5FB-8E6214319E97}.Test|x86.Build.0 = Test|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|Win32.ActiveCfg = Debug|Win32
{960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|x64.ActiveCfg = Debug|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|x86.ActiveCfg = Debug|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Debug|x86.Build.0 = Debug|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
{960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
{960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.FullRelease|x86.Build.0 = FullRelease|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|Mixed Platforms.Build.0 = Release|Win32
{960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|Win32.ActiveCfg = Release|Win32
{960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|x64.ActiveCfg = Release|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|x86.ActiveCfg = Release|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Release|x86.Build.0 = Release|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|Mixed Platforms.Build.0 = Test|Win32
{960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|Win32.ActiveCfg = Test|Win32
{960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|x64.ActiveCfg = Test|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|x86.ActiveCfg = Test|Win32
+ {960E83B5-9118-4EBD-AF50-18EFC1DC764B}.Test|x86.Build.0 = Test|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|Win32.ActiveCfg = Debug|Win32
{79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|x64.ActiveCfg = Debug|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|x86.ActiveCfg = Debug|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Debug|x86.Build.0 = Debug|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
{79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
{79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.FullRelease|x86.Build.0 = FullRelease|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|Mixed Platforms.Build.0 = Release|Win32
{79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|Win32.ActiveCfg = Release|Win32
{79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|x64.ActiveCfg = Release|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|x86.ActiveCfg = Release|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Release|x86.Build.0 = Release|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|Mixed Platforms.Build.0 = Test|Win32
{79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|Win32.ActiveCfg = Test|Win32
{79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|x64.ActiveCfg = Test|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|x86.ActiveCfg = Test|Win32
+ {79BDABE6-5308-4D64-8884-A5A35909D8D3}.Test|x86.Build.0 = Test|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|Win32.ActiveCfg = Debug|Win32
{E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|x64.ActiveCfg = Debug|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|x86.ActiveCfg = Debug|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Debug|x86.Build.0 = Debug|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|Mixed Platforms.ActiveCfg = FullRelease|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|Mixed Platforms.Build.0 = FullRelease|Win32
{E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|Win32.ActiveCfg = FullRelease|Win32
{E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|x64.ActiveCfg = FullRelease|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|x86.ActiveCfg = FullRelease|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.FullRelease|x86.Build.0 = FullRelease|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|Mixed Platforms.Build.0 = Release|Win32
{E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|Win32.ActiveCfg = Release|Win32
{E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|x64.ActiveCfg = Release|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|x86.ActiveCfg = Release|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Release|x86.Build.0 = Release|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|Mixed Platforms.Build.0 = Test|Win32
{E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|Win32.ActiveCfg = Test|Win32
{E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|x64.ActiveCfg = Test|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|x86.ActiveCfg = Test|Win32
+ {E9F73E11-A463-45C6-A733-2BED75852BA1}.Test|x86.Build.0 = Test|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|Win32.ActiveCfg = Debug|Win32
{38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|x64.ActiveCfg = Debug|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|x86.ActiveCfg = Debug|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Debug|x86.Build.0 = Debug|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|Mixed Platforms.ActiveCfg = Release|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|Mixed Platforms.Build.0 = Release|Win32
{38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|Win32.ActiveCfg = Release|Win32
{38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|x64.ActiveCfg = Release|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|x86.ActiveCfg = Release|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.FullRelease|x86.Build.0 = Release|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|Mixed Platforms.Build.0 = Release|Win32
{38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|Win32.ActiveCfg = Release|Win32
{38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|x64.ActiveCfg = Release|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|x86.ActiveCfg = Release|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Release|x86.Build.0 = Release|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|Mixed Platforms.Build.0 = Test|Win32
{38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|Win32.ActiveCfg = Test|Win32
{38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|x64.ActiveCfg = Test|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|x86.ActiveCfg = Test|Win32
+ {38FAC3FB-A2B7-453F-8A6A-73B97201BB04}.Test|x86.Build.0 = Test|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|Win32.ActiveCfg = Debug|Win32
{6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|x64.ActiveCfg = Debug|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|x86.ActiveCfg = Debug|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Debug|x86.Build.0 = Debug|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|Mixed Platforms.ActiveCfg = Release|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|Mixed Platforms.Build.0 = Release|Win32
{6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|Win32.ActiveCfg = Release|Win32
{6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|x64.ActiveCfg = Release|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|x86.ActiveCfg = Release|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.FullRelease|x86.Build.0 = Release|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|Mixed Platforms.Build.0 = Release|Win32
{6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|Win32.ActiveCfg = Release|Win32
{6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|x64.ActiveCfg = Release|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|x86.ActiveCfg = Release|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Release|x86.Build.0 = Release|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|Mixed Platforms.Build.0 = Test|Win32
{6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|Win32.ActiveCfg = Test|Win32
{6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|x64.ActiveCfg = Test|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|x86.ActiveCfg = Test|Win32
+ {6181E50C-5F32-42DC-BEF6-827AA8A5429D}.Test|x86.Build.0 = Test|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|Win32.ActiveCfg = Debug|Win32
{2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|x64.ActiveCfg = Debug|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|x86.ActiveCfg = Debug|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Debug|x86.Build.0 = Debug|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|Mixed Platforms.ActiveCfg = Release|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|Mixed Platforms.Build.0 = Release|Win32
{2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|Win32.ActiveCfg = Release|Win32
{2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|x64.ActiveCfg = Release|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|x86.ActiveCfg = Release|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.FullRelease|x86.Build.0 = Release|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|Mixed Platforms.Build.0 = Release|Win32
{2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|Win32.ActiveCfg = Release|Win32
{2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|x64.ActiveCfg = Release|x64
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|x86.ActiveCfg = Release|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Release|x86.Build.0 = Release|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|Mixed Platforms.Build.0 = Test|Win32
{2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|Win32.ActiveCfg = Test|Win32
{2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|x64.ActiveCfg = Test|x64
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|x86.ActiveCfg = Test|Win32
+ {2C44DD04-F5D6-4CC3-B0D6-1F4E51A0D962}.Test|x86.Build.0 = Test|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|Win32.ActiveCfg = Debug|Win32
{8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|x64.ActiveCfg = Debug|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|x86.ActiveCfg = Debug|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Debug|x86.Build.0 = Debug|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|Mixed Platforms.ActiveCfg = Release|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|Mixed Platforms.Build.0 = Release|Win32
{8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|Win32.ActiveCfg = Release|Win32
{8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|x64.ActiveCfg = Release|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|x86.ActiveCfg = Release|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.FullRelease|x86.Build.0 = Release|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|Mixed Platforms.Build.0 = Release|Win32
{8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|Win32.ActiveCfg = Release|Win32
{8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|x64.ActiveCfg = Release|x64
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|x86.ActiveCfg = Release|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Release|x86.Build.0 = Release|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|Mixed Platforms.Build.0 = Test|Win32
{8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|Win32.ActiveCfg = Test|Win32
{8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|x64.ActiveCfg = Test|x64
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|x86.ActiveCfg = Test|Win32
+ {8627DA33-98D1-4F60-B404-ECCEE0EE7BF9}.Test|x86.Build.0 = Test|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|Win32.ActiveCfg = Debug|Win32
{98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|x64.ActiveCfg = Debug|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|x86.ActiveCfg = Debug|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Debug|x86.Build.0 = Debug|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|Mixed Platforms.ActiveCfg = Release|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|Mixed Platforms.Build.0 = Release|Win32
{98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|Win32.ActiveCfg = Release|Win32
{98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|x64.ActiveCfg = Release|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|x86.ActiveCfg = Release|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.FullRelease|x86.Build.0 = Release|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|Mixed Platforms.Build.0 = Release|Win32
{98BA115B-829F-4085-9729-ABD0D779A60A}.Release|Win32.ActiveCfg = Release|Win32
{98BA115B-829F-4085-9729-ABD0D779A60A}.Release|x64.ActiveCfg = Release|x64
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|x86.ActiveCfg = Release|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Release|x86.Build.0 = Release|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Test|Mixed Platforms.ActiveCfg = Test|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Test|Mixed Platforms.Build.0 = Test|Win32
{98BA115B-829F-4085-9729-ABD0D779A60A}.Test|Win32.ActiveCfg = Test|Win32
{98BA115B-829F-4085-9729-ABD0D779A60A}.Test|x64.ActiveCfg = Test|x64
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Test|x86.ActiveCfg = Test|Win32
+ {98BA115B-829F-4085-9729-ABD0D779A60A}.Test|x86.Build.0 = Test|Win32
+ {BE211CE1-3955-4674-A664-5038FC791980}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Debug|Win32.ActiveCfg = Debug|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Debug|Win32.Build.0 = Debug|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Debug|x64.ActiveCfg = Debug|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Debug|x86.ActiveCfg = Debug|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Debug|x86.Build.0 = Debug|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|Mixed Platforms.Build.0 = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|Win32.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|Win32.Build.0 = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|x64.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|x86.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.FullRelease|x86.Build.0 = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Release|Mixed Platforms.Build.0 = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Release|Win32.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Release|x64.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Release|x86.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Release|x86.Build.0 = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Test|Mixed Platforms.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Test|Mixed Platforms.Build.0 = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Test|Win32.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Test|x64.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Test|x86.ActiveCfg = Release|x86
+ {BE211CE1-3955-4674-A664-5038FC791980}.Test|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
+
- restore only single input target to default.
+Beta 11:
+
+- 68000/010 CPU core merge accidentally removed 68000 CLR to memory and Scc to memory dummy read
+ -modify-write behavior.
+- Sometimes after autoswitch (unconfigured mouse left button press) mouse was configured correctly
+ but mouse input was kept disabled.
+- Using stick/dpad to autoswitch now requires move, release, move inside 0.5s window to prevent
+ accidental switches.
+- Some more autoswitch bugs fixed.
+- Switching bitplane DMA on just before DDFSTRT handling improved. (Saigon Megademo "Shir Khan" part)
+- 68030 + more compatible without cycle-exact was unstable.
+- Flush 68020/030 caches and refill prefetch buffers when switching CPU modes (cycle-exact/more compatible)
+ on the fly.
+- 68020 cycle-exact improvements.
+- Bitplane graphics was horizontally shifted if program switched from lores to hires less than 4 cycles
+ before bitplane DMA starts. (Chipset emulation was correct but drawing code saw invalid lores to hires
+ switch)
+- Stupid code fixed in CD image audio code that coud cause random crashes.
+- CD image audio start was delayed if audio was compressed (zip/mp3/flac/whatever) and start position
+ was at the very end of previous track.
+
+Beta 10:
+
+- B8 Blerkenwiegel workaround caused buffer overflows in some situations. Fix improved.
+- MoreNewStuffy fix (231b11) was not complete, non-modulo bitplane DMA fetches work
+ differently than modulo adding DMA fetches. (Alpha and Omega / PMC)
+- Also above behavior seems to only happen with first plane fetch. (New and Better Routines / Cult)
+ This needs more testing, someday..
+- '?' disk info button now opens normal dialog window, disk label also included (if dos disk) and
+ type of bootblock (1.x standard, 2.x+ standard, custom)
+- When loading config that has 2 identical game controllers configured in both ports and only one
+ controller is connected, connected controller was inserted in both ports.
+- GamePorts panel port change behavior improved, if new device is already inserted in other port,
+ device in other port is now always automatically changed, not the one you just changed.
+- When clicking mouse that is not inserted in either Amiga port and host system has only one mouse
+ connected, "Windows mouse" is inserted, not HID mouse.
+- 68020 more compatible without cycle-exact works again and also uses new 68020 CE prefetch method.
+- 68010 is now supported in more compatible and cycle-exact modes. New instructions supported and
+ new stack frames emulated but timing is same as 68000, 68010 special timing improvements and loop
+ mode is not emulated. At least not yet.
+- 68010 emulation used some 68020+ only exception stack frames.
+- FPU emulator now properly uses prefetch buffer emulation if more compatible or cycle-exact is
+ enabled. Emulated program crashed in older versions with some FPU instructions.
+- On the fly switching from fastest possible to prefetch ("more compatible") or CE didn't fill
+ prefetch buffers and usually caused emulated program to crash.
+- Added "Log window" checkbox to Paths panel, easier non-command line method to open log window.
+- On the fly change of A1000 Agnus or No-EHB Denise Advanced chipset didn't do anything.
+- A1000 Agnus and vertical bitplane start (DIWSTRT) of zero: nothing happens, bitplanes are
+ only enabled if it is 1 or larger.
+
Beta 9:
-NOTE: 68020 CE mode can be used now.
+NOTE: 68020 CE mode should be usable again.
- Added CIA tod bug option to Advanced chipset. Demo The end / Trilobit running under
KS 1.3 has corruption in "photos" part if tod alarm bug is not emulated. KS 1.3 + real A500
Lots of work left to do but at least it should not be any worse than old code and it also should be
much more accurate now when code has small loops (for example stupid CPU delays).
+If there are no demos or games that break or run really badly compared to 2.6.1, this is not anymore
+showstopper for 2.7.0 release.
+
NOTE: 68030 can queue data memory accesses, this is not yet emulated.
Beta 8:
0100 1010 1111 1100:000:?????:?????:00: ILLEGAL
0100 1100 00ss sSSS:200:-NZVC:-----:13: MULL.L #1,s[!Areg]
+- 2 0 30 fiea
0100 1100 01ss sSSS:200:?????:?????:13: DIVL.L #1,s[!Areg]
+- 0 0 50 fiea
+
0100 1100 10ss sSSS:000:-----:-----:01: MVMEL.W #1,s[!Dreg,Areg,Apdi,Immd]
0100 1100 11ss sSSS:000:-----:-----:01: MVMEL.L #1,s[!Dreg,Areg,Apdi,Immd]
0100 1110 0100 JJJJ:000:-----:XNZVC:10: TRAP #J
- 0 0 2 fea
1000 rrr0 11ss sSSS:000:?????:?????:13: DIVU.W s[Dreg],Dr
-- 2 0 30
+- 2 0 54
1000 rrr0 11ss sSSS:000:?????:?????:13: DIVU.W s[!Areg,Dreg],Dr
-- 0 0 30 fea
+- 0 0 54 fea
1000 rrr1 00dd dDDD:000:XxZxC:X-Z--:13: SBCD.B d[Dreg],Dr
- 0 0 4
- 2 1 11
1000 rrr1 11ss sSSS:000:?????:?????:13: DIVS.W s[Dreg],Dr
-- 2 0 40
+- 2 0 54
1000 rrr1 11ss sSSS:000:?????:?????:13: DIVS.W s[!Areg,Dreg],Dr
-- 0 0 40 fea
+- 0 0 54 fea
1001 rrr0 zzss sSSS:000:XNZVC:-----:13: SUB.z s[Areg,Dreg],Dr
- 2 0 2
1100 rrr0 zzss sSSS:000:-NZ00:-----:13: AND.z s[!Areg,Dreg],Dr
- 0 1 3 fea
1100 rrr0 11ss sSSS:000:-NZ00:-----:13: MULU.W s[!Areg],Dr
-- 2 0 20 fea
+- 2 0 25 fea
1100 rrr1 00dd dDDD:000:XxZxC:X-Z--:13: ABCD.B d[Dreg],Dr
- 0 0 4
1100 rrr1 10dd dDDD:000:-----:-----:33: EXG.L Dr,d[Areg]
- 4 0 4
1100 rrr1 11ss sSSS:000:-NZ00:-----:13: MULS.W s[!Areg],Dr
-- 2 0 20 fea
+- 2 0 25 fea
1101 rrr0 zzss sSSS:000:XNZVC:-----:13: ADD.z s[Areg,Dreg],Dr
- 2 0 2