NotSoLameNES speed improvements

Tools and projects
Post Reply
Optimus
3DO ZERO USER
Posts: 37
Joined: Tue Feb 07, 2017 11:58 pm
Location: Hull, UK
Contact:

NotSoLameNES speed improvements

Post by Optimus » Sat Mar 14, 2020 10:10 pm

I recently decided to have a look at the original LameNES 3DO port by blabla. I know that was a proof of concept port and also based on an emulator made for educational purposes and not written with speed in mind.

So far I have been working for over two weeks in here. Optimized mostly the renderer (I have a new one rewrite in mind, that could give us some more). Will look at optimizing the CPU and other things soon.
https://github.com/Optimus6128/NotSoLameNES_3DO

Here is a video of how the original port performed, and after 6:50 is the presentation of my improved version.
Original I would estimate would make 0.2fps in game, while mine is no at 6fps (also, if I pause rendering, the CPU emulation on it's own doesn't let this go over 9fps, so I gotta attempt to optimize the CPU next time to reduce this bottleneck, then go back again for my new idea for a renderer (this will need redesign and some more thought and learn more about the NES hardware))

https://www.youtube.com/watch?v=YDumIVqcCeQ

Optimus
3DO ZERO USER
Posts: 37
Joined: Tue Feb 07, 2017 11:58 pm
Location: Hull, UK
Contact:

Re: NotSoLameNES speed improvements

Post by Optimus » Sat Mar 21, 2020 10:00 pm

I finally made a release of the current verson, where I added a file menu selector (instead of the original code requiring a rom.nes), so you can copy all your NES game roms and select what you wish to run. You just need to copy your roms in a specified directory (read the readme.txt) and then run a batch file to build the 3DO ISO. It's simple as that!

Not much improvements from speed since last time. Still 6fps with Super Mario 1. And many other ROMs are simple slower or less compatible.

https://github.com/Optimus6128/NotSoLam ... DO_v01.zip

User avatar
Saffron
3DO ZERO USER
Posts: 42
Joined: Wed Feb 11, 2015 6:35 pm

Re: NotSoLameNES speed improvements

Post by Saffron » Mon Jul 20, 2020 3:05 am

good work! I'm afraid the 3DO ARM is too weak for emulating the NES at decent speed, and if you add graphics on top of that... I remember checking the CPU emulation and doing some tests and it didn't look good.

I'm not a pro of emulation (I just code games, not emulators) but I would be really surprised. I remember someone coded a NES emulator on the PSX, but that console has like 3 times the CPU power of the 3DO's ARM. Saturn CPU is twice as fast as 3DO and I don't remember anyone being able to do a NES emulator on that one.

Still, it can be a great project for having fun and learning. Please keep sharing any progress!
You can't take the sky from me

Optimus
3DO ZERO USER
Posts: 37
Joined: Tue Feb 07, 2017 11:58 pm
Location: Hull, UK
Contact:

Re: NotSoLameNES speed improvements

Post by Optimus » Wed Oct 07, 2020 8:57 am

Saffron wrote:
Mon Jul 20, 2020 3:05 am
good work! I'm afraid the 3DO ARM is too weak for emulating the NES at decent speed, and if you add graphics on top of that... I remember checking the CPU emulation and doing some tests and it didn't look good.

I'm not a pro of emulation (I just code games, not emulators) but I would be really surprised. I remember someone coded a NES emulator on the PSX, but that console has like 3 times the CPU power of the 3DO's ARM. Saturn CPU is twice as fast as 3DO and I don't remember anyone being able to do a NES emulator on that one.

Still, it can be a great project for having fun and learning. Please keep sharing any progress!
True, I think the bigger issue I found with the 3DO is the low clocked CPU (even if ARM CPU is really better at similar mhz as other CPUs at the time). While the CEL engine as I discover, if used properly and know how to avoid bottlenecks, it's a pretty good piece of hardware.

I was working on that NES port knowing it will never reach playable, as an exercise of trying to see how far I can push optimization. I have some other ideas about optimizing the rendering but I just left this project to focus on others and it wouldn't have cut it over 10-15fps as now the CPU emulation bottleneck starts to hit. True, the NES emulator on PS1 is very impressive, not only though the PS1 CPU is higher clocked (and possibly MIPS is analogous to ARM in speed? I don't know) but looking it the code it was mostly written in pure assembly.

Post Reply