67 |
|
|
68 |
|
void EmulOp(M68kRegisters *r, uint32 pc, int selector) |
69 |
|
{ |
70 |
– |
|
70 |
|
D(bug("EmulOp %04x at %08x\n", selector, pc)); |
71 |
|
switch (selector) { |
72 |
|
case OP_BREAK: // Breakpoint |
270 |
|
#endif |
271 |
|
|
272 |
|
// Patch DebugStr() |
273 |
< |
static const uint16 proc[] = { |
274 |
< |
M68K_EMUL_OP_DEBUG_STR, |
275 |
< |
0x4e74, // rtd #4 |
276 |
< |
0x0004 |
273 |
> |
static const uint8 proc[] = { |
274 |
> |
M68K_EMUL_OP_DEBUG_STR >> 8, M68K_EMUL_OP_DEBUG_STR & 0xff, |
275 |
> |
0x4e, 0x74, // rtd #4 |
276 |
> |
0x00, 0x04 |
277 |
|
}; |
278 |
|
WriteMacInt32(0x1dfc, (uint32)proc); |
279 |
|
break; |
310 |
|
#if !PRECISE_TIMING |
311 |
|
TimerInterrupt(); |
312 |
|
#endif |
313 |
+ |
#if EMULATED_PPC |
314 |
+ |
ExecuteNative(NATIVE_VIDEO_VBL); |
315 |
+ |
#else |
316 |
|
ExecutePPC(VideoVBL); |
317 |
+ |
#endif |
318 |
|
|
319 |
|
static int tick_counter = 0; |
320 |
|
if (++tick_counter >= 60) { |
332 |
|
} |
333 |
|
if (InterruptFlags & INTFLAG_ETHER) { |
334 |
|
ClearInterruptFlag(INTFLAG_ETHER); |
335 |
+ |
#if EMULATED_PPC |
336 |
+ |
ExecuteNative(NATIVE_ETHER_IRQ); |
337 |
+ |
#else |
338 |
|
ExecutePPC(EtherIRQ); |
339 |
+ |
#endif |
340 |
|
} |
341 |
|
if (InterruptFlags & INTFLAG_TIMER) { |
342 |
|
ClearInterruptFlag(INTFLAG_TIMER); |