Why are there different versions of Retropie for different raspberry pi models?
-
This is probably very basic knowledge, but I was just curious about what is fundamentally different on the different versions of Retropie available. By that I mean Retropie for pi 0/1 vs for pi 2/3 (and in the future for pi 4).
From my understanding (correct me if I am wrong), Retropie runs on top of Raspbian, which all of the pi's can run. So I don't fully comprehend why they aren't compatible with the same version of Retropie even though all of them run on the same OS.
An analogy that comes to my head would be that Retropie running on Rasbian would be like Google Chrome running on Windows 10. If you have different machines running Windows 10, they should all be able to run Google Chrome for Windows 10 regardless of their hardware.
So why does it not work like this for Retropie and what is different on the different versions of Retropie?
-
this is an interesting question I would love to know that thing too. Maybe some of the admins will explain.
-
@mesprit The reason there are different versions, based on the PI model, is the compilation parameters for the programs included are different, based on the CPU of the model. Pi2 and 3 have a better CPU than the PI0/1, so it makes sense to try and optimise for it, Pi4 also has a new CPU and has different compilation parameters since it's a different/better CPU.
-
It's like a Diesel and an Otto engine - to be very abstractive here.
Both are car engines but are based on different designs.Edit:
@mitu why are you always in first place? :D -
@mitu So the programs' code are the same, but they are actually interpreted/compiled differently in order to best use the hardware? That is very interesting.
-
@mesprit said in Why are there different versions of Retropie for different raspberry pi models?:
So the programs' code are the same [...]
The code may be the same, but it can take advantage of certain CPU features available only for certain systems (i.e. NEON instructions for ARM) so that part of the code is built only for those CPUs. It's just an example on how optimisations can be performed depending on the platform/CPU.
EDIT: Forgot to mention, depending on the model, certain emulators can be set as default for certain systems - for instance PI1/0 can get
mame4all
as default arcade emulator, whilemame2003
/fbneo
would be default for Pi2/3. -
@mesprit It's just the way to make things easier. On barely every mashine BASIC will show Hello World with
10 print "Hello World"
The CPU instructions for doing this are different so you might need a different BASIC interpreter for every "system".
But this is also very abstractive - but hope you get it.
Imho you can use a Pi0/1 image on a Pi2/3 revision but you will loose benefits for some optimized emulators. That's what @mitu said in his previous posting.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.