Speedrunning SMB1 inside SMW

Поділитися
Вставка
  • Опубліковано 21 лис 2024

КОМЕНТАРІ • 191

  • @Kosmicd12
    @Kosmicd12 3 роки тому +243

    Technical explanation starts at 1:25:56

    • @haterIV
      @haterIV 2 роки тому +3

      cap

    • @Kosmicd12
      @Kosmicd12 2 роки тому +23

      ??

    • @haterIV
      @haterIV 2 роки тому +3

      @@Kosmicd12 have this cap 🧢

    • @Atomlxe
      @Atomlxe 2 роки тому +5

      @@Kosmicd12 Replying even after it's been a year... legendary

    • @talkalexis
      @talkalexis 2 роки тому

      @@Atomlxe notifications exist...

  • @artemis_smith
    @artemis_smith 2 роки тому +531

    this is the kind of thing kids would make up in the schoolyard in the '90s. "I swear that if you do everything right you can turn super mario world into super mario brothers!" "No way!"

  • @karuma6635
    @karuma6635 Рік тому +39

    Somebody in chat at some point said "more like a ramhack than a romhack" and that's the most creative way of describing ACE I've ever heard

  • @pafnutiytheartist
    @pafnutiytheartist 2 роки тому +185

    I'm impressed with how fast the payload for the whole game was delivered

    • @jimmyjam2373
      @jimmyjam2373 2 роки тому +10

      They most likely did not program all of smb through gameplay. Instead a lot of these TASs will make it so you can start writing code through controller inputs. Once you have that you can program anything super quickly

    • @supersonic9236
      @supersonic9236 Рік тому +6

      @@jimmyjam2373shhhhh it’s magic not controller inputs

    • @wengemurphy
      @wengemurphy 2 місяці тому +1

      In the technical explanation part he mentions they're doing multiple controller reads per frame (hundreds of button presses) and that makes sense for why it's so fast...even if the hardware pretends it's a multi-tap the math doesn't work otherwise

  • @curlybrace4984
    @curlybrace4984 2 роки тому +157

    The moment we get doom running inside mario world is the moment my life's any% speedrun will be completed

    • @ZGURemixer
      @ZGURemixer 2 роки тому +11

      SNES Doom is open source, but sadly we need a Super FX chip for it to run, I believe.

    • @doodman6870
      @doodman6870 Рік тому +2

      ​@@ZGURemixerNOOOOOOOOO I'm sure there's a way to do it low poly

    • @aethrys
      @aethrys 8 місяців тому +1

      emulate the sfx chip >:D no matter how slow

    • @skinwalker69420
      @skinwalker69420 7 місяців тому +3

      @@ZGURemixer do it in Yoshi's Island

  • @charlieharrison
    @charlieharrison 3 роки тому +102

    1:29:20 "faster and faster and faster" syncs with the BIOS animation

  • @ci.netproductions
    @ci.netproductions 2 роки тому +90

    At first, I was like, “oh! So someone remade the SMB levels in SMW?”
    then I was presented with this madness…

    • @benjaminoechsli1941
      @benjaminoechsli1941 2 роки тому +19

      You're not wrong. Arbitrary Code Execution basically tells the game "Hey, here's some new code to run. Do it."
      And that code... is Super Mario Bros.

    • @ianproductions5540
      @ianproductions5540 Рік тому +4

      ​@@benjaminoechsli1941Was this made within the vanilla game? (without rom hacks)

    • @nikolthomas2544
      @nikolthomas2544 10 місяців тому

      @@ianproductions5540
      Uses one of those TASbot-type things to do it.
      It is human possible just would take kinda long and more chance for mistakes.
      Same principle as credits warp

    • @davidfaisca3967
      @davidfaisca3967 7 місяців тому

      ​@@ianproductions5540I Guess they put the Mario Bros in the nes first and while its loaded on the RAM, the change to smw and trick it to read the code thats still in the RAM like its loading other smw level.

    • @OhhCrapGuy
      @OhhCrapGuy 7 місяців тому +1

      ​@@davidfaisca3967nope, guaranteed it can't be that because the graphics were seeing were never released on SNES, plus the SMW executable uses colossal amounts of RAM compared to SMB. Specifically, the original SMB was written for the NES, which only had a total of about 4KB (4380B iirc) of RAM across the entire system, so with a total binary blob size of 40K, the original SMB was written to only hold a fraction of the whole game in memory at the same time.
      So, since this is clearly the NES version of the game, this must be a patched version that is written to actually read all game data such as sprites directly from RAM, probably copying them from RAM back into RAM as necessary.
      See, the way the original NES worked with it's "definitely not a 6502" CPU is that RAM and the cartridge were on the same address bus as each other, so programmers would load the data from RAM or RAM by simply accessing the data from the right part of the address space.

  • @MrBizznessMan
    @MrBizznessMan 3 роки тому +74

    I love how everyone's interpretation of this is Just Speedrunner Mario able to control the Multiverse and enter parallel dimentions.

  • @aprilgwynn
    @aprilgwynn 3 роки тому +109

    Really interesting stuff, I'd never thought about how ACE actually builds the bootloader in steps

    • @p4plus2
      @p4plus2 3 роки тому +16

      Fun fact: Without using multiple bootloader stages and just the base exploit it would take about 40 minutes to upload all the code/data.

    • @DavidvanDeijk
      @DavidvanDeijk 2 роки тому +2

      @@p4plus2 Is there any checksumming or other safeguard to ensure that all data is correctly transferred?

    • @p4plus2
      @p4plus2 2 роки тому +5

      @@DavidvanDeijk Not in this payload. Other ACE exploits I've worked on had reason to add checksums, but this payload has been stable enough that it was never an issue. Human RTA ACE exploits for example i have added a checksums for.

    • @DavidvanDeijk
      @DavidvanDeijk 2 роки тому +1

      @@p4plus2 Thanks for replying so quickly. Does the bootloader need to be accurately synced like 0.5 miliseconds to reach that 182 keypresses per frame or is there any slack in the bootloader timing and the data still arriving uncompromised is what i wonder.

    • @p4plus2
      @p4plus2 2 роки тому +3

      @@DavidvanDeijk There is quite a large amount of slack in this payload. Particularly compared to some later ACEs which end up doing close to 3KB/frame of transfer. But payloads like that do some real voodoo, so can be less stable. But in general the biggest sync factors are the original games reliability and replayability. For example, SMW is very stable and rarely drifts from expectations. DKC2 only had a narrow success rate due to various factors (the main one being spc desync).

  • @linkthehero8431
    @linkthehero8431 2 роки тому +9

    This reminds me of that Genesis homebrew SMB4MD where the creator decompiled the original game's code and adapted it for the Genesis.

  • @EtopiasCorner
    @EtopiasCorner 2 роки тому +11

    Arbitrary Code Execution is absolutely crazy

  • @niko5008
    @niko5008 3 роки тому +19

    1:31:55 HEY! i know that jumping pattern! that's Masterjun3!

  • @magnafide
    @magnafide 3 роки тому +41

    1:41:16 even more basic explanation as to how they pulled this off

    • @Adamantium9001
      @Adamantium9001 3 роки тому +16

      Lemme take a crack at it.
      The holy grail of game glitches is Arbitrary Code Execution, or ACE. It's exactly what is says on the tin: a glitch that puts the console into a state where you can just feed it whatever code you want and have it run that code (usually--including in this example--by having the game interpret button presses as code). That code is called the "payload." ACE is the holy grail because of the word, "arbitrary." In principle, the payload can be absolutely _anything_ that the hardware is capable of. Anything that is technologically possible to put on a cartridge and run like any other game, can be run via ACE.
      So, with that said, the very short explanation of what they did goes like this: 1) Port SMB to SNES. 2) Launch SMW and activate ACE. 3) Load your SMB port as the ACE payload.
      Note that the video's title is kind of a lie, since once we activate ACE, we are no longer "in SMW" in any meaningful sense. It's just that SMW is one game where an ACE setup has been found, and its role in this process could be swapped out for any other SNES game where an ACE setup has been found.

    • @eustab.anas-mann9510
      @eustab.anas-mann9510 7 місяців тому

      ​​@@Adamantium9001Thanks for explaining. So there's no game hidden in SMW and it's not possible to insert the code on an original SNES with a normal controller right?

    • @rubixpotato1301
      @rubixpotato1301 7 місяців тому +1

      @@eustab.anas-mann9510 If you could input everything the TAS does exactly the same, frame perfectly, on a normal controller with an original SNES, then yes, it could be done just the same.
      Humans don't really have that abillity, so it's up to the TAS for most ACE

  • @lukahmad5683
    @lukahmad5683 Рік тому +3

    18:06 The live chat comment: "It's like the Mario theme on mario paint" lol

  • @Hamster07
    @Hamster07 3 роки тому +6

    *talking about the game*
    kosmic: casually switches to the fds

  • @SandTurtle
    @SandTurtle 2 роки тому +20

    A potential way to expand storage would be to use the second controller port as a "cartridge slot". Basically you would use all available CPU cycles except for the ones used to display graphics to read the second controller port, and do all of the calculations on the external hardware like the doom NES cartridge (or star fox kinda, doom NES is just the most extreme example). It may be limited because it will have to always have the same frequency that the external device is reading at. Not sure how low level control that you have over the cpu, so it may not be viable

  • @AtanoKSi
    @AtanoKSi 2 роки тому +19

    * him proving its smb1 *
    A random dude in chat: just use all-stars
    Sometimes I would rather not see chat

    • @want-diversecontent3887
      @want-diversecontent3887 2 роки тому +5

      I've heard of that guy before, if they're not joking someone stole their computer

  • @lescitrons
    @lescitrons 3 роки тому +21

    here is my explanation of ACE:
    computer memory is a stored sequence of numbers. code that a computer runs is a special language stored in those numbers. if you can input data into the computer, for instance, through the controller, you might be able to control what numbers are stored in a position in memory. if you can perform certain types of glitches, you might be able to get the computer to think that the code that it needs to run is in the area of memory you control. if you can do that, you can make the computer execute whatever arbitrary instructions you put there, hence "arbitrary code execution".

    • @arfansthename
      @arfansthename 2 роки тому +3

      also you have to crash the game and you have to have your code to be the next thing it executes

  • @mikereynolds1368
    @mikereynolds1368 3 роки тому +7

    Ty for the awesome discussion and showcase of this amazing work!

  • @leoluster5096
    @leoluster5096 2 роки тому +23

    Theoretically speaking, if you were to speedrun this, rather than going to 4-1 and 4-2 you could go from 1-2 to -1 and -2, reset to go select worlds and then pick world 8. Idk how fast that would be thougg

    • @kosmicspeedruns
      @kosmicspeedruns  2 роки тому +9

      thats 30-40 seconds slower than just warping to 8

    • @kosmicspeedruns
      @kosmicspeedruns  2 роки тому +23

      err wait, I'm thinking of normal minus world ending. It would probably be a bit faster here, yeah

  • @stevehartkopf9114
    @stevehartkopf9114 3 роки тому +7

    5:51 Bullet Bill ftw!!!! 🙌🏼

  • @sparkshadowtigergaming5602
    @sparkshadowtigergaming5602 2 роки тому +4

    i love how the chat went what the fuck when you switched over to Mario brothers XD

  • @btarg1
    @btarg1 3 роки тому +13

    I love it! This is fascinating

  • @Lektuerekurs
    @Lektuerekurs Рік тому

    in another realm of existence: "Running 'multidimensional universe' on my cellphone"... 😂

  • @thevirginmarty9738
    @thevirginmarty9738 Рік тому

    When I saw this title, I was expecting a SMW hack with ported Mario 1 levels playable with SMW physics and vertical scrolling.

  • @4crafters597
    @4crafters597 3 роки тому +9

    I mean with a converter that creates a files locally you should be in the clear legally

    • @p4plus2
      @p4plus2 3 роки тому +2

      Absolutely. That's not impossible to do, it just wasn't how the exploit was designed originally. Though, being perfectly honest, many of our scripts for dumping TAS data to make this all work are somewhat temperamental and require a fair bit of work to use. They'd need major redesigns for distribution otherwise they'd probably simply frustrate users. But it's certainly doable.

    • @4crafters597
      @4crafters597 3 роки тому +1

      @@p4plus2 yeah, i feel you, making something work and making something work for other people is completely different

  • @FoxDog1080
    @FoxDog1080 2 роки тому +4

    Imagine using ACE to beat smw by using another game to get to the ending

  • @brinleyhamer729
    @brinleyhamer729 2 роки тому +1

    Ace is like giving someone random ascii characters and forcing them to read it

  • @DavidRoberts
    @DavidRoberts Рік тому

    "Fail yay"'s silhouette world seems prescient given Super Mario Wonder...

  • @aldo-tn
    @aldo-tn 2 роки тому +2

    23:56 Now it all makes sense

  • @haterIV
    @haterIV 2 роки тому +3

    alt title: speedrunning smb1 with badabum's pitch

  • @lukahmad5683
    @lukahmad5683 Рік тому

    Bismuth: a ramhack is just a romhack in Tennessee lmao 🤣🤣🤣

  • @mikecraftbro
    @mikecraftbro 3 роки тому +12

    Would you technically be able to do this same thing but with smas graphics

    • @mikecraftbro
      @mikecraftbro 3 роки тому +4

      @@hotsIaw year that makes sense

    • @p4plus2
      @p4plus2 3 роки тому +5

      I wouldn't call it strictly impossible (though the more complicated backgrounds may not fit in RAM), but at that point you're basically just playing SMAS :p. May be a fun challenge one day if i get bored though.

    • @p4plus2
      @p4plus2 3 роки тому +4

      @@hotsIaw our limitation is 128KB, which is the SNES RAM size, so we have some free space to mess with. The final payload uses ~50KB give out take (including RAM SMB needs and the NES to SNES translation routines). But SMAS SMB i believe still exceeds 128KB I believe, but I'd have to double check to be sure.

    • @p4plus2
      @p4plus2 3 роки тому +2

      @Rudy also true, but i figured that was cheating :p

  • @ANzTy
    @ANzTy Рік тому +1

    1:42 he broke the game, so bad it went back five years

  • @TetrisMaster512
    @TetrisMaster512 2 роки тому +2

    Not sure if this is explained in the video since I haven't gotten to the technical explanation, but is the game running using the 65816's 6502 compatibility mode, or has the SMB1 code been translated to 65816 machine code prior to injection? I remember seeing this project a while back for a NES emulator for SNES (Project Nested) that uses a JIT compiler to translate the code on the fly, I presume because hardware registers for stuff like audio and video can't be addressed in 6502 mode. Could this be done in like a back and forth fashion where the game logic runs in 6502 mode and then jumps back to 65816 mode that handles all the audio/video stuff?

  • @yelir64
    @yelir64 2 роки тому +1

    This guy played a 4:57 to cointoss first try I’m legit impressed (maybe low 4:58 because the show was slow)

  • @tux8664
    @tux8664 2 роки тому +4

    I would expect it to be very crude without any music and stuff like that, how the heck did they fit all the super mario data and graphics into that incredibly small amount of playtime? I barely saw any stops to carefully input data, let alone an entire 31k cartridge

    • @kosmicspeedruns
      @kosmicspeedruns  2 роки тому +6

      the initial setup is so that they can get the game to read *inputs* as arbitrary code to execute, then they send inputs as a payload for it to run. They can send several inputs from 1 or 2 different controllers every frame so it can build the payload really fast!

    • @tux8664
      @tux8664 2 роки тому +1

      @@kosmicspeedruns Its really cool how that stuff works

  • @mikecraftbro
    @mikecraftbro 3 роки тому +7

    How can a link send you to a video and a certain point in that video

    • @BlueYoshi
      @BlueYoshi 3 роки тому +6

      right click on the video, then you should see the option to do so

    • @jpsalis
      @jpsalis 3 роки тому +1

      A query in the url you clicked on, basically an outside variable that the website can use to get information about where you got the link, and anything special it should do. You can make one using the share button.
      When you make the link, it appends a query to the end of the URL called t, equal to the seconds into the video. UA-cam does the same thing for the video address, into a variable v. This address is always the same for any given video. In this case, v=t7yj_ypLUYk. You can also use youtu . be/{video addr} to shorten the name a bit, and the time variable can also be added if you want. The shortened link ends up as: ua-cam.com/video/t7yj_ypLUYk/v-deo.html
      To add queries, the first variable is separated with a "?", and the rest are divided with an "&" symbol. A ton of websites use them.

    • @stuff31
      @stuff31 3 роки тому +1

      there's a "start at x" option when you use the share link function

  • @nintendowarrior11
    @nintendowarrior11 2 роки тому +9

    So does SMW have a rom of SMB1 in it or does ACE create SMB1 within SMW?

    • @beepbleepboop
      @beepbleepboop 2 роки тому +10

      ace writes smb1 into memory.

    • @rhysbaker2595
      @rhysbaker2595 2 роки тому +9

      Arbitrary Code Execution (ACE) gives you the ability to run your own code. What this TAS does is writes all the code to run smb1 and then runs it

    • @spo0nofficial
      @spo0nofficial 2 роки тому +5

      @@rhysbaker2595 holy shit that's fucking crazy

  • @gorkskoal9315
    @gorkskoal9315 3 роки тому +8

    In otherwords they created a RAM disk, and because of how consoles work it crashed and found the small virtual computer then just assumed that was the right game.

    • @voxel9470
      @voxel9470 3 роки тому +12

      they managed to coax the game into running the controller inputs as actual computer instructions and used that to build up the payload from scratch

    • @harrisonfackrell
      @harrisonfackrell 2 місяці тому

      It has nothing to do with assumptions or coaxing. Y'all are anthropomorphizing the Super Nintendo.
      They used ACE to write a program into memory, and then executed that program. No more, and no less.

  • @cubbycubbycat2287
    @cubbycubbycat2287 3 роки тому +2

    1:43 hahahahhaahahaha

  • @aurafox1
    @aurafox1 Рік тому

    Games Cosmic is playing: Super Mario World, Super Mario Bros., Super Mario All Stars

  • @anonanonymous9670
    @anonanonymous9670 2 роки тому +34

    So how did they get SMB1 in the game? (including the sprites and everything)
    This is just magic

    • @rhysbaker2595
      @rhysbaker2595 2 роки тому +31

      There is a way to trick the game into reading the wrong data and running it as code. You can trick it into reading the positions of certain objects. If you can put those objects in just the right place you can trick the game into reading your controller inputs as game data. Then, you press those buttons in the right combination you can just input code for smb1.
      Sprites for sb1 are all also just code. So when they write the game data they also write sprite data

    • @MattIsTheCat
      @MattIsTheCat 2 роки тому +6

      @@rhysbaker2595 I know, but how does it write a whole 40KB so fast?

    • @TechSY730
      @TechSY730 2 роки тому +15

      ​​@@MattIsTheCat The TAS replay device is most likely taking advantage of the multitap. So there are actually 8 streams of input from 8 "controllers" it is working with.
      2. They didn't have to code in 100% of SMB1. Some parts of SMW world were reusable for a SMB1.
      For example, the sound effects are still SMWs. And parts of SMW were reusable for SMB1. For example, many of the sound effect ID to sound maps were unchanged from SMB1 to SMW (like coin and power up collect sounds didn't need to have their indexes adjusted)

    • @MattIsTheCat
      @MattIsTheCat 2 роки тому +1

      @@TechSY730 Thank you for your insight.

    • @TechSY730
      @TechSY730 2 роки тому +6

      @@MattIsTheCat Oh, and one more thing. When it is inputting the code via controllers, it doesn't abide by the fps anymore.
      Instead they can input as fast as the CPU can run the loop or how fast the controller inputs can be polled (whichever rate is slower)
      And that is much, _much_ faster than 60 inputs per second

  • @totalbro
    @totalbro 3 роки тому +4

    Where is the boot loader device connected to the SNES? In the service port?

    • @p4plus2
      @p4plus2 3 роки тому +4

      The bootloader is code written into RAM and reads off the controller ports.

    • @totalbro
      @totalbro 3 роки тому

      @@p4plus2 so the device that Kosmic shows is plugged into the controller ports?

    • @p4plus2
      @p4plus2 3 роки тому +3

      @@totalbro Hm, I think there is some confusion here as to what a bootloader is. A bootloader is a piece of code that helps load other pieces of code faster. So the bootloader is not a physical device.
      The device attached to Kosmic's controller port is something we call a replay device. Its basically a fancy controller that can replay controller presses.
      In the ACE we read the controller port to load new code, but this starts very slow and we can only do a single load per frame by default. So we write what is called a bootloader, a small piece of code that can read the controllers faster than the default method. So we use the slow method to read the bootloader which then can read more data much faster after.
      Hope this helps clarify, let me know if something isn't clear and I'll try and explain it better.

    • @totalbro
      @totalbro 3 роки тому

      ​ @p4plus2 so the code being written into RAM, including the bootloader program, is being written via the replay device plugged into the controller port? Do I have that right? (I called it a bootloader device because I assumed it was running the bootloader and other code in RAM using controller presses as input... didn't mean to be confusing)
      I don't know what "the ACE"... I didn't catch a definition for that during the technical explanation. Would you help me with that?

    • @p4plus2
      @p4plus2 3 роки тому +4

      @@totalbro ACE stands for "arbitrary code execution". This is a type of exploit where we are able to find a way to inject our custom code into the game (typically by corrupting the game into executing some memory we can control in some way).
      Let me break down a simplified version of what happens:
      1) We crash the game
      2) In the crashed state the game will execute a region of memory that corresponds to controller data (8 bytes)
      3) The SNES by default only reads the controllers once per frame, this is too slow to be useful
      4) We use this slow method to read a faster method into RAM
      5) Once we finish writing the faster method we start executing that code
      6) Then its possible to read the rest of the data hundreds of times faster
      Super technical stuff:
      The following section is really in depth and may not be easy to follow. It involves some of the SNES specific topics.
      The SNES has a fairly non trivial memory layout. For the context of this discussion there is a region of memory located at "$4218-421F" These 8 bytes are where the "autojoy" data is written. "Autojoy" Is where the SNES puts controller data that is automatically read at the beginning of ever frame. This, however, only happens once each frame. In the initial crashed state we alternate between a load and store every other frame.
      The code will look like this:
      .loop
      LDA #$XXXX
      WAI
      STZ $10
      BRA .loop
      and:
      .loop
      STA #$XXXX
      WAI
      STZ $10
      BRA .loop
      (The above code blocks roughly can be read as "load/store, wait until interrupt, clear the SMW lag detector, loop and do it again)
      So one load/store per two frame is a throughput of 120 bytes per second -- really slow.
      I'll spare you from additional code details, but basically use this slow method to upload a "bootloader" which can switch to a faster method of reading code. The SNES supports manually reading the controller ports with the addresses $4016/4017. The rest is just building up in steps to do the final high speed read. The payload will actually go through 4 total stages before we get to the SMB final execution.
      Hope this helps a bit more.

  • @TheWaterMiners
    @TheWaterMiners 2 роки тому +2

    So what's the cartridge size limit? Is it limited to 40k games like Super Mario Bros, or can you do larger games like Mega Man?

    • @justaspectator9762
      @justaspectator9762 2 роки тому

      bit trip pfp? you're awesome

    • @benjaminoechsli1941
      @benjaminoechsli1941 2 роки тому +1

      According to the internet, SNES cartridges (like Super Mario World's) can hold up to 6 MB, so you could fit a larger game in there as long as there's room.
      The internet is strangely devoid of info as to how big SMW actually is.

    • @Muhahahahaz
      @Muhahahahaz Рік тому

      @@benjaminoechsli1941 but they are modifying the RAM of the SNES, not the cartridge. I think you would be limited to the RAM size of 128 KB, unless you wanted to use ACE more than once to “load” another part of the game

  • @pftmclubvn
    @pftmclubvn 2 роки тому +1

    Is there any TAS files for this?

  • @AnarchyIsLove
    @AnarchyIsLove 7 місяців тому +1

    what exactly do they mean by "upload" when talking about the music and stuff? is it external data being run through the cartridge, or is all of this done with pure SMW ACE from the TAS inputs?

    • @rubixpotato1301
      @rubixpotato1301 7 місяців тому

      The TAS uses ACE to set up a situation in which controller inputs can be used to write to RAM instead of Mario's actions, so the code can be written from scratch really quickly, from sprites to music to physics

  • @AtanoKSi
    @AtanoKSi 2 роки тому

    What I don't understand is, i thought the music would be just directly the smb ost with mario world sounds, but they have more instruments and such

    • @kosmicspeedruns
      @kosmicspeedruns  2 роки тому

      it's mario all stars music

    • @Muhahahahaz
      @Muhahahahaz Рік тому

      It would have been too much work to get the SMB1 sound engine working on an SNES, so they basically borrowed the sound engine code from All-Stars and injected that instead

  • @AnImmortalBean
    @AnImmortalBean 3 роки тому +6

    The one dislike: make the sounds the same!

  • @legendgames128
    @legendgames128 3 роки тому +1

    I would attempt to make a tas to have Celeste in snes, but I am intimidated.

    • @legendgames128
      @legendgames128 3 роки тому +1

      Not to mention the technical limitations.

    • @danius88
      @danius88 3 роки тому +1

      @@legendgames128 do it

  • @frahfiggity
    @frahfiggity 3 роки тому +2

    And here I thought TASbot was conciously pressing the buttons on the controller.

    • @charlieharrison
      @charlieharrison 3 роки тому +1

      Nope, it's playing back a TAS made by a human

  • @zSwingMann37
    @zSwingMann37 Рік тому +1

    33:09 FPG

  • @SUPERFunStick
    @SUPERFunStick Рік тому +1

    A year later and Nintendo hasn't got this guy sentenced to death yet for selling Mario tas bots??? What universe is this?

  • @WindowsXPfan-FNFMix
    @WindowsXPfan-FNFMix 3 роки тому +3

    Playing sonic 1 in super mario world?

    • @magnafide
      @magnafide 3 роки тому +2

      Maybe sonic from the master system

    • @WindowsXPfan-FNFMix
      @WindowsXPfan-FNFMix 3 роки тому

      @@magnafide that would also be cool.

    • @inlovewithi
      @inlovewithi 3 роки тому +3

      It's not going to fit into ram.

    • @rhysbaker2595
      @rhysbaker2595 2 роки тому +1

      First sonic was 16 bit iirc so it literally wouldn't be able to run

  • @Crimefighter
    @Crimefighter 2 роки тому +3

    Ugh....watching this, have NO CLUE how they injected SMB into the game. Is it really all these pixel perfect mario moves to put in all the code? And how about what the fails look like?

    • @kosmicspeedruns
      @kosmicspeedruns  2 роки тому +1

      there's a glitch that takes advantage of a vulnerability in the game. It often would cause a crash, but if you set things up just right you can make the code jump to where you want. The stuff Mario did is to set up enemy positions and stuff because that affects where the code goes. Things get set up in such a way that it starts looking at your inputs, so many many inputs are pressed in a crafted sequence that sets up Super Mario Bros. as a payload to run.

    • @Crimefighter
      @Crimefighter 2 роки тому +4

      @@kosmicspeedruns I get the code execution part, but loading the SMB game into SMW is the question - yes, SMB is only like 32K in size but the mechanics of injecting the game code into memory is the question.

    • @rhysbaker2595
      @rhysbaker2595 2 роки тому +1

      @@Crimefighter they use the slow method of code execution to set up a small program that can read controller inputs and write those to RAM. Then, the TAS bot inputs specific controller inputs to write the code for smb1 to RAM. Is this what you're asking?

  • @lucidattf
    @lucidattf 3 роки тому +1

    cool

  • @safrone
    @safrone 2 роки тому +1

    1:40:44 Is this loss?

  • @Sensual_Burgerking
    @Sensual_Burgerking 2 роки тому

    Would it be possible to Inception this and induce arbitrary code execution again while in Super Mario Bros mode to recreate Super Mario World?

    • @kosmicspeedruns
      @kosmicspeedruns  2 роки тому +1

      there's no way to do ACE in smb1

    • @akunog5143
      @akunog5143 Рік тому

      but there should be a way to code into smb1 a way to reset the ram back to normal and reboot smw from the cart. I don't know for sure, but It should be possible. similar to how the coded in the reset feature for smb1, just have it take you farther back.

    • @Xpnvh
      @Xpnvh 3 місяці тому

      ​​@@kosmicspeedrunsWELL NOW WITH TENNIS AND WORLD N YOU CAN!

  • @Minty_Warrior_The_Cookie
    @Minty_Warrior_The_Cookie 2 роки тому

    Beta test all stars

  • @lolbruh69420
    @lolbruh69420 2 роки тому

    i thought he was doing the data edit thing

  • @iamconklin
    @iamconklin Рік тому

    TLDR. What was the best run?

  • @HamburgerExplosion
    @HamburgerExplosion 3 роки тому +5

    How does it actually run the game out of ram though?? The dude just went on and on about input device and what ACE is, and how regretful it was that the NES sound chip couldn't be emulated in time for GDQ. What I wanted to know is how NES instructions run on a SNES. I ended up reading Wikipedia to find out that the SNES cpu has the same 6502 extended instruction set as the NES. Would have loved to hear more about any and all actual incompatibilities in making the port, but the dude never seemed to get to that.

    • @kosmicspeedruns
      @kosmicspeedruns  3 роки тому +11

      significantly more topics were covered than that, you're exaggerating because one specific thing you were curious about wasn't answered. He joined in the middle of a stream impromptu and explained something highly technical with the goal of communicating intricacies to the average viewer. Instructions set is completely meaningless to them, and pretty easy to look up like you did for the people who care/would even know to search for that.

    • @HamburgerExplosion
      @HamburgerExplosion 3 роки тому +2

      @@kosmicspeedruns Sorry for that. I don't mean offense. It was just frustrating for me waiting for "new information" vs what was explained 7 years ago at GDQ. Hopefully there's a blog write-up at some point.

    • @kosmicspeedruns
      @kosmicspeedruns  3 роки тому +5

      @@HamburgerExplosion it's always been available and you could always get in contact with the authors, join tas discords and ask questions... be more proactive to learn what you're searching for :)
      tasvideos.org/4156S.html
      tasvideos.org/3957S.html

  • @salt546-lfc
    @salt546-lfc 3 роки тому

    Any descent speed run, a super Mario bros speedrun but it’s within a different game

    • @blokos_
      @blokos_ 2 роки тому

      paper mario 64 speedruns (some of them) use tloz:oot. does that count?

  • @weenis6
    @weenis6 Рік тому

    fing sit wrong place

  • @invertedmind8937
    @invertedmind8937 2 роки тому +6

    this has to be the worst way to port a game to a different system

    • @Adriethyl
      @Adriethyl 2 роки тому +4

      _"as long as it works..."_

  • @actuallyarat
    @actuallyarat 2 роки тому

    Ok, but can smw run doom?

  • @underthetreeproductionsOffical
    @underthetreeproductionsOffical 2 роки тому +1

    Either way you’d get a world record because nobody has done this before

  • @magician531
    @magician531 3 роки тому +3

    You said "you can't overwrite ROM", but isn't the whole cartridge ROM? So how do you write on any of it?

    • @magician531
      @magician531 3 роки тому +1

      Or did you load the game directly into the ram

    • @p4plus2
      @p4plus2 3 роки тому +10

      @@magician531 The game was stored directly into RAM on the console. There is also a small amount SRAM on many cartridges, that can be usable too, but not in this case.

    • @magician531
      @magician531 3 роки тому

      @@p4plus2 okay, that makes sense

    • @cst1229
      @cst1229 3 роки тому +3

      @@magician531 There's actually an SMW RAM editor that DOES save itself into SRAM and you can load it by just loading slot 3.

  • @CLUTCHED_ROBLOX
    @CLUTCHED_ROBLOX 13 днів тому

    Bro is gonna end up making people clickbait Mario videos real cuz now u can code whatever u want on the nes

  • @seldom_bucket
    @seldom_bucket 2 роки тому

    I thought this guy stopped being a guy, i must have got him confused with someone else.

  • @Cat_Haha
    @Cat_Haha 2 роки тому +1

    yooooo smw 8 exit

  • @chanceForNotBeingRapper
    @chanceForNotBeingRapper 2 роки тому

    uhhh just like playing other games in gen 1 pokemon?

  • @weenis6
    @weenis6 Рік тому

    ermmm this isnt sonic prime!!!! fals

  • @optimusprime4776
    @optimusprime4776 Рік тому

    WTF

  • @geebsterswats
    @geebsterswats 23 дні тому

    So this is with a legit SMW US cartridge? No custom ROM needed? That’s wild if it can insert 40KB of code using simply inputs, and that it’s so quick! Plus, it has to have some sort of a routine/emulator to actually handle NES format. Insane. Loving the video so far though. Now I’ve got to look into how this works lol

  • @breadknife2231
    @breadknife2231 Рік тому +1

    1:24:46 I found a mistake that you ended early so I think it should be a 5:04.6xx or 5:04.7xx

  • @hankhuevos3336
    @hankhuevos3336 Рік тому

    this is so fucking confusing

  • @angelique2002
    @angelique2002 Рік тому

    So... From IT perspective: A crash is considered something that has stopped responding and needs to be forcefully ended or closed. Sometimes, the machine or console has some sort of error recovery, which for instance can make a console restart, sometimes even wiping the memory clean. Early consoles don't usually have this kind of error handling built-in though, which is partially what makes this possible.
    With these kinds of code injections, the game doesn't actually crash, but the CPU is basically being tricked into reading certain memory values and interprets it as an instruction, which makes it try to execute code from a position in memory that usually does not contain instructions at all. In this case a position that is easy to manipulate like the gamepad input register. The correct button presses then can be interpreted as further instructions, writing values to the RAM, and then pointing the CPU to it to execute. This is possible because these consoles treat ROM and RAM as a single massive page with subsequent addresses. The CPU doesn't care what address it is fed for obtaining instructions or data, whether that address points to ROM, RAM, VRAM or sometimes even the SRAM (save data) of a cartridge; it's all accessible from the same address table.