01900: All sets in kinst.c: Mass coin input disables dipswitch access, and thus further coin input during a fight

This commit is contained in:
Aaron Giles 2008-06-22 01:40:28 +00:00
parent a6cec043df
commit d4b702bf33
2 changed files with 6 additions and 8 deletions

View File

@ -170,16 +170,14 @@ offs_t mips3com_dasm(mips3_state *mips, char *buffer, offs_t pc, const UINT8 *op
void mips3com_update_cycle_counting(mips3_state *mips)
{
/* modify the timer to go off */
if ((mips->cpr[0][COP0_Status] & SR_IMEX5) && mips->cpr[0][COP0_Compare] != 0xffffffff)
if (mips->cpr[0][COP0_Status] & SR_IMEX5)
{
UINT32 count = (activecpu_gettotalcycles() - mips->count_zero_time) / 2;
UINT32 compare = mips->cpr[0][COP0_Compare];
if (compare > count)
{
attotime newtime = ATTOTIME_IN_CYCLES(((INT64)(compare - count) * 2), cpu_getactivecpu());
timer_adjust_oneshot(mips->compare_int_timer, newtime, cpu_getactivecpu());
return;
}
UINT32 delta = compare - count;
attotime newtime = ATTOTIME_IN_CYCLES(((UINT64)delta * 2), cpu_getactivecpu());
timer_adjust_oneshot(mips->compare_int_timer, newtime, cpu_getactivecpu());
return;
}
timer_adjust_oneshot(mips->compare_int_timer, attotime_never, cpu_getactivecpu());
}

View File

@ -2739,7 +2739,7 @@ static int generate_set_cop0_reg(drcuml_block *block, compiler_state *compiler,
generate_update_cycles(block, compiler, IMM(desc->pc), !in_delay_slot); // <subtract cycles>
UML_MOV(block, IREG(1), CPR032(COP0_Status)); // mov i1,[Status]
UML_MOV(block, CPR032(COP0_Status), IREG(0)); // mov [Status],i0
generate_update_mode(block);
generate_update_mode(block); // <update mode>
UML_XOR(block, IREG(0), IREG(0), IREG(1)); // xor i0,i0,i1
UML_TEST(block, IREG(0), IMM(0x8000)); // test i0,0x8000
UML_CALLCc(block, IF_NZ, mips3com_update_cycle_counting, mips3); // callc mips3com_update_cycle_counting,mips.core,NZ