|
You have to link this one too! https://twitter.com/mike_ducker/status/1284525597813805057?s=19
|
# ? Jul 18, 2020 21:00 |
|
|
# ? Apr 23, 2024 07:46 |
|
I feel like these probably resemble the moment life spontaneously originated in the universe.
|
# ? Jul 18, 2020 21:02 |
|
I wouldn't mind a Langoliers video game.
|
# ? Jul 18, 2020 21:53 |
|
Maybe if there was a walking simulator, but it's all cube-rose balls, bush textures stretched out to infinity, someone's face is the skybox, you launch yourself by jumping on physics objects? I'd be all about that.
|
# ? Jul 18, 2020 22:47 |
|
jonsicoli posted:Maybe if there was a walking simulator, but it's all cube-rose balls, bush textures stretched out to infinity, someone's face is the skybox, you launch yourself by jumping on physics objects? I'd be all about that. isn't that just beam NG?
|
# ? Jul 19, 2020 03:54 |
|
Stare-Out posted:I wouldn't mind a Langoliers video game. I was thinking the same goddamned thing. Couldn't remember the name, though. Everything else about that miniseries they made of it is etched into my brain, but I couldn't place the name.
|
# ? Jul 19, 2020 04:03 |
|
just yesterday i saw a B on a report card in a tv show and thought "do you know what that stands for? it stands for bum! and do you know what happens to bums? the langoliers eat them!"
|
# ? Jul 20, 2020 21:23 |
|
https://video.twimg.com/ext_tw_video/1284428137393094656/pu/vid/1280x720/M98Zkt-Gj-GbOKCF.mp4#t=0.01
|
# ? Jul 20, 2020 22:52 |
|
there might inexplicably be a total lack of horse archers in that game, but those mongols are clearly still experts on the subject.
|
# ? Jul 20, 2020 22:58 |
|
Doc Hawkins posted:just yesterday i saw a B on a report card in a tv show and thought "do you know what that stands for? it stands for bum! and do you know what happens to bums? the langoliers eat them!" That fuckin' scene tripped me out even as a kid because gently caress I wish I could have been a solid B student instead of a strictly A or C- student.
|
# ? Jul 21, 2020 01:07 |
|
Not quite a glitch but close enough so I figured it'd be fine for this thread. So there's a thing in some older games called "Arbitrary code execution" which basically means you can use glitches to literally write code for the game to execute. Now what you can do with human reaction time and the limits of the inputs the hardware will allow is limited(but still used by some speedrunners to do ridiculous stuff like beating Pokemon Yellow in under 4 minutes by teleporting to the hall of fame), but when you use a robot on an emulator(otherwise known as a Tool Assisted Speedrun, or TAS) the sky is the limit. GamesDoneQuick sometimes does this in their TASbot segments like(spoilered what happens in the videos if you want to be surprised): Coding Super Mario Bros into Super Mario World https://www.youtube.com/watch?v=HvCoNSq3GEM Coding a meme game and more into Super Mario Bros 3 https://www.youtube.com/watch?v=eM8Z9e-WoFs Or even showing Twitch chat in Pokemon Red(more about that here) https://www.youtube.com/watch?v=yoQLUhBfrOE But what made me make this post was THIS video https://www.youtube.com/watch?v=zZCqoHHtovQ Ignore the upload date. So you may think this is just a well edited together video...but no, it was all done in a Pokemon Yellow ROM and is confirmed to be legit. The author made a long post about how they did it along with the source code. RatHat has a new favorite as of 08:43 on Jul 21, 2020 |
# ? Jul 21, 2020 08:27 |
|
RatHat posted:
One thing I've always wondered is where the payload comes from? From watching agdq I get the impression that a computer is only inputting button presses, so when it gets to the point where arbitrary code can be executed, where does this code get injected? Do they have the game hooked up to a PC, and the game then reads memory from the PC where it's stored and begins executing an entire game?
|
# ? Jul 21, 2020 12:23 |
|
Aidan_702 posted:One thing I've always wondered is where the payload comes from? From watching agdq I get the impression that a computer is only inputting button presses, so when it gets to the point where arbitrary code can be executed, where does this code get injected? Do they have the game hooked up to a PC, and the game then reads memory from the PC where it's stored and begins executing an entire game? It depends on the glitch, but the one you usually see at GDQ is where they glitch the game into a state of writing controller inputs directly to memory and then sending the code by hitting a precise series of button presses. That's obviously near impossible to do without a TAS managing all the controllers on a multitap. There's other like the Super Mario World end warp where the code's written in by placing objects in the world in pixel-perfect locations which means they can be done by actual players: https://youtu.be/14wqBA5Q1yc
|
# ? Jul 21, 2020 12:44 |
|
Icedude posted:It depends on the glitch, but the one you usually see at GDQ is where they glitch the game into a state of writing controller inputs directly to memory and then sending the code by hitting a precise series of button presses. That's obviously near impossible to do without a TAS managing all the controllers on a multitap. Thanks! That's ridiculous though. I had the impression they were literally writing code via button presses but I also thought "no, that's stupid that's literally impossible"
|
# ? Jul 21, 2020 12:57 |
|
Aidan_702 posted:Thanks! That's ridiculous though. I had the impression they were literally writing code via button presses but I also thought "no, that's stupid that's literally impossible" It usually involves using a different method to rewrite the game to accept input that way first. As I recall, in Pokemon they use inventory manipulation to write code so that they can use raw controller inputs to write the full payload.
|
# ? Jul 21, 2020 13:30 |
|
Aidan_702 posted:Thanks! That's ridiculous though. I had the impression they were literally writing code via button presses but I also thought "no, that's stupid that's literally impossible" The secret of programming (and all computing really) is that code is data and data is code. Code is a byte sequence that the CPU has been told to read into its processing hardware and interpret as instructions. Data is a byte sequence the CPU has been told to give to the instructions so they can calculate new data values. Any particular byte sequence could be treated as one or the other at different times. So they literally are writing code via button presses, in that the sequence of bytes produced by the button presses matches the patterns that will allow the CPU to make sense of it when fed into the instruction path. The tricky part is how to get the game into such a state that it thinks recording all the button presses into RAM and then feeding that particular bit of RAM into the CPU instruction handler is a good idea, because it hardly ever is in any legitimate task (this is not too far removed from how hackers take over computers, just with a really clumsy input device).
|
# ? Jul 21, 2020 13:51 |
|
Aidan_702 posted:Thanks! That's ridiculous though. I had the impression they were literally writing code via button presses but I also thought "no, that's stupid that's literally impossible" Karia posted:It usually involves using a different method to rewrite the game to accept input that way first. As I recall, in Pokemon they use inventory manipulation to write code so that they can use raw controller inputs to write the full payload. Yeah, the post on tasvideos goes into detail on it (including code for the stage2 and stage3 loaders), there's actually several phases here: - start the game, save, then reboot the console halfway through saving to get a save file with corrupt pokemon - use the corrupt pokemon to get a corrupt item screen - use the corrupt item screen to manipulate values in memory to write 9 bytes of code (the stage1 exploit) that will let you read inputs from the controller at a rate of 1 byte per frame; the game is so confused at this point that closing the inventory screen will cause the stage1 payload to execute rather than whatever normally happens - controller inputs are used to write a new, 13-byte stage2 payload; this payload has its own controller handling routines that mean it can query the controller as fast as the CPU will let it rather than waiting for the game to process control inputs once per frame. This payload executes as soon as it's done being written. - since stage2 has its own controller-reading loop, the game is now completely locked up (because none of the usual animation, sound playing, etc code is getting a chance to run), but that doesn't matter, because stage2 can read input from the controller at about 1KB/s rather than 30 bytes/second, so we won't be here for long. - stage2 is used to write stage3, which is 28 bytes long and is basically the same as stage2, except it also nicely fades out the screen and puts the CPU into double-speed mode - the rest of the payload is written followed by 0x5D (an "end of code" marker stage2/3 are written to watch for) which causes stage3 to hand off control to the newly written code, and away we go! This sort of structure is pretty common in ACE exploits in games: usually you can only write code at first in slow ways (by moving around inventory items or the like), so your very first priority is to write the smallest program possible that will give you a faster way (like pressing buttons on the controller). Once you have that you can write an even faster way (like going from "pressing buttons once a frame" to "pressing buttons as fast as the CPU can keep up") and then you drop the real program. This is also why this particular TAS only works on some emulators (and the real hardware); most emulators only read controller input once a frame (because most games don't care about input more often than that), which means stage2 won't work.
|
# ? Jul 21, 2020 14:53 |
|
ToxicFrog posted:Yeah, the post on tasvideos goes into detail on it (including code for the stage2 and stage3 loaders), there's actually several phases here: If you give a mouse a cookie.....
|
# ? Jul 21, 2020 15:02 |
|
https://www.youtube.com/watch?v=oWbwmxVpqVI Here's an example of one that has the input visible on the bottom of the screen Also if you turn CC on there's commentary to go with it
|
# ? Jul 21, 2020 15:20 |
|
haveblue posted:The secret of programming (and all computing really) is that code is data and data is code. Code is a byte sequence that the CPU has been told to read into its processing hardware and interpret as instructions. Data is a byte sequence the CPU has been told to give to the instructions so they can calculate new data values. Any particular byte sequence could be treated as one or the other at different times. So they literally are writing code via button presses, in that the sequence of bytes produced by the button presses matches the patterns that will allow the CPU to make sense of it when fed into the instruction path. Yeah on modern machines this kind of thing is much more difficult because usually the operating system prevents programs from stepping outside the specific area of memory that had been portioned off for them to use and will just force a crash if it happens - but old consoles didn't have operating systems, everything was just running directly on the CPU and as far as the CPU is concerned there's no such thing as an invalid state. If a game crashes, it's because the developers had to specifically put that behaviour in as an error handler - the CPU just sees bits come in and executes operations based on an internal mapping of what each possible combination of bits should mean. Usually the trick in a lot of these games is to find some way to over/underflow the execution stack so that the CPU loses track of where in memory it's supposed to be and it bounces out of the dedicated code area and into the data area, which can include things like controller inputs or game state or other things the player has the ability to manipulate. Other times it's something like exploiting a glitch to physically get the character outside of the intended level area, which makes them literally "fall" into active memory since the level itself is just one big chunk of the memory and the game keeps track of what to display on screen by using the player position as an index into it. The ACE exploits in Mario games usually use this method.
|
# ? Jul 21, 2020 18:14 |
|
Pokemon is one of the notable/earliest example because it is routinely hacking itself in order to fit everything in a Gameboy. Yellow is then layering in more hacks on top of the hacks. The good news is that Pokemon and Gameboys do not have access to your bank account so it's just a neat bare metal interface.
|
# ? Jul 21, 2020 18:25 |
|
The Cheshire Cat posted:Yeah on modern machines this kind of thing is much more difficult because usually the operating system prevents programs from stepping outside the specific area of memory that had been portioned off for them to use and will just force a crash if it happens - but old consoles didn't have operating systems, everything was just running directly on the CPU and as far as the CPU is concerned there's no such thing as an invalid state. If a game crashes, it's because the developers had to specifically put that behaviour in as an error handler - the CPU just sees bits come in and executes operations based on an internal mapping of what each possible combination of bits should mean. Usually the trick in a lot of these games is to find some way to over/underflow the execution stack so that the CPU loses track of where in memory it's supposed to be and it bounces out of the dedicated code area and into the data area, which can include things like controller inputs or game state or other things the player has the ability to manipulate. Other times it's something like exploiting a glitch to physically get the character outside of the intended level area, which makes them literally "fall" into active memory since the level itself is just one big chunk of the memory and the game keeps track of what to display on screen by using the player position as an index into it. The ACE exploits in Mario games usually use this method. Wanted to emphasize this bit, since it can seem counter-intuitive to non-programmers: crashes are a good thing. If your program gets to a state where something is weird, like it's been told to write in a piece of memory that it shouldn't have access to or there's a weird edge-case that wasn't accounted for by the programmer, you want the program to throw up its hands and say "I don't know what to do, I'm stopping." That's the desired behavior, and it allows the program to exit relatively gracefully. But especially in old games, that sort of logic to detect invalid behavior didn't exist. When you see Missingno pop up in Pokemon Red, it's because it's reading invalid data as a Pokemon and there's absolutely no error checking to tell the game "hey, this isn't what's supposed to happen." So you can just start walking through walls, battling messed up pokemon, and injecting arbitrary code into the game, while a game with better error checking would just cause whatever the local equivalent of a blue screen of death is. Karia has a new favorite as of 18:42 on Jul 21, 2020 |
# ? Jul 21, 2020 18:40 |
|
Plenty of modern games will strive mightily to avoid crashes as well. Sometimes when things break, it's hard to tell if the thing that broke was as minor as "the game stops drawing grass" or as major as "the game stops drawing all terrain". You hope that your game's QA is good enough to catch the latter, and you don't really care about the former, so if suddenly your code can't draw stuff...just, kinda, hope things work out and keep going! Well, in an ideal world, you'd crash, then during the dev process you'd get these weird crashes and figure out "oh hey, the grass isn't drawing, lemme fix that". But gamedev is a complicated and hard process and there's never enough resources to do everything perfectly. So you settle for just logging a warning and continuing, and then right before launch someone will go through and turn off all the "log a warning" statements that nobody ever followed up on. In most serious software, in contrast, you have a very good idea of how important a given failure is, and most failures are mission-critical. So crashing is used more freely.
|
# ? Jul 21, 2020 19:17 |
|
Pokemon Red/Blue is actually especially prone to this craziness because they had to take out the error handling that would've been there. It's of an era where they started implementing that as a matter of course, but they didn't actually have room for it.
|
# ? Jul 22, 2020 01:02 |
|
Cleretic posted:Pokemon Red/Blue is actually especially prone to this craziness because they had to take out the error handling that would've been there. It's of an era where they started implementing that as a matter of course, but they didn't actually have room for it.
|
# ? Jul 22, 2020 23:49 |
|
Cardiovorax posted:That is to say that they took out all of the usual error handling that would normally lead to a program crashing with an error message when, for example, it is handed something like raw and unformatted game data in place of the audio file that should play a Pokemon's "call" when it enters battle. Instead, it just keeps chugging along and tries to make sense of what it is told to work with, even when there is no sense to be found. It's why Blue and Red had so many exotic and creative glitches that you would normally never see outside of an early alpha build. A fun story about Pokemon that demonstrates how absolutely crammed that cart is and how they had to hack everything together to do it is that Mew was not added to the game until after they'd removed the debugging tools used for testing during development, because they needed to free up that space for Mew's data. They basically just went "well I hope this doesn't break anything!"
|
# ? Jul 23, 2020 00:02 |
|
"Wow I can't believe there's a 151st pokemon!" Neither can GameFreak, kid.
|
# ? Jul 23, 2020 00:05 |
Weren’t there also issues that came up from them adding (almost) the entirety of the RBY continent to Gold/Silver/Crystal? Like having to cut the Safari Zone?
|
|
# ? Jul 23, 2020 00:47 |
|
They almost couldn't fit Johto proper, that any of Kanto made it in at all is testament to Iwata's code wizardry. That said I suspect that the safari zone may have been primarily cut more for bug-related issues since the first two gens shared a lot of code and fixing why e: the safari zone teleport to an out of bounds glitch city happens probably wouldn't have been feasible with the time/money they had, mostly judging by there being a proto-safari zone left in the data.
|
# ? Jul 23, 2020 05:45 |
|
Like Clockwork posted:They almost couldn't fit Johto proper, that any of Kanto made it in at all is testament to Iwata's code wizardry. Yeah, a lot of the ways they 'fixed' bugs in the 8-bit Pokemon generations wasn't by actually fixing it, but by removing the way people triggered the bug in the first place. Missingno. and other glitch Pokemon still exist in Yellow (in fact they might be worse), but they removed the ability to rewatch the catching tutorial, so you can't do the classic Cinnibar Coast glitch. They didn't fix the ability to go into glitchy areas by handling doors weird, but they removed the Safari Zone that people used to trigger it in gen 2.
|
# ? Jul 23, 2020 05:56 |
|
The Cinnabar Coast glitchiness was actually fixed by either marking those tiles as "water wild battles" or making them not generate encounters. I'm pretty sure I did all the steps in Yellow as a child and was very confused as to why it didn't work. (And a good thing too, Yellow Missingno.'s massive sprite size makes it much more destructive, especially on emulators that don't properly emulate echo RAM like the Virtual Console.) The full details are explained on either TheZZAZZGlitch or Crystal_'s channel but the tl;dr for the unfamiliar is that the game stores the player's name in the grass wild Pokémon data when the Old Man capture cutscene plays, which is fine because in most of the game either you can't get into fights or it would be overwritten by the proper encounter data. But in the process of translation, those tiles on the Cinnabar Island coast were incorrectly assigned "grass" instead of "water" and you got access to the buggy encounter table generated by the values of characters in your name because they didn't have a preset table to draw from.
|
# ? Jul 23, 2020 06:12 |
|
Is there any documentation of how the Missingno glitch was first discovered? Like, I've always imagined it originated from some nerd posting on some niche forum about weird stuff they found while messing around with an emulator, and it spread online from there before eventually filtering down to 8yos telling each other about it at recess, but I'd love to know the specifics.
|
# ? Jul 23, 2020 09:08 |
|
Pretty good posted:Is there any documentation of how the Missingno glitch was first discovered? Like, I've always imagined it originated from some nerd posting on some niche forum about weird stuff they found while messing around with an emulator, and it spread online from there before eventually filtering down to 8yos telling each other about it at recess, but I'd love to know the specifics. Missingno was likely before emulation was big enough that it would've been initially found that way, but remember: Pokemon is loving huge and played mostly by young children, so chances are likely that instead it was sort of a monkeys-on-typewriters situation. With so many kids doing so many different things in this one game, it was almost inevitable that eventually a couple of them would stumble onto this relatively easy to perform glitch by accident. I don't think it's something we can trace back to one place, given when and likely how it came about. Incidentally, something I remember from my own childhood is that the Missingno steps in my local area didn't direct you to Cinnabar Island; they directed you to Fuchsia City, and then down to the east coast of Seafoam Islands, which has the same behavior. To me that sort of thing lends credence to the 'no single discovery' idea, because it seems like two totally different ways to perform the glitch developed in parallel.
|
# ? Jul 23, 2020 10:08 |
|
I used to use the Seafoam Islands glitch to catch Safari Zone pokemon all the time when I was a kid. Thankfully it wasn't likely to break my game
|
# ? Jul 23, 2020 11:12 |
|
Pretty good posted:Is there any documentation of how the Missingno glitch was first discovered? Like, I've always imagined it originated from some nerd posting on some niche forum about weird stuff they found while messing around with an emulator, and it spread online from there before eventually filtering down to 8yos telling each other about it at recess, but I'd love to know the specifics. It spread before people in its target audience really even used the internet all that much, so it’s super hard to track but like the above poster said, was probably from a shitmillion eight year olds hammering away at it.
|
# ? Jul 23, 2020 11:39 |
|
Yeah, the Missingno glitch was already well-known as early as 1999, back when the original Red/Blue games were still new.
|
# ? Jul 23, 2020 12:32 |
|
I always assume it spawed from game genie usage
|
# ? Jul 23, 2020 19:03 |
|
The game kind of encouraged players to do the thing that triggered the glitch. How do you get an encounter? Move a whole lot. Why do you want lots of encounters? Got a pokédex to fill. Isn't that kind of boring and repetitive though? Very. How can you safely move a whole lot while watching TV or something? Go along the east coast. Walls stop you from going too far up or down. How far out do you need to go for encounters? Zero tiles.
|
# ? Jul 23, 2020 19:25 |
|
maswastaken posted:The game kind of encouraged players to do the thing that triggered the glitch. Except it requires rewatching the Pokémon catching tutorial as a first step, so i dunno why you would do that when you’re at the point in the game where you have a pokemon with surf.
|
# ? Jul 23, 2020 19:43 |
|
|
# ? Apr 23, 2024 07:46 |
|
Ugly In The Morning posted:Except it requires rewatching the Pokémon catching tutorial as a first step, so i dunno why you would do that when you’re at the point in the game where you have a pokemon with surf. You forgot about what the dude does and you mash through the text and start the tutorial again, then fly to Cinnabar in frustration, go right and get the encouter on the first tile, corrupting your savefile.
|
# ? Jul 23, 2020 20:43 |