X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/fpga-games/blobdiff_plain/782690d0b2046d5fa0ae296c2fb3f411d668b5dc..3f141b4135f7b5710b988f5fc204b24301240d2b:/galaxian/src/mc_top.v diff --git a/galaxian/src/mc_top.v b/galaxian/src/mc_top.v index 58bc3c0..08d25de 100644 --- a/galaxian/src/mc_top.v +++ b/galaxian/src/mc_top.v @@ -88,30 +88,32 @@ output psTXD,psCLK,psSEL; //output O_ROM_WEn; // INPORT SW IF -input [4:0]I_PSW; +input [8:0]I_PSW; // SOUND OUT output O_SOUND_OUT_L; output O_SOUND_OUT_R; // VGA (VIDEO) IF -output [4:0]O_VGA_R; -output [4:0]O_VGA_G; -output [4:0]O_VGA_B; +output [3:0]O_VGA_R; +output [3:0]O_VGA_G; +output [3:0]O_VGA_B; output O_VGA_H_SYNCn; output O_VGA_V_SYNCn; -wire W_RESETn = |I_PSW[3:0]; +wire W_RESETn = |(~I_PSW[8:5]); //------ CLOCK GEN --------------------------- wire I_CLK_18432M; wire W_CLK_12M,WB_CLK_12M; wire W_CLK_6M,WB_CLK_6M; wire W_STARS_CLK; +wire W_ROM_CLK; -dcm clockgen( +mc_dcm clockgen( .CLKIN_IN(I_CLK_125M), -.RST_IN(W_RESETn), -.CLKFX_OUT(I_CLK_18432M) +.RST_IN(! W_RESETn), +.CLKFX_OUT(I_CLK_18432M), +.CLK0_OUT(W_ROM_CLK) ); //------ H&V COUNTER ------------------------- @@ -367,18 +369,18 @@ wire S2 = (D1|J1) & ps_PSW[7]; wire C1 = (L1|R1|U1|~D1) & ps_PSW[4]; `else -wire L1 = I_PSW[2]; -wire R1 = I_PSW[3]; -wire U1 = I_PSW[0]; -wire D1 = I_PSW[1]; -wire J1 = I_PSW[4]; +wire L1 = ! I_PSW[2]; +wire R1 = ! I_PSW[3]; +wire U1 = ! I_PSW[0]; +wire D1 = ! I_PSW[1]; +wire J1 = ! I_PSW[4]; -wire S1 = U1|J1; -wire S2 = D1|J1; +wire S1 = ! I_PSW[5]; +wire S2 = ! I_PSW[7]; -wire C1 = L1|R1|U1|~D1; +wire C1 = ! I_PSW[6]; `endif -wire C2 = L1|R1|~U1|D1; +wire C2 = ! I_PSW[8]; wire L2 = L1; wire R2 = R1; @@ -425,8 +427,7 @@ wire [7:0]ROM_D; // = I_ROM_DB; //assign O_ROM_WEn = 1'b1; galaxian_roms ROMS( -.I_CLK_18432M(I_CLK_18432M), -.I_CLK_12M(WB_CLK_12M), +.I_ROM_CLK(W_ROM_CLK), .I_ADDR(ROM_A), .O_DATA(ROM_D) ); @@ -442,38 +443,34 @@ begin seq <= (~clk_d[1] & clk_d[0]) ? 0 : seq+1; case(seq) 0:begin - //sound ROM_A <= W_WAV_A0; W_CPU_ROM_DO <= ROM_D; end 2:begin - //sound ROM_A <= W_WAV_A1; W_WAV_D0 <= ROM_D; end 4:begin - //sound ROM_A <= {3'h0,W_A[15:0]}; W_WAV_D1 <= ROM_D; end 6:begin - //sound ROM_A <= W_WAV_A2; W_CPU_ROM_DO <= ROM_D; end - 8:W_WAV_D2 <= ROM_D; //sound + 8:W_WAV_D2 <= ROM_D; 10:ROM_A <= {3'h0,W_A[15:0]}; 12:W_CPU_ROM_DO <= ROM_D; - 16:ROM_A <= {3'h0,W_A[15:0]}; - 18:begin + 14:ROM_A <= {3'h0,W_A[15:0]}; + 16:begin ROM_A <= {3'h0,4'h4,1'b0,W_OBJ_ROM_A}; W_CPU_ROM_DO <= ROM_D; end - 20:begin + 18:begin ROM_A <= {3'h0,4'h5,1'b0,W_OBJ_ROM_A}; W_OBJ_ROM_A_D <= ROM_D; end - 22:begin + 20:begin ROM_A <= {3'h0,W_A[15:0]}; W_OBJ_ROM_B_D <= ROM_D; end @@ -621,6 +618,10 @@ mc_vedio_mix MIX( ); +wire [2:0]W_VGA_R; +wire [2:0]W_VGA_G; +wire [1:0]W_VGA_B; + `ifdef VGA_USE mc_vga_if VGA( @@ -633,9 +634,9 @@ mc_vga_if VGA( .I_H_SYNC(W_H_SYNC), .I_V_SYNC(W_V_SYNC), // output -.O_R(O_VGA_R), -.O_G(O_VGA_G), -.O_B(O_VGA_B), +.O_R(W_VGA_R), +.O_G(W_VGA_G), +.O_B(W_VGA_B), .O_H_SYNCn(O_VGA_H_SYNCn), .O_V_SYNCn(O_VGA_V_SYNCn) @@ -643,14 +644,11 @@ mc_vga_if VGA( `else -assign O_VGA_R[2:0] = W_R; -assign O_VGA_R[4:3] = 1'b0; +assign W_VGA_R[2:0] = W_R; -assign O_VGA_G[2:0] = W_G; -assign O_VGA_G[4:3] = 1'b0; +assign W_VGA_G[2:0] = W_G; -assign O_VGA_B[1:0] = W_B; -assign O_VGA_B[4:2] = 1'b0; +assign W_VGA_B[1:0] = W_B; //assign O_VGA_H_SYNCn = W_H_SYNC | W_V_SYNC ; // AKIDUKI LCD USED assign O_VGA_H_SYNCn = ~W_H_SYNC ; @@ -658,6 +656,12 @@ assign O_VGA_V_SYNCn = ~W_V_SYNC ; `endif +assign O_VGA_R[3:0] = {W_VGA_R[0], W_VGA_R[1], W_VGA_R[2], 1'b0}; + +assign O_VGA_G[3:0] = {W_VGA_G[0], W_VGA_G[1], W_VGA_G[2], 1'b0}; + +assign O_VGA_B[3:0] = {W_VGA_B[0], W_VGA_B[1], 2'b0}; + wire [7:0]W_SDAT_A; mc_sound_a MC_SOUND_A(