Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
I don't think the graphical corruption in the credits will be a problem, since the fact that it beats the game can be confirmed by continuing and seeing your inventory is now full of p wings.
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
Editor, Player (44)
Joined: 7/11/2010
Posts: 1029
SmashManiac wrote:
Am I to understand that the 2-second SMB3 TAS can't be submitted yet? Is it just because emulators are lacking sub-frame inputs or is there also an accuracy issue?
It's because emulator input file formats are incapable of representing sub-frame inputs. FCEUX can handle them if they're input via Lua (and, although quite possibly not perfectly accurate, is accurate enough to emulate the run in question); however, there's no way to specify the input in question in an input file/recording.
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Patashu wrote:
graphical corruption in the credits
I would prefer clean credits over glitched credits. But that is just my personal opinion. I really did not expect something like this to be possible. There has been some 1 second TAS because of some konami code and maybe savegame abuse, but I never expected solid games like SMB3 to be beatable in 1 second. I'm interested in reading more info about the DPCM glitch. It hasn't been explained thoroughly here yet, I think. What is DPCM anyway? Is it that the game checks for input multiple times a frame and makes sure the input is the same; if it isn't, it polls for more input as long as it always changes? Is something like this viable for other consoles? If yes/no, why?
phi
Joined: 8/20/2015
Posts: 31
As far as I understand, DPCM is the unit on the NES that play sampled sound. There is a bug in early version of the NES that corrupt data read from the controller. Many games have a workaround. They fetch data from the controller until it reads the same value two times in a row. If you change every time the controller state, it goes in an infinite loop and corrupt things. I don't know the details about the corruption. In SMB3, at one point, the NES began to execute a part of the memory that is the same at the part where the controller state is stored. You can then execute arbitrary code, as what was done in SMBW. Am I right ?
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
phi wrote:
Am I right ?
Yes, that is basically ais523's explanation in Simple English.
phi
Joined: 8/20/2015
Posts: 31
Hurray, so it means my understanding of english is not too bad \o/
Editor, Player (44)
Joined: 7/11/2010
Posts: 1029
MUGG wrote:
Is something like this viable for other consoles? If yes/no, why?
The glitch requires the game to use a particular sort of controller read routine (that waits for a stable value on the controller). The NES has a glitch that makes this sort of read routine useful, so we'd expect many NES games to have the glitch. Other consoles don't have the glitch in question, so games don't have much of a reason to use the glitchy read routine; it's possible that games could use it for some other reason, but seems fairly unlikely. As such, I'd expect the glitch to be mostly NES-specific.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3821)
Joined: 11/30/2014
Posts: 2829
Location: US
I think it's also worth mentioning that not every game uses the DPCM channel, and those that don't also don't need to use the controller read routine that enables this kind of glitch (of course this needs to be investigated in a case by case basis.) Battletoads for example, another game with a notible game end glitch, does not enable the DPCM channel and only polls the controller once per frame.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
ais523 wrote:
FCEUX can handle them if they're input via Lua (and, although quite possibly not perfectly accurate, is accurate enough to emulate the run in question); however, there's no way to specify the input in question in an input file/recording.
Can I have the script?
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.
Player (41)
Joined: 1/22/2014
Posts: 38
Location: Sweden
feos wrote:
ais523 wrote:
FCEUX can handle them if they're input via Lua (and, although quite possibly not perfectly accurate, is accurate enough to emulate the run in question); however, there's no way to specify the input in question in an input file/recording.
Can I have the script?
Sure thing, here's the lua script and input file I used for the SMB3 credits warp run: https://speedga.me/misc/smb3_ace.zip
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Thanks. I need you on IRC.
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: 3/11/2008
Posts: 583
Location: USA
phi wrote:
I don't know the details about the corruption.
If you want more technical details, http://wiki.nesdev.com/w/index.php/DPCM_conflict#Conflict_with_controller_and_PPU_read
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
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.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3821)
Joined: 11/30/2014
Posts: 2829
Location: US
^That's cool, so do you think there will be good enough support to get a run submitted here? I would be really interested in seeing that.
Personman
Other
Joined: 4/20/2008
Posts: 465
feos, it's really awesome to see you pushing for emulator improvements and working towards them yourself. As someone who cares but doesn't have anything like the time, i really, really appreciate your efforts. Subframe input in fceux this year or next year would be amazing to see.
A warb degombs the brangy. Your gitch zanks and leils the warb.
Tompa
Any
Editor, Expert player (2215)
Joined: 8/15/2005
Posts: 1941
Location: Mullsjö, Sweden
A detailed video explanation how the wrong warp in 7-1 is done: Link to video Quite good!
Post subject: Super Mario Bros 3 wall glitches
Joined: 1/14/2017
Posts: 14
Location: Quebec
In Super Mario Bros 3, why in some levels it's not possible to do wall glitches like wall jumps or passing through walls, like the level 1-2?
Tompa
Any
Editor, Expert player (2215)
Joined: 8/15/2005
Posts: 1941
Location: Mullsjö, Sweden
Joined: 1/14/2017
Posts: 14
Location: Quebec
Tompa wrote:
Here's an explanation on that http://tasvideos.org/forum/viewtopic.php?p=330572#330572
Thank you, these explainations are very clear. Basically, it's because the levels that has slopes have a different collision detection for all tiles. And Mario is ejected upwards very fast instead of right, yes, I could see that, in the level 6-8, at the beginning, I removed 2 of the bricks, I went behind them and Mario teleported on the slope just above.
Spikestuff
They/Them
Editor, Publisher, Expert player (2642)
Joined: 10/12/2011
Posts: 6438
Location: The land down under.
Plamondonl7000 Please don't disable HTML / BBCode.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
AGDQ spoiler How did you achieve ACE in 1-1?
Joined: 10/31/2006
Posts: 134
MUGG wrote:
AGDQ spoiler How did you achieve ACE in 1-1?
Tons of sub-frame input. I saw a better explanation somewhere on this forum last night. Can't find it right now.
Editor, Player (54)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
The shell code execution? This was presented on the streams when it was being created, so I think I can explain it. You have to position the sprites of the enemies (which needed to be turtles IIRC) in an specific X coordinate so that it gets interpreted as ASM. The enemies de-spawn when they are off-screen (and their values will remain for some time) but other enemies may spawn in the addresses you just set, so you have to be careful on how & when to scroll the screen. There was another value that had to be manipulated, but can't remember what was it...
I'm the best in the Universe! Remember that!
Player (41)
Joined: 1/22/2014
Posts: 38
Location: Sweden
MUGG wrote:
AGDQ spoiler How did you achieve ACE in 1-1?
As been mentioned it's the same method as used in the title screen ending glitch. It abuses the fact that SMB3 reads input multiple times per frame and compares the reads until they match to get around the DPCM bug in the NES. So by just sending alternating inputs each read the game will get stuck in the controller reading loop for as long as these inputs are alternated, causing all kinds of bad behaviour with NMI re-entering on top of itself corrupting the stack. (MMC3 IRQ for the statusbar split also plays a part in SMB3). In the end this makes it possible to trick the game into excuting RAM contents as code, and in RAM the koopa shells was used to write a small loader that reads inputs, stores it in RAM and eventually executes those inputs. And from there on total control is achieved. When I get the code cleaned up a bit, I'll post all the source code and tools used for the AGDQ 2017 ACE.
arflech
He/Him
Joined: 5/3/2008
Posts: 1120
The video showing someone doing the glitch in this run on console: http://tasvideos.org/2588M.html now has this URL: https://www.twitch.tv/videos/47068400
i imgur com/QiCaaH8 png