I have an Analogue Pocket, which works really well, but the fact that it uses an FPGA is essentially meaningless to me. Is there really any significant difference compared to software emulation?
I know how they're different, I understand the mechanics of it, I just don't understand why it's not possible to make a software emulation that is as good as FPGA emulation. Or maybe it is possible. I always felt like doing it in software would be a lot more flexible.
IMO: the only real advantage is that it allows you to meet the precise timing needed to interface with physical hardware, like cartridges and other consoles (with link cables).
I think they're also really fun to write, because you think more like a hardware designer than a software engineer.
Am I correct in thinking that FPGAs have an advantage over software emulators when it comes to latency? In particular the latency from the host operating system before input has even been received by the software emulator? I.e. FPGAs don't have a host OS and will have the same latency as original hardware?
This is very much a genuine question, I just want to know if my intuition about this is right or wrong.
FPGAs not only have no host OS, but they are actual hardware. The only thing you program are lookup tables which then represent logic gates/multiplexers which only have the normal hardware latency. There is literally no software involved in execution.
That's why you can build "any" hardware with them. Even CPUs which then execute your desired software
Yeah, that's another advantage. Theoretically you can get down to <1 frame of input latency with an FPGA. I haven't found the latency on a software GBA emulator running on a computer to be noticeable, but some people might find this to be another advantage.
I think with a dedicated emulation handheld (non-FPGA), you could probably pull some tricks to bring down the latency though.
It deeds on the game and technology that you try to emulate. I wrote home-brew emulator software for the Nintendo DS. I could play Sega Genesis games without problems but some SNintendo games like StarFox game me literally headaches. Why? Because the SNES included special chips in the cartridge that were painful to emulate, badly documented and gave you screen flickering and stuff.
Those consoles are so old now that you could emulate them with anything, a Chinese chip that cost dollars will do. But you will be extremely wasteful, consuming tens or hundreds of times more energy(less battery time) for a worse result.
Software is way more flexible. Everything is prototyped first in software. In the past there were machines that consumed a hundredth of a watt of energy. Emulating them using 20Watts is so wasteful.
With software you had only one thing that needs to do totally different things. With hardware you can choreograph a chip working in parallel among others in an independent way.
I know how they're different, I understand the mechanics of it, I just don't understand why it's not possible to make a software emulation that is as good as FPGA emulation. Or maybe it is possible. I always felt like doing it in software would be a lot more flexible.