bugfixes, CD swap, autorepeat
[picodrive.git] / Pico / Memory.s
index 8fd4e13..1c259f2 100644 (file)
@@ -443,6 +443,7 @@ m_read16_rom4: @ 0x200000 - 0x27ffff, SRAM area (NBA Live 95)
     mov     r0, r0, lsr #8\r
     orr     r0, r0, r1, lsl #8\r
     bx      lr\r
+\r
 m_read16_nosram:\r
     ldr     r1, [r3, #4]    @ 1ci\r
     cmp     r0, r1\r
@@ -490,8 +491,6 @@ m_read16_misc:
     bic     r0, r0, #1\r
     mov     r1, #16\r
     b       OtherRead16\r
-@    ldr     r2, =OtherRead16\r
-@    bx      r2\r
 \r
 m_read16_vdp:\r
     tst     r0, #0x70000\r
@@ -499,8 +498,6 @@ m_read16_vdp:
     bxne    lr              @ invalid read\r
     bic     r0, r0, #1\r
     b       PicoVideoRead\r
-@    ldr     r1, =PicoVideoRead\r
-@    bx      r1\r
 \r
 m_read16_ram:\r
     ldr     r1, =Pico\r
@@ -513,8 +510,6 @@ m_read16_above_rom:
     bic     r0, r0, #1\r
     mov     r1, #16\r
     b       OtherRead16End\r
-@    ldr     r2, =OtherRead16End\r
-@    bx      r2\r
 \r
 .pool\r
 \r
@@ -573,6 +568,7 @@ m_read32_rom4: @ 0x200000 - 0x27ffff, SRAM area (does any game do long reads?)
     and     r1, r1, #0xff\r
     orr     r0, r0, r1, lsl #8\r
     bx      lr\r
+\r
 m_read32_nosram:\r
     ldr     r1, [r3, #4]    @ (1ci)\r
     cmp     r0, r1\r
@@ -682,8 +678,11 @@ PicoWriteRomHW_SSF2: @ u32 a, u32 d
 \r
     @ sram register\r
     ldr     r2, =(Pico+0x22211) @ Pico.m.sram_reg\r
+    ldrb    r0, [r2]\r
     and     r1, r1, #3\r
-    strb    r1, [r2]\r
+    bic     r0, r0, #3\r
+    orr     r0, r0, r1\r
+    strb    r0, [r2]\r
     bx      lr\r
 \r
 pwr_banking:\r
@@ -705,3 +704,4 @@ pwr_banking:
     str     r12, [r2, r0, lsl #2]\r
  \r
     bx      lr\r
+\r