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:
parent
1adc82db11
commit
7375f9b62d
@ -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 (
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user