notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
drc: make hash table issues easier to debug
[pcsx_rearmed.git]
/
libpcsxcore
/
r3000a.c
diff --git
a/libpcsxcore/r3000a.c
b/libpcsxcore/r3000a.c
index
9b47936
..
8035dfd
100644
(file)
--- a/
libpcsxcore/r3000a.c
+++ b/
libpcsxcore/r3000a.c
@@
-26,6
+26,7
@@
#include "mdec.h"
#include "gte.h"
#include "psxinterpreter.h"
#include "mdec.h"
#include "gte.h"
#include "psxinterpreter.h"
+#include "psxbios.h"
#include "../include/compiler_features.h"
R3000Acpu *psxCpu = NULL;
#include "../include/compiler_features.h"
R3000Acpu *psxCpu = NULL;
@@
-210,6
+211,8
@@
void psxBranchTest() {
psxRegs.CP0.n.Cause |= 0x400;
if (((psxRegs.CP0.n.Cause | 1) & psxRegs.CP0.n.SR & 0x401) == 0x401)
psxException(0, 0, &psxRegs.CP0);
psxRegs.CP0.n.Cause |= 0x400;
if (((psxRegs.CP0.n.Cause | 1) & psxRegs.CP0.n.SR & 0x401) == 0x401)
psxException(0, 0, &psxRegs.CP0);
+ else if (unlikely(psxRegs.pc == psxRegs.biosBranchCheck))
+ psxBiosCheckBranch();
}
void psxJumpTest() {
}
void psxJumpTest() {
@@
-264,7
+267,7
@@
static void psxScheduleIrq10One(u32 cycles_abs) {
psxRegs.interrupt |= 1 << PSXINT_IRQ10;
psxRegs.intCycle[PSXINT_IRQ10].cycle = c;
psxRegs.intCycle[PSXINT_IRQ10].sCycle = rcnts[3].cycleStart;
psxRegs.interrupt |= 1 << PSXINT_IRQ10;
psxRegs.intCycle[PSXINT_IRQ10].cycle = c;
psxRegs.intCycle[PSXINT_IRQ10].sCycle = rcnts[3].cycleStart;
- new_dyna_set_event
(PSXINT_IRQ10, c
);
+ new_dyna_set_event
_abs(PSXINT_IRQ10, cycles_abs
);
}
void irq10Interrupt() {
}
void irq10Interrupt() {
@@
-280,8
+283,11
@@
void irq10Interrupt() {
irq10count, psxRegs.cycle - prevc,
(psxRegs.CP0.n.SR & 0x401) != 0x401, !(psxHu32(0x1074) & 0x400));
#endif
irq10count, psxRegs.cycle - prevc,
(psxRegs.CP0.n.SR & 0x401) != 0x401, !(psxHu32(0x1074) & 0x400));
#endif
- if (--irq10count > 0)
- psxScheduleIrq10One(prevc + PSXCLK / 60 / 263);
+ if (--irq10count > 0) {
+ u32 cycles_per_line = Config.PsxType
+ ? PSXCLK / 50 / 314 : PSXCLK / 60 / 263;
+ psxScheduleIrq10One(prevc + cycles_per_line);
+ }
}
void psxScheduleIrq10(int irq_count, int x_cycles, int y) {
}
void psxScheduleIrq10(int irq_count, int x_cycles, int y) {