+@ vim:filetype=armasm\r
+\r
@ memory handlers with banking support for SSF II - The New Challengers\r
@ mostly based on Gens code\r
\r
-@ (c) Copyright 2006, notaz\r
+@ (c) Copyright 2006-2007, Grazvydas "notaz" Ignotas\r
@ All Rights Reserved\r
\r
\r
.long m_read8_rom5 @ 0x280000 - 0x2FFFFF\r
.long m_read8_rom6 @ 0x300000 - 0x37FFFF\r
.long m_read8_rom7 @ 0x380000 - 0x3FFFFF\r
- .long m_read8_rom8 @ 0x400000 - 0x47FFFF\r
+ .long m_read8_rom8 @ 0x400000 - 0x47FFFF - for all those large ROM hacks\r
.long m_read8_rom9 @ 0x480000 - 0x4FFFFF\r
.long m_read8_romA @ 0x500000 - 0x57FFFF\r
.long m_read8_romB @ 0x580000 - 0x5FFFFF\r
.long m_read8_romD @ 0x680000 - 0x6FFFFF\r
.long m_read8_romE @ 0x700000 - 0x77FFFF\r
.long m_read8_romF @ 0x780000 - 0x7FFFFF\r
- .long m_read_null @ 0x800000 - 0x87FFFF\r
- .long m_read_null @ 0x880000 - 0x8FFFFF\r
- .long m_read_null @ 0x900000 - 0x97FFFF\r
- .long m_read_null @ 0x980000 - 0x9FFFFF\r
+ .long m_read8_rom10 @ 0x800000 - 0x87FFFF\r
+ .long m_read8_rom11 @ 0x880000 - 0x8FFFFF\r
+ .long m_read8_rom12 @ 0x900000 - 0x97FFFF\r
+ .long m_read8_rom13 @ 0x980000 - 0x9FFFFF\r
.long m_read8_misc @ 0xA00000 - 0xA7FFFF\r
.long m_read_null @ 0xA80000 - 0xAFFFFF\r
.long m_read_null @ 0xB00000 - 0xB7FFFF\r
.long m_read16_romD @ 0x680000 - 0x6FFFFF\r
.long m_read16_romE @ 0x700000 - 0x77FFFF\r
.long m_read16_romF @ 0x780000 - 0x7FFFFF\r
- .long m_read_null @ 0x800000 - 0x87FFFF\r
- .long m_read_null @ 0x880000 - 0x8FFFFF\r
- .long m_read_null @ 0x900000 - 0x97FFFF\r
- .long m_read_null @ 0x980000 - 0x9FFFFF\r
+ .long m_read16_rom10 @ 0x800000 - 0x87FFFF\r
+ .long m_read16_rom11 @ 0x880000 - 0x8FFFFF\r
+ .long m_read16_rom12 @ 0x900000 - 0x97FFFF\r
+ .long m_read16_rom13 @ 0x980000 - 0x9FFFFF\r
.long m_read16_misc @ 0xA00000 - 0xA7FFFF\r
.long m_read_null @ 0xA80000 - 0xAFFFFF\r
.long m_read_null @ 0xB00000 - 0xB7FFFF\r
.long m_read32_romD @ 0x680000 - 0x6FFFFF\r
.long m_read32_romE @ 0x700000 - 0x77FFFF\r
.long m_read32_romF @ 0x780000 - 0x7FFFFF\r
- .long m_read_null @ 0x800000 - 0x87FFFF\r
- .long m_read_null @ 0x880000 - 0x8FFFFF\r
- .long m_read_null @ 0x900000 - 0x97FFFF\r
- .long m_read_null @ 0x980000 - 0x9FFFFF\r
+ .long m_read32_rom10 @ 0x800000 - 0x87FFFF\r
+ .long m_read32_rom11 @ 0x880000 - 0x8FFFFF\r
+ .long m_read32_rom12 @ 0x900000 - 0x97FFFF\r
+ .long m_read32_rom13 @ 0x980000 - 0x9FFFFF\r
.long m_read32_misc @ 0xA00000 - 0xA7FFFF\r
.long m_read_null @ 0xA80000 - 0xAFFFFF\r
.long m_read_null @ 0xB00000 - 0xB7FFFF\r
m_read8_rom9: @ 0x480000 - 0x4fffff\r
m_read8_rom 9\r
\r
-@ is any ROM using that much?\r
m_read8_romA: @ 0x500000 - 0x57ffff\r
m_read8_rom 0xA\r
\r
m_read8_romF: @ 0x780000 - 0x7fffff\r
m_read8_rom 0xF\r
\r
+m_read8_rom10: @ 0x800000 - 0x87ffff\r
+ m_read8_rom 0x10\r
+\r
+m_read8_rom11: @ 0x880000 - 0x8fffff\r
+ m_read8_rom 0x11\r
+\r
+m_read8_rom12: @ 0x900000 - 0x97ffff\r
+ m_read8_rom 0x12\r
+\r
+m_read8_rom13: @ 0x980000 - 0x9fffff\r
+ m_read8_rom 0x13\r
+\r
m_read8_misc:\r
bic r2, r0, #0x00ff\r
bic r2, r2, #0xbf00\r
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
m_read16_rom9: @ 0x480000 - 0x4fffff\r
m_read16_rom 9\r
\r
-@ is any ROM using that much?\r
m_read16_romA: @ 0x500000 - 0x57ffff\r
m_read16_rom 0xA\r
\r
m_read16_romF: @ 0x780000 - 0x7fffff\r
m_read16_rom 0xF\r
\r
+m_read16_rom10: @ 0x800000 - 0x87ffff\r
+ m_read16_rom 0x10\r
+\r
+m_read16_rom11: @ 0x880000 - 0x8fffff\r
+ m_read16_rom 0x11\r
+\r
+m_read16_rom12: @ 0x900000 - 0x97ffff\r
+ m_read16_rom 0x12\r
+\r
+m_read16_rom13: @ 0x980000 - 0x9fffff\r
+ m_read16_rom 0x13\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
\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
\r
m_read16_ram:\r
ldr r1, =Pico\r
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
\r
.pool\r
\r
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
m_read32_rom9: @ 0x480000 - 0x4fffff\r
m_read32_rom 9\r
\r
-@ is any ROM using that much?\r
m_read32_romA: @ 0x500000 - 0x57ffff\r
m_read32_rom 0xA\r
\r
m_read32_romF: @ 0x780000 - 0x7fffff\r
m_read32_rom 0xF\r
\r
+m_read32_rom10: @ 0x800000 - 0x87ffff\r
+ m_read32_rom 0x10\r
+\r
+m_read32_rom11: @ 0x880000 - 0x8fffff\r
+ m_read32_rom 0x11\r
+\r
+m_read32_rom12: @ 0x900000 - 0x97ffff\r
+ m_read32_rom 0x12\r
+\r
+m_read32_rom13: @ 0x980000 - 0x9fffff\r
+ m_read32_rom 0x13\r
+\r
m_read32_misc:\r
bic r0, r0, #1\r
stmfd sp!,{r0,lr}\r
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
\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
str r12, [r2, r0, lsl #2]\r
\r
bx lr\r
+\r