Skip to content

Commit a0647ff

Browse files
committed
GBA SIO: Loosen timing where possible
This loosens the timing for detecting when a second device attaches, as well as delaying hard sync when transfers sync too
1 parent e1355b8 commit a0647ff

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

src/gba/sio/lockstep.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#define DRIVER_ID 0x6B636F4C
1212
#define DRIVER_STATE_VERSION 1
1313
#define LOCKSTEP_INTERVAL 4096
14-
#define UNLOCKED_INTERVAL 4096
14+
#define UNLOCKED_INTERVAL 8192
1515
#define HARD_SYNC_INTERVAL 0x80000
1616
#define TARGET(P) (1 << (P))
1717
#define TARGET_ALL 0xF
@@ -923,11 +923,8 @@ void _lockstepEvent(struct mTiming* timing, void* context, uint32_t cyclesLate)
923923
if (!coordinator->transferActive) {
924924
GBASIOLockstepCoordinatorWakePlayers(coordinator);
925925
}
926-
if (coordinator->nextHardSync < 0) {
927-
if (!coordinator->waiting) {
928-
_hardSync(coordinator, player);
929-
}
930-
coordinator->nextHardSync += HARD_SYNC_INTERVAL;
926+
if (coordinator->nextHardSync < 0 && !coordinator->waiting) {
927+
_hardSync(coordinator, player);
931928
}
932929
}
933930

@@ -1075,6 +1072,7 @@ void GBASIOLockstepCoordinatorAckPlayer(struct GBASIOLockstepCoordinator* coordi
10751072
coordinator->transferActive = false;
10761073
}
10771074

1075+
coordinator->nextHardSync = HARD_SYNC_INTERVAL;
10781076
struct GBASIOLockstepPlayer* runner = TableLookup(&coordinator->players, coordinator->attachedPlayers[0]);
10791077
GBASIOLockstepPlayerWake(runner);
10801078
}

0 commit comments

Comments
 (0)