BizHawk icon indicating copy to clipboard operation
BizHawk copied to clipboard

TAStudio: allow persistent frame-bound RAM pokes

Open RetroEdit opened this issue 1 month ago • 6 comments

See also: #4570

If RAM-poked frames had a different color, it would be useful to have an explicit way to add persistent frame-bound RAM pokes. The idea is that each frame has an associated RAM poke changes table with a list of addresses and their values, and these get applied each time that range of frames is played back in TAStudio. For RAM freezes, the frame could perhaps instead be stored as an interval of frames (though this doesn't really play nicely once you start throwing branches into the mix).

Benefits: it allows RAM pokes to be more explicitly managed, instead of having to re-create or carefully remember them each time you want to experiment with nearby frames.

Downsides: this feature probably adds a lot of complexity for one somewhat niche situation, and the UI would need some care to clearly communicate what's going on.

Maybe this sort of thing is better demo'd as an external tool before/instead of incorporating into BizHawk itself.


One useful conceptual model for both users and for the design generally suggested on Discord is treating RAM pokes similar to inputs: this preserves useful intuition for the user, and also informs the implementation. They could actually be rendered in their own column on the input log itself. I envision something akin to markers, with an additional number corresponding to the number of RAM pokes.

One vital caveat: if memory pokes/cheats become allowed movie "inputs", the movie must clearly communicate it's cheated when it loads.

RetroEdit avatar Dec 02 '25 18:12 RetroEdit

Imo, one should use a Lua script instead. I don't think there's any way we could create such a feature in a way that doesn't cause issues and frustration for people who aren't using it in exactly the expected way.

This is also a very simple Lua script to write. It might be a good one to include with BizHawk? Since we already include various Lua scripts with releases.

SuuperW avatar Dec 02 '25 22:12 SuuperW

See also #3389.

Pokes are cheats, and cheats in movies can use the same mechanism as mic samples.

YoshiRulz avatar Dec 03 '25 15:12 YoshiRulz

One useful conceptual model for both users and for the design generally suggested on Discord is treating RAM pokes similar to inputs: this preserves useful intuition for the user, and also informs the implementation. They could actually be rendered in their own column on the input log itself. I envision something akin to markers, with an additional number corresponding to the number of RAM pokes.

I really like the idea of having additional columns that preserve their contents in the movie file itself, as well as ones which the user can edit like regular columns. I've wanted to use such a feature in the past, but it didn't exist. Even without being explicitly for RAM pokes, this would be a good upgrade to Lua's existing ability to create TAStudio columns and could be a really good way to get this feature implemented as a Lua script.

SuuperW avatar Dec 03 '25 19:12 SuuperW

  • --> #3976

YoshiRulz avatar Dec 03 '25 23:12 YoshiRulz

Pokes are cheats, and cheats in movies can use the same mechanism as mic samples.

This hasn't even begun to be implemented, has it? So the mechanism hasn't been determined, and there isn't one to use. I doubt they'd be compatible anyway.

Add userdata to tastudio greenzone states

Off-topic, unless you have a good way to implement this feature via userdata. Which I don't see how that could be possible, since frame-bound RAM pokes should persist when the greenzone is deleted.

SuuperW avatar Dec 04 '25 00:12 SuuperW

Imo, one should use a Lua script instead. I don't think there's any way we could create such a feature in a way that doesn't cause issues and frustration for people who aren't using it in exactly the expected way.

This is also a very simple Lua script to write. It might be a good one to include with BizHawk? Since we already include various Lua scripts with releases.

Agreed. IMO this is a won't fix.

vadosnaprimer avatar Dec 04 '25 16:12 vadosnaprimer