I’ve made significant progress since my first stumbling block. I’ve rewritten my 6502 core so that it is synthesizable and have successfully deployed it to my nanoboard. I have been able to tweak the data bus such that I can communicate with the internal cartridge, my PPU, and the external SRAM available on the nanoboard. This has been pretty tricky since it has been taking over 10 minutes to synthesize and my logic analyzer only has 16 Channels. I’ve found some methods to mitigate these issues and after uncovering a couple of fatal bugs in my PPU Core an image was finally rendered. The rendered screen isn’t what is expected but it is generating tiles from the cartridge data. If you look closely you’ll be able to see some blurry 8’s, 4’s commas and colons.
Continue reading “NES FPGA : Mini Breakthroughs”
A video engineer, or really anybody who cares, would tell you that I’ve created a pretty inaccurate representation of the SMPTE color bar test pattern. As I’m not actually trying to calibrate any monitors I don’t fall into this category. I’ve modeled my test screen off of the Wikipedia description of SMPTE color bars. This project only generates a color simulation, ignoring the I and Q vectors, pluge pulse, and other underlying embedded signals. I’m satisfied with the results of this project and consider the original goal to be accomplished. Modifications to the code will most likely be required when it is integrated into the final NES project, but that is much farther down the road. The updated color generator code as well as a download link to the entire project are provided below.
Continue reading “FPGA NES: VGA (Part 3)”
Previously a basic VGA controller was designed that had the capability to display a solid color across an entire computer monitor. This post builds on that design in an attempt to verify that the controller is able to correctly display more advanced patterns. In this example the code for the clock sub-circuit remained unchanged. However the color generator code was hacked up to create a moving 100 pixel horizontal and vertical bar. Color selection still works as before with the upper two bits now being used to enable or disable either bar. The animation of the bars works fairly well, however both bars are expected to be a solid color which is not the case as shown in the image below.
I’ve found the bug. It turns out I was not shutting off pixel color when the active pixel left the boundaries of the screen. The code has been modified with the changes from line 73-77. I believe the problem is related to the monitor expecting an absence of data during H-Blank. It looks as though the monitor may be setting the black level by averaging the voltages measured during H-Blank. A fade to black would occur with a persistent input signal if this were the case. This also explains why the vertical bar is unaffected.
Continue reading “FPGA NES: VGA (Part 2)”
Any good video game requires one very fundamental feature: video. The nanoboard includes a VGA port and seeing as I don’t know anything about the VGA protocol it seems like the perfect place to start. The nanoboard also has a built in touch-screen, however I feel like that would be easier to implement and will be covered in a later post. My goal for this section is to display the “SMPTE color bars” on a standard computer monitor.
Continue reading “FPGA NES: VGA (Part 1)”