bugfixes, cd/Memory.s
[picodrive.git] / Pico / Memory.s
index 02c5a2c..8fd4e13 100644 (file)
@@ -1,3 +1,5 @@
+@ vim:filetype=armasm\r
+\r
 @ memory handlers with banking support for SSF II - The New Challengers\r
 @ mostly based on Gens code\r
 \r
@@ -485,18 +487,20 @@ m_read16_romF: @ 0x780000 - 0x7fffff
     m_read16_rom 0xF\r
 \r
 m_read16_misc:\r
-    mov     r1, #16\r
-    ldr     r2, =OtherRead16\r
     bic     r0, r0, #1\r
-    bx      r2\r
+    mov     r1, #16\r
+    b       OtherRead16\r
+@    ldr     r2, =OtherRead16\r
+@    bx      r2\r
 \r
 m_read16_vdp:\r
     tst     r0, #0x70000\r
     tsteq   r0, #0x000e0\r
     bxne    lr              @ invalid read\r
-    ldr     r1, =PicoVideoRead\r
     bic     r0, r0, #1\r
-    bx      r1\r
+    b       PicoVideoRead\r
+@    ldr     r1, =PicoVideoRead\r
+@    bx      r1\r
 \r
 m_read16_ram:\r
     ldr     r1, =Pico\r
@@ -506,10 +510,11 @@ m_read16_ram:
     bx      lr\r
 \r
 m_read16_above_rom:\r
-    mov     r1, #16\r
-    ldr     r2, =OtherRead16End\r
     bic     r0, r0, #1\r
-    bx      r2\r
+    mov     r1, #16\r
+    b       OtherRead16End\r
+@    ldr     r2, =OtherRead16End\r
+@    bx      r2\r
 \r
 .pool\r
 \r
@@ -633,12 +638,10 @@ m_read32_vdp:
     tsteq   r0, #0x000e0\r
     bxne    lr              @ invalid read\r
     bic     r0, r0, #1\r
-    stmfd   sp!,{r0,lr}\r
+    add     r1, r0, #2\r
+    stmfd   sp!,{r1,lr}\r
     bl      PicoVideoRead\r
-    mov     r1, r0\r
-    ldmfd   sp!,{r0}\r
-    stmfd   sp!,{r1}\r
-    add     r0, r0, #2\r
+    swp     r0, r0, [sp]\r
     bl      PicoVideoRead\r
     ldmfd   sp!,{r1,lr}\r
     orr     r0, r0, r1, lsl #16\r