hcorion asked that I open this ticket otherwise he'd forget.
Some titles (mainly demos) have an issue where a time past a certain timestamp will render them non-functional (example off hand would be Sonic Generations 20 day demo). Allowing an RTC variable of sorts, preferably set to 01/01/2000 would be ideal in circumventing this issue.
Maybe it could be implemented like Dolphin where by default it uses the PC's clock, but if you enable RTC override then you can set your own time/date. During emulation, it could increment as per normal, so you could simulate something like the demo ending as you're playing it!
I tried to look into this, but looks like Sonic Generations Demo actually does run even after expiration? It's possible that the lock was not done from the game but from PS3 OS.
Note to self or anyone who wishes to look into this in the future: Sonic Generations Demo is time locked but boots fine in RPCS3 because sceNpDrmGetTimelimit is stubbed or unimplemented.
Is this still a desirable feature?
It sounds like most demos have been resolved with the sceNpDrmGetTimeLimit change.
The way I was thinking to implement this was:
A per-game game time, determined as an offset from current OS time.
The offset would be calculated when adjusting the current game-time in the configuration dialog (potentially per-game).
There would also be a button to reset this offset to 0 (i.e. game time = current OS time).
Is this still a desirable feature?
It sounds like most demos have been resolved with the sceNpDrmGetTimeLimit change.
Most demos indeed use sceNpDrmGetTimeLimit but there are some games that just call sys_time_get_current_time like Need for Speedâ„¢ The Run Demo [NPEB90355].
@NicknineTheEagle @ProtoFgt @JMC47
Any chance you'd be interested in testing a PR for me?
https://github.com/RPCS3/rpcs3/pull/8837
The PR for this got merged today, so it should be in the current release.
There's still a bit of roughness around the edges of the implementation (just related to handling the offset from wall clock adjustment in the settings dialog), but it should work fine for 99% of use cases (you only get minute resolution on setting the clock currently).
@bevanweiss The implementation in https://github.com/RPCS3/rpcs3/pull/8837 is flawed - since time is stored as an offset, it keeps shifting forward with the present time which poses a problem for time-limited demos as you have to keep re-setting the time back to play.
Most helpful comment
Maybe it could be implemented like Dolphin where by default it uses the PC's clock, but if you enable RTC override then you can set your own time/date. During emulation, it could increment as per normal, so you could simulate something like the demo ending as you're playing it!