The problem I find with many games made for Win95/98/XP is that the game uses one or more third-party libraries that were only “valid” for a year or two. After that, updates to the OS closed loopholes that the poorly-written old versions of the libraries relied on, but the poorly-written newer versions of the libraries released to deal with those issues then break compatibility with the previously-released game, which was never updated or patched.
- 0 Posts
- 34 Comments
My first suspect is an incorrectly-terminated statement which looks like it should end on line 41. The compiler/interpreter probably read the newline and ticked over before uncovering the error, and didn’t recover properly due to some edge case.
I am stuck using an otherwise old but theoretically bearable PC at work running Windows 11 from a spinning HDD. But I’ll tell you, when I dug through the registry to turn off all the background indexing nonsense, it became damn near usable.
Seriously, the best option is whatever matches the brightness of your screen to its surroundings. I read about this decades ago and it eliminated screen fatigue for me.
If switching to dark mode works for you, great. When I worked on a PC in a well-lit office all day, I would open a program with a white background, hold up a blank white piece of paper next to the screen, and adjust the screen brightness until it looked about the same as the paper. I did this once or twice a week because I was near a set of picture windows and I was affected by weather and the seasons, but in a room with more artificial light it would be “set and forget”.
It seemed very dim at first, and several of my coworkers commented on it. It took a few days of resisting the urge to turn the brightness back up, but I got used to it and never went back.
My PC at home is currently set up in a partially shaded corner of a well-lit room, so I put a dim little light bar behind the screen to make the wall match the brightness of the screen and the rest of my desk/room.
A couple of other commenters have given excellent answers already.
But on the topic in general I think that the more you learn about the history of computing hardware and programming, the more you realise that each successive layer added between the relays/tubes/transistors and the programmer was mostly just to reduce boilerplate coding overhead. The microcode in integrated CPUs took care of routing your inputs and outputs to where they need to be, and triggering the various arithmetic operations as desired. Assemblers calculated addresses and relative jumps for you so you could use human-readable labels and worry less that a random edit to your code would break something because it was moved.
More complex low-level languages took care of the little dances that needed to be performed in order to do more involved operations with the limited number of CPU registers available, such as advanced conditional branching and maintaining the illusion of variables. Higher-level languages freed the programmer from having to keep such careful tabs on their own memory usage, and helped to improve maintainability by managing abstract data and code structures.
But ignoring the massive improvements in storage capacity and execution speed, today’s programming environments don’t really do anything that couldn’t have been implemented with those ancient systems, given enough effort and patience. It’s all still just moving numbers around and basic arithmetic and logic. But a whole lot of it, really, really fast.
The power of modern programming environments lies in how they allow us to properly implement and maintain a staggering amount of complex minutiae with relative ease. Such ease, in fact, that sometimes we even forget that the minutiae are there at all.
“rd” and “rmdir” only work on empty directories in MS-DOS (and I assume, by extension, in Windows shell). “deltree” is for nuking a complete tree including files, as the name suggests.
Redkey@programming.devto
Programmer Humor@programming.dev•It was best as a silly toy language in the 1990's...
62·3 months agoJS has saved me many hours of mind-numbing, error-prone manual keyboard work by giving me a way to hack together a simple bit of automation as a web page.
Even when a computer has been ham-fistedly locked-down by an overzealous IT department, I can almost always still access a text editor and a browser that will load local HTML files.
Redkey@programming.devto
Programmer Humor@programming.dev•Well, hello waterfox and librewolf
14·3 months agoWhen you use any piece of Internet-enabled software, any and all data that passes through it can theoretically be copied and siphoned off back to the authors of the software.
Should they do it? No. Can they do it? Yes.
Does Mozilla do it? They say they don’t, and I’m inclined to trust them. Do other major browsers do it? Absolutely.
As regards your physical location, geoIP databases can get pretty close these days.
How many techie types have had someone come to them and say something like “Hey, you know tech thing XYZ? You know how it sucks? Well I’ve got a great idea: make a BETTER one! So what do you say? You whip it up in an afternoon, I’ll handle marketing, and we’ll be rich!”
Like they really thought that the issue is just that no-one can see the flaws. They thought that the fix is super easy and they’re just the first person clever enough to see it.
Not to take away from your very good point, but I think the word you might be looking for is “eqivalence”.
Redkey@programming.devto
Programmer Humor@programming.dev•How well do you know Javascript's Date class? Post your score!
2·4 months agoI scored 12/28 on https://jsdate.wtf/ and all I got was this lousy text to share on social media.
the boss can detect headphones going on your head and music starting from 50 feet away and instantly be behind you with a burning question that doesn’t make any sense.
I’m sure you realize that the question doesn’t make any sense because they had to think of it on the spot, just to prove that you can’t wear headphones in the office due to all the important ambient office talk you need to be a part of.
One of my best, most competent bosses once said to the team “I don’t understand how you guys can work while listening to music, but as long as your output stays high, I’m not going to interfere.”
Redkey@programming.devto
Programmer Humor@programming.dev•How I, a non-developer, read the tutorial you, a developer, wrote for me, a beginner - annie's blog
1262·5 months agoHow about that worst of both worlds, the tutorial where the author starts out writing as if their audience only barely knows what a computer is, gets fed up partway through, and vomits out the rest in a more obtuse and less complete form than they would’ve otherwise?
-
Turn on your computer. Make sure you turn on the “PC” (the big box part) as well as the “monitor” (TV-like part).
-
Once your computer is ready and you can see the desktop, open your web browser. This might be called “Chrome”, “Safari”, “Edge”, or something else. It’s the same program you open to use “the Google”.
-
In the little bar near the top of the window where you can write things, type “https://www.someboguswebsite.corn/download/getbogus.html” and press the Enter key.
-
Download the software and unarchive it to a new directory in your borklaving software with the appropriate naming convention.
-
Edit the init file to match your frooping setup.
-
If you’re using Fnerp then you might need to switch off autoglomping. Other suites need other settings.
-
Use the thing. You know, the thing that makes the stuff work right. Whatever.
Congratulations! You’re ready to go!
-
Redkey@programming.devto
Programmer Humor@programming.dev•Yes, I did spend time on this
6·5 months agoI was so triggered by the conversion from char-to-int-to-string-to-packedint that I had to write a bitwise version that just does char-to-packedint (and back again), with bitwise operators.
As others have pointed out, there are probably better options for doing this today in most real-life situations, but it might make sense on old low-spec systems if not for all the intermediate conversion steps, which is why I wrote this.
I loved my MDs and Hi-MDs, but they had so many frills. All the frills. That was part of why I loved them!
The PlayStation 1 had a copy protection system that measured physical properties of the disc which couldn’t be replicated by normal CD writers. There were a few ways to get around this, but to be able to put a burned CD into your console and boot directly from it into the game (as usual) required the installation of a fairly complex mod chip. A lot of people alternatively used the “swap trick”, which is how I used to play my imported original games.
The DreamCast’s copy protection was heavily reliant on using dual-layer GD-ROM discs rather than regular CDs, even though they look the same to the naked eye. There were other checks in place as well, but simply using GD-ROMs was pretty effective in and of itself.
Unfortunately, Sega also added support for a thing called “MIL-CD” to the DreamCast. MIL-CD was intended to allow regular music CDs to include interactive multimedia components when played on the console. However, MIL-CD was supported for otherwise completely standard CDs, including burned CDs, and had no copy protection, because Sega wanted to make it as easy as possible for other companies to make MIL-CDs, so the format could spread and hopefully become popular. Someone found a way to “break out” of the MIL-CD system and take over the console to run arbitrary code like a regular, officially released game, and that was the end of DreamCast’s copy protection. People couldn’t just copy an original game disc 1:1 and have it work; some work had to be done on the game to put it on a burned CD and still have it run (sometimes quite a lot of work, actually), but no console modification was needed. Anyone with a DreamCast relased before Sega patched this issue (which seems to be most of them) can simply burn a CD and play it on their console, provided they can get a cracked copy of the game.
At the very least, please state which section you made small changes to, even if you are sure it’s not worth mentioning what or why.
Child’s play compared to what you’d need to do on a modern chip.
I don’t think it’s the chips, but the operating environments. Modern CPUs offer dozens of multipurpose registers and many more instructions and addressing modes compared to those old, low-cost CPUs, which should make things easier, not harder. But no-one’s building old-style dedicated systems around modern CPUs; our code now has to play nice with firmware, OS, libraries, and other processes, including resource management and preempting.
Compare a single-gear go-kart to an automatic sedan. Getting top performance out of the go-kart on a closed track is difficult and requires nuance. If we could drive the automatic sedan around the same closed track, we could easily demolish the go-kart, and not just with raw engine power. The improved acceleration, braking assist, and power steering are enough. But when we drive the sedan we’re usually doing it on public roads with traffic signals, intersections, speed limits, and other road users. That’s what’s more difficult.
I didn’t know that generative AI could do things like this now.
People can hate on Microsoft all they want, but I use LibreOffice on a regular basis and it does the same thing, for exactly the same reason.
Cheers to the person who linked to the “font - hide” solution. I didn’t know that one and the equivalent works LO as well.