Stop feeding Mogwai after midnight (nw)

This commit is contained in:
R. Belmont 2013-03-23 19:19:10 +00:00
parent d42b8d7529
commit e438b18443
2 changed files with 33 additions and 11 deletions

View File

@ -113,7 +113,6 @@ void m740_device::do_sbc_dt(UINT8 val)
{ {
UINT8 c = P & F_C ? 0 : 1; UINT8 c = P & F_C ? 0 : 1;
P &= ~(F_N|F_V|F_Z|F_C); P &= ~(F_N|F_V|F_Z|F_C);
TMP2 = read(X);
UINT16 diff = TMP2 - val - c; UINT16 diff = TMP2 - val - c;
UINT8 al = (TMP2 & 15) - (val & 15) - c; UINT8 al = (TMP2 & 15) - (val & 15) - c;
if(INT8(al) < 0) if(INT8(al) < 0)
@ -130,15 +129,11 @@ void m740_device::do_sbc_dt(UINT8 val)
if(INT8(ah) < 0) if(INT8(ah) < 0)
ah -= 6; ah -= 6;
TMP2 = (ah << 4) | (al & 15); TMP2 = (ah << 4) | (al & 15);
write(X, TMP2);
} }
void m740_device::do_sbc_ndt(UINT8 val) void m740_device::do_sbc_ndt(UINT8 val)
{ {
UINT16 diff; UINT16 diff = TMP2 - val - (P & F_C ? 0 : 1);
TMP2 = read(X);
diff = TMP2 - val - (P & F_C ? 0 : 1);
P &= ~(F_N|F_V|F_Z|F_C); P &= ~(F_N|F_V|F_Z|F_C);
if(!UINT8(diff)) if(!UINT8(diff))
P |= F_Z; P |= F_Z;
@ -149,7 +144,6 @@ void m740_device::do_sbc_ndt(UINT8 val)
if(!(diff & 0xff00)) if(!(diff & 0xff00))
P |= F_C; P |= F_C;
TMP2 = diff; TMP2 = diff;
write(X, TMP2);
} }
void m740_device::do_sbct(UINT8 val) void m740_device::do_sbct(UINT8 val)
@ -164,7 +158,6 @@ void m740_device::do_adc_dt(UINT8 val)
{ {
UINT8 c = P & F_C ? 1 : 0; UINT8 c = P & F_C ? 1 : 0;
P &= ~(F_N|F_V|F_Z|F_C); P &= ~(F_N|F_V|F_Z|F_C);
TMP2 = read(X);
UINT8 al = (TMP2 & 15) + (val & 15) + c; UINT8 al = (TMP2 & 15) + (val & 15) + c;
if(al > 9) if(al > 9)
al += 6; al += 6;
@ -180,13 +173,11 @@ void m740_device::do_adc_dt(UINT8 val)
if(ah > 15) if(ah > 15)
P |= F_C; P |= F_C;
TMP2 = (ah << 4) | (al & 15); TMP2 = (ah << 4) | (al & 15);
write(X, TMP2);
} }
void m740_device::do_adc_ndt(UINT8 val) void m740_device::do_adc_ndt(UINT8 val)
{ {
UINT16 sum; UINT16 sum;
TMP2 = read(X);
sum = TMP2 + val + (P & F_C ? 1 : 0); sum = TMP2 + val + (P & F_C ? 1 : 0);
P &= ~(F_N|F_V|F_Z|F_C); P &= ~(F_N|F_V|F_Z|F_C);
if(!UINT8(sum)) if(!UINT8(sum))
@ -198,7 +189,6 @@ void m740_device::do_adc_ndt(UINT8 val)
if(sum & 0xff00) if(sum & 0xff00)
P |= F_C; P |= F_C;
TMP2 = sum; TMP2 = sum;
write(X, TMP2);
} }
void m740_device::do_adct(UINT8 val) void m740_device::do_adct(UINT8 val)

View File

@ -152,7 +152,9 @@ adct_aba
TMP = read_pc(); TMP = read_pc();
TMP = set_h(TMP, read_pc()); TMP = set_h(TMP, read_pc());
TMP = read(TMP); TMP = read(TMP);
TMP2 = read(X);
do_adct(TMP); do_adct(TMP);
write(X, TMP2);
prefetch(); prefetch();
adct_abx adct_abx
@ -163,7 +165,9 @@ adct_abx
} }
TMP += X; TMP += X;
TMP = read(TMP); TMP = read(TMP);
TMP2 = read(X);
do_adct(TMP); do_adct(TMP);
write(X, TMP2);
prefetch(); prefetch();
adct_aby adct_aby
@ -174,7 +178,9 @@ adct_aby
} }
TMP += Y; TMP += Y;
TMP = read(TMP); TMP = read(TMP);
TMP2 = read(X);
do_adct(TMP); do_adct(TMP);
write(X, TMP2);
prefetch(); prefetch();
adct_idx adct_idx
@ -183,7 +189,9 @@ adct_idx
TMP2 += X; TMP2 += X;
TMP = read(TMP2 & 0xff); TMP = read(TMP2 & 0xff);
TMP = set_h(TMP, read((TMP2+1) & 0xff)); TMP = set_h(TMP, read((TMP2+1) & 0xff));
TMP2 = read(X);
do_adct(read(TMP)); do_adct(read(TMP));
write(X, TMP2);
prefetch(); prefetch();
adct_idy adct_idy
@ -193,25 +201,33 @@ adct_idy
if(page_changing(TMP, Y)) { if(page_changing(TMP, Y)) {
read(set_l(TMP, TMP+Y)); read(set_l(TMP, TMP+Y));
} }
TMP2 = read(X);
do_adct(read(TMP+Y)); do_adct(read(TMP+Y));
write(X, TMP2);
prefetch(); prefetch();
adct_imm adct_imm
TMP = read_pc(); TMP = read_pc();
TMP2 = read(X);
do_adct(TMP); do_adct(TMP);
write(X, TMP2);
prefetch(); prefetch();
adct_zpg adct_zpg
TMP = read_pc(); TMP = read_pc();
TMP = read(TMP); TMP = read(TMP);
TMP2 = read(X);
do_adct(TMP); do_adct(TMP);
write(X, TMP2);
prefetch(); prefetch();
adct_zpx adct_zpx
TMP = read_pc(); TMP = read_pc();
read(TMP); read(TMP);
TMP = read(UINT8(TMP+X)); TMP = read(UINT8(TMP+X));
TMP2 = read(X);
do_adct(TMP); do_adct(TMP);
write(X, TMP2);
prefetch(); prefetch();
andt_aba andt_aba
@ -654,7 +670,9 @@ sbct_aba
TMP = read_pc(); TMP = read_pc();
TMP = set_h(TMP, read_pc()); TMP = set_h(TMP, read_pc());
TMP = read(TMP); TMP = read(TMP);
TMP2 = read(X);
do_sbct(TMP); do_sbct(TMP);
write(X, TMP2);
prefetch(); prefetch();
sbct_abx sbct_abx
@ -665,7 +683,9 @@ sbct_abx
} }
TMP += X; TMP += X;
TMP = read(TMP); TMP = read(TMP);
TMP2 = read(X);
do_sbct(TMP); do_sbct(TMP);
write(X, TMP2);
prefetch(); prefetch();
sbct_aby sbct_aby
@ -676,7 +696,9 @@ sbct_aby
} }
TMP += Y; TMP += Y;
TMP = read(TMP); TMP = read(TMP);
TMP2 = read(X);
do_sbct(TMP); do_sbct(TMP);
write(X, TMP2);
prefetch(); prefetch();
sbct_idx sbct_idx
@ -685,7 +707,9 @@ sbct_idx
TMP2 += X; TMP2 += X;
TMP = read(TMP2 & 0xff); TMP = read(TMP2 & 0xff);
TMP = set_h(TMP, read((TMP2+1) & 0xff)); TMP = set_h(TMP, read((TMP2+1) & 0xff));
TMP2 = read(X);
do_sbct(read(TMP)); do_sbct(read(TMP));
write(X, TMP2);
prefetch(); prefetch();
sbct_idy sbct_idy
@ -695,24 +719,32 @@ sbct_idy
if(page_changing(TMP, Y)) { if(page_changing(TMP, Y)) {
read(set_l(TMP, TMP+Y)); read(set_l(TMP, TMP+Y));
} }
TMP2 = read(X);
do_sbct(read(TMP+Y)); do_sbct(read(TMP+Y));
write(X, TMP2);
prefetch(); prefetch();
sbct_imm sbct_imm
TMP = read_pc(); TMP = read_pc();
TMP2 = read(X);
do_sbct(TMP); do_sbct(TMP);
write(X, TMP2);
prefetch(); prefetch();
sbct_zpg sbct_zpg
TMP = read_pc(); TMP = read_pc();
TMP = read(TMP); TMP = read(TMP);
TMP2 = read(X);
do_sbct(TMP); do_sbct(TMP);
write(X, TMP2);
prefetch(); prefetch();
sbct_zpx sbct_zpx
TMP = read_pc(); TMP = read_pc();
read(TMP); read(TMP);
TMP = read(UINT8(TMP+X)); TMP = read(UINT8(TMP+X));
TMP2 = read(X);
do_sbct(TMP); do_sbct(TMP);
write(X, TMP2);
prefetch(); prefetch();