Posts for Alyosha


Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I realized that I never posted any progress on this as I was previously working on it, and as BrunoVisnadi has asked for any info I might have, I figured I'd post everything here in the thread. Dave_dfwm did great work on the first few levels, I carried on from his WIP. I quickly got stuck however, as RNG was not in my favor, and I never completely figured out how to control enemy behavior. However even worse, it seems that missing a few enemy kills and not having enough experience to do the jump kick severely impacted the latter half of level 3. It might be the case that some of Dave_dfwm's earlier improvements will have to be thrown out in order to keep good times later on. But, I did include the knocking the 2 knuckles into the water trick in this WIP, so at least it's there on a current emulator, should save some hassle. http://tasvideos.org/userfiles/info/28798667389354492 By the time I beat level 3 I had lost all the previous savings, so starting over on that level is probably best, at least you have something to compare too. Game Mechanics: Enemies in a wave spawn as soon as previous ones fade out. They spawn off screen however so you will have to manipulate their behavior so that they spawn in a pattern that has them walking toward you, unless you have something to throw at them. RAM addresses: player X: 005A enemy 1X: 005B enemy 1y: 005C player y: 0072 enemy 1y: 0073 enemy 2y: 0074
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Nice work! I figured someone with a fresh perspective could find more improvements. Too bad Pro D still resists any significant improvement though.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Thanks for the encode Samara. I've been wanting to see a run of this game and here it is! I skipped around a bit but the parts I did watch looked well done. It's a shame the game, like many N64 games, isn't emulated quite right, but oh well. I did laugh at how some of the game mechanics are abused, like walking over the piano notes and blatantly starting in front of the orange walrus during the race.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I realized you can put inputs into Stella through the debug screen. I started at frame zero and used the exact same 1 frame input as in Bizhawk in both difficulty settings and I lost both times. So, my guess is that this game cannot actually be beaten in 1 frame on actual hardware.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I'm pretty sure all my settings are correct, I even put in NTSC Top line = 34 so the bottom line would show up correctly. Actually, I was able to recreate the run in Bizhawk in real time after a few tries, it just doesn't work in other emulators.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I have tried reproducing this in other emulators and I always lose. I'm pretty sure I'm getting the correct input, you can tell when the paddles both fall at the same time, but the game plays differently. In particular, pterry starts in a different position on screen. You can see this quite clearly here: The bird starts 1 pixel to the left in Bizhawk. I captured this using the Stella emulator, which has a frame advance feature in it's debug mode. The birds X position is at $61. In BizHawk on the frame the bird appears, the value is 0x4D, in Stella it is 0x4C. Other emulators agree with this position. But you don't need frame advance to see the differences, here is a another screen shot of the countdown, the number '1' is pretty clearly one pixel to the left in Bizhawk: It's not the ball that is positioned wrong either, it is at 0x55 at $5B in both. I suspect there is an emulation issue in Bizhawk.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
There are a couple bugs in emulating the A2600 game Flapping in BizHawk. 1. On the title screen part of the 'p' in 'ping' is not properly outlined. It looks like the blocks are shifted upwards. 2. The sound effect that plays when you move your paddle is noticeably higher pitched then on other emulators and youtube game play I saw. That seems to be the only sound effect that is wrong though, the bird and the music sounded right to me.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
There is a graphical glitch in the title screen of this game on Bizhawk. You can see that part of the 'p' in 'ping' is not outlined properly. I tested 2 other A2600 emulators and the 'p' is outlined correctly. Dragster for example also contains graphical glitches on Bizhawk and seems to suffer emulation errors as well. Is there a way to test if the behavior in this run, as well as TASeditor's, is correct and not the result of some error? I have no idea what exactly is going on, but something seems to be up with A2600 emulation. EDIT: I also noticed that the sound that plays when hitting B to move your paddle is also much lower pitch on other emulators (and youtube videos)
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Nach wrote:
Returning to the problem at hand, in my opinion, we need a way to classify these total control and similar runs. They need to have their own rules regarding completion criteria, as well as overall criteria on what is allowed and disallowed. I find a key factor here that games which lack these exploits are finite. Baring loops, there are a (nearly incalculable) finite amount of ways to complete a game. However, in games that we can add our own code, once we do so, there are now an infinite amount of ways to proceed. These two groups are now objectively distinct, and we really do need to come up with a set of rules for each. These rules we develop should take into account how the different groups of these runs differ from each other as I entailed in my presentation of the previous problem, and allow for many runs per game, but limit the infinite. An important point to consider in developing a tier and rules for it is how a run makes use of the existing game once its payload begins. This run to my knowledge is the first run to no longer make any use of the game whatsoever once the payload begins. Meaning that the final payload can be ran on any SNES game once controller input to RAM becomes possible. Since it's not tied to a game, do we accept different runs of Notepad attached to Super Mario World, Super Metroid, Kirby Super Star, and others? Not only do we have to categorize what kind of diversity we allow for any given game, we need to limit how we apply this diversity to many different games, as I do not wish to publish the same virtually identical payload over and over. I already began work in trying to define a new tier for these kinds of runs in order to spark some discussion. However, I find this initial work to be lacking in that it does not make use of yet to be developed movie class/branch criteria, and it does not supply a series of rules on how to deal with the aforementioned sub-problems in this tier problem. If we can iron these issues out, I'd be happy to enable the site to support it, and then accept this run if it conforms to the new rules. In closing I want to add that runs like this which include payloads and play them take tool-assistance to their epitome input-wise, and we should put the effort in to properly acknowledge them.
Since I do like tech demo stuff a lot (even if I'm not that technically knowledgeable enough to do anything of the sort) I guess I'll at least post some comments about this. My feeling in reading over Nach's post is basically wondering why there is such an over abundance of caution. I don't see the harm in just declaring the Demo Tier into existence, using your (Nach's) existing rough draft of rules and such, putting some runs into it, and working out the kinks from there. It's no big deal if some problems are encountered or some mistakes are made along the way, gotta climb that learning curve somehow. At least there would be something real to look at and work with instead of just the hypothetical. Not everything needs to be crystal clear and set in stone for the tier to work, and it's not like we're stopping global warming or defeating ISIS here, give it a try! Something is better then nothing!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I definitely agree, which is why I asked for just that in the Umihara Kawase fun by Flagitious. For Clue though I don't think any of the groundwork is in place to make that happen, so it will probably have to lie dormant for a while, even if a real improvement is found, oh well.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Ok, so given that in the Clue submission there seemed to be some support amongst staff for updating old submissions with new ones on current emulators, I thought this one would be an excellent test case. 1. It is short 2. It is incredibly well optimized so a significant improvement is unlikely 3. It has it's own frame timer, so you can easily check that the re-synced file completes the levels in the same manner with the exception of more accurate lag. 4. There is no RNG, so nothing to raise concerns there. So, I wish to ask that the existing submission file be replaced with this one: http://tasvideos.org/userfiles/info/21288338289808557 I'm glad I kept it around!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
There are a lot of repeat solutions in the List I posted, so there might be another aspect to the RNG that I haven't accounted for. Also I tested quite a few different possible solutions, and so far Deign's run still wins. The closest in Green accusing himself with the wrench in the ballroom, but the problem is that to get green to be the accuser, all 3 of the lower 3 characters on the selection screen have to be selected. Play in the game starts at Ms Scarlet and proceeds clockwise, so in order for green to be the accuser, he needs to be the first human player in the rotation. This takes 4 frames to set up, and just 2 frames too long to beat Deign's run. I don't think I'll put too much more into this. But, the important point here is that RAM initialization makes Deign's solution optimal, and this cannot be achieved in Bizhawk or lsnes without it.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Awesome! Good luck Bruno Visnadi! Yeah Cobra Triangle is all luck manipulation and is a bit tedious so good luck. I put a decent amount of work into Double Dragon so I can at least give you a head start once you get a round to that one. Also I am Happy to announce that myself, Samsara, and ArandomgameTASer have teamed up to tackle both Battletoads runs, expect WIPs in the not too distant future : )
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Wow another pretty substantial improvement, nice work!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
http://pastebin.com/Ru5ZKyYB Ok, so I created a lua file to determine the solution for every initial value of $09 given perfect menuing. That pastebin link is the result. Using that, I found that Deign's original solution could be achieved with perfect menuing with seed 90 (0x5A) Using this info, I then made lua run a game with this seed and play to the end. The result is that Deign's run, if played on bsnes with perfect menuing, would be 1615 frames long. This is considerably longer then the snes9x 1.43 version, but is still quite a bit shorter then in Spikestuff's submission. So the 1615 frames can be considered the ideal re-sync of Deign's run, and any run shorter then that would be a true improvement. I'll try to find such a solution, it shouldn't be too hard now that I have some of the machinery in place. For anyone interested, here is the script: http://tasvideos.org/userfiles/info/28726429975577947 You'll just need to make a savestate at frame 0 and save it under the correct name.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Thanks to the great work of Dark Noob and SDR I can cross off two of the more conceptually difficult runs off this list! I could probably never do that kind of TAS so I'm glad this worked out with a really good run to obsolete those old snes ones. With Wai Wai World on the workbench this project is nearing the half way point in terms of number of runs from when I started! Of course probably only about 1/3 of the total work has actually been done, as there are several long runs still looming, but things are looking up!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I originally didn't think this would be that interesting given the intended glitches, but you all managed to find something petty neat, awesome!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
http://tasvideos.org/userfiles/info/28704389615031569 Oops you are right, my mistake, please replace the submission file with this one. Also thanks a lot for the temp!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Since I couldn't find a topic about this I decided to make one to at least document findings / information. This is probably the simplest and clearest case of RAM initialization (aside from the trivial example in NES Cybernoid) that makes a good sandbox model. RNG and RAM: The game uses a counter that increments once per frame (excluding some laggy parts) from power on. This counter is at $09. The important point here is that the game never sets the initial value here, and just constantly INC's it until the screen asking you to press start to play, at which point the solution to the game is decided. As it happens, we have 2 snes emulators that are very accurate (using bsnes 0.85) and otherwise mostly the same aside from initial RAM state. Bizhawk has initial value of #$C3, while lsnes has initial value of #$55. As demonstrated by spikestuff, these lead to very different solutions. Game info: Deign found that the solution is stored in the following form: 7E1048: Culprit 7E104A: Weapon 7E104C: Room Each is one byte, and the following values represent each person: 00 - Col. Mustard 02 - Professor Plum 04 - Mr Green 06 - Mrs Peacock 08 - Miss Scarlet 0A - Mrs White 0C - Knife 0E - Candlestick 10 - Revolver 12 - Rope 14 - Lead Pipe 16 - Wrench 18 - Hall 1A - Lounge 1C - Dining Room 1E - Kitchen 20 - Ballroom 22 - Conservatory 24 - Billiard Room 26 - Library 28 - Study Optimization: Deign in his run mentions that different choices take different amounts of time to load and gave guidelines for which is the fastest / slowest. This was done in snes9x 1.43 and I'm not yet sure how well it translates into current emulators, but there are some solutions which are noticeably slower then others, so this needs to be investigated. There are a relatively small number of solutions and player choices, so a bot would probably be the fastest way to work out what the true optimal run would look like. Judging by Deign's notes I think this should Green accusing Green with the wrench in the ballroom, but I'm not positive. I'll update this with more information as I work on it.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Well, looks like there is still more to consider that I initially got wrong. After reading Deign's submission text a bit more carefully, it turns out he is referring to the time needed for the animations and such to play out after the accusing is done, not just the time it takes to make them. This holds in Bizhawk too. http://tasvideos.org/userfiles/info/28692715932855699 here for example is a 3 frame faster movie that still has mustard using the knife but has a suboptimal (in terms of input) room selection. Looks like there is still more to document in this game. the first thing I will do is properly document which room goes to which hexcode, unless you already have that info spikestuff? It will still come down to uninitialized memory though, so this doesn't really address the original problem.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
^wow so fast D: I was going to try in lsnes but I quickly got lost, I guess I am too spoiled by TAS Studio. @Nach: well it is possible to get the same accusation (scarlette accusing herself) as in snes9x, you would just need the right starting value for $09 to have an optimal room. It would still contain the same 1 frame improvement. But since the published run has 17(.5) votes and an entertainment rating of 4, maybe it's not as important and it just belongs in the vault, it's still technically interesting if nothing else. EDIT: uh oh, looks like lsnes has a bad RAM initial state too (setting everything to 55) giving the rope as the weapon, oh well. Can it be set manually?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Well nothing can come of this as long as the run remains cancelled, might as well give it a shot right? I've pm'ed dwangoAC about console verification, I am willing to acquire the game at any rate. Well I think people are open to alternatives, both Agfaq and I mentioned co-authorship. In terms of whether this is a gameplay improvement or not, for this game moving the selection box on the screen is the only action, that is how the game is played. In Deign's run he needs to go to the middle box, the input for this is L,D,A, each in it's own frame as this is how the game accepts input. In Spikestuff's run, the input is _,A, as confirming a selection cannot happen on the first frame, and no movement is needed. This is the only possible type of improvement there is, as this is all the game does. So I hope this is clear at least on why the 1 frame of savings is a real savings and not fabricated by the emulator. In fact any RNG that created the situation of (U|D|L|R),A would have the same improvement, which should be about 1/3 of them. EDIT: Oh and the solution is set at the time when the game asks you to start. This is long before the final room selection where the improvement frame is.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Just a little follow up here. As Spikestuff mentioned in the submission text, selection input is only accepted on the second frame after input starts for the culprit/weapon/location screens, while movement is accepted on the first. Since you can move up,down,left, or right on each screen (the menus wrap around) this means 5 people, 5 weapons, and 5 locations are all reachable optimally in terms of gameplay. So 125 of the 324 possible outcomes are actually optimal in terms of gameplay. (Well $09 is only one byte so maybe only 256 of the total possibilities are included in the game but I didn't check.) Anyway, this means 1/3 to 1/2 of the possible solutions are optimal ones. So Deign just got bad luck that snes9x chose a bad RAM start up state, how unfortunate. Nevertheless, this is a real improvement, as it takes 2 movements to reach the ballroom in Deign's run, but 1 or fewer is optimal. It's not really a question of emulator accuracy anymore, but one of RAM initialization, which is a very different matter. @Spikestuff: would you consider un-cancelling this run given this new information? It's an interesting case and I think a good use of the 5000th submission!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
@Mothrayas: Well I definitely agree that only console verification will be definitive, just talking about it won't resolve anything. But, it seems things are more interesting then just accuracy differences. I looked into the game code a bit, and what I found is the RNG depends on uninitialized memory. Specifically, a counter at $09 is incremented from its power on position as the game runs. The game does not initiailize memory, so the chosen emulator power on state is used. Eventually, once the menuing starts, the value is used to store an RNG seed of sorts in $C3. From here various operations are done to get the game solution. You can easily demonstrate this by changing the initial value of $09 in hex editor on the first frame of spikestuff's movie, or by trace logging the game from power on, the first instruction you will find for $09 is INC Interesting!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I've read through the pokemon yellow one and I don't think the situation is the same. The difference between VBA and Gambette is not particularly well demonstrated as far as I could find, however the difference between bsnes and snes9x 1.43 is pretty plain. Almost certainly, the result in Deign's run is just plain wrong, and I don't see how you cannot obsolete an incorrect result with a correct one. (But as mentioned above this is hypothetical until tested.) The correct one is even faster by 1 frame of gameplay improvement. Being Overcome By Events is something that happens all the time. Deign didn't have control over it, but that doesn't mean its unfair to obsolete a run that is inaccurate with one that is. At worst, just put 'Deign & Spikestuff' as the authors. Assuming that it is demonstrated to be so of course, which is the crux of my argument I guess.