Post subject: Hourglass: The time piece that shattered (A Post Mortem)
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
This was definitely not the way I saw the project going when I decided I wanted to jump in and improve on nitsujas work. Most who are reading this are probably now asking "How did we get here?". I will try to cover that. Final chapter serves kinda as a tl;dr, for you lazy people. Basically, there was some information that I had overlooked. I received a tip on IRC regarding a book called Windows Internals, I believe it was Henke37 who suggested it, and this book is full of nightmares. Besides showing me Hourglass isn't the way to go for re-recording Windows programs, it also turned me off on Windows entirely. How bad could it really be? There are some points discussed in this book that just sank my heart. Could windows be lying? No way! Yes way! They have multiple shim-engines in their kernel that patches old programs at runtime to make them run better. They are also lying to debuggers about when a program has started, when DLLs have been loaded, etc. This becomes problematic for a debugger such as Hourglass, since it needs to know these things when they happen, not when the kernel thinks it needs to know these things. The straw that broke the camels back To mitigate the troubles we'd need a kernel driver. This driver would poke at structures that the book Windows Internals doesn't describe (though, they are mentioned), and the Microsoft kernel debugger won't print full details of. This feels like a horrible idea, and also needs an additional computer as Windows can only be debugged over Ethernet for these things. I am not interested in buying another computer just for this. This just to get an idea of when a program really begins to start, memory allocations, thread execution orders etc. There would be drivers Microsoft aren't going to approve of. Which becomes annoying really fast since Windows 10 only accepts signed drivers, outside of "hidden" debug settings. But, WinDbg has re-recording? Yes, it turns out that WinDbg has added re-recording, and great for them. They avoid several issues Hourglass is facing by recording program state rather than input. I did not research this a lot, so I am not sure how they solved some of the problems that we'd have in common with WinDbg, such as memory allocation handling. "We're doomed! Doooooooooooooooomed!" Not quite, there is at least one kernel that provides a lot of this control, and contains a fairly well documented API, the Linux kernel. There's also a program that enables the launching of Windows applications on Linux, Wine. There's a project that I got to see the insides of that looks really promising in terms of making this happen. Finally, I want to say thank you to everyone who contributed. I hope some of you will come back when the next project is up and running.
Site Admin, Skilled player (1255)
Joined: 4/17/2010
Posts: 11495
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
There's also a way to grab a PC emulator with rerecording, install linux on it, and run windows games via wine. Or install windows right away. The problem is, there's no such emulator yet. But this is an option, we'll see which approach happens sooner, and which approach turns out to be more stable.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
feos wrote:
The problem is, there's no such emulator yet.
MAME cannot do it? Also, maybe we should consider VirtualBox-RR.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4045
Sounds like improving keylie’s Linux TAS tools ( https://github.com/clementgallet/libTAS ) then in the future TASing windows games by emulating them through TAS’d Linux is the way to go, lol
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Thanks for the post mortem Warepire, I'm sure it comes at the end of many frustrating hours of work. Too bad Windows is such a mess, I was really hoping something revolutionary would come out of this project, thanks for trying though.
Site Admin, Skilled player (1255)
Joined: 4/17/2010
Posts: 11495
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Nach wrote:
feos wrote:
The problem is, there's no such emulator yet.
MAME cannot do it? Also, maybe we should consider VirtualBox-RR.
My current mame-rr wasn't compiled with support of anything but arcades, and it's from 2010, so I dunno how well it works there even if I make such a build. And upstream mame doesn't have rerecording yet, I was planning to add it.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
Nach wrote:
Also, maybe we should consider VirtualBox-RR.
VirtualBox-RR? I am not touching anything Oracle has had their hands in. Do you recall my whine about their MySQL drivers? Until someone proves otherwise this is how I see the Oracle development process: https://xkcd.com/1926/ (I've also used VirtualBox for a lot of things, the number of times it cost me my foot rather than won me anything is pretty high)
Patashu wrote:
Sounds like improving keylie’s Linux TAS tools ( https://github.com/clementgallet/libTAS ) then in the future TASing windows games by emulating them through TAS’d Linux is the way to go, lol
There are way better methods on Linux actually, the kernel is quite a bit more powerful in regards to these things than Windows is.
Site Admin, Skilled player (1255)
Joined: 4/17/2010
Posts: 11495
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Regarding VirtualBox-RR, recently we had an Hourglass submission created in a VB WinXP. It only synced for the author, but for none of the people who had an identical VB environment. It worked for me partially on native XP. I would very much try to avoid anything that heavily depends on the host hardware, even though the possibilities that running a modern system emulator would open are quite tempting.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Samtastic
He/Him
Player (154)
Joined: 11/30/2012
Posts: 778
Well if we get a much improved emulator then I would be able to TAS New 'n' Tasty and Abe's Exoddus with the advanced re-location glitch (ARG).
Enjoys speedrunning, playing and TASing Oddworld games! Has TASed: Oddworld: Abe's Oddysee in 12.06.13 (with Dooty) Oddworld: Adventures II in 20.03.78 (with Dooty) Oddworld: Abe's Exoddus 100% in 2:08:28.4 (with Dooty) Oddworld: Abe's Oddysee 100% in 1:05:01.65 Oddworld: Abe's Exoddus in 37:18 Oddworld: Abe's Exoddus in 37:15 Oddworld: Abe's Exoddus 100% in 2:!5.44.12 Oddworld: Abe's Oddysee any% in 13:01.3 Oddworld: Abe's Oddysee any% in 12:59.95 Oddworld: Abe's Oddysee 100% in 1:04:16.27 Oddworld: Abe's Oddysee 100% in 1:04:01.07 Currently working on: Waiting for Windows TAS Tools to work so I can TAS PC version of Exoddus.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Warepire wrote:
Nach wrote:
Also, maybe we should consider VirtualBox-RR.
VirtualBox-RR? I am not touching anything Oracle has had their hands in. Do you recall my whine about their MySQL drivers?
They're not actually from the same teams. MySQL was created by MySQL AB, originally a stand alone company. Then every major server vendor and huge social sites contributes all kinds of crazy patches. VirtualBox was created by people at Sun Microsystems. True, Oracle runs them both now, but it doesn't mean you should expect any similarities in their code.
feos wrote:
Regarding VirtualBox-RR, recently we had an Hourglass submission created in a VB WinXP. It only synced for the author, but for none of the people who had an identical VB environment. It worked for me partially on native XP. I would very much try to avoid anything that heavily depends on the host hardware, even though the possibilities that running a modern system emulator would open are quite tempting.
VirtualBox has settings as to whether you want to use the host hardware or not. Obviously anything tightly coupled to the host shouldn't be used. That's where Hourglass has also had issues, where games acted slightly differently depending on the video card used.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Site Admin, Skilled player (1255)
Joined: 4/17/2010
Posts: 11495
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Nach wrote:
VirtualBox has settings as to whether you want to use the host hardware or not. Obviously anything tightly coupled to the host shouldn't be used. That's where Hourglass has also had issues, where games acted slightly differently depending on the video card used.
Well I can't check this particular case anymore, but the main question is, was VB even designed with determinism in mind? I think it takes a dedicated guru to dig into the code and do the checks, as well as through usage. But even though this environment would allow games more modern that PCem probably, I really doubt games that require modern hardware are going to work at tolerable speeds if at all. By the time there appears someone to start this work, PCem might be already way ahead by what it supports. Also linux TASing is already a reality, and if Wine is possible to get to work, quite some Windows games also become available for TASing without speed decrease (unless you're on a VM of course). Bottomline: there are several directions to explore, it just takes code maniacs.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 9/6/2005
Posts: 39
Location: Sweden
Warepire wrote:
Nach wrote:
Also, maybe we should consider VirtualBox-RR.
VirtualBox-RR? I am not touching anything Oracle has had their hands in. Do you recall my whine about their MySQL drivers? Until someone proves otherwise this is how I see the Oracle development process: https://xkcd.com/1926/ (I've also used VirtualBox for a lot of things, the number of times it cost me my foot rather than won me anything is pretty high)
Patashu wrote:
Sounds like improving keylie’s Linux TAS tools ( https://github.com/clementgallet/libTAS ) then in the future TASing windows games by emulating them through TAS’d Linux is the way to go, lol
There are way better methods on Linux actually, the kernel is quite a bit more powerful in regards to these things than Windows is.
Well, why not QEMU-RR then? It's Open Source and people claim that it's a lot better than VB or VMWare. There's a Windows port of QEMU that works kind of well, but it's not easy to use for a beginner. The Windows port have extremely limited documentation too. But still :)
The Dj Opposite Website - My Main music site | Dj Opposite on Newgrounds - My music, mostly Game Remakes.
Joined: 9/12/2014
Posts: 543
Location: Waterford, MI
Looking at this again, and I think its safe to say libtas is superior to hourglass at this point. Although running wine so far has desync problems, you could still slow down the game and use frame advance. Which is basically a tas, and could be useful for segmented runs. Unfortunately, linux has its share of annoying issues as well similar to hourglass. Like running arch linux behaves differently at times and certain distributions cause some functionality problems. Having to swap operating to test 1 thing can be pretty annoying. And when programs update, they may not start anymore until fixed again. I read the above message and understand why windows xp has the best functionality. Would it be easier to just focus on windows xp only games? As in games that work with windows xp?
Masterjun
He/Him
Site Developer, Expert player (2047)
Joined: 10/12/2010
Posts: 1185
Location: Germany
If you understood the first post, you should know that the problems run much deeper. The problem isn't the version. The problem is Windows.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Banned User
Joined: 4/1/2016
Posts: 295
Location: Cornelia Castle
It really is a shame the project was abandoned. I can understand why with the whole kernel thing, but I don't have Linux, and I don't know a thing about virtual machines or anything like that. I wanted to make a TAS of a few Windows games without crashes or anything like that. Hourglass R81 is giving me a lot of crashes for IWbtG, and I really wanted to make a TAS of A Blind Legend. This is disappointing to say the least. I understand this is from a while back, but I was looking into downloading something better than R81, for Windows, but I just don't know what to do anymore.
DJ Incendration Believe in Michael Girard and every speedrunner and TASer!
Joined: 9/29/2021
Posts: 1
Shame project died. There was a leak of Windows source code which allowed to compile Windows server 2003 and contained nt5src and some thoughts on KernelSourceCode. Can`t it possibly revive the project?
Dimon12321
He/Him
Editor, Reviewer, Experienced player (597)
Joined: 4/5/2014
Posts: 1228
Location: Romania
ParAmbula wrote:
Shame project died. There was a leak of Windows source code which allowed to compile Windows server 2003 and contained nt5src and some thoughts on KernelSourceCode. Can`t it possibly revive the project?
Not likely. We had a discussion about the leaked source code of Xbox OS which could be useful to improve emulation and eventually make TASing possible.
TASing is like making a film: only the best takes are shown in the final movie.
p0008874
He/Him
Player (71)
Joined: 3/2/2022
Posts: 35
Location: Taiwan
Dimon12321 wrote:
ParAmbula wrote:
Shame project died. There was a leak of Windows source code which allowed to compile Windows server 2003 and contained nt5src and some thoughts on KernelSourceCode. Can`t it possibly revive the project?
Not likely. We had a discussion about the leaked source code of Xbox OS which could be useful to improve emulation and eventually make TASing possible.
https://en.wikipedia.org/wiki/Software_copyright You can't touch anything Leaked source code hehind Xbox or Windows XP SP1.
Joined: 4/19/2023
Posts: 1
I wanted to ask and wasn't sure if this was a good place. I was interested in hourglass mostly for the save state functionality, basically being able to save the state of a game, and then load it, similar to how emulators do it. I was wondering how possible it is to do this with windows or if anyone happens to know any projects like these around?