Merge pull request #562 from gameblabla/cdrom_fixes_libretro_precautions
[pcsx_rearmed.git] / libpcsxcore / psxhw.c
index 5981ee5..dbcb989 100644 (file)
@@ -44,7 +44,7 @@ void psxHwReset() {
 u8 psxHwRead8(u32 add) {
        unsigned char hard;
 
-       switch (add) {
+       switch (add & 0x1fffffff) {
                case 0x1f801040: hard = sioRead8();break; \r
 #ifdef ENABLE_SIO1API
                case 0x1f801050: hard = SIO1_readData8(); break;\r
@@ -70,7 +70,7 @@ u8 psxHwRead8(u32 add) {
 u16 psxHwRead16(u32 add) {
        unsigned short hard;
 
-       switch (add) {
+       switch (add & 0x1fffffff) {
 #ifdef PSXHW_LOG
                case 0x1f801070: PSXHW_LOG("IREG 16bit read %x\n", psxHu16(0x1070));
                        return psxHu16(0x1070);
@@ -211,7 +211,7 @@ u16 psxHwRead16(u32 add) {
 u32 psxHwRead32(u32 add) {
        u32 hard;
 
-       switch (add) {
+       switch (add & 0x1fffffff) {
                case 0x1f801040:
                        hard = sioRead8();
                        hard |= sioRead8() << 8;
@@ -362,7 +362,7 @@ u32 psxHwRead32(u32 add) {
 }
 
 void psxHwWrite8(u32 add, u8 value) {
-       switch (add) {
+       switch (add & 0x1fffffff) {
                case 0x1f801040: sioWrite8(value); break;\r
 #ifdef ENABLE_SIO1API
                case 0x1f801050: SIO1_writeData8(value); break;\r
@@ -386,7 +386,7 @@ void psxHwWrite8(u32 add, u8 value) {
 }
 
 void psxHwWrite16(u32 add, u16 value) {
-       switch (add) {
+       switch (add & 0x1fffffff) {
                case 0x1f801040:
                        sioWrite8((unsigned char)value);
                        sioWrite8((unsigned char)(value>>8));
@@ -525,7 +525,7 @@ void psxHwWrite16(u32 add, u16 value) {
 }
 
 void psxHwWrite32(u32 add, u32 value) {
-       switch (add) {
+       switch (add & 0x1fffffff) {
            case 0x1f801040:
                        sioWrite8((unsigned char)value);
                        sioWrite8((unsigned char)((value&0xff) >>  8));