elseyf wrote:@Kismet:
I have done some more research and it turns out I would need a better, more expensive FPGA to drive a DVI or HDMI signal. The Cyclone II does not have the required TMDS Interface, and LVDS seems to be not suited to drive TMDS. And if the FPGA had the TMDS Interface, it would allow only for a 640x480 due to speed issues.
In addition to that, in order to get "the most responsive picture" I would need to rewrite the PPU for the FPGA for direct access to the pixel information, which I did not really intend to do.
Yeah what I'm thinking of was based on the original post of a complete devkit, not just a flash cart. If the plan is just for a debug-able devcart all you really need is a way to dump the RAM so you can compare it with Higan/BSNES.
elseyf wrote:
Would it be cheaper to have 4 cheaper FGPA's than one expensive FPGA? Who knows until someone tries.
I dont think this applies, because in my situation using any more amount of the same FPGA wouldnt really help the missing TMDS Interface to pop up. So Isee no point in testing this (though I would love to be disproven by some crazy EE-Tricks

).
The Cyclone II is 90nm, so it would probably not be feasible to put too much logic on it since it would require a more expensive version to produce.
When I was doing some research on the feasibility of a SNES-FPGA, apparently the FPGA (Cyclone V, which is a 28nm chip) used by the Analogue Mini NT, is just "capable" enough for 1080p with the entire NES logic on the FPGA. A very old post by kevtris says he used about 17500 gates on a 25K Cyclone III so based on the numbers by a previous SNES FPGA project , it looks like maybe 30,000 gates would be needed for the SNES before considering cartridge and video interface. However I don't know what exactly went into the Mini NT since nobody has one (that I'm aware of.) So I am pulling the numbers from guesses. Let's assume at some point a Cyclone VI comes out in 14nm, that would allow roughly 4x as many gates in the same die area, so might actually be cheaper then to produce a FPGA SNES then. Digikey's price for a single 5CEBA4F17C8N (Cyclone V E with 49,000 logic elements) is around $50. The next FPGA up 5CEBA7F23C8N is $160 with 149500 logic elements. I think every project trying to do a SNES FPGA is using a EP4CE115 Cyclone IV E FPGA Evaluation board (DE2-115) which is $595, has 114480 LE, and the chip alone is $315. And this board only has VGA and Analog audio output.
So right now, a complete "devkit" might be a bit on the ridiculous side, but just barely. Once you add in the other chips that could be emulated like the SA1 or the Cx4, that is large additional chunks of logic that will just sit idle in a base unit that a regular SNES would not have. I suppose one needs to ask the question of what, if any, additional chips do people actually intend to use. If you're just making a dev "cart" then you only need to enable one of those, the one the developer wishes to use, which would bring the logic units down, but also require the cart FPGA to be reprogrammed for each chip. Also... if the chip exists in both the cart and the base unit, how does the base unit know to turn off it's own chip?
elseyf wrote:
defparam wrote:I'm a bit weary about things like HDMI and feature creep as it adds too much cost and complexity in early platform designs.
This is true. I am currently just asking for what the hardware is supposed to do for someone using it, so I know what I could add to (or remove from) the project. The current goal remains to get ROMs loading from an SD Card and dumping a Cartridge's contents, all built into the console.
Feature creep suggestions is how you decide which features are actually useful, and which features are wishful thinking. I think the entire thing needs to be considered as two separate but related projects.
The cartridge-side, which would be something more like a "lock-on" cart that can intercept, dump, or pass-thru the cartridge, dump the reachable system memory from the system bus, maybe replicate expansion chips if that is viable.
The console-side which would have have a way to pause-and-dump/edit the memory either back to a flash cart or to something else like USB or a SD-card. I'm not sure off-hand if that can specifically be done from a cart, but if it can be done without a FPGA-SNES that makes it that much more valuable. If the entire SNES has to be emulated, you may as well go the entire Analogue NT mini route and create both an analog path and a digital path, but you can cross the road when you get there.
Right now nobody has published code to a PPU for the SNES. Like to me, I only care about pixel-perfect scaling that bypasses the monitor scaler. I don't care for scanlines or xBRZ or any of that, and IMO it shouldn't exist in a devkit because that adds an extra thing that games need to be tested with. Someone who tests the game against scanline mode might find that it doesn't in fact it does not even remotely look that way on a real SNES even on a CRT (which is one of the things pointed out with the higan emulator, is that frequently there are things not emulated due to the timing hacks needed to make the minimum requirements a Pentium 133 (DOS ZSNES circa 1999,) not a 3Ghz i7.) I'm pretty sure all the ARM-based emulators are throwing away a lot timing information because they are substantially weaker parts than desktop systems but still more powerful than where we started when SNES emulators began. I'm pretty sure Nintendo is aware of this as well, and what we get on the Virtual Console is "close enough that QA testers didn't notice"
Like as far as what is useful, I think developers are more interested in being able to pause the CPU/PPU and then peek/poke the ram in a debugger and compare it to what happens in BSNES.
The Emulator SE (from pictures I've seen) shows three FPGA's on them which appear to be connected to the respective CPU, PPU and SPC memory buses. At least that's what it looks like. So my best guess is that the SCSI connection gives the developer a live look at the memory, and the midi output over midi (I'm assuming the red connector is a S/PDIF) is to monitor the music to see if it's playing the right notes and samples. Re-implementing all that mess probably isn't necessary and could probably be streamed over USB in some way. But more to the point, just being able to pause the SNES and dump the memory to the card would probably do the same thing. I assume the SCSI connection also allowed the SNES to do "step-into", but that could probably be done differently since a computer in 1990 would have been way to slow to have emulated the entire SNES in software, so they'd want to use the real hardware to do that.
Anyhow on the software end of things, I'm sure more software would come out if there are known good flash carts that have predictable characteristics. RAM and Flash memory do not have the same speed as Mask ROM, which is another unknown variable. So what might be fast on a software emulator becomes sluggish on a real SNES with a flash cart due to using the SRAM as workspace. It might even be reasonable to make one of the more accurate emulators be able to connect to a devkit over USB or ethernet or something.
But I'm not suggesting putting the cart before the horse, if something can't be done today, it can likely be done when the devkit parts are cheaper to obtain. I'm under no impression that the SNES would suddenly become a popular development platform, so highend features aren't likely needed when the software emulators can do most of that.