This is a feature request, I was wondering if it would be possible to be able to speed up gameplay, yet keep the sound playing at normal speed. Maybe change the rate of the timers in the SPC, or underclock it, or whatever would accomplish the effect.
It would be mainly useful for RPGs. Really, who plays those things at normal speed without frameskip?
Obviously there would be possible desync problems which might crash the game, but that's what the rewind feature is good for.
Changing gameplay and sound speed independently?
Moderator: ZSNES Mods
Changing gameplay and sound speed independently?
"We are merely sprites that dance at the beck and call of our button pressing overlord."
-
- Seen it all
- Posts: 2302
- Joined: Mon Jan 03, 2005 5:04 pm
- Location: Germany
- Contact:
Workaround would be muting the music channels and playing it back with SNESAmp instead...
vSNES | Delphi 10 BPLs
bsnes launcher with recent files list
bsnes launcher with recent files list
-
- ZSNES Developer
- Posts: 6747
- Joined: Tue Dec 28, 2004 6:47 am
Re: Changing gameplay and sound speed independently?
Without even thinking too much, this won't happen. IIRC, there are some games that rely on very crucial SPC-core timing and what you are suggesting completely breaks them. Components on a console are not like trying to overclock RAM and downclocking the CPU on a comp. Some CPUs on a console (particularly this one) rely on sensitive timing.Dwedit wrote:This is a feature request, I was wondering if it would be possible to be able to speed up gameplay, yet keep the sound playing at normal speed. Maybe change the rate of the timers in the SPC, or underclock it, or whatever would accomplish the effect.
It would be mainly useful for RPGs. Really, who plays those things at normal speed without frameskip?
Why the hell would you want more desyncs than the old netplay in ZSNES? This is retarded.Obviously there would be possible desync problems which might crash the game, but that's what the rewind feature is good for.
Continuing [url=http://slickproductions.org/forum/index.php?board=13.0]FF4[/url] Research...
-
- ZSNES Shake Shake Prinny
- Posts: 5632
- Joined: Wed Jul 28, 2004 4:15 pm
- Location: PAL50, dood !
Re: Changing gameplay and sound speed independently?
The rewind feature would only reproduce the crash.Dwedit wrote:Obviously there would be possible desync problems which might crash the game, but that's what the rewind feature is good for.
Mute the emu and use a media player.
And I know several people playing RPGs without frameskip - not all of them are stupid button mashers where holding turbo A + frameskip will clear the game for you.
皆黙って俺について来い!!
Pantheon: Gideon Zhi | CaitSith2 | Nach | kode54
Code: Select all
<jmr> bsnes has the most accurate wiki page but it takes forever to load (or something)
Okay... Crazy idea. Emulate two different SPC700s. One audible, the other silent.
Have one run at normal speed and communicate with the CPU as normal. This is the silent one.
Have the other one run at a variable speed, except if there has been communication with the CPU within the last thousand clock cycles or so, then it runs at normal speed. Make it unable to change the state of the CPU or RAM, but it should respond to the output that the CPU sends to it.
And things get bad, map a button to transfer the state of the silent SPC700 to the audible one. So basically you have the CPU outputting to both SPCs at the same time, but only the one running at normal speed gets to talk back, and the one running at a different speed goes back to normal speed during communications.
If this theoretically were done, would it work?
Have one run at normal speed and communicate with the CPU as normal. This is the silent one.
Have the other one run at a variable speed, except if there has been communication with the CPU within the last thousand clock cycles or so, then it runs at normal speed. Make it unable to change the state of the CPU or RAM, but it should respond to the output that the CPU sends to it.
And things get bad, map a button to transfer the state of the silent SPC700 to the audible one. So basically you have the CPU outputting to both SPCs at the same time, but only the one running at normal speed gets to talk back, and the one running at a different speed goes back to normal speed during communications.
If this theoretically were done, would it work?
"We are merely sprites that dance at the beck and call of our button pressing overlord."
-
- ZSNES Shake Shake Prinny
- Posts: 5632
- Joined: Wed Jul 28, 2004 4:15 pm
- Location: PAL50, dood !
Well, the variable spc must be able to write to dsp ram, else you won't get anything good out of it.Dwedit wrote:If this theoretically were done, would it work?
Also, most games keep writing stuff to the spc, so the music would keep stutter-jumping every so often, giving an awful experience.
So it would work in a sense, but not good for anything decent.
皆黙って俺について来い!!
Pantheon: Gideon Zhi | CaitSith2 | Nach | kode54
Code: Select all
<jmr> bsnes has the most accurate wiki page but it takes forever to load (or something)
-
- Seen it all
- Posts: 2302
- Joined: Mon Jan 03, 2005 5:04 pm
- Location: Germany
- Contact:
You'd of course give each SPC its own DSP.grinvader wrote:Well, the variable spc must be able to write to dsp ram, else you won't get anything good out of it.Dwedit wrote:If this theoretically were done, would it work?
(And then hunt through the code to find all places where the first DSP is updated.

</inane>
vSNES | Delphi 10 BPLs
bsnes launcher with recent files list
bsnes launcher with recent files list
I think it'd work in a lot of games, but it would be very unreliable. Games like EWJ2 and ToP are obviously out of the question. But some of the really, really simple stuff that just sends one signal to start playing a new song or sound effect and nothing more? Maybe ... you may get stuck in CPU<>SMP communication loops which would just lag down your game anyway, though. Which would kind of defeat the whole purpose.
It's pretty safe to say that nobody else is going to do it for you, though. I can tell you where the timer code is located in my emulator, if you want to change it yourself. Or you can dig through ZSNES or whatever. Otherwise, it's most likely not going to happen.
It's pretty safe to say that nobody else is going to do it for you, though. I can tell you where the timer code is located in my emulator, if you want to change it yourself. Or you can dig through ZSNES or whatever. Otherwise, it's most likely not going to happen.