Advertisement
Guest User

Untitled

a guest
May 15th, 2019
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.72 KB | None | 0 0
  1. `default_nettype none disable implicit definitions by Verilog
  2. //apio build --size 1k --type hx --pack vq100
  3.  
  4. module top( //top module and signals wired to FPGA pins
  5. CLK25MHz,
  6. vga_r,
  7. vga_g,
  8. vga_b,
  9. vga_hs,
  10. vga_vs,
  11.  
  12. wclk,
  13. write_en,
  14. din,
  15. btnUp,
  16. btnDwn,
  17. btnLft,
  18. btnRgt,
  19. btnA,
  20. btnB
  21. );
  22.  
  23. parameter addr_width = 15;
  24. parameter data_width = 2;
  25. reg [data_width-1:0] mem [(1<<addr_width)-1:0];
  26.  
  27. reg [data_width-1:0] dout;
  28. wire [addr_width-1:0] raddr;
  29. reg [addr_width-1:0] raddr_r = 0;
  30. assign raddr = raddr_r;
  31.  
  32. input wclk;
  33. input write_en;
  34. input btnUp;
  35. input btnDwn;
  36. input btnLft;
  37. input btnRgt;
  38. input btnA;
  39. input btnB;
  40. reg write_en_r;
  41. input [data_width-1:0] din;
  42. wire [addr_width-1:0] waddr;
  43. reg [addr_width-1:0] waddr_r = 0;
  44. assign waddr = waddr_r;
  45.  
  46. always @(negedge wclk) // Write memory
  47. begin
  48. if(write_en == 0 && write_en_r == 1) begin // VSYNC
  49. mem[0] <= din;
  50. waddr_r <= 1;
  51. write_en_r <= 0;
  52. end
  53. else begin
  54. mem[waddr] <= din;
  55. waddr_r <= waddr_r + 1; // Increment address
  56. if(write_en == 1) begin
  57. write_en_r <= 1;
  58. end
  59. end
  60. end
  61.  
  62. input CLK25MHz; // Oscillator input 25MHz
  63. output [7:0] vga_r; // VGA Red 3 bit
  64. output [7:0] vga_g; // VGA Green 3 bit
  65. output [7:0] vga_b; // VGA Blue 3 bit
  66. output vga_hs; // H-sync pulse
  67. output vga_vs; // V-sync pulse
  68.  
  69. parameter h_pulse = 96; //H-SYNC pulse width 96 * 40 ns (25 Mhz) = 3.84 uS
  70. parameter h_bp = 48; //H-BP back porch pulse width
  71. parameter h_pixels = 640; //H-PIX Number of pixels horizontally
  72. parameter h_fp = 16; //H-FP front porch pulse width
  73. parameter h_pol = 1'b0; //H-SYNC polarity
  74. parameter h_frame = 800; //800 = 96 (H-SYNC) + 48 (H-BP) + 640 (H-PIX) + 16 (H-FP)
  75. parameter v_pulse = 2; //V-SYNC pulse width
  76. parameter v_bp = 33; //V-BP back porch pulse width
  77. parameter v_pixels = 480; //V-PIX Number of pixels vertically
  78. parameter v_fp = 10; //V-FP front porch pulse width
  79. parameter v_pol = 1'b1; //V-SYNC polarity
  80. parameter v_frame = 525; //525 = 2 (V-SYNC) + 33 (V-BP) + 480 (V-PIX) + 10 (V-FP)
  81. parameter rst = 4'b1010;
  82.  
  83. reg [7:0] vga_r_r; //VGA colour registers R,G,B x 3 bit
  84. reg [7:0] vga_g_r;
  85. reg [7:0] vga_b_r;
  86. reg vga_hs_r; //H-SYNC register
  87. reg vga_vs_r; //V-SYNC register
  88.  
  89. assign vga_r = vga_r_r; //assign the output signals for VGA to the VGA registers
  90. assign vga_g = vga_g_r;
  91. assign vga_b = vga_b_r;
  92. assign vga_hs = vga_hs_r;
  93. assign vga_vs = vga_vs_r;
  94.  
  95. reg wantChoice = 0;
  96. reg [7:0] timer_t = 8'b0; //8-bit timer with 0 initialisation
  97. reg reset = 1;
  98. reg [9:0] c_row; //visible frame register row
  99. reg [9:0] c_col; //visible frame register column
  100. reg [9:0] c_hor; //complete frame register horizontally
  101. reg [9:0] c_ver; //complete frame register vertically
  102. reg [9:0] scale_col; //counter for scaling horizontally
  103. reg [9:0] scale_row; //counter for scaling vertically
  104. reg [3:0] clrRegCnt = 4'b0000; //Color counting registry
  105.  
  106. reg [7:0] color_r;
  107. reg [7:0] color_g;
  108. reg [7:0] color_b;
  109.  
  110. reg disp_en; //display enable flag
  111.  
  112. always @ (posedge CLK25MHz) begin
  113.  
  114. if(btnA == 1) begin
  115. if(clrRegCnt <= rst) begin
  116. clrRegCnt <= clrRegCnt + 4'b0001;
  117. end
  118. else begin
  119. clrRegCnt <= 4'b0000;
  120. end
  121. end
  122.  
  123. if(timer_t > 250) begin //generate 10 uS RESET signal
  124. reset <= 0;
  125. end
  126. else begin
  127. reset <= 1; //while in reset display is disabled
  128. timer_t <= timer_t + 1;
  129. disp_en <= 0;
  130. end
  131.  
  132. if(reset == 1) begin //while RESET is high init counters
  133. c_hor <= 0;
  134. c_ver <= 0;
  135. vga_hs_r <= 1;
  136. vga_vs_r <= 0;
  137. c_row <= 0;
  138. c_col <= 0;
  139. scale_col <= 82;
  140. scale_row <= 27;
  141. end
  142. else begin //update current beam position
  143. if(c_hor < h_frame - 1) begin
  144. c_hor <= c_hor + 1;
  145. end
  146. else begin
  147. c_hor <= 0;
  148. if(c_ver < v_frame - 1) begin
  149. c_ver <= c_ver + 1;
  150. end
  151. else begin
  152. c_ver <= 0;
  153. end
  154. end
  155. end
  156. if(c_hor < h_pixels + h_fp + 1 || c_hor > h_pixels + h_fp + h_pulse) begin //H-SYNC generator
  157. vga_hs_r <= ~h_pol;
  158. end
  159. else begin
  160. vga_hs_r <= h_pol;
  161. end
  162. if(c_ver < v_pixels + v_fp || c_ver > v_pixels + v_fp + v_pulse) begin //V-SYNC generator
  163. vga_vs_r <= ~v_pol;
  164. end
  165. else begin
  166. vga_vs_r <= v_pol;
  167. end
  168. if(c_hor < h_pixels) begin //c_col and c_row counters are updated only in the visible time-frame
  169. c_col <= c_hor;
  170. end
  171. if(c_ver < v_pixels) begin
  172. c_row <= c_ver;
  173. end
  174. if(c_hor < h_pixels && c_ver < v_pixels) begin //VGA colour signals are enabled only in the visible time frame
  175. disp_en <= 1;
  176. end
  177. else begin
  178. disp_en <= 0;
  179. end
  180. if(disp_en == 1 && reset == 0) begin
  181.  
  182. dout <= mem[raddr]; // Read memory
  183.  
  184. if(c_row == 0 && c_col == 0) begin //reset scaling
  185. scale_col <= 82;
  186. scale_row <= 27;
  187. end
  188.  
  189. if(c_row == 23 && c_col == 639) begin //reset address
  190. raddr_r <= 0;
  191. end
  192.  
  193. if(c_col == 0 && c_row > 21 && c_row < 453) begin //reset at the start of each line
  194. scale_col <= 82;
  195. if(c_row == scale_row) begin
  196. scale_row <= scale_row + 3;
  197. end
  198. else if(raddr_r != 0) begin
  199. //set pixel buffer address back to beginning of line
  200. raddr_r <= raddr_r - 160;
  201. end
  202. end
  203.  
  204. if(c_col > 80 && c_col < 561 && c_row > 20 && c_row < 453) begin //centered 480 x 432 area
  205.  
  206. if(c_col == scale_col && c_col < 560) begin
  207. scale_col <= scale_col + 3;
  208. //increment pixel buffer address horizontally
  209. raddr_r <= raddr_r + 1;
  210. end
  211.  
  212. if(clrRegCnt == 4'b0000) begin //Default GB theme
  213. if(dout == 3) begin //check pixel buffer data
  214. color_r <= 8'hF0;
  215. color_g <= 8'h83;
  216. color_b <= 8'hF0;
  217. vga_r_r <= color_r[7:0];
  218. vga_g_r <= color_g[7:0];
  219. vga_b_r <= color_b[7:0];
  220. end
  221. else if(dout == 2) begin
  222. color_r <= 8'h03;
  223. color_g <= 8'h26;
  224. color_b <= 8'h03;
  225. vga_r_r <= color_r[7:0];
  226. vga_g_r <= color_g[7:0];
  227. vga_b_r <= color_b[7:0];
  228. end
  229. else if(dout == 1) begin
  230. color_r <= 8'hB8;
  231. color_g <= 8'hCA;
  232. color_b <= 8'hF0;
  233. vga_r_r <= color_r[7:0];
  234. vga_g_r <= color_g[7:0];
  235. vga_b_r <= color_b[7:0];
  236. end
  237. else begin
  238. color_r <= 8'hB9;
  239. color_g <= 8'hCB;
  240. color_b <= 8'hF0;
  241. vga_r_r <= color_r[7:0];
  242. vga_g_r <= color_g[7:0];
  243. vga_b_r <= color_b[7:0];
  244. end
  245. end
  246.  
  247. if(clrRegCnt == 4'b0001) begin//Zelda DX Theme
  248. if(dout == 3) begin //check pixel buffer data
  249. color_r <= 8'hA5;
  250. color_g <= 8'h93;
  251. color_b <= 8'h12;
  252. vga_r_r <= color_r[7:0];
  253. vga_g_r <= color_g[7:0];
  254. vga_b_r <= color_b[7:0];
  255. end
  256. else if(dout == 2) begin
  257. color_r <= 8'hB6;
  258. color_g <= 8'hC8;
  259. color_b <= 8'h24;
  260. vga_r_r <= color_r[7:0];
  261. vga_g_r <= color_g[7:0];
  262. vga_b_r <= color_b[7:0];
  263. end
  264. else if(dout == 1) begin
  265. color_r <= 8'hB7;
  266. color_g <= 8'h6C;
  267. color_b <= 8'hB7;
  268. vga_r_r <= color_r[7:0];
  269. vga_g_r <= color_g[7:0];
  270. vga_b_r <= color_b[7:0];
  271. end
  272. else begin
  273. color_r <= 8'hFF;
  274. color_g <= 8'hFF;
  275. color_b <= 8'h5B;
  276. vga_r_r <= color_r[7:0];
  277. vga_g_r <= color_g[7:0];
  278. vga_b_r <= color_b[7:0];
  279. end
  280. end
  281.  
  282. if(clrRegCnt == 4'b0010) begin//Pokemanz Theme
  283. if(dout == 3) begin //check pixel buffer data
  284. color_r <= 8'h7E;
  285. color_g <= 8'h8E;
  286. color_b <= 8'h3F;
  287. vga_r_r <= color_r[7:0];
  288. vga_g_r <= color_g[7:0];
  289. vga_b_r <= color_b[7:0];
  290. end
  291. else if(dout == 2) begin
  292. color_r <= 8'hC8;
  293. color_g <= 8'h38;
  294. color_b <= 8'h3C;
  295. vga_r_r <= color_r[7:0];
  296. vga_g_r <= color_g[7:0];
  297. vga_b_r <= color_b[7:0];
  298. end
  299. else if(dout == 1) begin
  300. color_r <= 8'h36;
  301. color_g <= 8'HD4;
  302. color_b <= 8'hF8;
  303. vga_r_r <= color_r[7:0];
  304. vga_g_r <= color_g[7:0];
  305. vga_b_r <= color_b[7:0];
  306. end
  307. else begin
  308. color_r <= 8'h21;
  309. color_g <= 8'hB0;
  310. color_b <= 8'h91;
  311. vga_r_r <= color_r[7:0];
  312. vga_g_r <= color_g[7:0];
  313. vga_b_r <= color_b[7:0];
  314. end
  315. end
  316.  
  317. if(clrRegCnt == 4'b0011) begin//Kirby Theme
  318. if(dout == 3) begin //check pixel buffer data
  319. color_r <= 8'hC2;
  320. color_g <= 8'hC2;
  321. color_b <= 8'h69;
  322. vga_r_r <= color_r[7:0];
  323. vga_g_r <= color_g[7:0];
  324. vga_b_r <= color_b[7:0];
  325. end
  326. else if(dout == 2) begin
  327. color_r <= 8'h77;
  328. color_g <= 8'h33;
  329. color_b <= 8'h7E;
  330. vga_r_r <= color_r[7:0];
  331. vga_g_r <= color_g[7:0];
  332. vga_b_r <= color_b[7:0];
  333. end
  334. else if(dout == 1) begin
  335. color_r <= 8'h7E;
  336. color_g <= 8'h68;
  337. color_b <= 8'h68;
  338. vga_r_r <= color_r[7:0];
  339. vga_g_r <= color_g[7:0];
  340. vga_b_r <= color_b[7:0];
  341. end
  342. else begin
  343. color_r <= 8'h7F;
  344. color_g <= 8'hEB;
  345. color_b <= 8'h7F;
  346. vga_r_r <= color_r[7:0];
  347. vga_g_r <= color_g[7:0];
  348. vga_b_r <= color_b[7:0];
  349. end
  350. end
  351.  
  352. if(clrRegCnt == 4'b0100) begin//Metroid Theme
  353. if(dout == 3) begin //check pixel buffer data
  354. color_r <= 8'hC2;
  355. color_g <= 8'h71;
  356. color_b <= 8'h00;
  357. vga_r_r <= color_r[7:0];
  358. vga_g_r <= color_g[7:0];
  359. vga_b_r <= color_b[7:0];
  360. end
  361. else if(dout == 2) begin
  362. color_r <= 8'h40;
  363. color_g <= 8'hE7;
  364. color_b <= 8'h06;
  365. vga_r_r <= color_r[7:0];
  366. vga_g_r <= color_g[7:0];
  367. vga_b_r <= color_b[7:0];
  368. end
  369. else if(dout == 1) begin
  370. color_r <= 8'h6B;
  371. color_g <= 8'h52;
  372. color_b <= 8'h85;
  373. vga_r_r <= color_r[7:0];
  374. vga_g_r <= color_g[7:0];
  375. vga_b_r <= color_b[7:0];
  376. end
  377. else begin
  378. color_r <= 8'hEA;
  379. color_g <= 8'hFD;
  380. color_b <= 8'hE1;
  381. vga_r_r <= color_r[7:0];
  382. vga_g_r <= color_g[7:0];
  383. vga_b_r <= color_b[7:0];
  384. end
  385. end
  386.  
  387. if(clrRegCnt == 4'b0101) begin//Super mario 6 golden coins Theme
  388. if(dout == 3) begin //check pixel buffer data
  389. color_r <= 8'h00;
  390. color_g <= 8'h00;
  391. color_b <= 8'h00;
  392. vga_r_r <= color_r[7:0];
  393. vga_g_r <= color_g[7:0];
  394. vga_b_r <= color_b[7:0];
  395. end
  396. else if(dout == 2) begin
  397. color_r <= 8'h11;
  398. color_g <= 8'h6C;
  399. color_b <= 8'h00;
  400. vga_r_r <= color_r[7:0];
  401. vga_g_r <= color_g[7:0];
  402. vga_b_r <= color_b[7:0];
  403. end
  404. else if(dout == 1) begin
  405. color_r <= 8'hFD;
  406. color_g <= 8'h6A;
  407. color_b <= 8'h77;
  408. vga_r_r <= color_r[7:0];
  409. vga_g_r <= color_g[7:0];
  410. vga_b_r <= color_b[7:0];
  411. end
  412. else begin
  413. color_r <= 8'hFE;
  414. color_g <= 8'h7F;
  415. color_b <= 8'h6B;
  416. vga_r_r <= color_r[7:0];
  417. vga_g_r <= color_g[7:0];
  418. vga_b_r <= color_b[7:0];
  419. end
  420. end
  421.  
  422. if(clrRegCnt == 4'b0110) begin//Greyscale Theme
  423. if(dout == 3) begin //check pixel buffer data
  424. color_r <= 8'h00;
  425. color_g <= 8'h00;
  426. color_b <= 8'h00;
  427. vga_r_r <= color_r[7:0];
  428. vga_g_r <= color_g[7:0];
  429. vga_b_r <= color_b[7:0];
  430. end
  431. else if(dout == 2) begin
  432. color_r <= 8'h76;
  433. color_g <= 8'h76;
  434. color_b <= 8'h76;
  435. vga_r_r <= color_r[7:0];
  436. vga_g_r <= color_g[7:0];
  437. vga_b_r <= color_b[7:0];
  438. end
  439. else if(dout == 1) begin
  440. color_r <= 8'h6B;
  441. color_g <= 8'h6B;
  442. color_b <= 8'h6B;
  443. vga_r_r <= color_r[7:0];
  444. vga_g_r <= color_g[7:0];
  445. vga_b_r <= color_b[7:0];
  446. end
  447. else begin
  448. color_r <= 8'hFF;
  449. color_g <= 8'hFF;
  450. color_b <= 8'hFF;
  451. vga_r_r <= color_r[7:0];
  452. vga_g_r <= color_g[7:0];
  453. vga_b_r <= color_b[7:0];
  454. end
  455. end
  456.  
  457. if(clrRegCnt == 4'b0111) begin//MegaMan Theme
  458. if(dout == 3) begin //check pixel buffer data
  459. color_r <= 8'hE1;
  460. color_g <= 8'h00;
  461. color_b <= 8'h00;
  462. vga_r_r <= color_r[7:0];
  463. vga_g_r <= color_g[7:0];
  464. vga_b_r <= color_b[7:0];
  465. end
  466. else if(dout == 2) begin
  467. color_r <= 8'hE9;
  468. color_g <= 8'h00;
  469. color_b <= 8'h00;
  470. vga_r_r <= color_r[7:0];
  471. vga_g_r <= color_g[7:0];
  472. vga_b_r <= color_b[7:0];
  473. end
  474. else if(dout == 1) begin
  475. color_r <= 8'h7F;
  476. color_g <= 8'hE8;
  477. color_b <= 8'h05;
  478. vga_r_r <= color_r[7:0];
  479. vga_g_r <= color_g[7:0];
  480. vga_b_r <= color_b[7:0];
  481. end
  482. else begin
  483. color_r <= 8'hEC;
  484. color_g <= 8'h7F;
  485. color_b <= 8'h7F;
  486. vga_r_r <= color_r[7:0];
  487. vga_g_r <= color_g[7:0];
  488. vga_b_r <= color_b[7:0];
  489. end
  490. end
  491.  
  492. if(clrRegCnt == 4'b1000) begin//GRAPEFRUIT Theme
  493. if(dout == 3) begin //check pixel buffer data
  494. color_r <= 8'h56;
  495. color_g <= 8'h92;
  496. color_b <= 8'hC6;
  497. vga_r_r <= color_r[7:0];
  498. vga_g_r <= color_g[7:0];
  499. vga_b_r <= color_b[7:0];
  500. end
  501. else if(dout == 2) begin
  502. color_r <= 8'h7B;
  503. color_g <= 8'h56;
  504. color_b <= 8'h19;
  505. vga_r_r <= color_r[7:0];
  506. vga_g_r <= color_g[7:0];
  507. vga_b_r <= color_b[7:0];
  508. end
  509. else if(dout == 1) begin
  510. color_r <= 8'h4F;
  511. color_g <= 8'h2B;
  512. color_b <= 8'hB6;
  513. vga_r_r <= color_r[7:0];
  514. vga_g_r <= color_g[7:0];
  515. vga_b_r <= color_b[7:0];
  516. end
  517. else begin
  518. color_r <= 8'hFF;
  519. color_g <= 8'h5F;
  520. color_b <= 8'hDD;
  521. vga_r_r <= color_r[7:0];
  522. vga_g_r <= color_g[7:0];
  523. vga_b_r <= color_b[7:0];
  524. end
  525. end
  526.  
  527. if(clrRegCnt == 4'b1001) begin//SUPER GB Theme
  528. if(dout == 3) begin //check pixel buffer data
  529. color_r <= 8'h33;
  530. color_g <= 8'hE1;
  531. color_b <= 8'h05;
  532. vga_r_r <= color_r[7:0];
  533. vga_g_r <= color_g[7:0];
  534. vga_b_r <= color_b[7:0];
  535. end
  536. else if(dout == 2) begin
  537. color_r <= 8'h6A;
  538. color_g <= 8'h73;
  539. color_b <= 8'h52;
  540. vga_r_r <= color_r[7:0];
  541. vga_g_r <= color_g[7:0];
  542. vga_b_r <= color_b[7:0];
  543. end
  544. else if(dout == 1) begin
  545. color_r <= 8'h6D;
  546. color_g <= 8'hE8;
  547. color_b <= 8'h94;
  548. vga_r_r <= color_r[7:0];
  549. vga_g_r <= color_g[7:0];
  550. vga_b_r <= color_b[7:0];
  551. end
  552. else begin
  553. color_r <= 8'h7F;
  554. color_g <= 8'h7E;
  555. color_b <= 8'h6C;
  556. vga_r_r <= color_r[7:0];
  557. vga_g_r <= color_g[7:0];
  558. vga_b_r <= color_b[7:0];
  559. end
  560. end
  561.  
  562. if(clrRegCnt == 4'b1010) begin//SPACEHAZE Theme
  563. if(dout == 3) begin //check pixel buffer data
  564. color_r <= 8'h33;
  565. color_g <= 8'hC2;
  566. color_b <= 8'h05;
  567. vga_r_r <= color_r[7:0];
  568. vga_g_r <= color_g[7:0];
  569. vga_b_r <= color_b[7:0];
  570. end
  571. else if(dout == 2) begin
  572. color_r <= 8'h64;
  573. color_g <= 8'h78;
  574. color_b <= 8'hF8;
  575. vga_r_r <= color_r[7:0];
  576. vga_g_r <= color_g[7:0];
  577. vga_b_r <= color_b[7:0];
  578. end
  579. else if(dout == 1) begin
  580. color_r <= 8'h49;
  581. color_g <= 8'h3E;
  582. color_b <= 8'h44;
  583. vga_r_r <= color_r[7:0];
  584. vga_g_r <= color_g[7:0];
  585. vga_b_r <= color_b[7:0];
  586. end
  587. else begin
  588. color_r <= 8'h2E;
  589. color_g <= 8'h3F;
  590. color_b <= 8'h4E;
  591. vga_r_r <= color_r[7:0];
  592. vga_g_r <= color_g[7:0];
  593. vga_b_r <= color_b[7:0];
  594. end
  595. end
  596.  
  597.  
  598.  
  599. /*if(clrRegCnt == 3'b010) begin//SM6GC Theme
  600. if(dout == 3) begin //check pixel buffer data
  601. color <= 12'b000000000000;
  602. vga_r_r <= color[11:8];
  603. vga_g_r <= color[7:4];
  604. vga_b_r <= color[3:0]; // BLUE
  605. end
  606. else if(dout == 2) begin
  607. color <= 12'b100011000000;
  608. vga_r_r <= color[11:8];
  609. vga_g_r <= color[7:4]; // GREEN
  610. vga_b_r <= color[3:0];
  611. end
  612. else if(dout == 1) begin
  613. color <= 12'b110110101110;
  614. vga_r_r <= color[11:8];
  615. vga_g_r <= color[7:4]; // GREEN
  616. vga_b_r <= color[3:0]; // + BLUE = CYAN
  617. end
  618. else begin
  619. color <= 12'b111011111011;
  620. vga_r_r <= color[11:8]; // BLACK
  621. vga_g_r <= color[7:4];
  622. vga_b_r <= color[3:0];
  623. end
  624. end
  625.  
  626. if(clrRegCnt == 3'b011) begin//METROID Theme
  627. if(dout == 3) begin //check pixel buffer data
  628. color <= 12'b110010000000;
  629. vga_r_r <= color[11:8];
  630. vga_g_r <= color[7:4];
  631. vga_b_r <= color[3:0]; // BLUE
  632. end
  633. else if(dout == 2) begin
  634. color <= 12'b000011101100;
  635. vga_r_r <= color[11:8];
  636. vga_g_r <= color[7:4]; // GREEN
  637. vga_b_r <= color[3:0];
  638. end
  639. else if(dout == 1) begin
  640. color <= 12'b101110001010;
  641. vga_r_r <= color[11:8];
  642. vga_g_r <= color[7:4]; // GREEN
  643. vga_b_r <= color[3:0]; // + BLUE = CYAN
  644. end
  645. else begin
  646. color <= 12'b101011011000;
  647. vga_r_r <= color[11:8]; // BLACK
  648. vga_g_r <= color[7:4];
  649. vga_b_r <= color[3:0];
  650. end
  651. end
  652.  
  653. if(clrRegCnt == 3'b100) begin//2bit BW Theme
  654. if(dout == 3) begin //check pixel buffer data
  655. color <= 12'b000000000000;
  656. vga_r_r <= color[11:8];
  657. vga_g_r <= color[7:4];
  658. vga_b_r <= color[3:0]; // BLUE
  659. end
  660. else if(dout == 2) begin
  661. color <= 12'b110011001100;
  662. vga_r_r <= color[11:8];
  663. vga_g_r <= color[7:4]; // GREEN
  664. vga_b_r <= color[3:0];
  665. end
  666. else if(dout == 1) begin
  667. color <= 12'b101110111011;
  668. vga_r_r <= color[11:8];
  669. vga_g_r <= color[7:4]; // GREEN
  670. vga_b_r <= color[3:0]; // + BLUE = CYAN
  671. end
  672. else begin
  673. color <= 12'b111111111111;
  674. vga_r_r <= color[11:8]; // BLACK
  675. vga_g_r <= color[7:4];
  676. vga_b_r <= color[3:0];
  677. end
  678. end
  679.  
  680. if(clrRegCnt == 3'b101) begin//Pokemon Theme
  681. if(dout == 3) begin //check pixel buffer data
  682. color <= 12'b100010001000;
  683. vga_r_r <= color[11:8];
  684. vga_g_r <= color[7:4];
  685. vga_b_r <= color[3:0]; // BLUE
  686. end
  687. else if(dout == 2) begin
  688. color <= 12'b100011101001;
  689. vga_r_r <= color[11:8];
  690. vga_g_r <= color[7:4]; // GREEN
  691. vga_b_r <= color[3:0];
  692. end
  693. else if(dout == 1) begin
  694. color <= 12'b111110111000;
  695. vga_r_r <= color[11:8];
  696. vga_g_r <= color[7:4]; // GREEN
  697. vga_b_r <= color[3:0]; // + BLUE = CYAN
  698. end
  699. else begin
  700. color <= 12'b111111101111;
  701. vga_r_r <= color[11:8]; // BLACK
  702. vga_g_r <= color[7:4];
  703. vga_b_r <= color[3:0];
  704. end
  705. end
  706.  
  707. if(clrRegCnt == 3'b110) begin//Choco Theme
  708. if(dout == 3) begin //check pixel buffer data
  709. color <= 12'b111111011011;
  710. vga_r_r <= color[11:8];
  711. vga_g_r <= color[7:4];
  712. vga_b_r <= color[3:0]; // BLUE
  713. end
  714. else if(dout == 2) begin
  715. color <= 12'b110110101010;
  716. vga_r_r <= color[11:8];
  717. vga_g_r <= color[7:4]; // GREEN
  718. vga_b_r <= color[3:0];
  719. end
  720. else if(dout == 1) begin
  721. color <= 12'b101011001000;
  722. vga_r_r <= color[11:8];
  723. vga_g_r <= color[7:4]; // GREEN
  724. vga_b_r <= color[3:0]; // + BLUE = CYAN
  725. end
  726. else begin
  727. color <= 12'b100010001100;
  728. vga_r_r <= color[11:8]; // BLACK
  729. vga_g_r <= color[7:4];
  730. vga_b_r <= color[3:0];
  731. end
  732. end
  733.  
  734. if(clrRegCnt == 3'b111) begin//Choco Theme
  735. if(dout == 3) begin //check pixel buffer data
  736. color <= 12'b110011001000;
  737. vga_r_r <= color[11:8];
  738. vga_g_r <= color[7:4];
  739. vga_b_r <= color[3:0]; // BLUE
  740. end
  741. else if(dout == 2) begin
  742. color <= 12'b111010101110;
  743. vga_r_r <= color[11:8];
  744. vga_g_r <= color[7:4]; // GREEN
  745. vga_b_r <= color[3:0];
  746. end
  747. else if(dout == 1) begin
  748. color <= 12'b110010001100;
  749. vga_r_r <= color[11:8];
  750. vga_g_r <= color[7:4]; // GREEN
  751. vga_b_r <= color[3:0]; // + BLUE = CYAN
  752. end
  753. else begin
  754. color <= 12'b100011011111;
  755. vga_r_r <= color[11:8]; // BLACK
  756. vga_g_r <= color[7:4];
  757. vga_b_r <= color[3:0];
  758. end
  759. end
  760. end
  761. else begin //everything else is black
  762. vga_r_r <= 0;
  763. vga_g_r <= 0;
  764. vga_b_r <= 0;
  765. end
  766. end
  767. else begin //when display is not enabled everything is black
  768. vga_r_r <= 0;
  769. vga_g_r <= 0;
  770. vga_b_r <= 0;
  771. end
  772.  
  773. end
  774. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement