TL;DR They've written an emulator that runs on the GBA, which emulates a fantasy, souped-up version of the GB with many features of the GBA added. And now they're manually porting existing GB games to this fantasy GB platform.
The Mikado Method, eh?
(All together)
Three junior devs at work are we,
Busy and harried as devs can be,
Compiler warnings flowing freely,
Three junior devs at work!
(Alice) Everything is a source of bugs! (Laughter)
(Bob) When they wrote this, were they on drugs? (Laughter)
(Carlos) Don't touch our "World's Best Coder" mugs! (Laughter)
(All together) Three junior devs at work!
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.
For 2, one of the few pieces of Windows software that I haven't been able to replace in Linux is GetRight. Many HTTP servers support downloads starting at an offset from the beginning of the file, and GetRight uses that to allow download pausing and resumption.
It was a real life saver back when I had an extremely flaky Internet connection.
EDIT: Thanks for all the suggestions, I'll definitely take a look at them. Simply resuming downloads is why I initally started using GetRight, but it also came with a bunch of other useful tools that I came to rely on. While I've been able to replicate some of the basic functionality with individual browser plugins or programs, I haven't seen anything that integrates it all so well, with such a smooth interface. I haven't looked for a long time, though, so maybe one of your suggestions will be the one!
In order to make the game small enough to fit on a cassette tape they had to ditch basic and program the entire game, world in assembly.
Putting aside the fact that the majority of commercial games of the time were written in assembly (or other low-level languages) just as a matter of course, I strongly suspect that programming the game in assembly was an execution speed issue, and not a cassette space issue. Regular audio cassettes easily held enough data to fill an average 8-bit home computer's memory many times over, whether that data was machine code or BASIC instruction codes.
Did you read all the way to the end of the article? I did.
At the very bottom of the piece, I found that the author had already expressed what I wanted to say quite well:
In my humble opinion, here’s the key takeaway: just write your own fucking constructors! You see all that nonsense? Almost completely avoidable if you had just written your own fucking constructors. Don’t let the compiler figure it out for you. You’re the one in control here.
The joke here isn't C++. The joke is people who expect C++ to be as warm, fuzzy, and forgiving as JavaScript.
I'd argue that you do need to be good at math to be an effective programmer, it's just that that doesn't mean what a lot of people think it means. You don't need to know all the ins and outs of quadratics, integrals, and advanced trigonometry, but I think you do need to have a really solid, gut-level understanding of basic algebra and a bit of set theory. If you're the sort of person whose head starts to swim when you see "y=3x+2", you're going to find programming difficult at best.
I am currently working on a game for the Atari 2600, and you just gave a good outline of my code. And I love it.
Does anyone know if the AI also figured out how to make any of these materials, or if it only assessed that they could probably exist in a stable state? This article isn't clear about that but it seems like the answer is the latter.
Assuming C/C++, dare we even ask what this teacher uses instead of switch statements? Or are her switch statements unreadable rat's nests of extra conditions?
This is a good life lesson. We're all idiots about certain things. Your teacher, me, and even you. It's even possible to be a recognized expert in a field yet still be an idiot about some particular thing in that field.
Just because some people use a screwdriver as a hammer and risk injuring themselves and damaging their work, that's not a good reason to insist that no-one should ever use a screwdriver under any circumstances, is it?
Use break statements when they're appropriate. Don't use them when they're not. Learn the difference from code that many other people recommend, like popular open-source libraries and tutorials. If there's a preponderance of break statements in your code, you may be using a suboptimal approach.
But unfortunately, for this course, your best bet is to nod, smile, and not use any break statements. Look at it as a personal learning experience; by forcing yourself sit down and reason out how you can do something without using break statements, you might find some situations where they weren't actually the best solution. And when you can honestly look back and say that the solution with break statements is objectively better, you'll be able to use that approach with greater confidence in the future.
The real problem, as I think we are all aware, is that copyright lasts for far too long. It should be a carrot used to support and encourage creators, not a stick used by publishers to beat both thieves and well-meaning people indiscriminately in a futile pursuit of unending revenue streams.
And here are some comments on specific points in the article:
"ESA and its member companies [...] support efforts by cultural institutions to build physical video game collections."
"It simply is not accurate that the industry has opposed efforts by libraries to have legal access to games for preservation purposes."
That's a carefully-worded statement. Yes, it would be fruitless and openly greedy to try to oppose things that libraries have an obvious legal right to do, like buy and preserve physical items. But that doesn't preclude publishers from lobbying lawmakers and presenting testimony to reduce what's legal in the first place, such as using tools and processes needed to keep the games actually playable.
The ESA says it recognises the importance of libraries, with Mgbojikwe observing that more than 2,500 video games have been donated to the Library of Congress to date.
While the Library of Congress' so-called Mandatory Deposit doesn't apply to video games (AFAIK), I would wager that most if not all of these games were "donated" to fulfil the mandatory requirement which is a part of the process of formal copyright registration in the USA. While this formal registration itself isn't mandatory, the donations still probably weren't given out of the goodness of their hearts.
Games like Sid Meier's Covert Action feature ideas and mechanics not seen in modern games, yet remain unavailable.
Covert Action has been available on GOG for very nearly ten years at the time of writing. I get the point that they're trying to make, but if you're going to use a specific example, pick one that stands up to at least casual scrutiny.
Redkey
0 post score0 comment score
The original StarCraft and Brood War expansion didn't require Internet for installation. And while the original boxed copies (I got the "Battle Chest" re-release which is the same) required the CD to be in the drive, the last one or two official update patches let you copy the .mpq (?) data files from the CDs into the installation directory so you can play without them.