User Files for OnehundredthCoin

All User Files Profile for OnehundredthCoin Upload

#75436230045449211 - Super Mario Bros. 3 "Game End Glitch" in 00:00:00.316

smb3-prg1_19f_100th_Coin.bk2

Uploaded 11/10/2021 6:36 AM by OnehundredthCoin (2 files)

For Super Mario Bros. 3 (NES)

In 00:00.31 (19 frames), 0 rerecords

2435 views, 79 downloads


Run created in Bizhawk 2.6.3 (with some odd export issue, so I just pasted the inputs in version 2.3.2 and exported it there?) Before I submit this run, I'm going to be taking the time to write up a huge explanation, and probably make a video explaining how this run works.
The credits work perfectly fine without any visual bugs.
Uploaded as a user file so it can be console verified before submission.
Huge thanks to Bigbass for verifying the run.
The final run had 3183 rerecords, I'll fix the metadata before the submission.

DJ Incendration on 11/10/2021 4:26 PM
For some reason, even though the movie is in the Movies folder, BizHawk doesn't recognize this movie as being the same game as your previous WIP. When I choose it from the folder, though, it works fine.
Bigbass on 11/10/2021 10:55 PM
Console verification: My replay device requires a non-zero latch filter, so I used 98us (just over the time required for one input poll).
OnehundredthCoin on 11/11/2021 12:21 AM
Quoting DJ Incendration
For some reason, even though the movie is in the Movies folder, BizHawk doesn't recognize this movie as being the same game as your previous WIP. When I choose it from the folder, though, it works fine.
Yeah, I had some problems exporting the .bk2, so I copied the inputs into a different version of the emulator which I apparently had some questionable settings for. It was apparently using a build of the game that I compiled myself using Southbird's disassembly, so the file name was incorrect, the hash was incorrect, the rerecords are incorrect, and the author was "Default User". The metadata has been corrected for the file I plan on submitting.
ItsPietroFelix on 11/13/2021 12:47 PM
"0 rerecords" first try lfg

Download (1.49 KB) Info

#75291642453080158 - Super Mario Bros. 3 "Game End Glitch" in 0:00:00.399

smb3-prg1-24f_100th_Coin.bk2

Uploaded 11/3/2021 6:19 PM by OnehundredthCoin (2 files)

For Nintendo Entertainment System

In 00:00.25 (15 frames), 13882 rerecords

797 views, 41 downloads


I'm going to make a much better writeup of this, but for now I'm just uploading the .bk2
This should beat the current TAS by 23 frames.
Keep in mind this run was made in version 2.3.2 with the SubNesHawk core. I believe this version has a bug with IRQ timing? I don't know all the details, but it might not work on later versions of the emulator. This should not affect the run on console, so I've been told.

DJ Incendration on 11/4/2021 4:19 AM
Isn't this 15 frames?
DJ Incendration on 11/4/2021 6:40 PM
Are you going to submit this for publication?
DJ Incendration on 11/4/2021 6:45 PM
This TAS seems to work on 2.6.3.
OnehundredthCoin on 11/4/2021 9:43 PM
Quoting DJ Incendration
Are you going to submit this for publication?
I'm trying to take a few more frames off before I submit it, though I do plan on submitting this.
OnehundredthCoin on 11/4/2021 9:46 PM
Quoting DJ Incendration
Isn't this 15 frames?
I included lag frames from the moment the console turns on. From turning on the console, it's 24 frames. Only including controller latches, it's 15 frames.
OnehundredthCoin on 11/4/2021 9:48 PM
Quoting DJ Incendration
This TAS seems to work on 2.6.3.
Thanks for testing it there! I'm trying to make some improvements and decided to just download 2.6.3 while testing some more things.
DJ Incendration on 11/5/2021 12:35 AM
Is it ok if I post a video of this version on YouTube?
OnehundredthCoin on 11/5/2021 5:58 AM
Quoting DJ Incendration
Is it ok if I post a video of this version on YouTube?
I would prefer if you didn't. I'm in the process of making a really detailed video about how this run works. I'm also still trying to find ways to improve it, and I mostly submitted it here on TasVideos so someone on the discord could grab the file if they wish to console verify it.
DJ Incendration on 11/6/2021 4:24 PM
Quoting OnehundredthCoin
Quoting DJ Incendration
Is it ok if I post a video of this version on YouTube?
I would prefer if you didn't. I'm in the process of making a really detailed video about how this run works. I'm also still trying to find ways to improve it, and I mostly submitted it here on TasVideos so someone on the discord could grab the file if they wish to console verify it.
Ok. So, how did you find this improvement? How would I make a similar TAS?
OnehundredthCoin on 11/6/2021 6:40 PM
Quoting DJ Incendration
Ok. So, how did you find this improvement? How would I make a similar TAS?
Reading through the notes on the current submission: http://tasvideos.org/6466S.html They mention the key goals are to execute $B85A while address $100 has a value of $20. Their method is to end up writing JSR $8FE1, which ends up satisfying all the requirements, as that chunk of code sets up address $100 and jumps to $B85A. However, there is a surprising amount of effort required to write JSR 8FE1, which is why their run takes as long as it does.
My method was to instead use address $15, which increments by 1 every frame, to write JSR xx1E, where xx is whatever buttons I'm holding on controller 1, and $1E is the value of address $16, which it should always be. I found a place I could jump to at address F81E. This place writes JSR $0020, which would let me return to the zero page, and since this JSR instruction is sitting at xx1E, it writes (1E + 2) to the stack, which is $20. If the stack pointer is in the correct place when all that goes down, that satisfies the address $100 requiring a value of $20 problem. After that point, I just need to jump to $B85A, which can be written with nothing more than button presses.
Though this method does have some drawbacks, it would take 32 frames for address $15 to hold a value of $20 to write JSR. to solve that, I run ASL <$15 twice when $15 has a value of $07. That sets it to $1C, giving me only 4 frames after that point to have the stack pointer ready for the JSR to F81E. I write LDX #08 so I can store X at a specific point to make sure the code gets executed as I want, then I transfer X to the stack pointer. I need the stack pointer to be 7, so I just push A to the stack pointer, then it all unfolds setting $100 to a value of $20.
as for "How would I make a similar TAS?" Check out the SubNesHawk core! This kind of run requires extensive knowledge of 6502 Assembly, and you should definitely read the notes for the current submission, which I linked above.

Download (1.67 KB) Info