mirror of
https://github.com/dborth/snes9xgx.git
synced 2024-11-01 00:15:14 +01:00
Snes9x - Adjust opcode timing as reported by pi1541. (#1036)
* Snes9x - Adjust opcode timing as reported by pi1541. * Snes9x - Move AddCycles to be consistent with other OPs.
This commit is contained in:
parent
3f4f475f01
commit
6582c58648
@ -513,7 +513,6 @@ static inline uint32 StackRelativeIndirectIndexed (AccessMode a) // (d,S),Y
|
|||||||
if (a & READ)
|
if (a & READ)
|
||||||
OpenBus = (uint8) (addr >> 8);
|
OpenBus = (uint8) (addr >> 8);
|
||||||
addr = (addr + Registers.Y.W + ICPU.ShiftedDB) & 0xffffff;
|
addr = (addr + Registers.Y.W + ICPU.ShiftedDB) & 0xffffff;
|
||||||
AddCycles(ONE_CYCLE);
|
|
||||||
|
|
||||||
return (addr);
|
return (addr);
|
||||||
}
|
}
|
||||||
|
@ -1406,11 +1406,13 @@ bOP(70Slow, RelativeSlow, CheckOverflow(), 0, CheckEmulation())
|
|||||||
static void Op82 (void)
|
static void Op82 (void)
|
||||||
{
|
{
|
||||||
S9xSetPCBase(ICPU.ShiftedPB + RelativeLong(JUMP));
|
S9xSetPCBase(ICPU.ShiftedPB + RelativeLong(JUMP));
|
||||||
|
AddCycles(ONE_CYCLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Op82Slow (void)
|
static void Op82Slow (void)
|
||||||
{
|
{
|
||||||
S9xSetPCBase(ICPU.ShiftedPB + RelativeLongSlow(JUMP));
|
S9xSetPCBase(ICPU.ShiftedPB + RelativeLongSlow(JUMP));
|
||||||
|
AddCycles(ONE_CYCLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Flag Instructions ******************************************************* */
|
/* Flag Instructions ******************************************************* */
|
||||||
@ -2847,6 +2849,7 @@ static void Op22E1 (void)
|
|||||||
// Note: JSL is a new instruction,
|
// Note: JSL is a new instruction,
|
||||||
// and so doesn't respect the emu-mode stack bounds.
|
// and so doesn't respect the emu-mode stack bounds.
|
||||||
uint32 addr = AbsoluteLong(JSR);
|
uint32 addr = AbsoluteLong(JSR);
|
||||||
|
AddCycles(ONE_CYCLE);
|
||||||
PushB(Registers.PB);
|
PushB(Registers.PB);
|
||||||
PushW(Registers.PCw - 1);
|
PushW(Registers.PCw - 1);
|
||||||
Registers.SH = 1;
|
Registers.SH = 1;
|
||||||
@ -2856,6 +2859,7 @@ static void Op22E1 (void)
|
|||||||
static void Op22E0 (void)
|
static void Op22E0 (void)
|
||||||
{
|
{
|
||||||
uint32 addr = AbsoluteLong(JSR);
|
uint32 addr = AbsoluteLong(JSR);
|
||||||
|
AddCycles(ONE_CYCLE);
|
||||||
PushB(Registers.PB);
|
PushB(Registers.PB);
|
||||||
PushW(Registers.PCw - 1);
|
PushW(Registers.PCw - 1);
|
||||||
S9xSetPCBase(addr);
|
S9xSetPCBase(addr);
|
||||||
@ -2864,6 +2868,7 @@ static void Op22E0 (void)
|
|||||||
static void Op22Slow (void)
|
static void Op22Slow (void)
|
||||||
{
|
{
|
||||||
uint32 addr = AbsoluteLongSlow(JSR);
|
uint32 addr = AbsoluteLongSlow(JSR);
|
||||||
|
AddCycles(ONE_CYCLE);
|
||||||
PushB(Registers.PB);
|
PushB(Registers.PB);
|
||||||
PushW(Registers.PCw - 1);
|
PushW(Registers.PCw - 1);
|
||||||
if (CheckEmulation())
|
if (CheckEmulation())
|
||||||
|
Loading…
Reference in New Issue
Block a user