And in more recent games where there is Nuclear Gandhi it's because of that legend.
If you write a game in a decent language where such a thing won't happen by mistake you can still have it be present on purpose and in some cases that even fits the game's lore.
Random glitches are confusing and bad. Falling off the world in Blue Prince due to collision bugs is annoying for example. However "glitches" which are intended behaviour are fun. I've enjoyed every time I saw somebody get that note and gift from Mrs Babbage because they drafted that particular room in that particular place and it had an effect which in hindsight they now realise was both foreseeable and regrettable...
Many safe languages still suffer from integer overflows. For example in Rust and C# you can pick between an exception being thrown, or silent wrapping when an overflow happens.
I don't think that's suffering at that point. The programmer has made an explicit decision to let things overflow, so he should be prepared to handle that possibility. It's not like a language where overflow happens silently without warning.
I remember the days of DOS and getting a direct pointer to video memory. And I've enjoyed the long history of video game exploits and even arbitrary code execution. But at the same time, I'm also glad that era is over. The same bugs that help you jailbreak a phone can also be the bugs that help you gain illicit access to one.
Illicit access as defined by Google / Apple? If the three letter agencies are interested in you, they don't need to exploit any bugs, they can just demand access from those two companies, and get it. To the device that you carry in your pocket 24/7, with GPS, microphone and camera.
In the days of DOS, the BIOS would load the first sector of a floppy disk or hard drive into memory and transfer control to it. You could replace that sector, and not a single line of code that you didn't write yourself would be executed after that. THIS is how it should be on a PERSONAL computer. A virus could do the same, of course, and gain full control of the machine, but that is not an argument against giving control to the user. You could blame DOS for not intercepting attempts to rewrite the boot sector and asking the user for consent, but completely preventing something like this in the name of security would be even worse!
Imagine if back then, there was a "secure boot" mechanism so that only a boot sector with Microsoft's cryptographic signature was allowed. Linux wouldn't exist. So, neither would Android, but the situation would be much the same as it is now, only with Microsoft Phone OS instead -- and absolutely no concept of how it could be different, of a computing device controlled by its user instead of a giant corporation.
You aren't arguing for jailbreaks, you are arguing for the phone to be in the user's full control.
Ideally, ios and Android would be secure enough that no jailbreaks are possible, but open enough to allow the user to replace the OS with one of their choosing.
Having it locked down and then resorting to exploiting loopholes is the worst of both worlds.
No, illicit access as defined by a user who doesn't want anyone but themselves to have access.
Remember the iPhone jailbreaks where you visited a website and the website exploited the phone and installed a jailbreak? That was a remote security exploit, and any other site could have done that too and used it less benevolently.
Users should have full control over their devices. They shouldn't have to get it via exploits, and it's a good thing when those exploits are fixed, because they're security holes that can be used to harm the user.
I feel like this is particularly amusing though because as I understand it this boss is not in the original game. So on a DS which is so powerful you should never have glitches due to such technical limitations, the developers flew insanely close to the sun.
I don't want Chrono Cross-contamination in my trigger, thanks.
Chrono Cross is a very interesting game on its own but it's a terrible sequel that is remarkably spiteful to its senior. (The thing with FATE and Robo, the Porre thing, the fate of Crono and co., it's a terrible fanfic made canon).
Trigger only worked because of Toriyama gathering the all-star staff (look up the interview with Torishima giving the details). Cross was out of his hands and it shows.
Cross has an amazing soundtrack tho. I think this is probably the main area where didn't felt like a downgrade.
But I agree. Chrono trigger it's the closet thing to perfection in a JRPG. Just pure mastering of the craft in all areas, music, art direction, gameplay, pacing, etc.
It's not that cross it's bad, not at all, has a lot of innovation, but Trigger has a big shadow to scape.
Yasunori Mitsuda's music has had a lasting impression on me. From Chrono to Xenogears and beyond, I had some strong feels associated with his music. Thanks for sharing that link :D
Corridors of Time is still sublime. After I heard that song I had to figure out the notes. Turns out there's this random tool that turns game music rips into midi, so I was able to figure out the chords in that song. I still play it from time to time.
It's buried at the bottom of Boss Battle Strategy:
"Since the Dream Devourer has 32000 HP, which is close to the signed 16-bit integer limit, it is actually possible to defeat it by healing it. By using powerful magic that it absorbs during its second phase, it can be (temporarily) healed past 32767 HP, which overflows the counter and makes its HP go negative."
I figured out that, in the early versions of Realmz for the Mac, there was an enchanted item (a helm?) that added a few points to the wearer’s stats when equipped, but when removed it took away more than it added (i.e. left you worse off). It only took a few seconds for my programmer brain to start furiously equipping and then un-equipping it, and sure enough, when that stat went to -127, one more equip-and-unequip was sufficient to give me a +128 bonus for that stat.
I never understood how that particular bit of logic could have been coded that way - it seemed so unnatural.
I would figure the reason was because calculating it based on your inventory every time it's needed would be expensive, so the developers decided to cache it, but instead of recalculating it from scratch when there's a stat change, they decided to try updating it incrementally, but I guess also imperatively. There's a string of mistakes that has to happen to lead to such a situation but it doesn't seem super unnatural to me.
I wonder if it was percentage based. That'd be one of the easiest mistakes to make.
- Player has a stat of 100
- Wears "+10%" helm
- Player has a stat of 110
- Removes helm, game subtracts 10%
- Player has a stat of 99
Actually, now that I think about it more, that wouldn't work as described above because once your stat got close to zero you'd enter a kind of Zeno's Paradox situation.
it's more likely that the stat for equipping is calculated differently to when unequipping (ala, "same" code in two different places, and one got modified at some point and forgot about the other).
> I wonder if it was percentage based. That'd be one of the easiest mistakes to make.
How would that be one of the easiest mistakes to make? There are no operations for working with percentages, nor is it a thing you'd want to do.
To make that helm work as you describe, you'd need to multiply the stat by 1.1 when equipping the helm and then by 0.9 when deequipping it. But at that point you've lost any justification for making the mistake; those are just two random numbers that don't cancel each other out. It's not like you're adding a number in one place and then erroneously subtracting that same number somewhere else.
(Also, these are very strange multipliers to use this way, because they can never produce exact results. You're bound to see rounding errors if you insist on update-when-equipping and update-when-deequipping instead of recalculate-stats-when-equipment-changes.)
That exact sort of magic numbering is rife in games from what I've seen over the years, especially in stuff like an old RPG from 1994. Maybe you've seen better games than me. :)
(caveats of course): memory and processing is restricted on the old systems; so these kind of simplifications might be the only way to deliver a big game
If you still like video games and are a bit of a masochist you might try playing Noita sometime, a lot of the late game is basically built around this type of logic.
For example there's a wizard-type enemy that temporarily debuffs your max health by 50%, and the effect can stack if you get hit more than once. But what happens if you pick up a permanent health boost item while the debuff spell is on you? You gain the normal health boost, then it multiplies itself when the wizard's spell expires; you can can go from 100 to several thousand HP in seconds and there's basically no limit.
In any other game this would be considered a bug and patched out in the next update. NOT NOITA, motherfucker. You're almost required to do things like this for a lot of the end-game optional content.
So it is this very hard amalgamation of rogue and powder toy that controls like terreria, Very hard, With none of that silly meta progression nonsense you find in most roguelikes, But you push through, get good and beat it. Guess what? That was at most 10% of the game(probably closer to 1%), the other 90% is deliberately obtuse, hidden and optional. What sort of madmen make 90% of their game a easter egg?
There were games being written in days where every byte was precious, and the indirection necessary for something like the decorator pattern was just infeasible. There was a lot of direct stat manipulation upon equip & unequip back in the day.
Following that there was the era in which the only way to be competitive in the games space was to write in assembler directly, which would be my guess for how the bug you described happened, since a more sophisticated algorithm should probably have fit just fine by the time we're in the color Mac era but it would have been more painful to write, and nobody has any time for that. Lots of bizarre shortcuts were taken in this era. Some of the posts from Raymond Chen about Windows providing backwards compatibility for games of this era give an idea of the situation, which are related to how the games interacted with the OS rather than with game mechanics but it's a similar process.
Finally, games have this perverse effect going on where if you write down a bunch of effects you want things in your game to have ("armor can add % bonuses to this part of the strike calculation", etc.), it creates a set of boundaries within which the game's systems can function, and the ironic effect of the creation of those boundaries is to immediately bring to mind ways of violating those boundaries and demands from the designers to do so. These violations of the boundaries will tend to be buggy.
I haven't thought about Realmz in a long-ass time. It had some really crazy tracks and was the only game I know of that used MOD instead of MIDI for its music.
Deus Ex Used MOD, At least I think they were mod, There were a fair number of what was basically MIDI + samples formats.
Also while trying to get my facts straight (All I remember was trying to find a mod player to play the deus ex music found on the cd) apparently Unreal tournament and tyrian2000 used mod music as well, Someone at Epic Megagames must have liked them.
Oh man you're right. How could I forget about Unreal Tournament? I totally forget that mod player I found, but it was fun to cobble together playlists.
By the way if you liked the Deus Ex soundtrack you can check out the Sonic Augmentation ocremix album. Really good.
I think it could be an unpopular opinion, but I like seeing these completely stupid link-to-a-wiki with no context whatsoever posts. Things that force you to actually RTFA of some obscure bit of tech trivia feel a little bit more like how using the internet used to be all those years ago.
- in Pokemon gen 1 you can wrap your stats back to zero by buffing them too much
- In FF7 you can overflow the damage calculation to kill Ruby in one hit
- Mario 64 has a mountain of usable glitches; "parallel universes" let you skip collisions at high speeds
- GTA 3/VC/SA have crazy mission/wrong warp corruptions involving parallel game simulations
- NES Mario can be corrupted to execute arbitrary code in TAS
- OOT can be heap-corrupted so badly you can write a loader for an entire DLC via controller ("triforce%", my choice for most insane controller based hack of a game)
A friend of mine and I played Secret of Mana until our money overflowed the bounds of an int (or whatever was backing it. It evidently caused save game corruption, and that was the end of our epic run.
I soent a lot of time grinding up the levels on the spells to get the extra cool effects that would happen more frequently as your spell level approached 9. Though it would never pass 8:99 if I recall correctly.
I lent the game to a friend. His kid brother overwrote every save file with one called Mnupll.
Love the game. Never redid that. Would have liked to max out weapons because I think you could grind for orbs in the final fort.
A classic way of getting endless money in Transport Tycoon was to build a tunnel going from one edge of the map to another. The money counter would overflow and you'd get enough money to last you a lifetime.
As kids we didn't know why this would happen, we just knew that it did and used it every game.
I'd say it's still very worth playing. It has a lot of tropes that future games took inspiration from, and it's art style is iconic (in part because the character designer and art direct was Akira Toriyama, of Dragonball fame). If nothing else the soundtrack will grab you by the ears and draw you in.
I've seen people bounce off of it, no shame if that happens - in typical JRPG fashion of the time it came out it's involved (there's some non-intuitive progression steps) and takes about 20-30 hours to complete.
There's a DS version which I can't speak to since I've only played the original SNES version, but I understand it adds some additional content that's not required for the story.
Yes. It is one of the most polished JRPGs, and there are no random encounters or grinding. The game can be played through in 24 hours, with optional side quests.
Chrono Trigger holds up very well, and much better than many PSX/N64 games. It was at the pinickle of 16bit sprite graphics. I beat it a bunch of times as a teen on an emulator. Then I bought it for the DS and beat it again several years ago. It's available on Steam.
If you like JRPGs (and you say you like FFVII so that applies to you!) then you should. Personally I played it wanting to try out the genre and found it uninteresting. But hey, doesn't cost anything to try something new!
Reminded me of SNES Shadowrun, don't remember if my English skills were weak or what the cause of me misunderstanding it was but when you encountered the Jester in the game, you're supposed to shoot him until you get a chance for a conversation and saying his name completes that bossfight.
However, I missed that this part was the key and after a bunch of deaths I went on to level up my character past what the developers had probably intended at that stage of the game and subsequently managed to kill the Jester (he was strong enough that it was hard even when fully powered up).
Killing him probably lacked proper codepaths so the game crashed/blacked out and wiped the savegame forcing me to start over (quite an unusual thing to see in a SNES game).
It's ad ridden sewer. The final straw was disabling comment visibility to only those who are logged in. I used that site a bunch for Kenshi and the comments were a trove of information. No more. I refuse to make an account on that visual nightmare.
Always replace “fandom” with “breezewiki” in the url. It’ll take you to a de-crapified version, and also check for the existence of a real wiki separate from fandom and link to that:
Fandom and fextralife are the two “wiki” providers that do this. It’s best to exclude them both from all search results. Fextralife is even worse as it autoplays a twitch steam.
Kinda reminds me of Gandhi urban legend in Civilization, where his "peacefulness" was so low that if it got lower he became a war monger. I thought it was true until I looked it up for this comment. Still, funny stuff!
In the soccer management game USM98, there was a textbox to input the numbers the wages you could offer to players and coaching staff. This was sensibly limited to positive integers in $native_currency. If I entered 99999999999999, I would get something close to £32,000 per week, suggesting they were using a signed 16-bit int.
There was also a button to quickly offer an employee a new 'improved' contract, with something like 1.05x their existing pay.
That made it pretty easy to make a lot of money quickly :D
The classic Alone in the Dark I gives you "infinite" health points via integer (16-bit) underflow due to a bit of negligience. Once you get the poison, just drink it. And during the animation just drink it again. And again. And again...
85 comments
[ 0.26 ms ] story [ 51.2 ms ] threadIf you write a game in a decent language where such a thing won't happen by mistake you can still have it be present on purpose and in some cases that even fits the game's lore.
Random glitches are confusing and bad. Falling off the world in Blue Prince due to collision bugs is annoying for example. However "glitches" which are intended behaviour are fun. I've enjoyed every time I saw somebody get that note and gift from Mrs Babbage because they drafted that particular room in that particular place and it had an effect which in hindsight they now realise was both foreseeable and regrettable...
(I can’t think of one language that defaults to saturating integers)
In the days of DOS, the BIOS would load the first sector of a floppy disk or hard drive into memory and transfer control to it. You could replace that sector, and not a single line of code that you didn't write yourself would be executed after that. THIS is how it should be on a PERSONAL computer. A virus could do the same, of course, and gain full control of the machine, but that is not an argument against giving control to the user. You could blame DOS for not intercepting attempts to rewrite the boot sector and asking the user for consent, but completely preventing something like this in the name of security would be even worse!
Imagine if back then, there was a "secure boot" mechanism so that only a boot sector with Microsoft's cryptographic signature was allowed. Linux wouldn't exist. So, neither would Android, but the situation would be much the same as it is now, only with Microsoft Phone OS instead -- and absolutely no concept of how it could be different, of a computing device controlled by its user instead of a giant corporation.
Ideally, ios and Android would be secure enough that no jailbreaks are possible, but open enough to allow the user to replace the OS with one of their choosing.
Having it locked down and then resorting to exploiting loopholes is the worst of both worlds.
No, illicit access as defined by a user who doesn't want anyone but themselves to have access.
Remember the iPhone jailbreaks where you visited a website and the website exploited the phone and installed a jailbreak? That was a remote security exploit, and any other site could have done that too and used it less benevolently.
Users should have full control over their devices. They shouldn't have to get it via exploits, and it's a good thing when those exploits are fixed, because they're security holes that can be used to harm the user.
Chrono Cross is a very interesting game on its own but it's a terrible sequel that is remarkably spiteful to its senior. (The thing with FATE and Robo, the Porre thing, the fate of Crono and co., it's a terrible fanfic made canon).
Trigger only worked because of Toriyama gathering the all-star staff (look up the interview with Torishima giving the details). Cross was out of his hands and it shows.
But I agree. Chrono trigger it's the closet thing to perfection in a JRPG. Just pure mastering of the craft in all areas, music, art direction, gameplay, pacing, etc.
It's not that cross it's bad, not at all, has a lot of innovation, but Trigger has a big shadow to scape.
Agreed, there's just something really special about it. You may appreciate these guys, I've had their playlist on repeat for years while working: https://m.youtube.com/watch?v=p636Rw_L3XU&list=PL1FBFF9D52E7...
And despite being trigger/cross love this one as well https://open.spotify.com/album/7izJQDtszjo9DbOVEMsvEj?si=HnN...
Hard for me to listen to the last one without getting a little emotional, something about the lyrics and simple piano accompaniment
Thank you so much for this. I am so glad to find this again.
https://www.youtube.com/watch?v=UCuDk18gGRc
"Since the Dream Devourer has 32000 HP, which is close to the signed 16-bit integer limit, it is actually possible to defeat it by healing it. By using powerful magic that it absorbs during its second phase, it can be (temporarily) healed past 32767 HP, which overflows the counter and makes its HP go negative."
If you deal 3 damage, it goes to 196. 196+60=256.
This overflows to zero and you win.
I never understood how that particular bit of logic could have been coded that way - it seemed so unnatural.
- Player has a stat of 100
- Wears "+10%" helm
- Player has a stat of 110
- Removes helm, game subtracts 10%
- Player has a stat of 99
Actually, now that I think about it more, that wouldn't work as described above because once your stat got close to zero you'd enter a kind of Zeno's Paradox situation.
How would that be one of the easiest mistakes to make? There are no operations for working with percentages, nor is it a thing you'd want to do.
To make that helm work as you describe, you'd need to multiply the stat by 1.1 when equipping the helm and then by 0.9 when deequipping it. But at that point you've lost any justification for making the mistake; those are just two random numbers that don't cancel each other out. It's not like you're adding a number in one place and then erroneously subtracting that same number somewhere else.
(Also, these are very strange multipliers to use this way, because they can never produce exact results. You're bound to see rounding errors if you insist on update-when-equipping and update-when-deequipping instead of recalculate-stats-when-equipment-changes.)
For example there's a wizard-type enemy that temporarily debuffs your max health by 50%, and the effect can stack if you get hit more than once. But what happens if you pick up a permanent health boost item while the debuff spell is on you? You gain the normal health boost, then it multiplies itself when the wizard's spell expires; you can can go from 100 to several thousand HP in seconds and there's basically no limit.
In any other game this would be considered a bug and patched out in the next update. NOT NOITA, motherfucker. You're almost required to do things like this for a lot of the end-game optional content.
So it is this very hard amalgamation of rogue and powder toy that controls like terreria, Very hard, With none of that silly meta progression nonsense you find in most roguelikes, But you push through, get good and beat it. Guess what? That was at most 10% of the game(probably closer to 1%), the other 90% is deliberately obtuse, hidden and optional. What sort of madmen make 90% of their game a easter egg?
that would be my first guess.
Following that there was the era in which the only way to be competitive in the games space was to write in assembler directly, which would be my guess for how the bug you described happened, since a more sophisticated algorithm should probably have fit just fine by the time we're in the color Mac era but it would have been more painful to write, and nobody has any time for that. Lots of bizarre shortcuts were taken in this era. Some of the posts from Raymond Chen about Windows providing backwards compatibility for games of this era give an idea of the situation, which are related to how the games interacted with the OS rather than with game mechanics but it's a similar process.
Finally, games have this perverse effect going on where if you write down a bunch of effects you want things in your game to have ("armor can add % bonuses to this part of the strike calculation", etc.), it creates a set of boundaries within which the game's systems can function, and the ironic effect of the creation of those boundaries is to immediately bring to mind ways of violating those boundaries and demands from the designers to do so. These violations of the boundaries will tend to be buggy.
Also while trying to get my facts straight (All I remember was trying to find a mod player to play the deus ex music found on the cd) apparently Unreal tournament and tyrian2000 used mod music as well, Someone at Epic Megagames must have liked them.
By the way if you liked the Deus Ex soundtrack you can check out the Sonic Augmentation ocremix album. Really good.
(I still need to finish the FoE romhack though)
Pokémon, too!
https://tasvideos.org/3358M
https://youtu.be/zZCqoHHtovQ
I soent a lot of time grinding up the levels on the spells to get the extra cool effects that would happen more frequently as your spell level approached 9. Though it would never pass 8:99 if I recall correctly.
I lent the game to a friend. His kid brother overwrote every save file with one called Mnupll.
Love the game. Never redid that. Would have liked to max out weapons because I think you could grind for orbs in the final fort.
As kids we didn't know why this would happen, we just knew that it did and used it every game.
Is it worth playing today? (I don't have any gaming consoles, and use macOS)
(I've never played an RPG, except for Desk 1 of the original Final Fantasy VII, which I really enjoyed).
I've seen people bounce off of it, no shame if that happens - in typical JRPG fashion of the time it came out it's involved (there's some non-intuitive progression steps) and takes about 20-30 hours to complete.
There's a DS version which I can't speak to since I've only played the original SNES version, but I understand it adds some additional content that's not required for the story.
Things just seem to only get worse nowadays
However, I missed that this part was the key and after a bunch of deaths I went on to level up my character past what the developers had probably intended at that stage of the game and subsequently managed to kill the Jester (he was strong enough that it was hard even when fully powered up).
Killing him probably lacked proper codepaths so the game crashed/blacked out and wiped the savegame forcing me to start over (quite an unusual thing to see in a SNES game).
https://breezewiki.com/chrono/wiki/Dream_Devourer
They have a chrome extension too, to do this for you automatically.
https://en.wikipedia.org/wiki/Nuclear_Gandhi
There was also a button to quickly offer an employee a new 'improved' contract, with something like 1.05x their existing pay.
That made it pretty easy to make a lot of money quickly :D
https://youtu.be/_gN3SoIuJ1s?t=512