12 ms·
About a year ago I was looking at Crash Bandicoot timer systems and I found that Crash 3 has a constantly incrementing int32. It only resets if you die. Left f
by zero_shift 1y ago
About a year ago I was looking at Crash Bandicoot timer systems and I found that Crash 3 has a constantly incrementing int32. It only resets if you die.
Left for 2.26 years, it will overflow.
When it does finally overflow, we get "minus" time and the game breaks in funny ways. I did a video about it: https://youtu.be/f7ZzoyVLu58 https://youtu.be/f7ZzoyVLu58
- stevage 1y agoYou really managed to make the whole video without making a single "crash" pun? (Those freezes come close enough that you could call them crashes...)
- jsheard 1y agoThere's a weapon in Final Fantasy 9 which can only be obtained by reaching a lategame area in less than 12 hours of play time, or 10 hours on the PAL version due to an oversight. Alternatively you can just leave the game running for two years until the timer wraps around. Slow and steady wins the race. https://finalfantasy.fandom.com/wiki/Excalibur_II_(Final_Fantasy_IX) https://finalfantasy.fandom.com/wiki/Excalibur_II_(Final_Fan...
- zero_shift 1y agoOh yeah. The sword you pick up in Memoria. The problem there is that the PAL version runs slower; the way PSX games "translated" between the two video systems was just to have longer VSync pauses for PAL. So the game is actually slower, not interpolated
- reactordev 1y agoLonger vsync pauses but larger frame time deltas so it’s basically the same speed of play. The only thing that was even noticeable was the UI lag.
- fredoralive 1y agoErm. No, like lots of games during the era quite a lot of stuff is tied to the frame rate, so the 50Hz region game just runs slower than the 60Hz one as next to nobody bothers to adjust for it. The clock for the hidden weapon does run at the same rate for both unfortunately, hence it being harder to get in 50Hz regions.
- mungoman2 1y agoWouldn't a slower tick make it easier as you get more wall time to do the same challenge.
- fredoralive 1y agoNo? Wall time (that the challenge runs on) is unchanged, game time (Vsync) is running at 83% of full speed (50Hz vs 60Hz), so if something tied to frame rate (animation, walking speed etc.) takes 1 second to do on NTSC, it'll take 1.2 seconds to do on PAL etc.
- deleted 1y ago[deleted]
- reactordev 1y agoIncorrect. I’m looking at the source code. It’s not perfect but it’s not just “slowed down to 50hz” like people claim.
- zero_shift 1y agoWhen you say looking at the source code, what do you mean here? AFAIK the source for FF9 PSX (and all the PSX ff games) has been lost as Square just used short term archives Also, FF9 does not run at a constant framerate. Like all the PSX FF games it runs at various rates, sometimes multiple at a time (example: model animations are 15fps vs 30 for the UI) In terms of timers, the bios does grant you access to root timers, but these are largely modulated by a hardware oscillator (Incidentally, the hardware timing component is the reason a chipped PAL console cannot produce good NTSC video. Only a Yaroze can support full multiregion play)
- debo_ 1y agoSo that's why it's called Excalibur 2!
- lelandfe 1y agoSo the invisible 12h timer runs during cutscenes. During Excalibur 2 runs, I used to open and close the PS1 disc tray to skip (normally unskippable) cutscenes. Never knew why that worked. (I also never managed to get it)
- p1necone 1y ago> Never knew why that worked. I'm guessing the game probably streams FMV cutscenes of the disc as they play, and the fallback behaviour if it can't find them is to skip rather than crash.
- jonhohle 1y agoI’m going to wager that the cutscenes are all XA audio/video DMA’d from the disc. Opening the disc kills the DMA and the error recovery is just to end the cutscene and continue. The program is in RAM, so a little interruption on reading doesn’t hurt unless you need to time it to avoid an error reading the file for the next section of gameplay.
- Insanity 1y agoThat’s a solid guess. And if that’s the case, that’s actually pretty good error handling!
- Jare 1y agoI recall that handling disc eject was an explicit part of the Tech Requirements Doc (things the console manufacturer requires you to comply with). They'd typically check while playing, while loading and while streaming.
- ad133 1y agoThis is a significantly better handling than the previous game (final fantasy viii). My disk 1 (it had four disks) got scratched over time (I was a child after all), and the failure mode was just to crash - thus the game was unplayable. The game had a lot of cutscenes.
- Gravityloss 1y agoAm reminded by this quote from Ferdinand Porsche: "The perfect racing car crosses the finish line first and subsequently falls into its component parts." Games fit this philosophy, compared to many other pieces of software that are expected to be long-lived and receiving a lot of maintenance and changes and evolve.
- WJW 1y agoThe Porsche quote reflects a wider design philosophy that says "Ideally, all components of a system lasts as long as the design life of the entire system and there should be no component that lives significantly longer. If there is such a component, it has been overengineered and thus the system will be more expensive to the end consumer than it needs to be.". It kinda skips over maintenance, but overall most people find it unobjectionable when stated like this. But plenty of people will find complaints when they try to drive their car beyond its design specs and more or less everything starts failing at once.
- doubled112 1y agoWhen the design spec seems to be a 3 year long lease I can see why people get bothered.
- signalToNose 1y agoConsumer protection laws prevents businesses following this to it’s extreme. For many businesses the ideal would be to just sell stuff that immediately breaks down as soon as it’s sold. It has the fulfilled its purpose from their point of view
- delichon 1y agoI run sous vide cookers 24*7, and they uniformly break within 90 days or less. But they don't like to admit their smaller duty cycle, so they don't, and keep sending me warranty replacements instead. I keep buying different brands looking for one with a longer life. I'll bet most people do that when their gadgets die, and purposely making products that die as soon as sold isn't often a successful business model.
- Forgeties79 1y agoLord have mercy fandom really has become unbearable with the ads and pop ups.
- coldpie 1y agoInstall an ad blocker.
- Forgeties79 1y agoI opened this on an iPhone which has fewer adblock options. Desktop is better locked down. Regardless I can still complain about how intrusive the ads are.
- coldpie 1y agoThere are many ad block options on iPhone. I currently use Wipr 2, but in the past I've used both 1Blocker and AdBlock Pro with success.
- JustExAWS 1y agoI just opened this my iPhone with 1Blocker installed. I saw no ads. It’s been around since iOS 8
- Forgeties79 1y agoNever heard of it, appreciate the recc! Edit: ah only works on safari
- mrguyorama 1y agoYou are on iOS. There is only safari. Any other "web browser" is just a skin over safari
- Forgeties79 1y agoYes I know everything is wrapped around safari. But I like having Firefox syncing across devices. Edit: ah forgot my vpn was off, usually clears all that up for me. Much better now
- elcritch 1y agoWe should rally together to force game companies to use 32 bit timers rather than 64bit ones so we can keep finding these fun little glitches. The time to protect overflows is now! ;)
- jonhohle 1y agoI think many games were that way. SotN definitely has a global timer. On a native 32-bit system it makes sense, especially when the life of a game was a few months to a few years on the retail shelf. No player is going to leave their system running for 2.27 years so what’s the point of even tesing it? Who knew at the time they were creating games that would be disassembled, deconstructed, reverse engineered. Do any of us think about that regarding any program we write?
- Gamemaster1379 1y agoCan be more than timers too. There's a funny one in Paper Mario where a block technically can be hit so many times it'll reset and award items again. Hit enough times it'll eventually crash. Of course it'd take around 30 years for the first rollover and 400 or so for the crash. https://n64squid.com/paper-mario-reward-block-glitch/ https://n64squid.com/paper-mario-reward-block-glitch/
- jraph 1y agoIsn't this common in the computer game scene? Shouldn't you asume your game will be disassembled, deconstructed, reverse engineered? Although for old games released before internet was widespread in the general population, it might have not been this obvious.
- sim7c00 1y agoaslong as it doesnt lead to online cheats having such code is fine. if someone wants to reverse the game find an obscure almost untriggerable bug and then trigger it or play with it. 2.6 year game session is crazy if its not a server, and if its a server, thats still really crazy even for some open-world open-ended game... its a long time to keep a server up w/o restarts or anything (updates?). looking at the various comments, there might be even some kind of weird appeal to leave such things in your game :D for people to find and chuckle about. it doesnt really disrupt the game normally does it?
- lstodd 1y ago> if its a server, thats still really crazy even for some open-world open-ended game... its a long time to keep a server up w/o restarts or anything (updates?). Pretty much doable even without resorting to VM migrations or ksplice. My last one had uptime in 1700s (days). Basically I leased it, put a debian on it and that was that until I didn't need it anymore.
- ThrowawayTestr 1y agoGreat video, just subscribed
- xhrpost 1y agoIs it common to default to a signed integer for tracking a timer? I realize being unsigned it would still overflow but at least you'd get twice the time, no?
- deleted 1y ago[deleted]
- aidenn0 1y agoIf you get to right before you need to be (taking as long as you want), then wait until overflow, then you still have 12h to do the last tiny part if it's unsigned.
- zero_shift 1y agoSome C programmers take the view that unsigneds have too many disadvantages: undefined behaviour for overflows, and weird type promotion rules. So, they try and avoid uints.
- tekne 1y agoUmm, signed integers are UB on overflow; unsigned is always fine.
- zero_shift 1y agoSorry, you are correct. I don't think unsigned overflow behaviour was defined until C99 though. Anyway, in answer to the question, I would guess the reason was because of signed / unsigned type promotion.
- teeray 1y agoThe true Time Twister unlocked