1
0
mirror of https://github.com/Gehstock/Mist_FPGA.git synced 2026-01-20 09:44:38 +00:00

TerraCresta: optimize the sprite ROM fetches to 32 bit

This commit is contained in:
Gyorgy Szombathelyi 2022-06-29 20:48:03 +02:00
parent 1adc82db11
commit 7375f9b62d

View File

@ -227,9 +227,13 @@ reg [63:0] sprite_buffer_din;
wire [63:0] sprite_buffer_dout;
reg sprite_buffer_w;
reg [3:0] sprite_x_ofs;
wire [3:0] sprite_x_new_ofs = {sprite_x_ofs[2:1], sprite_x_ofs[3],sprite_x_ofs[0]};
reg [9:0] sprite_tile ; // terra cresta has 512 tiles , HORE HORE Kid has 1024
reg [7:0] sprite_y_pos;
reg [8:0] sprite_x_pos;
wire [8:0] sprite_x_new_pos = sprite_x_pos + sprite_x_new_ofs;
reg [3:0] sprite_colour;
reg sprite_x_256;
reg sprite_flip_x;
@ -333,13 +337,12 @@ always @ (posedge clk_24M) begin
end else if (draw_sprite_state == 4) begin
if ( vc >= sprite_y_pos && vc < ( sprite_y_pos + 16 ) ) begin
// fetch bitmap
if ( p[3:0] != sprite_trans_pen && ~sprite_x_pos[8]) begin
sprite_line_buffer[{~vc[0], sprite_x_pos[7:0]}] <= p;
if ( p[3:0] != sprite_trans_pen && ~sprite_x_new_pos[8]) begin
sprite_line_buffer[{~vc[0], sprite_x_new_pos[7:0]}] <= p;
end
if ( sprite_x_ofs < 15 ) begin
sprite_x_pos <= sprite_x_pos + 1'd1;
sprite_x_ofs <= sprite_x_ofs + 1'd1;
if (sprite_x_ofs[0]) begin
if (sprite_x_ofs == 7) begin
draw_sprite_state <= 3;
sprite_rom_req <= ~sprite_rom_req;
end
@ -364,7 +367,7 @@ end
wire [3:0] sprite_y_ofs = vc - sprite_y_pos ;
wire [3:0] flipped_x = ( sprite_flip_x == 0 ) ? sprite_x_ofs : 4'd15 - sprite_x_ofs;
wire [3:0] flipped_x = ( sprite_flip_x == 0 ) ? sprite_x_new_ofs : 4'd15 - sprite_x_new_ofs;
wire [3:0] flipped_y = ( sprite_flip_y == 0 ) ? sprite_y_ofs : 4'd15 - sprite_y_ofs;
//wire [3:0] gfx3_pix = (sprite_x_ofs[0] == 1 ) ? gfx3_dout[7:4] : gfx3_dout[3:0];
@ -433,8 +436,6 @@ end
// color += 16 * (spritepalettebank[(tile>>1)&0xff] & 0x0f);
// }
reg [7:0] sprite_x_ofs;
reg [11:0] sprite_line_buffer[512];
dual_port_ram #(.LEN(64), .DATA_WIDTH(64)) sprite_buffer (