mirror of
https://github.com/MiSTer-devel/MegaCD_MiSTer.git
synced 2026-05-17 03:04:03 +00:00
CRAM Dots
This commit is contained in:
26
MegaCD.sv
26
MegaCD.sv
@@ -40,9 +40,9 @@ module emu
|
||||
output CE_PIXEL,
|
||||
|
||||
//Video aspect ratio for HDMI. Most retro systems have ratio 4:3.
|
||||
//if VIDEO_ARX[12] or VIDEO_ARY[12] is set then [11:0] contains scaled size instead of aspect ratio.
|
||||
output [12:0] VIDEO_ARX,
|
||||
output [12:0] VIDEO_ARY,
|
||||
//if VIDEO_ARX[12] or VIDEO_ARY[12] is set then [11:0] contains scaled size instead of aspect ratio.
|
||||
output [12:0] VIDEO_ARX,
|
||||
output [12:0] VIDEO_ARY,
|
||||
|
||||
output [7:0] VGA_R,
|
||||
output [7:0] VGA_G,
|
||||
@@ -53,9 +53,9 @@ module emu
|
||||
output VGA_F1,
|
||||
output [1:0] VGA_SL,
|
||||
output VGA_SCALER, // Force VGA scaler
|
||||
|
||||
input [11:0] HDMI_WIDTH,
|
||||
input [11:0] HDMI_HEIGHT,
|
||||
|
||||
input [11:0] HDMI_WIDTH,
|
||||
input [11:0] HDMI_HEIGHT,
|
||||
|
||||
`ifdef USE_FB
|
||||
// Use framebuffer in DDRAM (USE_FB=1 in qsf)
|
||||
@@ -224,15 +224,15 @@ always @(posedge CLK_VIDEO) begin
|
||||
end
|
||||
|
||||
wire vga_de;
|
||||
video_freak video_freak
|
||||
video_freak video_freak
|
||||
(
|
||||
.*,
|
||||
.VGA_DE_IN(vga_de),
|
||||
.ARX((!ar) ? arx : (ar - 1'd1)),
|
||||
.ARY((!ar) ? ary : 12'd0),
|
||||
.CROP_SIZE((en216p & vcrop_en) ? 10'd216 : 10'd0),
|
||||
.CROP_OFF(voff),
|
||||
.SCALE(status[56:55])
|
||||
.CROP_OFF(voff),
|
||||
.SCALE(status[56:55])
|
||||
);
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
@@ -278,12 +278,13 @@ localparam CONF_STR = {
|
||||
"P1OU,320x224 Aspect,Original,Corrected;",
|
||||
"P1o13,Scandoubler Fx,None,HQ2x,CRT 25%,CRT 50%,CRT 75%;",
|
||||
"P1-;",
|
||||
"d9P1o0,Vertical Crop,Disabled,216p(5x);",
|
||||
"d9P1oJM,Crop Offset,0,2,4,8,10,12,-12,-10,-8,-6,-4,-2;",
|
||||
"d9P1o0,Vertical Crop,Disabled,216p(5x);",
|
||||
"d9P1oJM,Crop Offset,0,2,4,8,10,12,-12,-10,-8,-6,-4,-2;",
|
||||
"P1oNO,Scale,Normal,V-Integer,Narrower HV-Integer,Wider HV-Integer;",
|
||||
"P1- ;",
|
||||
"P1- ;",
|
||||
"P1OT,Border,No,Yes;",
|
||||
"P1oFG,Composite Blend,Off,On,Adaptive;",
|
||||
"P1OA,CRAM Dots,Off,On;",
|
||||
"P1OV,Sprite Limit,Normal,High;",
|
||||
"P1-;",
|
||||
"P1OEF,Audio Filter,Model 1,Model 2,Minimal,No Filter;",
|
||||
@@ -571,6 +572,7 @@ gen gen
|
||||
.HBL(hblank),
|
||||
.VBL(vblank),
|
||||
.BORDER(status[29]),
|
||||
.CRAM_DOTS(status[10]),
|
||||
.CE_PIX(ce_pix),
|
||||
.FIELD(VGA_F1),
|
||||
.INTERLACE(interlace),
|
||||
|
||||
@@ -89,6 +89,7 @@ module gen
|
||||
output VBL,
|
||||
output CE_PIX,
|
||||
output TRANSP_DETECT,
|
||||
input CRAM_DOTS,
|
||||
input BORDER,
|
||||
|
||||
output INTERLACE,
|
||||
@@ -425,6 +426,7 @@ vdp vdp
|
||||
// .VRAM_SPEED(1),
|
||||
// .VSCROLL_BUG(0),
|
||||
.BORDER_EN(BORDER),
|
||||
.CRAM_DOTS(CRAM_DOTS),
|
||||
.OBJ_LIMIT_HIGH_EN(OBJ_LIMIT_HIGH),
|
||||
|
||||
.FIELD_OUT(FIELD),
|
||||
|
||||
@@ -112,6 +112,7 @@ entity vdp is
|
||||
VRAM_SPEED : in std_logic := '1'; -- 0 - full speed, 1 - FIFO throttle emulation
|
||||
VSCROLL_BUG : in std_logic := '1'; -- 0 - use nicer effect, 1 - HW original
|
||||
BORDER_EN : in std_logic := '0'; -- Enable border
|
||||
CRAM_DOTS : in std_logic := '0'; -- Enable CRAM dots
|
||||
OBJ_LIMIT_HIGH_EN : in std_logic := '0'; -- Enable more sprites and pixels per line
|
||||
TRANSP_DETECT : out std_logic
|
||||
);
|
||||
@@ -134,6 +135,7 @@ signal CRAM_WE_A : std_logic;
|
||||
signal CRAM_WE_B : std_logic;
|
||||
signal CRAM_Q_A : std_logic_vector(8 downto 0);
|
||||
signal CRAM_Q_B : std_logic_vector(8 downto 0);
|
||||
signal CRAM_DATA : std_logic_vector(8 downto 0);
|
||||
|
||||
signal VSRAM0_ADDR_A : std_logic_vector( 4 downto 0);
|
||||
signal VSRAM0_ADDR_B : std_logic_vector( 4 downto 0);
|
||||
@@ -833,6 +835,7 @@ port map(
|
||||
q_b => CRAM_Q_B
|
||||
);
|
||||
CRAM_WE_B <= '0';
|
||||
CRAM_DATA <= CRAM_D_A when CRAM_WE_A = '1' and CRAM_DOTS = '1' else CRAM_Q_B;
|
||||
|
||||
vsram0 : entity work.DualPortRAM
|
||||
generic map (
|
||||
@@ -2678,21 +2681,21 @@ begin
|
||||
else case PIX_MODE is
|
||||
when PIX_SHADOW =>
|
||||
-- half brightness
|
||||
FF_B <= '0' & CRAM_Q_B(8 downto 6);
|
||||
FF_G <= '0' & CRAM_Q_B(5 downto 3);
|
||||
FF_R <= '0' & CRAM_Q_B(2 downto 0);
|
||||
FF_B <= '0' & CRAM_DATA(8 downto 6);
|
||||
FF_G <= '0' & CRAM_DATA(5 downto 3);
|
||||
FF_R <= '0' & CRAM_DATA(2 downto 0);
|
||||
|
||||
when PIX_NORMAL =>
|
||||
-- normal brightness
|
||||
FF_B <= CRAM_Q_B(8 downto 6) & '0';
|
||||
FF_G <= CRAM_Q_B(5 downto 3) & '0';
|
||||
FF_R <= CRAM_Q_B(2 downto 0) & '0';
|
||||
FF_B <= CRAM_DATA(8 downto 6) & '0';
|
||||
FF_G <= CRAM_DATA(5 downto 3) & '0';
|
||||
FF_R <= CRAM_DATA(2 downto 0) & '0';
|
||||
|
||||
when PIX_HIGHLIGHT =>
|
||||
-- increased brightness
|
||||
FF_B <= '0' & CRAM_Q_B(8 downto 6) + 7;
|
||||
FF_G <= '0' & CRAM_Q_B(5 downto 3) + 7;
|
||||
FF_R <= '0' & CRAM_Q_B(2 downto 0) + 7;
|
||||
FF_B <= '0' & CRAM_DATA(8 downto 6) + 7;
|
||||
FF_G <= '0' & CRAM_DATA(5 downto 3) + 7;
|
||||
FF_R <= '0' & CRAM_DATA(2 downto 0) + 7;
|
||||
end case;
|
||||
end if;
|
||||
|
||||
@@ -2912,7 +2915,10 @@ begin
|
||||
if FIFO_DELAY(3) /= "00" then FIFO_DELAY(3) <= FIFO_DELAY(3) - 1; end if;
|
||||
end if;
|
||||
|
||||
CRAM_WE_A <= '0';
|
||||
-- Extend CRAM write enable for CRAM dots
|
||||
if CE_PIX = '1' then
|
||||
CRAM_WE_A <= '0';
|
||||
end if;
|
||||
|
||||
SOVR_CLR <= '0';
|
||||
SCOL_CLR <= '0';
|
||||
|
||||
Reference in New Issue
Block a user