bsnes - Savestate support

byuu - Dec 04, 2005

Well, I guess I can start on savestate support now. Just add one core part at a time. I did want to wait for anomie so that we could create that generalized SNES savestate format, but he seems MIA at the moment... :(

I would hardly say it isn't worth looking at, but eh. Also, my licensing probably isn't very friendly to the nesvideos crew. Although I'm always willing to import others' code into my trunk.

Speaking of rewind, I'd love to add something like blargg's rewind idea, where you actually emulate forwards but play backwards, but bsnes is hardly the emulator to be trying something that CPU expensive on... it would be cool as hell, though.


Nach - Dec 04, 2005

byuu wrote:
I would hardly say it isn't worth looking at, but eh. Also, my licensing probably isn't very friendly to the nesvideos crew.

I don't think they'll have an issue with your licensing. Their basic requirements these days seem to be that they can modify it for their own use and it runs on Linux.

The biggest problem they have regarding this is: "No publically-released derivative works of this source code are permitted without my permission."

But it's just a hop over from #nesvideos to ask permission which you'll probably grant, right?

byuu wrote:
I'd love to add something like blargg's rewind idea, where you actually emulate forwards but play backwards, but bsnes is hardly the emulator to be trying something that CPU expensive on... it would be cool as hell, though.

It's not CPU exspensive at all. Although depending on what method you use exactly, it could be memory exspensive.


byuu - Dec 04, 2005

Quote:
But it's just a hop over from #nesvideos to ask permission which you'll probably grant, right?

I granted this permission to Richard Bannister because I never plan on releasing a mac port, nor buying a mac, for that matter.

I basically don't want to fork the hell out of my userbase like the SNES9x project has. There are what, 15 separate builds of that emulator now? And then you go and fix bugs and add new features, but the other build maintainer is now gone, so you get people complaining about something you fixed half a year ago in the official release. And then you get certain people who rename your emulator and try and take all the credit. Plus it's wasteful. People should work together on the same codebase and improve that, instead of making a new version because one or two small features aren't in the main build. And the main thing that really upsets me are things like that one multi-platform emulator that's for sale, but takes 95% of its emulation code from free projects like 9x.

Of course, anyone can break my license, but then I can just start releasing the source three versions behind like 1964 does, too.

To answer your question, I might grant permission. Just video capture features alone probably won't matter much to me. I'll talk more about that when I get savestates, though.

Quote:
It's not CPU expensive at all.

It isn't the way ZSNES implements it. What blargg does is take periodic savestates, and then when the user hits rewind, he goes back one savestate, then emulates everything up to the present and stores it in a buffer. And then he plays that buffer backwards. So the audio sounds like it's reversed, and the video is smooth. e.g. it looks like a real rewind instead of like loading a savestate.

Now, given it takes 1.8ghz or better for bsnes to reach 60fps in all games, you won't be able to generate more than one or two frames going backwards in real-time without there being pause delays, which ruins the effect.

ZSNES might be able to pull it off, because it runs ten times faster. NES emulators can easily pull it off, because they run thirty times faster.


© 2005 ZSNES board - www.emusource.net/bsnes/index.html