{
if(hwMapper) {
int mask=hwMapper->AddCycles(num);
- for(int t=1; mask; mask>>=1,t++) {
- DisableTimers(11);
- if(t==2) {
- PRINTF(L_SYS_EMU,"Timer interrupt %u @ %04x",t,GetPc());
- RaiseException(9);
- if(Interruptible()) throw(t);
+ for(int t=0; mask; mask>>=1,t++)
+ if(mask&1) {
+ DisableTimers(11);
+ if(t==2) {
+ PRINTF(L_SYS_EMU,"Timer interrupt %u @ %04x",t,GetPc());
+ RaiseException(9);
+ if(Interruptible()) throw(t);
+ }
}
- }
}
}
#define MAX_TIMERS 3
#define TIMER_NUM(x) (((x)>>2)&3) // timer order doesn't match HW order
-#define HW_NUM(x) ((x+2)%3)
+#define HW_NUM(x) ((x+1)%3)
class cMapMemHW : public cMapMem {
private: