Arcade-Learning-Environment
Arcade-Learning-Environment copied to clipboard
Ability to serialize RAM / frame buffer when cloning states
Currently, the ALE doesn't serialize the RAM or frame buffer when cloning states. There are various issues with naively doing this (see #413) but there are potential workarounds.
- Add a flag to optionally serialize both RAM/frame buffer.
- The emulator is now deterministic so we could serialize the state at the time
t-1
and run the emulator forward one frame which would rehydrate both the RAM and frame buffer. The logic of this could get messy but it would be easy to remain backwards compatible.
I believe upstream Stella has this functionality now so it might be worth taking a look to see how they managed this.
Fwiw I recently discovered (while looking for something else) that there was a discussion of this in 2016, though nothing was implemented: https://github.com/mgbellemare/Arcade-Learning-Environment/issues/165#issuecomment-219289321
One suggestion from that discussion was to assert() if someone tries to get a stale RAM or screen rather than silently returning the wrong one. Not sure if that's the design you want to go with, but thought I'd connect the previous discussion.