Hmm... it sounds ridiculous, but I think it might theoretically be possible to make a PC emulator with slowdown and rerecording. It would definately take a different approach to that of an N64 or SNES emulator, because you'd have to:
- circumvent the executable's native speed (allowing timed events to slow down, possibly deliberately slowing down processes by a scalar)
- change the executable's size at will (make it windowed instead of fullscreen or vice versa)
- find an efficient way to record mouse and keyboard movements (you're definately not going to want to use 200 bits per frame)
- add your hotkeys to the executable's hotkeys (because you need the keyboard to control the emulator and the executable)
- make an arbitrary savestate (this may be insanely huge, on the order of 10 MB, but whatever)
It would be nice to see this in a few years' time - even if only for DOS games - but it would require a lot of thinking and a bunch of talented coders with experience in a bunch of different powerful and near-machine-code programming languages.
Maybe, a decade from now, TASers will be working on Halo and Counter-Strike.
What do you think? Feasable or no?
Joined: 5/1/2004
Posts: 4096
Location: Rio, Brazil
Lets use a playstation2 to emulate a pc and make a tas on it of someone making a TAS of a playstation game!
actually this would be the ultimate tool since you automatically add re-recording to every single program and emulator. but it would be practical for making avis only i suppose, which beats the current site system (no fcm style file could easily be made compatible across plataforms).
As far as keylogging goes, there's a reason many keyboards only support 3 keys at once. Excluding shift/ctrl/alt modifiers, that is.
Mouse you can store as either an (x,y) location, or relative movement, and won't take much space either way.[/quote]
Forgive my ignorance, but how would this be different from any other emulator? Isn't it just a matter of having some hotkeys that increase or reduce the number of emulated cycles per second?
I think that this would largely depend on the nature of the OS being emulated. For example, I don't remember DOS having support for what we would call multitasking. You were either running a program or not, which meant that it was either taking up the whole screen or none of it. I assume it would be similar for other command-line OSes.
I'm pretty sure this would depend on the game you're trying to play. The simplest platformers probably have some variation of the arrow keys, one key for jumping, and one for attacking. On the other hand, I've heard of some flight simulators and FPSers that use up a large amount of the keyboard.
Yeah, this would probably be the biggest problem because of the memory and register states that would have to be saved. Furthermore, that just made me think of some other problems that could come up:
The (directory structures?) would have to be the same on both computers if someone wanted to run another's movie. For example, it might desync if one person had the game files in C:\Directory1\ and another person had them in C:\Directory2\.
Recording from "power on" could be annoying depending on how long it took the emulated computer to start up.
I really have no idea how the timing would work, so this might not be a problem at all. Anyway, desyncs might arise if the emulator lags on one computer but not on another.
In any case, I definitely think this will happen sometime in the future, and I can't wait. There are some PC games that I want to TAS or see TASed (Mega Man PC, anyone?).
Well, DOS does have support for programs in the background, right? Aren't they called RTLs or something? I could be wrong.
And do you REALLY want to see Mega Man for PC?
put yourself in my rocketpack if that poochie is one outrageous dude
According to Wikipedia, they're called TSRs. Also according to Wikipedia,
Of course. It was one of the few games that I had under MS-DOS (I now have both of them ;)). Admittedly, the graphics are horrible and beating the bosses is pretty trivial in both games, but I wonder if there are as many glitches as in the console versions.
I hope DOSBox is going to be one of the first re-recordable PC emulators. It "just" needs save states and the re-recording features.
I was thinking Windows, since a large number of games have been released on Windows since its creation (DOS, Win9x, XP, etc.) and a bunch of games released recently seem to be Windows-only. Once you have the Windows emulator, though, it would be reasonably easy to make a Linux or Mac one from it.
Well, sort of. This wouldn't be very useful, though, for programs like Flash and Firefox (unless you want to make an animation tutorial TAS - hey, that would be fun! ^_^). But if you could get a movie file that had all of the necessary information, it might just be practically feasable.
Hmm... That could be useful, theoretically. If you wanted to make a demonstration of how to make a TAS, you could put this emulator or another emulator into the EXE emulator and capture a video of that.
This might be really useful if you wanted to make a video of *any* program - even things that don't support .avi creation, such as homemade C++ games and Windows Explorer.
Wow... that would be unimaginably difficult. The whole reason I made a topic about the PC emulator, in fact, was because I was thinking of how one would make a rerecording emulator for StarCraft. One game might be feasable, but it would be nice to be able to do the same thing with other games as well. That's where the all-around emulator comes in.
Yeah, you're right. You could use keycodes or something (with extra bits for Shirt, Ctrl, and Alt).
But how would you manage frames? How long is a "frame" of computer input, anyway? Infinitely small? Variable within the game? You'd have to figure that out on a game to TAS it.
It's basically like other emulators, except that in a computer the cycles are dictated by the processor, and some things are timed in number of cycles. You'd have to do some assembly-level recompiling of the code to change something as hardware-based as that.
True, but modern Windows (or at least slightly old ones) will run DOS programs, and so you can have newer PCs running older PC structures. A DOS game could be emulated in the modern style, with a window that only runs in fullscreen (except that the emulator would modify it to be able to run in a window). You can actually use Alt+Enter to windowize DOS games in modern Windows, but usually the game pauses or freezes then.
Also, I think Zophar's Domain has some CPU-based emulators for older CPUs. So you could just pop one of those in the PC emu and play like that...
Yeah, that's the problem. You'd need to establish some elaborate and yet easy-to-reach keys to control savestating, pausing, and frame advance (i.e. the minimal functions). You could use keys that are almost never used, though, like ~, F11, SysRq, Scroll Lock, and numpad *.
That's definately a problem that would need tackling. The emulator would have to ask, "I can't find soandso.dll. Where on your computer is it?" and then run it from there. I guess you'd have to make sure not to store that in your computer. Yet another thing for the emulator to have to bypass... Also, if you were running from a CD, you'd need either that CD or an ISO.
Now wait a minute, we're not starting from the computer power up. That would be like starting to record a NES emulator when you turn the TV on. You start when whatever program you're emulating starts - just have the emulator assume that the program has just been started on the computer (after having been installed, of course).
Yeah. You'd definately need a decently fast computer to do this. If your computer lags while playing Halo, for example, you should definately not be watching a Halo TAS on your computer. You'd probably be better off dloading the .avi anyway.
If everything you need is missing, you're not really very far, eh? I think I've seen a slowdown-capable program for DOS somewhere, but that was all it did.
Not true at all! Making a rerecording-capable PC emulator would not invalidate pure PC speedruns any more than making a rerecording N64 emulator obsoleted pure N64 runs. They will remain different things completely. Unless you're using slowdown and rerecording for your speedrun, there should be no problem with dangerous and detrimental overlap.
It's similar, but this thread seems to be more about speculation and ideas whereas that one seems to be more of a request. Besides, Wine doesn't emulate, right?
Okay, I see.
Lol, that why I included the quotes.
You mean Mo'Slo? I've heard of that, but never used it. DOSBox actually has slowdown capabilities. You can set how many CPU cycles it emulates per second or per millisecond in the configuration file. There are also hotkeys to increase and decrease the amount while running it.
According to some threads on the DOSBox forums, save states will indeed be pretty large. They would apparently need to include the status of files to which the game could be writing in addition to the register states and other basic things. From the posts I've read, it sounds possible, but it also seems that people aren't too enthusiastic about working on this feature. I guess that makes sense, but :(.
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
The day's best fictive science fiction: Mouse advance!
Mouse advance: Clicking the mouse (in the emulator) advances a gametic and makes the cursor (in the game) move to the clicked direction as fast as possible.
Hey, how fast can mouse cursor move? Is infinite sensitivity possible?
Not enough.
When the game asks for the current time (maybe in milliseconds, maybe in increments it decides) it'll get its answer. Most games are designed to handle a system that's a little too slow (Doom does) and counteract by skipping slow operations like rendering. A lot of game physics can be done in 15 milliseconds when the screen doesn't need to get updated.
To simulate slowdown, you need to simulate the system clock and run it at a slower pace. Console games have the vertical refresh as a kind of timing source.
Soldier of Fortune has a slowdown feature. Nice when you want to see heads explode slowmo. Too bad no such PC emulator exists, because then I would do wicked Doom 3 runs, or maybe even San Andreas 100%.