Arcade-Learning-Environment icon indicating copy to clipboard operation
Arcade-Learning-Environment copied to clipboard

Ability to serialize RAM / frame buffer when cloning states

Open JesseFarebro opened this issue 3 years ago • 1 comments

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.

  1. Add a flag to optionally serialize both RAM/frame buffer.
  2. 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.

JesseFarebro avatar May 16 '21 20:05 JesseFarebro

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.

anadrome avatar May 29 '21 23:05 anadrome