Skip to content

Commit be06e49

Browse files
Merge pull request #3 from vanfanel/SA1_update
SA1: fixes for write protection.
2 parents fd097bd + dde9e3d commit be06e49

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/fpga/core/rtl/chip/SA1/SA1.vhd

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ SNES_BWRAM_SEL <= SNES_BWRAM_ACCESS and not WINDOW;
320320
SNES_IRAM_SEL <= (SNES_IRAM_ACCESS and SNES_SYSCLK) or (SNES_CCDMA_IRAM_ACCESS and not WINDOW);
321321

322322
SA1_ROM_ACCESS <= '1' when (P65_A(22) = '0' and P65_A(15) = '1') or (P65_A(23 downto 22) = "11") else '0';
323-
SA1_BWRAM_ACCESS <= '1' when P65_A(23 downto 20) = x"4" or (P65_A(22) = '0' and P65_A(15 downto 13) = "011" and SBW46 = '0') else '0';
323+
SA1_BWRAM_ACCESS <= '1' when P65_A(23 downto 20) = x"4" or P65_A(23 downto 20) = x"5" or (P65_A(22) = '0' and P65_A(15 downto 13) = "011" and SBW46 = '0') else '0';
324324
SA1_BBF_ACCESS <= '1' when P65_A(23 downto 20) = x"6" or (P65_A(22) = '0' and P65_A(15 downto 13) = "011" and SBW46 = '1') else '0';
325325
SA1_IRAM_ACCESS <= '1' when P65_A(22) = '0' and (P65_A(15 downto 11) = x"0" & "0" or P65_A(15 downto 11) = x"3" & "0") else '0';
326326
SA1_MMIO_WRITE_ACCESS <= '1' when P65_A(22) = '0' and P65_A(15 downto 8) = x"22" else '0';
@@ -575,8 +575,8 @@ begin
575575
end case;
576576
end process;
577577

578-
SA1_BWRAM_WE <= SBWE(7) or CBWE(7) when (P65_A(17 downto 8) and not BWRAM_WP_MASK) = "0000000000" and P65_A(23 downto 20) = x"4" else '1';
579-
SNES_BWRAM_WE <= SBWE(7) or CBWE(7) when (SNES_A(17 downto 8) and not BWRAM_WP_MASK) = "0000000000" and SNES_A(23 downto 20) = x"4" else '1';
578+
SA1_BWRAM_WE <= SBWE(7) or CBWE(7) when (SA1_BWRAM_MAP_A(17 downto 8) and not BWRAM_WP_MASK) = "0000000000" and SA1_BWRAM_ACCESS = '1' else '1';
579+
SNES_BWRAM_WE <= SBWE(7) or CBWE(7) when (SNES_BWRAM_MAP_A(17 downto 8) and not BWRAM_WP_MASK) = "0000000000" and SNES_BWRAM_ACCESS = '1' else '1';
580580
BWRAM_A <= CC1_BWRAM_RD_ADDR when CCDMA_SRC_BWRAM_SEL = '1' else
581581
SNES_BWRAM_MAP_A when SNES_BWRAM_SEL = '1' else
582582
SDA(17 downto 0) when DMA_SRC_BWRAM_SEL = '1' and DMA_BWRAM_WAIT = '0' else
@@ -1141,6 +1141,9 @@ begin
11411141
if SNES_DI(4) = '1' then
11421142
SA1_NMI_FLAG <= '1';
11431143
end if;
1144+
if SNES_DI(5) = '1' then
1145+
CIWP <= (others => '0');
1146+
end if;
11441147
when x"01" => --SIE
11451148
CDMA_IRQ_EN <= SNES_DI(5);
11461149
SNES_IRQ_EN <= SNES_DI(7);

0 commit comments

Comments
 (0)