3 ms·
I can take a stab at that. The perf is fine for a lot of things. The code on the other hand is kind of 'odd' to follow. It was a C project. #define everywhe
by sumtechguy 5y ago
I can take a stab at that.
The perf is fine for a lot of things. The code on the other hand is kind of 'odd' to follow. It was a C project. #define everywhere to basically create an object like system. They now are moving to C++ in some places they use it to good effect and stripping out that #define system. Other spots are still the same C code from 15 years ago. So now you have a project that is both. So it makes it sort of strange in a few places. They have over the years made decent progress to strip out some of the foot guns that C lets you do. Then on top of that 6 different project leads with differing opinions on how to run the project over the years. They have also smashed together two different 'ROM' systems. One is a static system where everything is burned into the code and the other is a dynamic system using XML. So context burden is higher when trying to change anything. Add to that unless you know their system building a new emu is kind of interesting.
But it is still sort of funny seeing people rocking a .34 version. 'because of performance'. When anything within the last year is probably just as performant and wildly more capable and accurate. If the chart I saw last week is any indicator 241 should have at least a 2-5% speed bump because they removed a C'ism and flipped it over to use a C++ style parameter in some core calls. Most of this goes back to around 110 or so when they flipped over to use C++. Well they also added in a decent regression in speed at that time too. So those two things became conflated in peoples mind that C++ bad. When there was a design issue.
Good place to follow the code and see what is going on. https://github.com/mamedev/mame https://github.com/mamedev/mame I would estimate they bash out about a dozen pull requests a day.
- bluGill 5y agoIn summary the project is 25 years old and it shows in the code. All old projects have that in some way as 25 years of work and mistakes catches up
- zxcvbn4038 5y agoThe .3x versions were the last ones before they put in abstraction layers for video and sound, which had a lot of benefits, but adversely impacted performance on low-end hardware of the time. On modern hardware I don't think it is really an issue, particularly for games from the 80s and prior. Raspberry Pi 4 works just fine.
- 300bps 5y ago25 years of a loose confederation of unpaid developers working on a code base with frequent updates and improvements. If this is the worst that can be said about it, they're doing pretty darn good.
- sumtechguy 5y agoIt is the tour-de-force in emulation. If I were starting my own emu I would lean heavily on what is in there.