瀏覽代碼

Correct LoROM SRAM mapping for smaller ROMs

SRAM is sometimes mapped not just to 70:0000-7fff but also to
70:8000-ffff if ROM size permits it (i.e. the ROM is small enough
to avoid overlap).
Map SRAM to 8000-ffff if the ROM mask denotes a ROM <= 16 MBits.
Maximilian Rehkopf 11 年之前
父節點
當前提交
39b07df47e
共有 1 個文件被更改,包括 3 次插入3 次删除
  1. 3 3
      verilog/sd2snes/address.v

+ 3 - 3
verilog/sd2snes/address.v

@@ -86,12 +86,12 @@ assign IS_SAVERAM = SAVERAM_MASK[0]
                          & &SNES_ADDR[14:13]
                          & !SNES_ADDR[15]
                         )
-/*  LoROM:   SRAM @ Bank 0x70-0x7d, 0xf0-0xfd Offset 0000-7fff
-             TODO: 0000-ffff for small ROMs? */
+/*  LoROM:   SRAM @ Bank 0x70-0x7d, 0xf0-0xfd
+ *  Offset 0000-7fff for ROM >= 32 MBit, otherwise 0000-ffff */
                       :(MAPPER == 3'b001)
                       ? (&SNES_ADDR[22:20]
                          & (SNES_ADDR[19:16] < 4'b1110)
-                         & !SNES_ADDR[15]
+                         & (~SNES_ADDR[15] | ~ROM_MASK[21])
                         )
 /*  BS-X: SRAM @ Bank 0x10-0x17 Offset 5000-5fff */
                       :(MAPPER == 3'b011)