To FPGA or not to FPGA, that is the question. I signed up just to comment/vote, I read the entire 45-page or so thread to get here.
Admittedly, I didn't really know that much about FPGA's until last year when I saw the AVS and the NT Mini. Since then I've done significant research on the viability of certain consoles, computers and some other hardware. I've been using software emulators since the late 90's, and remember how awful many first generation free emulators were.
Suffice it to say, there is never going to be a one-size-fits-all-everyone-happy solution. So lets break this down:
- A modular/upgradable system makes the most sense as it requires the least investment in parts that people don't want or don't have an investment in. However a modular system ultimately costs the most, as everyone isn't subsidizing all the parts. The benefit here is that kevtris doesn't need to build all the modules, someone else can.
- 8-bit computer's and consoles can currently be emulated accurately enough on high end computers, so the market for the AVS, NT Mini, and various other FPGA-based systems is smaller than that of 16-bit. So I feel the Zimba 3000 should focus on being able to run all 16-bit consoles and computers. Emulating 16-bit consoles and computers has never been accurate enough, even on the highest-end computers. There is an entire generation of people who grew up without the SNES, Sega Genesis, Amiga, and have no idea that things like the Nintendo Virtual Console and PC-based computers aren't supposed to look, sound or have that much latency.
- I feel that ARM-based emulators (eg Raspberry Pi, Retron 5, Retro Freak and such) are a cop-out, as they rely on the inaccurate hacky/laggy emulators, and the crapshoot of TV compatibility (let's not assume TV manufactures care, and just side-step them by putting the scaler in the console,) providing no ability to use your existing game investment accurately. So the goal for the Zimba 3000 should be to "replace all 8-bit and 16-bit consoles, and their add-ons/expansion devices", while still allowing people who have a great investment in those games and accessories to use them, and save them from the landfill.
- The last argument is input and output. I think everyone is on the same page about the need for HDMI and SD card support in "this version" of the Zimba 3000, but I think many people are barking up the wrong tree about what is really viable on a FPGA while keeping the costs low.
- 4K TV's and monitors are available today, the 4k monitors are "gaming", but the TV's so far are pretty terrible. 8K TV's are around the corner, so planning for that today should be done, but maybe not in the current version of the Zimba 3000. These are going to be HDMI/Displayport over USB-C. It's entirely possible to drive 1080p from the FPGA (the NT Mini does this AFAIK,) but right now, even FPGA systems that support 4K, are often paired with HEVC decoder/encoders with the intent of being used for SmartTV's. So it's likely that the FPGA needed do to 4K/8K over DP/USB-C exceeds that of what kevtris wants to use. However, why not toss access to the main FPGA's output to the video expansion header so that at some point a "4K" or "8K" usb-c based complex scaler output could be built without having to put it into the onboard HDMI? Maybe leave the onboard HDMI as only a simple integer scaler. VGA, DVI, RGB(SCART/PVM), JAMMA, and so forth could be put on their own video boards.
- Original cartridges should be on an expansion bus. I'm not sure how kevtris wishes to do this as the number of address and data pins on the systems range from 24 pins on the Atari 2600 (13 address lines, 8 data, +5V and 2 ground), to SNES (16 address A bus, 8 address B bus, 8 data bus, 8 expansion bus, 16 SNES-specific pins, 2 Vcc, 2 ground, Left analog audio, right analog audio. ) From images seen, I don't see any 240 pin connector (Neo Geo MVS), so I get the feeling that a third FPGA might need to be involved, where this third FPGA sits on the end of the voltage shifters.
- Original controllers, keyboards, mice, joysticks should be on an expansion bus. This is likely best done by combining it with the cartridge expansion bus. EG (Z3K = Expansion bus - controller bus) or (Z3K - controller bus), thus allowing one to swap their Sega/Atari DB-9 with the NES/SNES controller bus if that's what they want. USB-C or USB connectors can be used for onboard USB HID, Xbox 360/Xbox One/PS3/PS4-style controllers, or HID USB-bridge (SNES, PSX, PS2, gamecube.) I don't think the Zimba 3K should even bother with wireless controllers.
- If it's modular enough, third parties can support computers (MSX, PC9801, DOS, etc) , obscure expansion cards, music devices (eg MT-32, midi devices) using the Zimba 3000 base hardware, and thus being able to justify lowering unit costs with higher quantity orders of parts. But if it's too flexible, it becomes aimless, and kevtris's time doesn't get used efficiently. In many ways, this feels a lot like the early 80's microcomputer era where people were building their own computers from kits. kevtris should probably make it clear that current generations of FPGA will not be able to do certain things and still be affordable. Like I've talked to people casually about what is possible in software, FPGA, dynamic recompiling, and so forth, and people are under the impression that everything can be done in FPGA. From what I understand, the highest-end CPU (alone) that can be emulated on a FPGA is the PS1, 32X/Saturn, 68020, Pentium (x86) @50Mhz but emulating these with a single FPGA today might be too expensive, and would require a multi-chip solution.
One thing that frequently becomes the unwanted focus in every emulation scene I've been to, is that people get extremely pedantic over the developers intent. In the PC/MSDOS emulation, it's incredibly difficult to get correct aspect ratio emulation since all the emulators have to use a framebuffer, thus one frame is buffered in system memory, and then it has to be integer sampled up and then rescaled down, sometimes at the expense of 3 frames of latency. But most DOS era games didn't use framebuffers (ISA bus is slow,) they wrote directly to the video cards memory. In the console emulation communities, we again get into the same arguments about "should it look pixeled" and again come back to the aspect ratio. Even in this thread. It is my belief that you shouldn't second-guess the developers intent. So integer-scaling should be the default, and only if the user opts to, let them override the aspect ratio and scaling. Not everyone wants to experience "the CRT effect" because as much as we want to say the CRT was better to play the games on, it was never good for your eyes, and no two CRT's have the same focus, color and brightness as they change with age, even if they all use the same phosphors.
Referring back to kevtris's block diagram, if it's made so that a "Zimba 3K" base unit can emulate most 8 and 16 bit systems, using USB and the SD-card, over HDMI, that solves about 50% of the needs of the people who would be willing to pay $200 for it. The other 50% would be willing to spend the extra money to get whatever expansion bus to enable 100% compatibility with real cartridges and controllers for a system (most NOAC/GOAC things are $20-40USD each by comparison, and they use the SNES as the base unit.) Then I think this is a solid direction. If at some later date a Zimba 3K2 or 4K (for 4K TV) comes along and also adds the ability to play something else that was impossible with the existing FPGA, all the existing expansion parts could still be used, and the previous generation Zimba3K is doesn't lose any value.
I do express a bit of reservation about the games being stored on a SD-card or being able to support copier/flash drives, since that encourages piracy, but if you're going to spend $200-$500 on an accurate FPGA console, you likely have the money to buy the games off eBay to have an accurate experience.
TL;DNR version: I look forward to seeing this. While I think 98% accurate software emulators might be good enough for people to just nostalgia trip (eg the Virtual Console service.) Those are not the intended audience of FPGA systems. I've looked at things like the MiST board, I feel these are not powerful enough, and make no attempt to address the need for upscaled HDMI connections.
Edited by Kismet, Thu Feb 9, 2017 9:26 PM.