diff --git a/Assets/dll/gpgx.wbx.gz b/Assets/dll/gpgx.wbx.gz index 902984b858..1901cd3df3 100644 Binary files a/Assets/dll/gpgx.wbx.gz and b/Assets/dll/gpgx.wbx.gz differ diff --git a/waterbox/gpgx/core/mem68k.c b/waterbox/gpgx/core/mem68k.c index 56353cc3e8..fa5c52d23e 100644 --- a/waterbox/gpgx/core/mem68k.c +++ b/waterbox/gpgx/core/mem68k.c @@ -416,13 +416,13 @@ unsigned int ctrl_io_read_byte(unsigned int address) case 0x44: /* RADICA */ case 0x50: /* SVP */ { - if ((address & 0xFC) == 0x00) + if (svp && (address & 0xFC) == 0x00) { unsigned int data = svp->ssp1601.gr[SSP_XST].byte.h; return (address & 1) ? (data & 0xFF) : (data >> 8); } - if ((address & 0xFE) == 0x04) + if (svp && (address & 0xFE) == 0x04) { unsigned int data = svp->ssp1601.gr[SSP_PM0].byte.h; svp->ssp1601.gr[SSP_PM0].byte.h &= ~1; @@ -544,12 +544,12 @@ unsigned int ctrl_io_read_word(unsigned int address) case 0x50: /* SVP */ { - if ((address & 0xFC) == 0) + if (svp && (address & 0xFC) == 0) { return svp->ssp1601.gr[SSP_XST].byte.h; } - if ((address & 0xFE) == 4) + if (svp && (address & 0xFE) == 4) { unsigned int data = svp->ssp1601.gr[SSP_PM0].byte.h; svp->ssp1601.gr[SSP_PM0].byte.h &= ~1; @@ -1005,7 +1005,7 @@ void ctrl_io_write_word(unsigned int address, unsigned int data) case 0x50: /* SVP */ { - if (!(address & 0xFD)) + if (svp && !(address & 0xFD)) { svp->ssp1601.gr[SSP_XST].byte.h = data; svp->ssp1601.gr[SSP_PM0].byte.h |= 2;