diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Meta/Tutankham (Bootleg).mra b/Arcade_MiST/Konami Tutankham/Meta/Tutankham (Bootleg).mra similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Meta/Tutankham (Bootleg).mra rename to Arcade_MiST/Konami Tutankham/Meta/Tutankham (Bootleg).mra diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Meta/Tutankham (Stern).mra b/Arcade_MiST/Konami Tutankham/Meta/Tutankham (Stern).mra similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Meta/Tutankham (Stern).mra rename to Arcade_MiST/Konami Tutankham/Meta/Tutankham (Stern).mra diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Meta/Tutankham II.mra b/Arcade_MiST/Konami Tutankham/Meta/Tutankham II.mra similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Meta/Tutankham II.mra rename to Arcade_MiST/Konami Tutankham/Meta/Tutankham II.mra diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Meta/Tutankham.mra b/Arcade_MiST/Konami Tutankham/Meta/Tutankham.mra similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Meta/Tutankham.mra rename to Arcade_MiST/Konami Tutankham/Meta/Tutankham.mra diff --git a/Arcade_MiST/Konami Tutankham + Iron First/README.MD b/Arcade_MiST/Konami Tutankham/README.MD similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/README.MD rename to Arcade_MiST/Konami Tutankham/README.MD diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Tutankham.qpf b/Arcade_MiST/Konami Tutankham/Tutankham.qpf similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Tutankham.qpf rename to Arcade_MiST/Konami Tutankham/Tutankham.qpf diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Tutankham.qsf b/Arcade_MiST/Konami Tutankham/Tutankham.qsf similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Tutankham.qsf rename to Arcade_MiST/Konami Tutankham/Tutankham.qsf diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Tutankham.sdc b/Arcade_MiST/Konami Tutankham/Tutankham.sdc similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Tutankham.sdc rename to Arcade_MiST/Konami Tutankham/Tutankham.sdc diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Useful Information/Arcade-Tutankham.sv b/Arcade_MiST/Konami Tutankham/Useful Information/Arcade-Tutankham.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Useful Information/Arcade-Tutankham.sv rename to Arcade_MiST/Konami Tutankham/Useful Information/Arcade-Tutankham.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Useful Information/MemoryMap.txt b/Arcade_MiST/Konami Tutankham/Useful Information/MemoryMap.txt similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Useful Information/MemoryMap.txt rename to Arcade_MiST/Konami Tutankham/Useful Information/MemoryMap.txt diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Useful Information/Tutankham Board.webp b/Arcade_MiST/Konami Tutankham/Useful Information/Tutankham Board.webp similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Useful Information/Tutankham Board.webp rename to Arcade_MiST/Konami Tutankham/Useful Information/Tutankham Board.webp diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Useful Information/Tutankham.pdf b/Arcade_MiST/Konami Tutankham/Useful Information/Tutankham.pdf similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Useful Information/Tutankham.pdf rename to Arcade_MiST/Konami Tutankham/Useful Information/Tutankham.pdf diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Useful Information/tutankhm.cpp b/Arcade_MiST/Konami Tutankham/Useful Information/tutankhm.cpp similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Useful Information/tutankhm.cpp rename to Arcade_MiST/Konami Tutankham/Useful Information/tutankhm.cpp diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Useful Information/tutankhm.h b/Arcade_MiST/Konami Tutankham/Useful Information/tutankhm.h similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Useful Information/tutankhm.h rename to Arcade_MiST/Konami Tutankham/Useful Information/tutankhm.h diff --git a/Arcade_MiST/Konami Tutankham + Iron First/Useful Information/tutankhm_v.cpp b/Arcade_MiST/Konami Tutankham/Useful Information/tutankhm_v.cpp similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/Useful Information/tutankhm_v.cpp rename to Arcade_MiST/Konami Tutankham/Useful Information/tutankhm_v.cpp diff --git a/Arcade_MiST/Konami Tutankham + Iron First/clean.bat b/Arcade_MiST/Konami Tutankham/clean.bat similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/clean.bat rename to Arcade_MiST/Konami Tutankham/clean.bat diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/TimePilot_SND.sv b/Arcade_MiST/Konami Tutankham/rtl/TimePilot_SND.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/TimePilot_SND.sv rename to Arcade_MiST/Konami Tutankham/rtl/TimePilot_SND.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/Tutankham.sv b/Arcade_MiST/Konami Tutankham/rtl/Tutankham.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/Tutankham.sv rename to Arcade_MiST/Konami Tutankham/rtl/Tutankham.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/Tutankham_CPU.sv b/Arcade_MiST/Konami Tutankham/rtl/Tutankham_CPU.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/Tutankham_CPU.sv rename to Arcade_MiST/Konami Tutankham/rtl/Tutankham_CPU.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/Tutankham_TOP.sv b/Arcade_MiST/Konami Tutankham/rtl/Tutankham_TOP.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/Tutankham_TOP.sv rename to Arcade_MiST/Konami Tutankham/rtl/Tutankham_TOP.sv diff --git a/Arcade_MiST/Konami Tutankham/rtl/blitter.sv b/Arcade_MiST/Konami Tutankham/rtl/blitter.sv new file mode 100644 index 00000000..942795e5 --- /dev/null +++ b/Arcade_MiST/Konami Tutankham/rtl/blitter.sv @@ -0,0 +1,151 @@ +module blitter ( + input wire clk, + input wire rst, + input wire clk_1M5_en, + input wire blitter_cs, + input wire [1:0] cpu_a, + input wire [7:0] cpu_d_o, + input wire cpu_rw, + input wire cpu_ba, + input wire cpu_bs, + input wire vram_cs, + input wire blitter_copy, + input wire [7:0] blitter_d_o, // VRAM data output + output reg cpu_halt, + output wire [15:0] vram_a, + output wire [7:0] vram_d_i, + output wire [1:0] vram_wr +); + + // Blitter Registers + reg [15:0] blitter_src_r; + reg [15:0] blitter_dst_r; + reg blitter_go; + + // Internal SM signals + reg blitting; + reg [1:0] blitter_wr; + reg [15:0] blitter_src; + reg [15:0] blitter_dst; + reg [3:0] blitter_d_i; + + integer x, y; + + // State Encoding + localparam S_IDLE = 3'd0, + S_HALTING = 3'd1, + S_BLIT_0 = 3'd2, + S_BLIT = 3'd3, + S_INC_0 = 3'd4, + S_INC = 3'd5; + reg [2:0] state; + + // Blitter Register Process + always @(posedge clk_30M or posedge rst_30M) begin + if (rst_30M) begin + blitter_src_r <= 16'h0; + blitter_dst_r <= 16'h0; + blitter_go <= 1'b0; + end else begin + blitter_go <= 1'b0; // Pulse default + if (clk_1M5_en) begin + if (blitter_cs && !cpu_rw) begin + case (cpu_a[1:0]) + 2'b00: blitter_dst_r[15:8] <= cpu_d_o; + 2'b01: blitter_dst_r[7:0] <= cpu_d_o; + 2'b10: blitter_src_r[15:8] <= cpu_d_o; + 2'b11: begin + blitter_src_r[7:0] <= cpu_d_o; + blitter_go <= 1'b1; + end + endcase + end + end + end + end + + // Blitter State Machine Process + always @(posedge clk_30M or posedge rst_30M) begin + if (rst_30M) begin + cpu_halt <= 1'b0; + blitting <= 1'b0; + blitter_wr <= 2'b00; + state <= S_IDLE; + x <= 0; y <= 0; + end else begin + case (state) + S_IDLE: begin + blitting <= 1'b0; + if (blitter_go) begin + cpu_halt <= 1'b1; + state <= S_HALTING; + end + end + + S_HALTING: begin + if (cpu_ba && cpu_bs) begin + blitting <= 1'b1; + // VHDL logic: (src[15:2] & "00") + 1 + blitter_src <= {blitter_src_r[15:2], 2'b00} + 16'd1; + blitter_dst <= blitter_dst_r; + y <= 0; + x <= 0; + state <= S_BLIT_0; + end + end + + S_BLIT_0: begin + blitter_d_i <= blitter_src[0] ? blitter_d_o[7:4] : blitter_d_o[3:0]; + state <= S_BLIT; + end + + S_BLIT: begin + if (blitter_d_i != 4'h0) begin + if (blitter_dst[0]) blitter_wr[1] <= 1'b1; + else blitter_wr[0] <= 1'b1; + end + state <= S_INC_0; + end + + S_INC_0: begin + blitter_wr <= 2'b00; + state <= S_INC; + end + + S_INC: begin + blitter_src <= blitter_src + 1'b1; + blitter_wr <= 2'b00; + if (x == 15) begin + if (y == 15) begin + cpu_halt <= 1'b0; + state <= S_IDLE; + end else begin + x <= 0; + y <= y + 1; + blitter_dst <= blitter_dst + 16'd241; + state <= S_BLIT_0; + end + end else begin + x <= x + 1; + blitter_dst <= blitter_dst + 16'd1; + state <= S_BLIT_0; + end + end + + default: begin + cpu_halt <= 1'b0; + state <= S_IDLE; + end + endcase + end + end + + // Video RAM Data Muxing + assign vram_a = (!blitting) ? cpu_a : blitter_dst[16:1]; + + assign vram_d_i = (!blitting) ? cpu_d_o : + (!blitter_copy) ? 8'h00 : {blitter_d_i, blitter_d_i}; + + assign vram_wr = (!blitting) ? {2{(vram_cs && clk_1M5_en && !cpu_rw)}} : blitter_wr; + +endmodule diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/build_id.tcl b/Arcade_MiST/Konami Tutankham/rtl/build_id.tcl similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/build_id.tcl rename to Arcade_MiST/Konami Tutankham/rtl/build_id.tcl diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k082.sv b/Arcade_MiST/Konami Tutankham/rtl/custom/k082.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k082.sv rename to Arcade_MiST/Konami Tutankham/rtl/custom/k082.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k083.sv b/Arcade_MiST/Konami Tutankham/rtl/custom/k083.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k083.sv rename to Arcade_MiST/Konami Tutankham/rtl/custom/k083.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k501.sv b/Arcade_MiST/Konami Tutankham/rtl/custom/k501.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k501.sv rename to Arcade_MiST/Konami Tutankham/rtl/custom/k501.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k502.sv b/Arcade_MiST/Konami Tutankham/rtl/custom/k502.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k502.sv rename to Arcade_MiST/Konami Tutankham/rtl/custom/k502.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k503.sv b/Arcade_MiST/Konami Tutankham/rtl/custom/k503.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k503.sv rename to Arcade_MiST/Konami Tutankham/rtl/custom/k503.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k526.sv b/Arcade_MiST/Konami Tutankham/rtl/custom/k526.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k526.sv rename to Arcade_MiST/Konami Tutankham/rtl/custom/k526.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k528.sv b/Arcade_MiST/Konami Tutankham/rtl/custom/k528.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/k528.sv rename to Arcade_MiST/Konami Tutankham/rtl/custom/k528.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/tut_custom.qip b/Arcade_MiST/Konami Tutankham/rtl/custom/tut_custom.qip similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/custom/tut_custom.qip rename to Arcade_MiST/Konami Tutankham/rtl/custom/tut_custom.qip diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/dpram_dc.vhd b/Arcade_MiST/Konami Tutankham/rtl/dpram_dc.vhd similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/dpram_dc.vhd rename to Arcade_MiST/Konami Tutankham/rtl/dpram_dc.vhd diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/jtframe_frac_cen.v b/Arcade_MiST/Konami Tutankham/rtl/jtframe_frac_cen.v similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/jtframe_frac_cen.v rename to Arcade_MiST/Konami Tutankham/rtl/jtframe_frac_cen.v diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/mc_stars.vhd b/Arcade_MiST/Konami Tutankham/rtl/mc_stars.vhd similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/mc_stars.vhd rename to Arcade_MiST/Konami Tutankham/rtl/mc_stars.vhd diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/pll.vhd b/Arcade_MiST/Konami Tutankham/rtl/pll.vhd similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/pll.vhd rename to Arcade_MiST/Konami Tutankham/rtl/pll.vhd diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/rom_loader.sv b/Arcade_MiST/Konami Tutankham/rtl/rom_loader.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/rom_loader.sv rename to Arcade_MiST/Konami Tutankham/rtl/rom_loader.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/sdram.sv b/Arcade_MiST/Konami Tutankham/rtl/sdram.sv similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/sdram.sv rename to Arcade_MiST/Konami Tutankham/rtl/sdram.sv diff --git a/Arcade_MiST/Konami Tutankham + Iron First/rtl/spram.vhd b/Arcade_MiST/Konami Tutankham/rtl/spram.vhd similarity index 100% rename from Arcade_MiST/Konami Tutankham + Iron First/rtl/spram.vhd rename to Arcade_MiST/Konami Tutankham/rtl/spram.vhd