Nice! Did you try syncing to hsync signal, or is that even available on Neo-Geo PCB? It could remove the constants from the code, but I guess that's not a problem if all games use the same video mode.
I found Hsync on the board, but I didn't really see an advantage to it. I'd still need to keep track of a lot of constants, as neither the Vsync or Hsync signals from the Neo-Geo are immediately usable. Some clock counting is required to get a usable VGA clock. I got it working by directly piping the Neo's Vsync, but many monitors don't like it being so long and will behave strangely in some circumstances (image curl on many CRTs, weird flashing effect on a sony HDTV).
Finding Vsync on the board took a little bit of poking around, as there are a few signals that are small 60Hz blips (about 8 line's worth is the correct one - 768 * 8 cycles from the 12MHz clock). The same goes for Hsync - lots of 15Khz signals, but a lot of them might be out of phase or have some edge cases where they are different.
+1 for DE2-115 board and NEC pro LCD monitor (my test setup is very similar).
I'm using this little thing as I use it for my embedded systems design class at school. I don't actually own it, but as long as I have it I might as well utilize it. The inputs seem 5V tolerant, which is good. I have a CMOD S6 Spartan-6 based kit, which fits into a breadboard like a Teensy MCU, but I need to get level shifters or build voltage dividers before I can use it *and* build a DAC for it.
I am thinking it would be nice to leave in the option to have the project output the Neo-Geo pixel bus, just at the higher rate. That way, less resistors (or no relatively expensive DAC chip) are needed as you can simply replicate the original DAc (complete with 7405). This may be what I do so my breadboard doesn't become a mess for the CMOD.
If you are still planning to develop this further, I'd suggest trying out linetriple (720p). That requires playing around with PLLs and would suit better for DVI/HDMI output, so perhaps it's not relevant in this scope. However, if you're interested, you can check how I implemented that in my
project.
Probably I won't be adding that to this project, only because I have to work on my N64 scaler which will be pretty similar. 720p seems like an advantage initially, but as the line width is going to end up being 960 pixels anyway, any HDTV is going to perform some scaling / letterboxing anyway which will result in a framebuffer being used - this removes the potential gain of being close to the native resolution of having the TV not have to scale it. However, if I wanted to add DVI (HDMI has nasty licensing fees) then something like that would not be a bad idea.
I do want to learn how to use a PLL as I'd like to make a general purpose analogue line doubler like the XRGB2. I'd need the PLL to generate a working ~30KHz signal from the input's 15Khz sync signal (after breaking it out from Csync), then it is just a matter of having a high sampling rate per line to have it look decent. However I think pursuing digital data capture will always give much better results that take a lot less processing and energy from the scaler system either way.
Fortunately, I have not yet found a single monitor or TV that takes VGA which refuses to work with the 59.xHz refresh rate of the Neo-Geo. A cheap VGA to HDMI adapter has worked relatively well in situations where it is needed, too. Once I design a board for this I'll have to go test a lot of different TVs as well as Neo-Geo systems. I haven't tested anything but an MV-1FZS yet. The only real challenge is finding the signals on all of the systems, as some are better documented than others.
Someone's going to have to lend me their AES / other MVS models / NeoCD / Neo Print machine / CvS PCB / Taito Puzzle Bobble dedicated PCB...