Browse Source

FPGA: add BS-X "hole" (regs 09-0b)

Maximilian Rehkopf 11 years ago
parent
commit
1f5af01bc0
2 changed files with 11 additions and 0 deletions
  1. 9 0
      verilog/sd2snes/address.v
  2. 2 0
      verilog/sd2snes/main.v

+ 9 - 0
verilog/sd2snes/address.v

@@ -33,6 +33,7 @@ module address(
   output msu_enable,
   output srtc_enable,
   output use_bsx,
+  output bsx_tristate,
   input [14:0] bsx_regs,
   output dspx_enable,
   output dspx_dp_enable,
@@ -115,6 +116,14 @@ wire BSX_IS_CARTROM = ((bsx_regs[7] & (SNES_ADDR[23:22] == 2'b00))
                       |(bsx_regs[8] & (SNES_ADDR[23:22] == 2'b10)))
 							 & SNES_ADDR[15];
 
+wire BSX_HOLE_LOHI = (bsx_regs[9] & ~SNES_ADDR[23]) | (bsx_regs[10] & SNES_ADDR[23]);
+
+wire BSX_IS_HOLE = BSX_HOLE_LOHI
+                   & (bsx_regs[2] ? (SNES_ADDR[21:20] == {bsx_regs[11], 1'b0})
+                                  : (SNES_ADDR[22:21] == {bsx_regs[11], 1'b0}));
+
+assign bsx_tristate = (MAPPER == 3'b011) & ~BSX_IS_CARTROM & ~BSX_IS_PSRAM & BSX_IS_HOLE;
+
 assign IS_WRITABLE = IS_SAVERAM
                      |((MAPPER == 3'b011)
                        ? BSX_IS_PSRAM

+ 2 - 0
verilog/sd2snes/main.v

@@ -440,6 +440,7 @@ address snes_addr(
   .bs_page_offset(bs_page_offset),
   .bs_page(bs_page),
   .bs_page_enable(bs_page_enable),
+  .bsx_tristate(bsx_tristate),
   //SRTC
   .srtc_enable(srtc_enable),
   //uPD77C25
@@ -739,6 +740,7 @@ assign SNES_DATABUS_OE = (dspx_enable | dspx_dp_enable) ? 1'b0 :
                          ((IS_ROM & SNES_CS)
                           |(!IS_ROM & !IS_SAVERAM & !IS_WRITABLE & !IS_FLASHWR)
                           |(SNES_READr[0] & SNES_WRITEr[0])
+                          | bsx_tristate
                          );
 
 assign SNES_DATABUS_DIR = (!SNES_READr[0] | (!SNES_PARD & (r213f_enable | snescmd_rd_enable)))