Page 1 of 1

Feature Request: Input Recording and Playback

Posted: Sat Aug 07, 2021 10:58 pm
by deepthaw
I’d like to see the ability to record and playback inputs. I don’t know at what level of the project this would need implemented so I’m starting here.

My use case would be to be able to send core devs an input session that will get them into an exact state that I encountered for the purpose of reporting bugs without knowing exactly how to recreate it.

I feel bad saying “I did this and this happened and it might be a bug but I can’t recreate it.”

Re: Feature Request: Input Recording and Playback

Posted: Sun Aug 08, 2021 4:12 am
by gamesfan
That would be useful for RPG grinding.
Go into an area, kill a bad guy level up, leave comeback and do it over and over again.

Re: Feature Request: Input Recording and Playback

Posted: Sun Aug 08, 2021 5:34 am
by AtomicShroom
gamesfan wrote: Sun Aug 08, 2021 4:12 am That would be useful for RPG grinding.
Go into an area, kill a bad guy level up, leave comeback and do it over and over again.
Wouldn’t that only work if the battle encounters aren’t randomized, which they usually are? Plus if you get a back or pincer attack for example, this would throw your recording right out the window.

Re: Feature Request: Input Recording and Playback

Posted: Sun Aug 08, 2021 1:41 pm
by gamesfan
I suppose it would depend on the game.
Crono trigger Snes aren’t random,
Auto record your Mario speed run.

Depending on implementation you could record special moves. Then maybe play them with a sing button.. like instant “haduken” in Street fighter…

Lots of ideas come to mind.

Re: Feature Request: Input Recording and Playback

Posted: Sun Aug 15, 2021 4:49 pm
by deepthaw
I was thinking of this less for macros and more for stuff like TAS playback. I imagine you’d have a new “Reset with input recording” option that’d put the system into a known reproducible state and then record all inputs as they came in.

The resulting file could be shared for a perfect recreation of the original session. Most people use it to record TAS but I could see value in being able to share stuff with developers by letting them get back into the exact same state you were in when a bug occurred.

Re: Feature Request: Input Recording and Playback

Posted: Sun Aug 15, 2021 4:57 pm
by dshadoff
Realistically, this would need to be implemented in the core, to snapshot what value was passed from the input to the core, as the core made the request. This would be based on each scan of the port so it could take place in each core in the same way. There is the potential for minor variances in timing across different versions of Main-MiSTer or different SDCards, but mostly this would be at screen transitions rather than in-game play.

Capturing the actual values would not be so difficult, but the means of storing/retrieving/playing them might need some deeper thought.

Re: Feature Request: Input Recording and Playback

Posted: Mon Aug 16, 2021 4:13 am
by FoxbatStargazer
This is ver uneducated but I thought USB polling was handled at a higher level? Like the core has to check whatever port, but an input being found by core request on a USB "port" is because the linux OS already polled the physical USB connection. How else could the 1 ms script work?

Re: Feature Request: Input Recording and Playback

Posted: Mon Aug 16, 2021 4:29 am
by dshadoff
Polling at a higher level would not be synced to the core's actions, and would not adequately serve the requirement.

Re: Feature Request: Input Recording and Playback

Posted: Thu Jun 01, 2023 7:45 pm
by wmd

To me, this feature would be most useful as proof of game completions. E.g. you can upload and share your input recording online as proof that you had completed a game. MAME has had this for many years, although I imagine it's more challenging to implement on the MiSTer.


Re: Feature Request: Input Recording and Playback

Posted: Thu Jun 01, 2023 9:11 pm
by Missus

reminds me of doom demo lmp files

https://doomwiki.org/wiki/Demo

this would be amazing to have for mister but i imagine there would be a tom of overhead for the core to do this, unlike a funtion built in to a specific games engine.