Editor, Active player (458)
Joined: 2/11/2018
Posts: 240
Warning: Don't know what I'm talking about The idea is an external program that simply sends key presses to the emulator, like a macro. All that would need to be configured are the keybinds the user has chosen for the emulator. You press the frame advance key in the editor, it sends that to the emulator. If you're in read-only mode, it also sends whatever inputs are on that frame. It basically does anything that's possible in TAStudio, as long as it doesn't need to know the current state of the emulator to do it. I imagine there'd be some problems to this approach, I just don't know what they are. It should work for any emulator with frame advance, read/write toggle, and savestates.
Ahym
She/Her
Joined: 8/26/2023
Posts: 7
Location: Valley of the Sun
This would be really nice to have as it would increase the amount of software that works with the psuedo program. My only concern is how to approach ensuring that frames only advance after the input has been sent. Possibly code injection to make the emulator sleep until awake after every frame?
Editor, Active player (458)
Joined: 2/11/2018
Posts: 240
I suppose one frame would be like 1. Hold A and B 3. Hold frame advance 4. Release frame advance 5. Release A and B So it would be necessary to ensure this does not happen too fast, so the emulator can process this before the A and B are released. Could have a configuration for how long to wait between each frame advance.
Ahym
She/Her
Joined: 8/26/2023
Posts: 7
Location: Valley of the Sun
Randomno wrote:
I suppose one frame would be like 1. Hold A and B 3. Hold frame advance 4. Release frame advance 5. Release A and B So it would be necessary to ensure this does not happen too fast, so the emulator can process this before the A and B are released. Could have a configuration for how long to wait between each frame advance.
If you want to implement the frame advance as part of the input, you could use something similar to AutoHotkey, which lets you designate inputs with a configurable time in ms. Inputting commands every 16.67ms would give you 60fps outputs
YoshiRulz
Any
Editor, Emulator Coder
Joined: 8/30/2020
Posts: 106
Location: Sydney, Australia
You would also need to block or at least detect when a frame advance or savestate is triggered manually i.e. not by the tool. Also I think you may be underestimating just how much TAStudio does. As an experiment, try writing an alternative piano roll for EmuHawk in Lua/pseudocode and count how many distinct API functions you need (excl. GUI). I got to 10 before giving up.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Hey look buddy, I'm an engineer. That means I solve problems. Not problems like "What is software," because that would fall within the purview of your conundrums of philosophy. I solve practical problems. For instance, how am I gonna stop some high-wattage thread-ripping monster of a CPU dead in its tracks? The answer: use code. And if that don't work? Use more code.