aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authorgameblabla2019-07-18 02:38:32 +0200
committergameblabla2019-07-18 02:38:32 +0200
commitf25c285bec9371ff3f48a140bf1e4a88bd6f779d (patch)
tree6eb59bd07c5fe1b9844c5a2ddbe287fcf68ee868 /libpcsxcore
parent21af3ff6a2e100cd956525978808f35127dde843 (diff)
downloadpcsx_rearmed-f25c285bec9371ff3f48a140bf1e4a88bd6f779d.tar.gz
pcsx_rearmed-f25c285bec9371ff3f48a140bf1e4a88bd6f779d.tar.bz2
pcsx_rearmed-f25c285bec9371ff3f48a140bf1e4a88bd6f779d.zip
psxbios: Merge PCSX4ALL pad_stopped fix.
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/psxbios.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c
index 394dddc..98943b0 100644
--- a/libpcsxcore/psxbios.c
+++ b/libpcsxcore/psxbios.c
@@ -245,6 +245,7 @@ static u32 *jmp_int = NULL;
static int *pad_buf = NULL;
static char *pad_buf1 = NULL, *pad_buf2 = NULL;
static int pad_buf1len, pad_buf2len;
+static int pad_stopped = 0;
static u32 regs[35];
static EvCB *Event;
@@ -1914,7 +1915,7 @@ void psxBios_StartPAD() { // 13
#ifdef PSXBIOS_LOG
PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x13]);
#endif
-
+ pad_stopped = 0;
psxHwWrite16(0x1f801074, (unsigned short)(psxHwRead16(0x1f801074) | 0x1));
psxRegs.CP0.n.Status |= 0x401;
pc0 = ra;
@@ -1924,6 +1925,7 @@ void psxBios_StopPAD() { // 14
#ifdef PSXBIOS_LOG
PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x14]);
#endif
+ pad_stopped = 1;
if (pad_buf == 0){
pad_buf1 = NULL;
pad_buf2 = NULL;
@@ -3138,12 +3140,14 @@ void biosInterrupt() {
if (NET_recvPadData(pad_buf2, 2) == -1)
netError();
} else {
- if (pad_buf1) {
- psxBios_PADpoll(1);
- }
+ if (!pad_stopped) {
+ if (pad_buf1) {
+ psxBios_PADpoll(1);
+ }
- if (pad_buf2) {
- psxBios_PADpoll(2);
+ if (pad_buf2) {
+ psxBios_PADpoll(2);
+ }
}
}
@@ -3271,6 +3275,7 @@ void psxBiosException() {
void psxBiosFreeze(int Mode) {
u32 base = 0x40000;
+ pad_stopped = 0;
bfreezepsxMptr(jmp_int, u32);
bfreezepsxMptr(pad_buf, int);
bfreezepsxMptr(pad_buf1, char);