Posts for benstephens1000

Experienced Forum User
Joined: 9/25/2016
Posts: 23
You seem to be experiencing a very strange issue where the *New* 3DS inputs are polling at a very strange rate. New 3DS stuff has oddities when it comes to TASing but this is by far the strangest thing I've seen. Not sure what your settings are but something is going on here, maybe a hardware issue. Lucky for you, this can all be solved by going into your settings and disabling New 3DS mode. It seems that in Captain Toad, New 3DS mode allows the C-Stick to be used to control the camera. However, when it is turned off, the camera can be controlled with the dpad or the touch screen meaning that you lose no functionality by doing this. Should fix all of your problems with desyncs.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
DJ Incendration wrote:
He was not trying to say it was to screw him over. He was saying that it happened. Also, HappyLee2 sounds fine to me. With HappyLee setting the bar so high for SMB runs, it doesn't make sense that he'd be banned indefinitely for something like this. I understand his points, and he wasn't trying to say anything bad about the staff. With him being banned, I am actually thinking about leaving the site. I'm not sure if I will yet, but I really wish he hadn't been banned.
Creating one or two skillful or even influential things does not give someone a free pass to be an arrogant jerk to others. I know that's harsh, but that's really the way HL was acting. To say he was so focused on the rules only to deliberately break them when things didn't go his way is arrogance, and frankly uncalled for. It doesn't matter what came before it. I doubt anything I say will change your mind, but I urge you to view this situation with an open mind and to reevaluate it. Not everything on this website is about video games and what people create, but also about the people that are doing the creating and how they treat one another.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
[4951] DS Spider-Man: Web of Shadows by Cakemaphoneige in 21:28.99 It already has enough nominations to be in the running, but it's one of the most entertaining TASes I've seen this year so I wanted to shout it out.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
NEVERDOORS They have been creating some of the highest optimized movies for 3D Nintendo games for years, and the Luigi's Mansion TASes from 2022 are no exception. They clearly have an insane level of patience to chip away frames on a game as complex as this.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
Also having sync issues. I went ahead and created my own test movie file, and that file has no issues playing for me. So I started doing some digging into the movie file to see if I could diagnose the issue. The file on the left is TheRandomMaster's movie file. The one on the right is my test file. The blue and the red color coding is used to separate data into the frames they are relevant to. The area I have highlighted is frame 46 of both of our movie files. The short and simple of it is that each red chunk and each blue chunk should be identical in size and position between the two files. However, frame 46 in my movie file is 7 bytes longer than frame 46 in TheRandomMaster's. The reason for this is because my movie started recording data for accelerometer inputs slightly before TheRandomMaster's movie. I have no idea why this is happening. By inserting 02 00 00 00 FE 00 00 at 0x0AD8 (the accelerometer data Citra is polling for at this time in the movie file), I fix the desync and the TAS plays just fine. I have confirmed sync with this fix. I have uploaded the fixed movie to my user files: User movie #638023496031275421
Experienced Forum User
Joined: 9/25/2016
Posts: 23
I understand taking issue with the language selection, given the amount of time it adds here, but being critical of the goal choice here seems less understandable in my opinion. It doesn't feel right to judge a TAS based on criteria that it never sought to fulfill. I understand maybe preferring a different goal over the one being presented, but it seems very reductive to discuss it. I understand that goal choice is an important part of movie creation and part of the criteria that judging is based on, but considering the goal in question, "All Endings," generally fulfills the criteria of being "as objective as possible," I don't really think there's anything to pick apart here. I don't think I personally have the patience to find a TAS like this that entertaining, but it does appear to more or less be optimized, and the some sections are non-trivial as detailed in the author notes, so I think I'll go with a yes vote.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
feos wrote:
If using the same major skip glitch as this movie is common across other categories, then it doesn't need a label whenever it's used.
There are other longer categories such as All Dungeons and 100% that use this credits warp just to skip the final boss, but I'm not sure if that's a good enough argument to justify not using a game end glitch branch. If it was me, I would still probably prefer keeping it branchless, but I totally understand why it could warrant that branch. Ultimately, site staff should just do whatever makes the most sense here, I'm cool with whatever.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
ThunderAxe31 wrote:
Also, we want to treat everyone equally by applying an universal policy, without double standards. Otherwise, it would lead to impossible-to-solve disputes about "why did you do X for Y and not Z for W?", unless we want to give absolute freedom to branch labelling and allowing people to label their movie goal with something completely arbitrary, like "helloword%" or "amogus".
This makes sense to me, allowing users to assign their own branches would be a nightmare.
ThunderAxe31 wrote:
But of course, we don't do things like that here. Here, we try to avoid publishing movies that are similar to each other, and we try to encourage diversity instead. In fact, we never published a new branch that isn't at least 50% different than any other existing branch, so I wonder how did you come to that conclusion.
My point here was that a TAS that similar to this submission wouldn't be considered for publication most likely. I was mostly saying that if this submission isn't categorized as branchless, I don't know if anything else would ever really be able to fill a branchless role. That's totally fine if people don't care much about games that do not have a branchless submission. End of the day, judges and staff should organize this in whatever way works best for the site, I just wanted to insert my opinion.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
EZGames69 wrote:
I feel like this run should be categorized under “game end glitch”, since you pretty much warp to the credits after the Gohma fight.
I've never exactly been an active member on TASVideos until recently, so I do not pretend to fully understand how things are normally done around here. With that in mind, I did anticipate this discussion, and I do have several motivating factors for why I left my submission branchless: - Generally speaking, me and the community for this game prefer to make any% the baseline and anything that deviates from that has additional descriptors and criteria to go along with it. That being said, TASVideos is not the community for this game and shouldn't have to accommodate the way we've done things historically, for obvious reasons. - If this TAS is not branchless, I do not know what TAS would fill that role if it was ever created. The "beat Ganon" speedrun of this game is very unpopular because it is essentially the exact same run except you wrong warp to the final boss instead of the credits. It's mostly uninteresting, is not unique, and is simply longer. I do not anticipate any TAS would ever be submitted that would ever adequately fill a branchless role except maybe a glitchless TAS if that ever happened? - I am somewhat using the discussion/decision that happened here to base this situation on: https://tasvideos.org/Forum/Topics/22944 I'm curious what others think about this should be handled! End of the day, it's not a big deal to me, but if I had a choice, I'd keep it branchless for the reasons listed.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
phoenix1291 wrote:
For Majora's Mask, I dumped with ThreeSD the EU and US versions from my 3DS, I use the US version. I haven't retested with the .3ds version. I also put in the screenshots folder a screenshot of the games I use in App format (dumped from my 3DS with ThreeSD).
I still haven't really figured out what going on here, it really feels like these movie files have been corrupted someone. I will continue to investigate. I have also found a strange bug where some of your movie files do not record the last poll cycle on the last frame. This has never happened to me. Don't know if this would actually affect anything. Regardless, I think I have this CTM parser in a functional enough state to share: https://github.com/benstephens56/Citra-Movie-File-Parser/releases/tag/v1.0 This template file is used with 010 Editor, which is technically a paid hex editing software, however, there is a 30 day free trial which can be extended upon expiration by reinstalling the software. 010 Editor is very robust and has a lot of tools and options to play around with. Its template file format is one of the main reasons I chose it for this particular use case. To use it, just open a CTM file and then load the template using Templates -> Open Template (Ctrl + F5), followed by Templates -> Run Template (F5). This will color code the hex data by frame and will display CTM input data and metadata in the results panel. Any of these fields can be edited from the results panel easily. However, editing inputs isn't as simple as changing the number in the results panel. Each input type in any given frame will need to be manually edited in the hex as of now. I don't think this template format is going to make it possible to edit inputs ever. This tool is more so used as an easy way to read back inputs to see what's going on in a movie file. In the future, I would like to create my own software that makes this possible, but my skill level just isn't there yet. So yeah, this isn't TAStudio, and it's not going to be, but it's at least better than nothing.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
phoenix1291 wrote:
As discussed in this topic there are games that systematically desync (see my posts in this topic or test the CTM I uploaded (link in my signature, as already mentioned)).
I am working to recreate/diagnose some of these issues, and in doing so I am finding some inconsistencies with you CTM files compared to the ones that I am making. The strangest one happens in Majora's Mask 3D where the order of your CTM file immediately seems to deviate from the ones I make. Any chance you could send screenshots of all of your settings so that I can see if something specifically has been causing this?
phoenix1291 wrote:
Your template would be very useful for anyone who wants to try TASing with CItra!
As of now, I have a template that works with parsing every input type found in a CTM file except New 3DS/Circle Pad Pro inputs. The challenge here is that the polling rate for this input type changes on a game-by-game basis. I am still working to implement something here that won't break half the time and isn't a complete nightmare. That being said, my code in general is pretty amateur at best. I'm going to continue to clean it up, but I will hopefully have something that is at least consistently functional in a week or so.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
Just wanted to throw some updates in here as I continue to work on some new projects (that I'm not ready to go into detail on yet). First off, I have gotten a proper frame counter working in Citra which as of now is merged into the latest nightly builds. This should hopefully be very helpful for anyone wanting to work on TAS stuff. One issue I outlined in my Ocarina of Time 3D submission notes involves not being able to perform input on the first frame after loading a savestate. For whatever reason, this only seems to happen when using generic controllers for i.e. anything that isn't keyboard or a gamecube controller. I have still not figured out what difference between how these inputs are handled is causing this to happen, but I will continue to investigate. In the meantime, I have had a lot of success mapping keyboard inputs to a controller using Joy2Key. This won't work for analog circle pad or c-stick inputs, but it's a decent workaround for the time being. Some users on discord expressed issues with desyncs previously, but I hadn't really experienced these issues until messing with a couple of other games recently. Thus far, these issues have only come about while running in New 3DS mode with games that take advantage of the c-stick and extra shoulder buttons. It's possible that there is another form of these desyncs that can occur, but this is the only type of issue I've run into. The good news, is that I have been able to easily and consistently correct every one of these desyncs that I have encountered with some minor hex editing. Basically, Citra movie files record different types of inputs at the same rate they are polled. This means that circle pad, button, and touch screen inputs are always recorded 234 times a second but the input group that handles the New 3DS inputs is usually polled at a different rate. It seems that sometimes the order at which these input types are recorded gets messed up. This means that the when the order should be BUTTONS -> TOUCH -> NEW 3DS, the order can occasionally be recorded as NEW 3DS -> BUTTONS -> TOUCH. I have not found the root of this issue, but seems to be caused by saving and loading states as I have never had it occur during a movie that was created without using savestates. Because of this and the fact that the polling rate for each input type should be consistent for any given movie regardless of the inputs used as long as it's the same game being played, the easiest way I have found to remedy this is to record a long movie with no savestates and then compare it to the movie file with the desync. Below is an example of what I look for: Desync: Some explanation on what you're seeing here - the first chunk of 7 bytes shown outlined in purple are the New 3DS inputs. You can tell this because this chunk starts with 05. The next chunk is the button inputs outlined in green which always starts with 00. Finally, touch inputs outlined in orange, starting with 01. This order these the inputs were recorded at at this specific point in the movie file can then be read as NEW 3DS -> BUTTONS -> TOUCH. However, in this particular situation, this order desyncs. When comparing this exact address with a movie file using the same game, this point in the movie file will look like this. Sync: The order of these three chunks of data have been rearranged. This will most likely result in the inputs during this frame being dropped any of the input types that were misplaced. In this example, the movie playback will be expecting button inputs but will instead read the New 3DS inputs. Then when it's expecting touch inputs on the next chunk, it will receive button inputs. So on and so forth. Fixing this desync is as easy as finding the area where the order of your movie file conflicts with the order of a base movie file which did not load savestates. On the topic of hex editing, I have been working on a template to use with 010 Hex Editor that should make reading CTM files a little easier. It won't be nearly as useable as TAStudio, but it should be helpful for TASing. I'm still messing with making the template universal, but so far it only works for certain games. I'll post updates as I improve it.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
Hey everyone, thanks to anyone who has watched and or voted thus far! I guess I expected a lot of people to be a lot less optimistic about about the adoption of a new emulator, but so far everyone has been very supportive and encouraging! Thanks all for being so welcoming!
CoolKirby wrote:
Ben, that was a really informative and well-thought-out submission text. But it looks like Citra has already been approved for submission on this site!
Prior to writing this, I did not know when the process of getting Citra approved for this site would take place, mostly because I did not understand at the time what that process entailed. I kinda figured that discussion would happen now, in this thread. Considering, that it has now been added to the approved emulators list, I will edit my submission text to reflect this. However... Elden Ring released so uhh I'll do it later 😬
Experienced Forum User
Joined: 9/25/2016
Posts: 23
Below is a breakdown of what's happening in the header. It should be noted that the input count is what handles all timing related stuff. That field can be converted into seconds by dividing it by 234 which comes straight from the Citra source code. I have tested this pretty extensively and confirmed that it is very accurate. Input count can also be converted to frames by multiplying it by 0.255689103308912 and rounding to the nearest integer. This is not currently in the Citra source code, but it is based on extensive testing done by me that I'm working on getting merged into the main Citra branch. Basically all of my documentation can be found here. Once again, I feel I'm a guest here, mostly, so I would never ask anyone to take this on for me. I will be working to see what I can throw together based on what I know.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
CasualPokePlayer wrote:
The main issues for accepting Citra movies are: 1. There is no parser for Citra movie files (you encountered this I see). Most importantly the time is parsed from the movie file (among other things), without a parser this isn't possible. 2. Can we sync it? Your notes seem to say it's likely so. From what I recall from Citra their sync rate was very low, but perhaps some games sync better than others? Having anything would be better than nothing too, so. 3. Is AVI dumping usable? Well, I guess your encode answers that. So 1. is a primary issue here. The site is open source and parsers decently easy to implement. Anyone could make a parser, although some documentation of the movie format would be needed here.
1. Had no idea the site parsed the file during submission. I'm not particularly code savvy but I know the Citra movie file format very well so I will try my hand at getting this working I suppose. 2. I have had very high sync rates with all games I've tested. The movie file for the TAS linked above never desynced once on any computer or environment I tried it on. 3. Lossless AVI dumping is a thing. I appreciate the quick response!
Experienced Forum User
Joined: 9/25/2016
Posts: 23
Hey, I made a thing: Link to video My plan was honestly to submit this movie as a surprise and let the discussion on whether Citra runs ought to be publishable be a part of the movie discussion. I have also gone to great lengths to document Citra found here: https://pastebin.com/JZyVM7TL I would love to be able to submit this movie for judging but I didn't realize that the submission process automatically checked file format of the movie file. I'd love to discuss this and maybe see about getting my movie submitted :) I'd also like to note that I see myself as sort of a guest on this site. I do not want to cause controversy or whatnot because of some unfamiliarity about how things are done around here. I tried to read as many discussions and post try and learn the lay of the land before posting about this, but my methods are likely imperfect. I hope people enjoy the TAS regardless :)
Experienced Forum User
Joined: 9/25/2016
Posts: 23
feos wrote:
We tried this and it didn't quite work. Post #510912
I don't entirely follow. I'm not necessarily saying this is something that ought to be applied across the board. I think it's pretty safe to say that different communities have different ways of doing things. However, the post you are linking to suggests that only categories with "unique goals" ought to be branches. Wouldn't that be applicable in this case? Because from my perspective, the movie that this discussion thread is dedicated to does not have a unique goal, whereas the current branchless movie for this game does have a unique goal, i.e. not going out of bounds. It sounds like we are both in support of the same thing, I'm just not exactly sure why this is something that wouldn't or has not worked. Is it because of the bit of not updating branches on obsolete movies?
Experienced Forum User
Joined: 9/25/2016
Posts: 23
I am not at all a part of the Luigi's Mansion community, but generally I agree that branches should not be based on what glitches or techniques a category does use, but instead those it excludes. AKA the fastest category is your baseline, and any runs that add objectives or ban glitches or techniques should be branched and specified as such. In lieu of this, I agree that the "chest glitch" branch should be dropped, and the current baseline branch should be changed to inbounds.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
Sorry pal, too many doors for me, gonna have to try harder next time (very cool TAS, crazy seeing 45k rerecords for something under 10 minutes)
Experienced Forum User
Joined: 9/25/2016
Posts: 23
Honestly we just added door of time because it would be fucking lame if we opened it, and frankly the people who have been stirring up shit about door definitions would be acting even worse. I genuinely do not see why this needs any further explanation or debate. The only thing worth adding is that the A press to open any given door is denoted by the "open" text on the A button icon so that people can talk make shitty arguments like talking to the goron with the A button counts as opening a door. It honestly baffles me that people think this door definition is a stretch when arguments like that are being brought up.
Post subject: Re: #5660: TaylorTotFTW's N64 The Legend of Zelda: Ocarina of Time "No Doors, All Dungeons" in 2:21:32.28
Experienced Forum User
Joined: 9/25/2016
Posts: 23
Radiant wrote:
I'm not very familiar with this game, but I get the impression that Link crosses several doors throughout the run (e.g. between 1:06:00 and 1:08:00). So I don't really understand what this category is supposed to mean. Is it that some doors don't technically count as doors? And if so, what's the criterion for that?
I'm not sure what you are referring to with that timestamp. The very first large paragraph of the submission post explains what is a door, but almost more important, it defines what counts as OPENING a door. For this run to be invalidated a DOOR would have to be OPENED by the player. This means that the player can get as cozy as he wants to any door, even clip straight through them, so long as the act of opening one never occurs. Again I recommend reading that first long paragraph of the submission post for a more in-depth explanation.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
I don't know anything about this game as far as TAS's go really but I have a decent amount of knowledge about Phantom Hourglass TASing, and if the two are anything alike (I assume they resemble each other strongly) then you want to wait 1 visual frame before every roll which should make you go faster. Also there's a trick you can do where if you enter a loading zone just as you get dizzy (frame perfect) your dizziness is canceled when you enter the other side. You should try to do this on every loading zone 4 or more roll distances away.
Experienced Forum User
Joined: 9/25/2016
Posts: 23
Well your first problem is this is the English version which is slower. You want Japanese to skip a room in Tower of Spirits