Player (135)
Joined: 8/27/2004
Posts: 164
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?
Active player (278)
Joined: 5/29/2004
Posts: 5712
The question is, WHICH PC?
put yourself in my rocketpack if that poochie is one outrageous dude
nesrocks
He/Him
Player (241)
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).
Active player (325)
Joined: 2/23/2005
Posts: 786
Imagine taking this EXE emulator and loading itself into itself. Whoa, talk about mind-boggling!
Player (79)
Joined: 2/8/2005
Posts: 130
The lazy way would be to convince the game companies to build such features in to every game they put out.
nesrocks
He/Him
Player (241)
Joined: 5/1/2004
Posts: 4096
Location: Rio, Brazil
That sounds more like the "extremely laborous way" O_O
Active player (278)
Joined: 5/29/2004
Posts: 5712
The really laborious way would be to hack each game's code to include those features!
put yourself in my rocketpack if that poochie is one outrageous dude
Joined: 6/14/2004
Posts: 646
qqwref wrote:
- find an efficient way to record mouse and keyboard movements (you're definately not going to want to use 200 bits per frame)
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]
I like my "thank you"s in monetary form.
Player (79)
Joined: 2/8/2005
Posts: 130
yea, i guess it might be easier to convince them if TASing were a multi-million dollar industry. but then it wouldn't be fun anymore...
Editor, Player (67)
Joined: 6/22/2005
Posts: 1041
qqwref wrote:
- circumvent the executable's native speed (allowing timed events to slow down, possibly deliberately slowing down processes by a scalar)
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?
qqwref wrote:
- change the executable's size at will (make it windowed instead of fullscreen or vice versa)
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.
qqwref wrote:
- add your hotkeys to the executable's hotkeys (because you need the keyboard to control the emulator and the executable)
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.
qqwref wrote:
- make an arbitrary savestate (this may be insanely huge, on the order of 10 MB, but whatever)
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?).
Current Projects: TAS: Wizards & Warriors III.
Active player (278)
Joined: 5/29/2004
Posts: 5712
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
Active player (410)
Joined: 3/16/2004
Posts: 2623
Location: America, Québec
There's DOSbox.
Editor, Player (67)
Joined: 6/22/2005
Posts: 1041
Bag of Magic Food wrote:
Well, DOS does have support for programs in the background, right? Aren't they called RTLs or something?
According to Wikipedia, they're called TSRs. Also according to Wikipedia,
MS-DOS was not designed to be a multi-user or multitasking operating system
Bag of Magic Food wrote:
And do you REALLY want to see Mega Man for PC?
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.
Phil wrote:
There's DOSbox.
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.
Current Projects: TAS: Wizards & Warriors III.
Joined: 11/22/2004
Posts: 1468
Location: Rotterdam, The Netherlands
I'd better complete my Jazz Jackrabbit speedrun before the rerecord-capable DOSBox is released, or I'll have zero credibility.
Player (135)
Joined: 8/27/2004
Posts: 164
Bag of Magic Food wrote:
The question is, WHICH PC?
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.
FODA wrote:
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).
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.
CtrlAltDestroy wrote:
Imagine taking this EXE emulator and loading itself into itself. Whoa, talk about mind-boggling!
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.
Bag of Magic Food wrote:
The really laborious way would be to hack each game's code to include those features!
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.
NrgSpoon wrote:
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.
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.
Dacicus wrote:
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?
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.
Dacicus wrote:
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.
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...
Dacicus wrote:
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, 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 *.
Dacicus wrote:
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\.
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.
Dacicus wrote:
Recording from "power on" could be annoying depending on how long it took the emulated computer to start up.
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).
Dacicus wrote:
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.
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.
Dacicus, quoting Phil, wrote:
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.
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.
Omega wrote:
I'd better complete my Jazz Jackrabbit speedrun before the rerecord-capable DOSBox is released, or I'll have zero credibility.
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.
Editor, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Isn't this thread a dupe of this thread?
Player (135)
Joined: 8/27/2004
Posts: 164
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?
Active player (278)
Joined: 5/29/2004
Posts: 5712
A request for something that may be totally unfeasible right now?
put yourself in my rocketpack if that poochie is one outrageous dude
Editor, Player (67)
Joined: 6/22/2005
Posts: 1041
qqwref wrote:
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).
Okay, I see.
qqwref wrote:
If everything you need is missing, you're not really very far, eh?
Lol, that why I included the quotes.
qqwref wrote:
I think I've seen a slowdown-capable program for DOS somewhere, but that was all it did.
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.
Current Projects: TAS: Wizards & Warriors III.
Player (70)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Moslo was kinda crappy. I've used it, but I was going to suggest it anyways. Better fix dosbox! ;)
Editor, Player (67)
Joined: 6/22/2005
Posts: 1041
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 :(.
Current Projects: TAS: Wizards & Warriors III.
Editor, Expert player (2460)
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?
Joined: 11/2/2005
Posts: 198
I know how you could get slow-downs! Just install lots and lots of programs and open lots of programs at the same time, and you have slow-down.
A life without cheese is a life without life.
Emulator Coder, Site Developer, Former player
Joined: 11/6/2004
Posts: 833
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.
Joined: 11/11/2005
Posts: 43
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%.