Posts for Wulf2k

Post subject: Discussion - Is this TAS?
Experienced Forum User
Joined: 10/18/2011
Posts: 64
http://tasvideos.org/forum/viewtopic.php?p=505302#505302 If that topic stays in Off-topic, that's fine. Ouch, but fine. If nobody actually likes what I've created, that's fine. But how the hell isn't this TAS? https://www.twitch.tv/videos/996751130 It's not perfectly optimized, but it's far better than any random player is going to pick up a controller and do. Thoughts? I thought I'd ask here because I assume Off-topic is where things go to die so that nobody ever actually has to look at them.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
What are you talking about? No human's touching a controller anywhere here or in any other TAS.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Did you watch the videos? Skip the dashless, watch any of the full clears. Are you going to claim those aren't TAS aiming for fastest time within the limits of the system? What do you think this is where you're air-quoting unconventional here?
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Entering a string of commands and having a tool enter them on a timer in order to reach the goal isn't tool assisted?
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Ouch. Moved to Off Topic, eh?
Experienced Forum User
Joined: 10/18/2011
Posts: 64
1A full clear - https://www.twitch.tv/videos/996751130 2A full clear - https://www.twitch.tv/videos/998490905 5A full clear - https://www.twitch.tv/videos/1008626990 6A full clear - https://www.twitch.tv/videos/1002822911 1A 1UP - https://www.twitch.tv/videos/1010319367 Commands are being fed via TwitchChat to a virtual XInput device. Commands are timed on a faux-60fps timer, at 16 ms per frame, with no reading of game state to compensate for lag or the inherent inaccuracy of assuming 60fps frames happen at exactly 16 ms intervals. The dashless link clearly shows the frustrations of working with this sort of setup but I feel it's a valid challenge to try and build a string of commands that can handle a bit of jankiness and still succeed. You'll notice occasional running into corners or otherwise extending inputs to points where they're ignored to ensure that the commands are still lining up with expected character position. The game's still going on currently at https://www.twitch.tv/wulf2k if anybody wants to swing by and take a poke at it. Edit: Moved this down here because it's not great TASing. 1A dashless - https://www.twitch.tv/videos/999684050 (Full of death and sadness though) Edit 2: 2021-05-02, added 5A full clear. Edit 3: 2021-05-03, added 1A 1UP.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Other systems had verified TASes by tapping into the controller's clock signal and knowing exactly how many times it had been polled. Is there anything functionally equivalent that you're aware of that I could do with USB controllers, or is it down to carefully controlling the timing of the PRU loops feeding the inputs?
Experienced Forum User
Joined: 10/18/2011
Posts: 64
EZGames69 wrote:
FilipeTales wrote:
Congratulations on your first TAS! if I were creator of TASVideos.org, I would made TAS Leaderboards where accepts any TAS made which is slower than currently TAS World records!
This is not how the site works and it will never work like this.
Well, it would be super weird if he created a hypothetical universe in his head and then didn't change anything about it.
Post subject: Beaglebone Black + Brook Universal Fighting Board = TASBot?
Experienced Forum User
Joined: 10/18/2011
Posts: 64
https://retroactivearcade.ca/products/universal-fighting-board https://beagleboard.org/black I'm picturing the Beaglebone being fed input commands over network / sd, then processing those commands into exact button presses / timing to the Fighting Board, connected to various consoles via USB. Has anybody attempted something like this for the more recent consoles? Stage 1 will be replacing my crappy hacked RemotePlay app in my Ps4 Twitchplay setup. Assuming I get that going flawlessly, it should increase the TASability of that setup by 1000+% percent to be fed inputs over a dedicated USB instead of a shared network already being used for the console's display traffic. Obviously it will still lack a way to really sync to the console and deal with loading times, but it'll be better. Does TASbot code exist already for the Beaglebone? Anyone personally familiar with it?
Experienced Forum User
Joined: 10/18/2011
Posts: 64
I have no doubt the accuracy could be improved beyond what I've set up, but the RemotePlay will never offer true TAS-level control. It doesn't truly sync the button presses on any sort of predictable clock. Network delays will always give you an uncertainty factor. That being said, my code's on Github. It would be a fairly simple matter for somebody to look where I hook, and then add a counter and a better input lookup system and feed it the exact same inputs at the exact same request number.
Post subject: TwitchPlays Hollow Knight aka PS4 Tool Assisted Superbadplay
Experienced Forum User
Joined: 10/18/2011
Posts: 64
https://twitch.tv/wulf2k Just finished a Salt & Sanctuary run, all bosses downed in record time (for one of these runs). Moved on to Hollow Knight, which seems to be much more challenging due to not simply being able to outlevel everything. The gist is that I've written a TwitchChat parser that converts text inputs to faked controller inputs, which are sent to a hacked RemotePlay app connected to my PS4. After enough time trying to make progress like this, long series of queued commands became the most obvious way to progress. You die/warp/load/whatever, you're at a known starting position. Write a string that will get you to your next objective, regardless of whatever RNG throws at you. You can't control the RNG, you can't control the exact timing of the packets being sent with updated controller info, all you can control is the controller status in PC memory. https://docs.google.com/spreadsheets/d/1QKKXgs7NrLfsTI4IfnenpmR-9LAXmyuniCa-lRqSg_g/edit#gid=0 An outline for our Hollow Knight strings so far. An example string, deconstructed, for those interested enough to read this far: nha,wr,hx,wr,nha,wr,wf,wrx4,hx3,wr-20,sq-10x9,sq-10x9,sq-10x9,wr-15,h,hx,wl,nhx,wlx9|99 nha = release any previously held inputs. Best to start strings with this in case anybody left a "hold button" command on previously. wr,hx,wr,nha,wr = walk right, toggle "hold x" on, walk right, release held inputs, walk right. This walks right and jumps and walks right more. I believe the 'walk' commands are defaulted to one second durations. wf,wrx4,hx3,wr-20 = walk "forward" is a holdover from old games. walk "up" (wu) should work just as well, just hold up on the left analog stick. walk right 4 seconds. hx3 is not actually "hold x" in this context, it's "h" x3, hold nothing for 3 seconds. Then walk right for 20/30ths of a second. sq-10x9 = tap square, release for 10/30ths of a second, do this 9 times. Spam attack. wr-15,h,hx,wl,nhx,wlx9 = walk right half a second, hold still for one second, toggle holding x on, walk left, release x, walk left 9 seconds. | 99 = take the entire preceding string, and do it 99 times. The above string takes you from one of the benches, walks right to kill the first enemy, grabs the coins, then walks back to the bench. It's a terribly slow farm, but safe, and it seems to be what the guys have left running when nobody's actively playing. And here's the first boss being killed, more real-timey than TAS, but an example of how it plays out. https://clips.twitch.tv/CoweringCrispyLobsterCoolStoryBro It's not a terribly efficient way to play, but it's the closest to real-time communal TASing that I've ever seen. Feel free to pop by and discuss or try it out. !controls in chat for a more in-depth explanation.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
I don't personally feel a pacifist version adds much.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Have there been any situations where it's technically ACE but so slow or limited that it's more interesting to just use it as a quick skip? I'm thinking something like default data being an instruction to skip to the next room, but maybe if you spent 20 minutes arranging your inventory it would be ACE.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Shamelessly stolen from a Youtube comment:
There are (at least) two ways of counting time on a computer. (1) There are interrupt-driven timers, which will tell the CPU to run some code after a set period of time. That code will then do something like increment a counter. (2) There is also a "wall clock" which will increment a number in a hardware register periodically, without the CPU having to do anything. The CPU looks at this "wall clock" when it wants to see how much time has passed since the last time it checked. On the N64, the peripheral interface chip (PIC) is connected to the CPU's non-maskable interrupt (NMI) line connected to the main CPU. When NMI is asserted, the CPU will run the NMI interrupt handler function. There is no way for the CPU to ignore the NMI, hence non-maskable. If NMI is continuously asserted, nothing else will be able to run on the CPU, including ordinary interrupt handlers that might advance a type (1) counterm as described above. The "wall clock", however, will continue to increment. Here, what probably happens is that the glitched controller sends invalid data to the PIF chip, which asserts NMI. This causes the CPU to be stuck in its NMI handler, preventing it from running code that counts the level time. When the glitched controller is released, the game checks if the event is finished by looking at the "wall clock", which has advanced during this time. Thus, the event will finish even though the level time hasn't been counting forwards.
Assuming that's accurate then I would agree that it's not (normally) TAS appropriate. I still find it incredibly interesting as something that can be reasonably recreated by the average person though. Have a broken controller? Open it up and use it for this. Probably tons of neat effects in various games that could be triggered.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Warp wrote:
If I understood correctly, the only thing that the glitch (triggered by abusing the second controller) does is that it stops the game from incrementing the internal timer during certain cutscenes in certain levels.
Ah, I skimmed it at work with the volume off so couldn't really tell what was going on. It might not be flashy, but I'm actually incredibly interested in how that works. So, they press on a chip, which sends some unknown signal to the N64 and stops the timer. Doesn't that create a burning need within the depths of your soul to know what that signal is and why it has that specific effect? What if you could replicate the effect by twisting the sides of the controller in opposite directions, applying the stress on the chip without opening it up? Wouldn't that then be valid "superplay"? (Don't do it on 'my' controller, but what the hell, neat to see somebody else do on theirs) ...Now I'm not gonna be able to concentrate on anything else until I know more. Off to read about Goldeneye...
Post subject: Re: Finding Glitches.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
YushiroGowa wrote:
How do most of you guys go about finding glitches
Mostly by playing the game and saying "huh, that's weird". You can find a starting point for "that's weird"s by thinking about game logic. Nearly everything is playtested by itself, so what weird interactions happen when you get two or more unrelated actions happening at the same time? Can you interrupt an action in a unique way? If you logically assume that some in-game counter would be modified by two different functions, can you fire off those functions in an unexpected manner? Demon's Souls for example, one of the dupes involves cancelling out of a prompt in an unexpected way so that it doesn't clear its variables, then when you go to put an item into storage, you store negative one of the item (and negative one is really just the highest possible positive number) Sitting down at a game and thinking "what can I break" covers way too much space, but if you're playing and see something weird happen, you need to think "how can this weirdness break the game"? Disney Infinity has an infinite jump. You press the jump button and immediately block, which gives you the height of the jump, but in the block animation. You release the block, and before you enter the fall animation, you jump/block again for more height. Find a weirdness. Understand what causes the weirdness. Apply the weirdness.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Are there any Gamecube TAS that press the digital trigger without adjusting its analog value? I remember removing a spring from my controller back in the day to make SSBM wavedashing easier (for me, not to even try and claim any real skill). No big deal, anybody can do it. Should that be banned from a TAS? In fact, do most of the TAS for systems with analog+digital buttons bother ensuring that the analog is a strict representation of what a physical controller would read or do they just send the digital press? Maybe they do, I dunno, feel free to correct me, I'm just stream of consciousnessing here. For arbitrary buttons in SNES - Isn't it perfectly valid to have a NES keyboard plugged into a SNES controller adapter, plugged into a bunch of multitaps? For the Goldeneye glitch, isn't it interesting to see? Wouldn't a TAS that implemented it be worth watching as a side movie, not replacing the main? Wouldn't it be interesting as all fawk to go to somebody's house and have them say "I dunno why it happens, but when I put my SNES controller in the microwave for 45 seconds it beats Super Mario World using Sonic"? If that could be replicated through emulation, shouldn't it be?
Post subject: Poorly TASing PS4, aka, I'm running TwitchPlays Sekiro
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Stream - https://twitch.tv/wulf2k List of strings built thus far - https://docs.google.com/spreadsheets/d/1ETJvTWRyuogWlp_-vrUz6gbjUfCzhxmh8JxuI6xeeX8/edit#gid=2011203138 Command breakdown - https://docs.google.com/spreadsheets/d/1ETJvTWRyuogWlp_-vrUz6gbjUfCzhxmh8JxuI6xeeX8/edit#gid=1058428093 (Durations are expressed in 30ths of a second) Long story short, twitch chat feeds button inputs into a hacked RemotePlay client, client feeds them to PS4 as accurately as possible with network latency and PC timer precision as uncontrolled variables. With Sekiro, whenever you die or teleport to different areas you always have the same starting position, so the same sequence of commands for the same durations should get you the same result (as long as no RNG was involved) It's not quite a TAS and not fully appropriate here, but last time I did this for Bloodborne there was some minor interest so figured I'd post it again. Sample boss kill, ringing out the mounted boss - https://www.twitch.tv/videos/411708240?t=22h49m48s For above, they enter a string that takes them from spawnpoint to on top of the building, then screw around a few minutes before entering commands manually to finish off the boss. It's the closest thing to communal TASing that I'm aware of, so feel free to pop in and enter some commands, or just discuss things.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Ah, Portal pleasantly performed on a prehistoric PC of the past. A passingly popular passtime, perhaps pushed to the periphery of the public's perception prematurely. Praise to the player.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
MUGG wrote:
There is probably a list for each hitbox that tells what slots have been hit. This list can only carry 12 entries. I tried finding this in memory but I'm not good at using Cheat Engine and it takes minutes to make one search...
I'm not an expert in CE, Dolphin, or SSBM but I do enjoy the puzzle of finding stuff like this out. I'm going to make a few assumptions here. 1. You can create a hitbox that will last indefinitely. 2. When you load a state with Dolphin it puts everything back in the same memory location. 3. That the hitbox list is some sort of linked list that gets appended to, and existing entries aren't 'pushed back' by new entries. So, try the following. Create a hitbox and save state. Get something hit by the hitbox. Do a CE search for unknown value. Load state, get something different hit by the hitbox. Search previous results for changed value. Run around a bit, and do a few narrowing searches for unchanged value. Load state, run around and do different things for a few seconds, then get the same thing hit by the same hitbox and do another narrowing search for unchanged value. Hit 10 more things (or whatever the max amount is before rolling over the list) and do an unchanged value search after each one. Hit 1 more thing, and do a search for changed value. That should get the list of results pretty narrowed down. After you're done the first two searches in CE (and any time you're searching for anything) the speed of the searching should improve drastically as results are removed. If 'every' search takes minutes, then you need to improve your searches to get that result list down faster.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
On the Steam topic, this exists: https://forum.csmania.ru/viewtopic.php?f=21&t=42071 I've never used it but I'd expect all the heavy lifting is already done for you. ....That's assuming that the source is available anywhere, and open... which are huge assumptions. I'm curious why you wouldn't think it would be legal though. Distributing the Steam DLL would be illegal, but using a fake Steam framework would be a violation of the EULA at worst, which might get a Steam account de-activated (if they somehow caught you?) but wouldn't be illegal. Edit: Updated link - [MOD EDIT: Removed link to piracy content website. -Mothrayas]
Experienced Forum User
Joined: 10/18/2011
Posts: 64
How did this end up? Is PCSX2-RR up to the task of creating reproducible movies?
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Titus Kwok wrote:
First useful glitch I ever found in a game was Combat for the Atari 2600. If you were using the wireless controllers in tank mode, switching the controller off would either result in driving in a circle and firing repeatedly, or moving straight ahead at double the normal speed.
That's an interesting one. I'm not overly familiar with the Atari's control scheme, but do you know what was going on "behind the scenes" to cause it? Was it a case of all the buttons reading as pressed simultaneously, or something else?
Experienced Forum User
Joined: 10/18/2011
Posts: 64
I vote yes because 13.8 billion years ago there was an unknown set of inputs, then some other stuff happened, and now here we are.
Experienced Forum User
Joined: 10/18/2011
Posts: 64
Has it been discussed before which video has the largest discrepancy between input time : time till game completion? Because this seems like it could be a contender.