5 ms·
2038 is going to be an interesting year that’s for sure. I’m big into Final Fantasy VII modding/speedrunning and while reverse engineering the game I stumbled u
by M4v3R 4y ago
2038 is going to be an interesting year that’s for sure. I’m big into Final Fantasy VII modding/speedrunning and while reverse engineering the game I stumbled upon some code that actually checks if the current date is before 2038. If it’s not it refuses to run. I have no idea why they put this kind of check in the game's code, I tried to remove it but the game actually still didn’t start so there is probably some issue that prevents it from working when the date overflows.
I can only imagine that a lot of other legacy software will have similar issues when we reach year 2038.
- cesarb 4y ago> I stumbled upon some code that actually checks if the current date is before 2038. If it’s not it refuses to run. I have no idea why they put this kind of check in the game's code, That's actually very clever. Instead of crashing in unexpected ways or doing odd things, just cleanly exit. If you really want it to run after 2038, you have to emulate the clock, which would then avoid these potential Y2038 bugs.
- account42 4y agoClever would be fixing the Y2038 bugs. This sounds more like a lazy/overworked programmer getting a QA bug report and marking it as WONTFIX because 2038 is going to be someone else's problem.
- MintPaw 4y agoYeah, but at least they actually typed //WONTFIX
- zyx321 4y agoTo clarify: Clever would be to to spend several days hunting down a bug that will affect 0.0001% of your users, and has an easy, well-known workaround?
- account42 4y agoIt's going to affect 100% of your users in 2038. So yeah, if you see the game as just a product with a limited lifecycle then sure you can make excuses for cutting corners. If you see the game as a piece of art then you should have some interest in it working in the future. It's not like time_t overflows are rocket science. Although the most clever solution would be to not have any bugs in the first place ofc ;)
- MrLeap 4y agoIs this in the ps1 version, the pc port, or are we talking the remake or something else?
- cedilla 4y agoThe PS1 didn't have a real time clock, so that's ruled out.
- kevingadd 4y agoKeep in mind that FF7 originally had a PC version around launch (that's the version I first played) so it's quite plausible that all versions could have this code if it dates to the original. Don't think it would have made sense to have it on the PS1, though.
- MrLeap 4y agoI owned that one. It was a tricky thing to install back then on my pentium 2, 255mhz. Could get the graphics to work without glitches or the sound but not both at the same time. :D
- ndiddy 4y agoEvery port of Final Fantasy VII (PS4, Switch, Android, Xbox One, etc) is just the original 1998 PC port EXE running in an emulation layer similar to Wine. The general consensus in the community is that Square has either lost the game's source code or feels that doing things this way is safer than rebuilding the code. In a fairly forward-thinking move, FF7 PC has the ability to use an external DLL as its graphics driver, so the ports use this functionality for new graphics drivers that allow for higher resolutions and more modern APIs than the DirectX 5 support the game shipped with.
- jonny_eh 4y agoWow, what kind of controller button prompts does each version provide?
- 4y ago
- houstonn 4y agoHow will this stack up compared to the Year 2000 bug? Better? Worse?
- rbanffy 4y agoI think a lot of systems, a lot of them embedded, will fail in odd ways. Y2K was mostly a data format issue. This is much more interesting (and widespread).
- andreareina 4y agoWasn't the y2k issue programs that stored numbers as binary coded decimal and only allocated one octet (i.e. two digits) to the date?
- mgerdts 4y agoBCD could be one of many problems, but ASCII strings would me more common in systems I dealt with. There were a lot of assumptions about two digit years that maybe made sense sometime in the 70s for code that you didn’t think would survive more than a few years. Also take a look at struct tm. Its tm_year looked like just a 2 digit year and as such people may format it with printf(“19%02d”,…). It is actually the number of years since 1900. In early 2000 I had to fix a broken ftp server that was sending 19100 as the year.
- pjc50 4y agoY2038 is also a data format issue (32-bit dates). I think it's likely to be better handled, but at the same time people keep citing the non-disaster of Y2K as a reason not to do disaster preparation, so I don't know.
- mmis1000 4y agoIt will break earlier because unix time isn't only a display format. Tons of calculation are scheduling things into the future. But if the future ends up being in the past? Then you will have problem now. Starting from things with 10 year cycle, 5 year, yearly, monthly, daily. The more nearer to 2038, the more things explodes.
- fegu 4y agoDefinitely. I was charged with fixing Y2K problems at a hospital in the late 90ies. The software scheduling checkups for pregnant women was first, because it had the estimated birth date, i.e. up to 9 months ahead.